Ajuda amb triggers. (SOLVENTAT)

9 Agost 2010
2,608
5
38
Punt de Lagrange
#1
En viper insisteix en que posem les nostres dubtes en aquest forum

A veure si algú em pot donar una ma amb la sintaxi, ho estic provant fa moltes hores i ja desespero.

Situació: sistema medic avançat ACE3.

tinc dos triggers. Un es en un hospital de campanya. L'altre es a l'helipad a on aterra el medevac.

La idea del primer trigger es que si algú es fa mal, entri a la tenda i surti com nou,

La idea del segon trigger es que si algu está molt tocat, estabilitzat pel metge, pero bo i així no recupera la consciencia (com passa sovint) i no i han medpacks, cridar al medevac, pujar-lo al helicopter i quan el helicopter torni a base, tan punt aterri al seu helipad, que el ferit quedi curat. L'helicopter te habilitada la funció de vehicle medic per el que les hemorragies es paren automáticament mentre el ferit està a bord.

1er trigger hospital de campanya.

type: none
activació: Blufor
Tipus d'activació: Present
Condició: player in thislist
init: [this, _x] call ACE_medical_fnc_treatmentAdvanced_fullHeal;

No se a on pot estar el problema... teoricament hauría de funcionar, no?

2on trigger Helipad: Obviament el trigger te d'actuar, no sobre el helicopter, sino sobre la gent que hi viatja a dintre.

type: none
activació: Blufor
Tipus d'activació: Present
condició: {_x isKindOf "air" && isTouchingGround _x && count crew _x > 0 } count thisList > 0
init: [this, _x] call ACE_medical_fnc_treatmentAdvanced_fullHeal;


Algú em podría donar un cop de mà?, per els que en sabeu, no us prendrà mes de uns pocs minuts solventar-me el problema. Com els meus coneixements son molt limitatsl que si que us demanaría es que la resposta sigui facil, a nivell de copy-paste,

Gràcies per anticipat.
 

paperboy

Ja en porto tres-cents
20 Març 2013
425
6
18
44
Warcelona
#2
Re: Ajuda amb triggers.

Aquesta idea és la que tenia pensada per les meves missions...és com m'agrada més! Estaria bé que ho poguessis solucionar per poder implementar-ho a la plantilla que faig servir...llàstima que no et pugui ajudar.
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#3
Re: Ajuda amb triggers.

Estic sense Arma 3 a l'estar en període de mudança, no obstant, i tot i no ser copy paste:

Utilitza siusplau aquesta funció localment: [_x, _x] call ACE_medical_fnc_treatmentAdvanced_fullHealLocal (observa que faig servir una altre funció). Com que això ha d'estar en local i els triggers son executats al servidor, necessitaràs fer en servidors dedicats el següent:

[_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false] en comptes del que tu tens posat (la funció s'executarà on la unitat sigui local, és a dir, al client del jugador ferit)

Una altra cosa, pensa que this fa referència al trigger en aquest àmbit (no a la unitat que per això ho canvio a _x). Tu necessites passar els arguments com a jugador, no crec que sigui la teva intenció curar el trigger en si.
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#5
Re: Ajuda amb triggers.

Doncs només funcionaria a qui fés de servidor. Els altres jugadors no es curarien, ja que la unitat no és local (no pertany) a la teva màquina.
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#6
Re: Ajuda amb triggers.

Ostres, el objetiu es que es pugui curar tothom.


Per tant entenc que tant per dedicat com si no, el millor es fer servir la funció [_x, _x] call ACE_medical_fnc_treatmentAdvanced_fullHealLocal no? O hi ha prou amb que el trigger no s'executi al servidor sino localment, amb el que cada jugador, independentment de que sigui servidor dedicat o no, es beneficiaria de la funció.?
 

SilverArrow

Administrador
Membre del personal
Administració
Community Manager
6 Novembre 2014
1,902
99
48
#7
Re: Ajuda amb triggers.

Jo probablement posaria una acció. Per trigger que es repeteixi pot donar problemes, i crear bucles si no poses un condicional o un temporitzador.

Per cert, heu comprovat que aquestes funcions que feu servir funcionin pel que vosaltres voleu? Són noves? En el seu dia vaig haver de obrir els pbos de l'ACE i treure una per una les variables que feia sevir mèdicament perquè res més funcionava.

Jo de tu preguntaria al fòrum de l'ACE si aquesta funció realment reestableix tot.

Per cert, la funció s'hauria de cridar localment com diu el Magnetar, doncs afecta nomes als clients (als jugadors).

Manual de com fer servir accions:

https://community.bistudio.com/wiki/addAction
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#8
Re: Ajuda amb triggers.

Kronus said:
Ostres, el objetiu es que es pugui curar tothom.


Per tant entenc que tant per dedicat com si no, el millor es fer servir la funció [_x, _x] call ACE_medical_fnc_treatmentAdvanced_fullHealLocal no? O hi ha prou amb que el trigger no s'executi al servidor sino localment, amb el que cada jugador, independentment de que sigui servidor dedicat o no, es beneficiaria de la funció.?
No, has de cridar-ho de forma remota, d'aquesta manera funcionarà per tothom, inclús qui fagi de servidor.

[_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false];

2) SilverArrow, la funció ho cura tot.
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#9
Re: Ajuda amb triggers.

