Bonjour, vous n'êtes actuellement pas connecté sur le forum
Contacter un administrateur :: Se connecter :: S'enregistrer


Armée de l'Ombre


Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Holdaction et script


Membre
Avatar de P-Milkman
  • Age : 33 ans
  • Messages : 15
  • Inscrit : 22 Avril 2017
  • Statut : Hors ligne
 
Lien vers ce message 22 Septembre 2022, 11:37

Maintenant que l'hélico est bon, j'attaque les détails. Comme pour le script hélico, la mission est vouée à être jouée soit en solo soit en Coop donc j'essaie de tout préparer au MP.

Je commence à découvrir le fonctionnement des HoldAction, du coup je m'amuse ^^

Créer une armurerie qui ouvre l'arsenal virtuel pas de soucis.

Voulant mettre ce genre d'action dans mes missions, j'ai fais des tests, mais pour le premier j'ai une erreur de syntaxe mais je ne sais pas où et pour le second, il déclenche tout une série de task...

Le premier: aller parler à un chef de village (chef)
dans l'init du chef:
[chef,"Chef Khaled","\a3\missions_f_oldman\data\img\holdactions\holdAction_talk_ca.paa","\a3\missions_f_oldman\data\img\holdactions\holdAction_talk_ca.paa","_this distance _target < 7","_caller distance _target < 7",{},{},{ call{execVm "scripts\task3.sqf";} },{},[],3,0,true,false] remoteExec ["BIS_fnc_holdActionAdd", 0, chef];


task3.sqf
sleep 3;
call{["task2","SUCCEEDED"] call BIS_fnc_taskSetState;};
call{[Grognon-6, "task3", ["D'après le chef du village, des forces Tura ont pris position dans un petit village au sud.Allez faire le ménage Grognon-6!", "Reprendre le village", "obj3"], [3235.73,2051.75], "ASSIGNED", 2, true, "ATTACK"] call BIS_fnc_taskCreate;
; execVm "Sound\intro1.sqf"; player setcurrenttask task3;  u1 setCurrentTask task3; u2 setCurrentTask task3; u3 setCurrentTask task3; u4 setCurrentTask task3; u5 setCurrentTask task3;}



Pour le second, après avoir parler au chef, le groupe reçoit la task3, qui les amène à un village à reprendre aux rebelles. Dès que le village est pris (conquit par BLUEFOR) en trigger
Nom de variable: T4
Condition: this
On activation:
call{["task3","SUCCEEDED"] call BIS_fnc_taskSetState;} ;


Qui, une fois réaliser est censé renvoyer à un autre trigger:
Nom de variable: t5
Condition: triggeractivated t4
On activation:
 call{[Grognon-6, "task4", ["Ce village était bien trop surveillé pour que ce soit normal. Fouillez la zone pour savoir pourquoi!", "Fouiller la zone", "obj3"], [3235.73,2051.75], "ASSIGNED", 2, true, "SEARCH"] call BIS_fnc_taskCreate; 
; execVm "Sound\intro1.sqf"; player setcurrenttask task4;  u1 setCurrentTask task4; u2 setCurrentTask task4; u3 setCurrentTask task4; u4 setCurrentTask task4; u5 setCurrentTask task4;};



Sauf qu'à ce moment précis, au lieu d'assigner la task4, j'ai un enchainement de task qui se valident ...
La suite est normalement, comme ce sui suit:
La task 4 nous demande de fouiller, on trouve une cache radio, la découverte est vérifié par un trigger:
Nome de variable: t6
Condition: Triggeractivated 5 && this (présence joueur)
On activation:
call{["task4","SUCCEEDED"] call BIS_fnc_taskSetState;}; 
call{[Grognon-6, "task5", ["Tout se matériel informatique doit permettre de retrouver le signal et ainsi savoir où chercher!", "Localiser le lieu d'émission", "obj4"], [3113.17,1982.35,1.753], "ASSIGNED", 2, true, "INTEL"] call BIS_fnc_taskCreate; 
; execVm "Sound\intro1.sqf"; player setcurrenttask task5;  u1 setCurrentTask task5; u2 setCurrentTask task5; u3 setCurrentTask task5; u4 setCurrentTask task5; u5 setCurrentTask task5;};


Pour localiser le lieu d'émission, j'ai mis un holdaction sur un ordinateur:
Nom de variable: Ordi
Init:
[ordi,"Pirater l'ordinateur","\a3\missions_f_oldman\data\img\holdactions\holdAction_talk_ca.paa","\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_hack_ca.paa","_this distance _target < 3","_caller distance _target < 3",{},{},{ execVm "scripts\task6.sqf"; },{},[],15,0,true,false] remoteExec ["BIS_fnc_holdActionAdd", 0, ordi];



qui envoi à:

Task6.sqf
sleep 3;
call{["task5","SUCCEEDED"] call BIS_fnc_taskSetState;};
sleep 3;
call{[Grognon-6, "task6", ["Vous avez réussi à localiser un point relai, rendez-vous sur place!", "Rejoindre le lieu d'émission", "obj5"], [1101.71,3390.71,16.4734], "ASSIGNED", 2, true, "NAVIGATE"] call BIS_fnc_taskCreate;
execVm "Sound\intro1.sqf"; player setcurrenttask task6;  u1 setCurrentTask task6; u2 setCurrentTask task6; u3 setCurrentTask task6; u4 setCurrentTask task6; u5 setCurrentTask task6;}


