|
|
Membre
- Age : 33 ans
- Messages : 15
- Inscrit : 22 Avril 2017
- Statut :
|
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
|
Leader
- Age : 36 ans
- Messages : 2151
- Inscrit : 29 Janvier 2007
- Statut :
- Spécialité :
|
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 :
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
|
Membre
- Age : 33 ans
- Messages : 15
- Inscrit : 22 Avril 2017
- Statut :
|
Message édité 1 fois, dernière édition par P-Milkman, 22 Septembre 2022, 14: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
- Age : 36 ans
- Messages : 2151
- Inscrit : 29 Janvier 2007
- Statut :
- Spécialité :
|
Message édité 4 fois, dernière édition par The-KiLLeR, 22 Septembre 2022, 14: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.
|
Membre
- Age : 33 ans
- Messages : 15
- Inscrit : 22 Avril 2017
- Statut :
|
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!
|
|
|
|
|