La part de les tendes mediques ho he solucionat ficant un metge amb un "addaction" i funciona com la seda. El problema es el helipad. si el ferit està inconscient no hi ha "addaction" que valgui. Te de funcionar automaticament quan el helicopter faci un RTB i aterri al helipad medic.

[_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false]; no funciona :shock:
 

SilverArrow

Administrador
Membre del personal
Administració
Community Manager
6 Novembre 2014
1,902
99
48
#10
Re: Ajuda amb triggers.

Uhm, el tema del helipad pots posar un temporitzador al trigger, que tardi uns minuts a tornar a executar-se.

Prova això a la condició:

this && vehicle player in thisList
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#11
Re: Ajuda amb triggers.

a veure, la funció original es

[_caller, _target] call ACE_medical_fnc_treatmentAdvanced_fullHeal;


A on caller es qui demana la acció i target el rebedor del tractament medic.
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#14
Re: Ajuda amb triggers.

El que em pregunto es si inicialitzes _x en algun lloc. Per defecte _x no és res, així que si vols que afecti a les unitats en una àera, ho has d'especificar manualment.

{[_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false];} forEach thisList;

o bé:

{[_x, _x] call ACE_medical_fnc_treatmentAdvanced_fullHeal;} forEach thisList;;
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#16
Re: Ajuda amb triggers.

No, segueix sense funcionar.

Repasem:

Condició: {_x isKindOf "air" && isTouchingGround _x && count crew _x > 0 } count thisList > 0
init : {[_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false];} forEach thisList;

Pot ser que la condició Crew faci referencia a la tripulació del helicopter pero no als passatgers?
Es necessari al cridar la funció especificar .sqf? al original, amb el metge a la tenda amb el addaction cridant la funció com "ACE_medical_fnc_treatmentAdvanced_fullHealLocal" hi ha prou.

Es que ja no se que que més provar.
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#17
Re: Ajuda amb triggers.

A veure comencem des-de el principi i amb ho mes bàsic a veure si veiem si pas a pas arrivem a algun lloc.

He fet una versió senzilla del trigger. sense condicions (this) amb radi de 2m i un cono de carretera al centre per saber a on es el trigger, i jo tirant grenades prou a la vora com per ferir-me i despres anant al cono.

el trigger porta la funció [_x, _x] remoteExecCall ["ACE_medical_fnc_treatmentAdvanced_fullHealLocal.sqf", _x, false];

El missatge que dona es:

'call {]_x,_x] |*| remoteexeccall ["ace_medical_func_treatme...'
Error type any, expected number, side object, group, string

ideas?
 

Magnetar

Més pesat que Kuban
22 Abril 2014
1,011
0
0
Kassel, Alemanya
#18
Re: Ajuda amb triggers.

Sembla com si tinguéssis un ] capgirat. Aquí tens una missió en que funciona. Si em tiro una granada i avanço el personatge es cura. Sortirà un hint dient que s'ha activat el trigger i una llista amb les unitats que estan en el trigger.

https://www.dropbox.com/s/lhjg63jplodtw ... s.rar?dl=0

Edit prova-ho en multiplayer (des de l'Eden), no ho fagis mai en singleplayer.
 
9 Agost 2010
2,608
5
38
Punt de Lagrange
#19
Re: Ajuda amb triggers.

Magnetar Gràcies.

El trigger funciona "a peu", es a dir, caminant, tiro una granada massa a la vora, em fereixo de valent, entro al trigger i em curo.

pero si crido al medevac, el trigger s'activa pero no em cura. Per tant, no em compte entre els objectius a curar, el que vol dir que el problema està a les condicions del trigger.

Aquest es el condicionat que hi havia fins ara:

{_x isKindOf "air" && isTouchingGround _x && count crew _x > 0 } count thisList > 0

Com, al Unsung, els helipads son unes plataformes elevades, vaig pensar que potser, estar al helipad no es consideraba "tocar terra" així que ho vaig canviar per

{_x isKindOf "air" && getPosATL _x select 2 < 2 && count crew _x > 0 ;} count thisList > 0;


Aleshores s'em va encendre la bombeta. Els homes no son "kind of "air", el que els exclueix directament al condicionant. així que vaig treure lo de "_x is kindof "air", pero segueix sense funcionar.

Aleshores, vaig pensar que igual el "Crew" no comptava als pasatgers i vaig aplicar la condició d'en Silver:

{getPosATL _x select 2 < 3 && vehicle player in thisList ;} count thisList > 0;

tampoc anava...

Vaig decidir treure la questió d'alçada i deixar unicament this && vehicle player in this list

tampoc....

alguna idea?
 

SilverArrow

Administrador
Membre del personal
Administració
Community Manager
6 Novembre 2014
1,902
99
48
#20
Re: Ajuda amb triggers.

Si no m'equivoco el trigger només pot detectar el vehicle, no els "soldats" de dins.

Has de fer una passada amb un bucle for comprovant tota la tripulació del heli, curant-los un per un.

Això és fa amb un for each habitualment.