Les différentes task jouent en boucle le son, je n'ai pas attaqué la création des dialogues encore, je cherche d'abord à avoir le squelette fonctionnel.

Une idée de où je me loupe ?

D'avance merci :militaire1:



Leader
Général
Avatar de The-KiLLeR
  • Age : 36 ans
  • Messages : 2154
  • Inscrit : 29 Janvier 2007
  • Statut : Hors ligne
  • Spécialité : Démolition Expert
 
Lien vers ce message 22 Septembre 2022, 12:24

Pourquoi ne pas utiliser les modules ?

"Grognon-6" correspond à qui ? une unité ? un groupe ?

Sinon soit tu utilises les commandes, soit les fonctions, mais pas les 2 en même temps.
Exemple pour :

xx setCurrentTask task3;


A remplacer par :

"task3" call BIS_fnc_taskSetCurrent;


Attention, dans ton code pour la création de tâche, il y a plusieurs ";" à la suite => à corriger


http://www.clan-ado.fr/images/upload/membres/3_1335205596.jpg

Membre
Avatar de P-Milkman
  • Age : 33 ans
  • Messages : 15
  • Inscrit : 22 Avril 2017
  • Statut : Hors ligne
 
Lien vers ce message 22 Septembre 2022, 13:07
Message édité 1 fois, dernière édition par P-Milkman, 22 Septembre 2022, 13:34  

Grognon-6 est le nom du groupe du joueur (et donc inclus les 4 IA du groupe) normalement.

J'admets voir plus clair sans les modules, mais comme j'ai des lacunes en script, j'y passe un peu plus de temps je l'accorde.

Le remplacement par BIS_fnc_taskSetCurrent sera bien effectif pour tous les membres du groupe ?

Je vais chasser les ; en trop.

Encore merci de tes réponses toujours clairs !

Edit:

Effectivement, ça fonctionne mieux maintenant, mais j'ai une erreur qui vient sur la ligne 4 de chacun des .sqf de task (3 et 6), les deux ont le même modèle, est-ce le deuxième Call qui plante l'ensemble ?
Grognon-6 est bien reconnu comme nom de groupe dans les autres Tasks, mais ces deux là s'activant via un holdaction puis script, il doit y avoir une différence là.

Task3.sqf
sleep 3;
call{["task2","SUCCEEDED"] call BIS_fnc_taskSetState;};
sleep 2;
call{[Grognon-6, "task3", ["D'après le chef du village, des forces Tura ont pris position dans un petit village au sud.Allez faire le ménage Grognon-6!", "Reprendre le village", "obj3"], [3235.73,2051.75], "ASSIGNED", 2, true, "ATTACK"] call BIS_fnc_taskCreate;
execVm "Sound\intro1.sqf"; "task3" call BIS_fnc_taskSetCurrent;}



Leader
Général
Avatar de The-KiLLeR
  • Age : 36 ans
  • Messages : 2154
  • Inscrit : 29 Janvier 2007
  • Statut : Hors ligne
  • Spécialité : Démolition Expert
 
Lien vers ce message 22 Septembre 2022, 13:50
Message édité 4 fois, dernière édition par The-KiLLeR, 22 Septembre 2022, 13:52  

Tes call qui englobe le code ne servent à rien ici.

sleep 3;
["task2","SUCCEEDED"] call BIS_fnc_taskSetState;
sleep 2;
[Grognon-6, "task3", ["D'après le chef du village, des forces Tura ont pris position dans un petit village au sud.Allez faire le ménage Grognon-6!", "Reprendre le village", "obj3"], [3235.73,2051.75], "ASSIGNED", 2, true, "ATTACK"] call BIS_fnc_taskCreate;
execVm "Sound\intro1.sqf";
"task3" call BIS_fnc_taskSetCurrent;


Si tu veux que ton script soit exécuté chez tout le monde, il y a deux solutions :
- soit tu utilises des remoteExec ou remoteExecCall pour diffuser chez tous les joueurs (mais attention à l'utiliser correctement..)
- soit lors de la validation de ton action, tu utilises une variable globale qui passe par exemple de "false" à "true", et dans un déclencheur, lorsque celle-ci est à "true" tu appelles et exécute ton script.

ps: pour moi le nom du groupe "Grognon-6" est non valide pour le jeu.


http://www.clan-ado.fr/images/upload/membres/3_1335205596.jpg

Membre
Avatar de P-Milkman
  • Age : 33 ans
  • Messages : 15
  • Inscrit : 22 Avril 2017
  • Statut : Hors ligne
 
Lien vers ce message 22 Septembre 2022, 14:16



ps: pour moi le nom du groupe "Grognon-6" est non valide pour le jeu.


Oh punaise !! Merci merci merci !! Après avoir testé, en changeant le nom du groupe par Grognon, tout fonctionne sans problèmes !! Je n'y comprends rien, car les deux premières task utilisaient la même syntaxe et ça fonctionnait, d'où mon impression que c'était OK.
En tous cas, maintenant c'est nickel :)

Encore une fois, merci beaucoup !

Je vais utiliser des variables pour les différents appels, il ne me reste plus qu'à écrire/enregistrer les voix et préparé les scripts qui les appellent. Merci!


Répondre





.