supply drop

9 Agost 2010
2,608
5
38
Punt de Lagrange
#1
Hola nois

Estic treballant en la meva plantilla customitzada per les meves necessitats i m'he trobat en un trangol:

Amb Alive, unicament el soldat que porta la radio pot trucar suports, Aixó està be i es realista.

Pero trobo que el sistema de Alive per permetre un "supply drop" (helicopter o avió que deixi caure una capsa) es molt complex ja que requereix habilitar tota la historia de combat logistics i dotar-lo de recursos.

En canvi, el sistema "vanilla" es super facil de fer anar i funciona de conya.

Problema:

El sistema vanilla funciona sincronitzant el supply provider a un jugador determinat. Pero ara imaginem-nos que aquest paio el pelen, i que el cap de misió vol agafar la radio per continuar tenint suports.... els te tots menys el "supply drop".

El que vull es ficar una linea de codi per vincular el sistema vanilla perque nomes el jugador que porti la radio pugui accedir a ell. Si la radio canvia de mans, la sincronització amb el modul de supply provider ha de canviar de mans a qui tingui la radio.

he estat remenant amb el call BIS_fnc_addSupportLink, pero no m'en surto. Algu em podria donar un cop de ma? i per favor, us ho demano: No se res de programacio, i soc el que els expertes denominen "un negat". Per tant, us ho prego: expliqueu-lo com si jo tingues quatre anys o encara millor, poseu-me un exemple. Gracies.



_backpack = unitBackpack player;
if ((""tf_rt1523g_big_rhs"" == typeof _backpack)) then [player, suppreq, supporter] call BIS_fnc_addSupportLink;

quin tipus de eventhandler controla quan algú es posa una motxila??
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#2
Kronus, seré de moment breu ja que no tinc accés a arma 3 per provar scripts. No hi ha cap eventhandler a l'arma 3 que comprovi si la unitat s'ha equipat amb algo en particular o que hagi canviat l'inventari: https://community.bistudio.com/wiki/Arm ... t_Handlers.

El que podries fer es un script que s'executés cada segon i comprovés que la unitat tingui la motxilla que tu vols (posa-ho al init.sqf):

Codi:
if (hasInterface) then {  // Només executa en el client
script_comprovarMotxilla = [ ] spawn {

if (!isNull (unitBackpack _x)) then {
  if ((""tf_rt1523g_big_rhs"" == typeof _backpack)) then [player, suppreq, supporter] call BIS_fnc_addSupportLink;
} else {
  // Codi per treure el support link
}

sleep 1; // Atura el script durant 1 segon
};
};
Si vols parar el script en qualsevol punt de la partida pots utilitzar el següent:

Codi:
terminate script_comprovarMotxilla;
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#3
no funcionaria el eventhandler "TAKE"? diu que es quan una unitat agafa quelcom de un contenidor, podría funcionar que prengues altra unitat com si fos un contenidor ???

Quina seria la sintaxi per fer una prova?
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#4
vale, he posat aixó al init:

Codi:
if (hasInterface) then {  // Només executa en el client
script_comprovarMotxilla = [ ] spawn {

if (!isNull (unitBackpack _x)) then {
  if ((""tf_rt1523g_big_rhs"" == typeof _backpack)) then [player, req1, prov1] call BIS_fnc_addSupportLink;
} else {
  [req1, prov1] call BIS_fnc_removeSupportLink;// Codi per treure el support link
}

sleep 1; // Atura el script durant 1 segon
};
};
Pero em dona un error, #tf_rt1523g_big_rhs"" missing ) i... pero he revisat tot i no se veure a on falta el parentesi.

Si li trec les dobles cometes a la motxila i les deixo senzilles aleshores tira fins el corxet al que li falta el ;

li poso el ; i aleshores entra be pero una vegada a dintre em diu undefined variable.

GRrrrr aixó es com tenir la cançó del segle al cap, estar devant el piano i adonar-te que no saps solfeig!!

:çrubl:
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#7
Magnetar, no et preocupis, en realitat, soc jo qui et te de donar les gracies.

Ja em vaig quedar amb el comentari de que planejaves estar mes liat que la pota d'un romà, aixi que vaig decidir penjar la pregunta al forum de BI per solvertar el tema