|
|
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!
|
|
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;}
|
|
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
|
|
Merci beaucoup !! Tu m'a vraiment permis d'arriver à ce que je souhaitais !
Ci-dessous le code modifié avec ajout d'un marqueur lors de la dépose et des lignes devenues inutiles en moins. SI besoin, n'hésitez pas à l'emprunter/modifier!!
/*************************************************************************************************************
Original code: thedubl
Modification avec le son, les dialogues et la traduction franaise: P. Milkman
Conseils et aides de The-Killer du Clan Ado: https://www.clan-ado.fr/forum/index.php
************************************************************************************************************/
//définition des fonctions
dub_fnc_Land = {
params["_InsertionHeli","_helo","_pos"];
[_pos, 0, "Land_HelipadEmpty_F", west] call BIS_fnc_spawnVehicle;
_markerstr = createMarker ["insertion", _pos];
_markerstr setMarkerType "mil_join";
_markerstr setMarkerColor "colorBLUFOR";
_markerstr setmarkerText "Zone d'insértion";
_insertionWp2 = _InsertionHeli addWaypoint [_pos, 0];
_insertionWp2 setWaypointType "TR UNLOAD";
_insertionWp2 setWaypointSpeed "FULL";
_insertionWp2 setWaypointFormation "COLUMN";
_insertionWp2 setWaypointCompletionRadius 10;
_InsertionHeli setBehaviour "CARELESS";
_insertionWp2 setWaypointStatements ["true", "execVm 'Sound\heli\heli9.sqf';"]; //heli9;
_helo flyInHeightASL [25,50,50];
//Vérifications d'étapes
waitUntil {vehicle player == player};
{
unassignVehicle _x ;
moveOut _x
} foreach units group player;
//Ajout du "Retour la base"
[_InsertionHeli] spawn dub_fnc_rtb;
dub_showActions = false;
};
dub_fnc_rtb = {
params["_InsertionHeli"];
sleep 3;
sleep 2;
_insertionWp3 = _InsertionHeli addWaypoint [getMarkerPos "transportdelete", 0];
_insertionWp3 setWaypointType "MOVE";
_insertionWp3 setWaypointSpeed "FULL";
_insertionWp3 setWaypointFormation "COLUMN";
_insertionWp3 setWaypointCompletionRadius 50;
_InsertionHeli setBehaviour "CARELESS";
_insertionWp3 setWaypointStatements ["true","{deleteVehicle _x} forEach crew helo + [helo]; missionNamespace setVariable['insertion',false,true];" ];
sleep 10;
deleteMarker "insertion";
execVm "Sound\heli\heli11.sqf";//heli11
};
//déroulement du script
missionNamespace setVariable["insertion",true,true];
_host = _this select 0;
_caller = _this select 1;
_id = _this select 2;
_params = _this select 3;
_type = _params select 0;//true pour tout le groupe, false pour le joueur seulement.
execVm "Sound\heli\heli1.sqf"; //heli1
sleep 4;
_heliPos = [(getPos player select 0)+2000,(getPos player select 1)+random 2000,(getPos player select 2)+300];
InsertionHeli = createGroup WEST;
{
_vehType = _x select 0;
_vehName = _x select 1;
_veh = [_heliPos, 0, _vehType, InsertionHeli] call BIS_fnc_spawnVehicle;
if (_vehName != "") then {
(_veh select 0) setVehicleVarName _vehName;
missionNamespace setVariable [_vehName, (_veh select 0)];
};
} forEach [
["B_Heli_Transport_01_F", "helo"] //** heli classname
];
sleep 1;
//zone de récupération
_playerPos = getPos player;
_arrivePos = [( _playerPos select 0)+50,(_playerPos select 1)+50,( _playerPos select 2)];
_pickupPos = [( _playerPos select 0)+round(random 10),( _playerPos select 1)+round(random 10),( _playerPos select 2)];
//vérifications
_monitor = [] spawn { waituntil { sleep 1; (!alive helo) && (!alive player)}; {deleteVehicle _x} forEach crew helo + [helo];};
//Déplacement vers la zone en attente de signal
_insertWp = InsertionHeli addWaypoint [_arrivePos, 0];
_insertWp setWaypointType "Move";
_insertWp setWaypointSpeed "FULL";
_insertWp setWaypointFormation "COLUMN";
_insertWp setWaypointCompletionRadius 50;
//selon l'heure il faudra soit une fumigène, soit une grenade IR
if (daytime >= 0 && daytime <= 6 ) then {
//ncessite IR";
execVm "Sound\heli\heli2.sqf"; //heli2
}else{
//nécessite fumigène;
execVm "Sound\heli\heli3.sqf"; //heli3
};
//attendre que l'hélico soit proche
waituntil { sleep 1; (_caller distance helo) <= 250 ; }; //B_IR_Grenade
if (daytime >= 0 && daytime <= 6 ) then {
execVm "Sound\heli\heli4.sqf"; //heli4
waituntil { sleep 1; count(_caller nearObjects ["IRStrobeBase",50])!=0 };
}else{
execVm "Sound\heli\heli5.sqf"; //heli5
waituntil { sleep 1; count( _caller nearObjects ["SmokeShell",50])!=0;};
};
sleep 5;
//Récupération
execVm "Sound\heli\heli6.sqf"; //heli6
sleep 2;
//Définition du point de récupération
[_pickupPos, 0, "Land_HelipadEmpty_F", west] call BIS_fnc_spawnVehicle;
_insertionWp = InsertionHeli addWaypoint [_pickupPos, 0];
_insertionWp setWaypointType "TR UNLOAD";
_insertionWp setWaypointSpeed "FULL";
_insertionWp setWaypointFormation "COLUMN";
_insertionWp setWaypointCompletionRadius 10;
sleep 3;
execVm "Sound\heli\heli7.sqf"; //heli7
//Vérifications d'étapes
waituntil { sleep 1; (player != vehicle player && player in helo && alive helo || (!alive helo)) } ;
//Ouverture de la map et désignation de lieu
if (not alive _host) exitwith {
hint "Insertion non valide";
missionNamespace setVariable["insertion",false,true];
_host removeaction _id;
};
//Hint de consigne
hint "Commande: Choisir un point d'insertion.";
sleep 2;
hintSilent "";
openMap true;
execVm "Sound\heli\heli8.sqf"; //heli8
mapclick = false;
onMapSingleClick "clickpos = _pos; mapclick = true; onMapSingleClick """";true;";
waituntil {mapclick or !(visiblemap)};
if (!visibleMap) exitwith {
//Hint de consigne
hint "Commande: Demande annule...";
missionNamespace setVariable["insertion",false,true];
};
sleep 1;
openMap false;
[InsertionHeli,helo,clickpos] call dub_fnc_Land;
//if (!alive helo) exitWith {call dub_fnc_Land;};
//Fonctions du pilotage
dub_showActions = false;
(La mission démo se trouve sur mon Workshop Steam - voir ma signature du forum)
|
|
Hello, le fichier est légèrement changé depuis hier, je fais des tests depuis ce matin
https://1fichier.com/?b8ywf1q0t082a9ljkk91
J'essaie de faire en sorte que lorsque l'on clique sur le lieu pour la map, l'hélico décolle tout de suite, en lançant dub_fnc_Land, à ce moment là, je souhaiterais que là on l'on a cliqué, un heliport invisible apparaisse.
Puis dès qu'il nous a déposé et que l'hélico est vie il lance dub_fnc_rtb, et seulement une fois l'hélico delete, alors les joueurs peuvent à nouveau avoir l'Action
|
|
Merci beaucoup, je n'avais pas vu venir la nécessité de doublé les " et ' pour séparer les infos!
En fait, à l'heure actuelle, lorsque je suis dans l'hélico, la map s'ouvre automatiquement. Je clique là où je souhaite atterrir. Un sleep de 1, puis je reviens à la vue de mon personnage
et je dois sélectionner "Ordre de départ" puis "atterrir" pour que l'hélico se mette en route. Je souhaiterais que lorsque je clique, il se mette directement en route.
Pour cette étape, j'ai également un soucis de syntaxe avec ma création d'héliport invisible (pour faciliter l'atterrissage).
En plus d'indiquer la position directement à l'hélico, j'aimerais qu'un héliport invisible se créé là ou j'ai cliqué, mais pour le moment je patauge ^^
Édit: j'vais essayer avec du waituntil et reformuler la fin du script aujourd'hui, j'espère que ça va fonctionner
|
|
The-Killer, mon héro !
Merci pour l'énorme coup de main, je n'avais pas pensé du tout à utiliser une variable, ça simplifie la vie ! merci beaucoup !
Du coup j'ai deux erreurs qui apparaissent, ligne 19 et 179 (voir code ci-dessous, les remarques sont en commentaire)
Par contre, du coup j'ai une autre question, qui concerne la fin du script, je souhaiterais que lorsque que l'on entre dans l'hélico la map s'ouvre, le pilote nous indique de choisir une destination, jusque là, ça fonctionne,
mais j'aimerais que lorsque l'on clique, l'hélico se mette directement en route. Je suppose que ça doit passer par le onMapClick
insertion.sqf à jour
/*************************************************************************************************************
Original code: thedubl
Modification with sound & French translation: P. Milkman
setup:
1. add this to initplayerlocal
[[player,[("<t color=""#ff8000"">" + ("Transport") + "</t>"),{_this execVM "scripts\insertion.sqf"},[player],0,false,true, "",'player ==_target']],"addAction",true,true,false] call BIS_fnc_MP;
2. Place this code in folder called "scripts" and name it "insertion.sqf"
3. Place the folder "heli" in a folder named Sound in your mission's folder
3. place a default marker anywhere on the map called "transportdelete"
************************************************************************************************************/
missionNamespace setVariable["insertion",true,true]; // variable mise au début du script impliquant un message d'erreur (ligne 19)
_host = _this select 0;
_caller = _this select 1;
_id = _this select 2;
_params = _this select 3;
_type = _params select 0;//true for all group, false for player only.
execVm "Sound\heli\heli1.sqf"; //heli1
sleep 4;
/********************************************************************
spawn chopper
**Going to make this spawn multiple helos later.
********************************************************************/
_heliPos = [(getPos player select 0)+1000,(getPos player select 1)+random 1000,(getPos player select 2)+300];
InsertionHeli = createGroup WEST;
{
_vehType = _x select 0;
_vehName = _x select 1;
_veh = [_heliPos, 0, _vehType, InsertionHeli] call BIS_fnc_spawnVehicle;
if (_vehName != "") then {
(_veh select 0) setVehicleVarName _vehName;
missionNamespace setVariable [_vehName, (_veh select 0)];
};
} forEach [
["B_Heli_Transport_01_F", "helo"] //** heli classname
];
sleep 1;
//pickup
_playerPos = getPos player;
_arrivePos = [( _playerPos select 0)+50,(_playerPos select 1)+50,( _playerPos select 2)];
_pickupPos = [( _playerPos select 0)+round(random 10),( _playerPos select 1)+round(random 10),( _playerPos select 2)];
//monitor
_monitor = [] spawn { waituntil { sleep 1; (!alive helo) && (!alive player)}; {deleteVehicle _x} forEach crew helo + [helo];};
//Go to location wait for signal
_insertWp = InsertionHeli addWaypoint [_arrivePos, 0];
_insertWp setWaypointType "Move";
_insertWp setWaypointSpeed "LIMITED";
_insertWp setWaypointFormation "COLUMN";
//_insertWp setWaypointLoiterRadius 50;
_insertWp setWaypointCompletionRadius 50;
//_insertWp setWaypointStatements ["true", "if (daytime >= 0 && daytime <= 6 ) then {""Deploy IR gernade!"" remoteExec [""hint""];}else{"" Pop smoke!"" remoteExec [""hint""];};"];
//depending on time of dayt requires either ir or smoke
if (daytime >= 0 && daytime <= 6 ) then {
//_caller groupchat "Wait to deploy IR gernade until we clear the area and in range!";
execVm "Sound\heli\heli2.sqf"; //heli2
}else{
//_caller groupchat "Wait to pop smoke until we clear the area and in range!";
execVm "Sound\heli\heli3.sqf"; //heli3
};
//Wait until the chopper is close.
waituntil { sleep 1; (_caller distance helo) <= 250 ; }; //B_IR_Grenade
if (daytime >= 0 && daytime <= 6 ) then {
execVm "Sound\heli\heli4.sqf"; //heli4
waituntil { sleep 1; count(_caller nearObjects ["IRStrobeBase",50])!=0 };
}else{
execVm "Sound\heli\heli5.sqf"; //heli5
waituntil { sleep 1; count( _caller nearObjects ["SmokeShell",50])!=0;};
};
sleep 5;
//PICKUP!!!
//_caller groupchat "We have eyes on... Landing!";
execVm "Sound\heli\heli6.sqf"; //heli6
sleep 2;
//set the way point for pickup
[_pickupPos, 0, "Land_HelipadEmpty_F", west] call BIS_fnc_spawnVehicle;
_insertionWp = InsertionHeli addWaypoint [_pickupPos, 0];
_insertionWp setWaypointType "TR UNLOAD";
_insertionWp setWaypointSpeed "LIMITED";
_insertionWp setWaypointFormation "COLUMN";
_insertionWp setWaypointCompletionRadius 10;
sleep 3;
//_caller groupchat "Once we land, load up quickly...";
execVm "Sound\heli\heli7.sqf"; //heli7
//Once in allow order options
waituntil { sleep 1; (player != vehicle player && player in helo && alive helo || (!alive helo)) } ;
//**********************************open map and get pos***************************
if (not alive _host) exitwith {
hint "Insertion non valide";
missionNamespace setVariable["insertion",false,true]; // variable mise en cas d'échec
_host removeaction _id;
};
//_caller groupchat "Select insertion point.";
hint "Commande: Choisir un point d'insertion.";
openMap true;
execVm "Sound\heli\heli8.sqf"; //heli8
mapclick = false;
onMapSingleClick "clickpos = _pos; mapclick = true; onMapSingleClick """";true;";
waituntil {mapclick or !(visiblemap)};
if (!visibleMap) exitwith {
//_caller groupchat "Request Cancelled...";
hint "Commande: Demande annulée...";
missionNamespace setVariable["insertion",false,true];// variable mise en cas d'échec
};
pos = clickpos;
sleep 1;
openMap false;
//*****************************************************************************
//_caller groupchat "Waiting for orders... use the order pilot action!";
if (!alive helo) exitWith {};
/**************Funcitons for commanding pilot******************************/
dub_showActions = true;
dub_fnc_Land = {
[_pos, 0, "Land_HelipadEmpty_F", west] call BIS_fnc_spawnVehicle;
_insertionWp2 = InsertionHeli addWaypoint [pos, 0];
_insertionWp2 setWaypointType "TR UNLOAD";
_insertionWp2 setWaypointSpeed "FULL";
_insertionWp2 setWaypointFormation "COLUMN";
_insertionWp2 setWaypointCompletionRadius 10;
InsertionHeli setBehaviour "CARELESS";
_insertionWp2 setWaypointStatements ["true", """"];
_insertionWp2 setWaypointScript [execVm "Sound\heli\heli9.sqf";]; //heli9; //Ligne 179: je dois me louper dans la syntaxe, je souhaite lancé le sqf lorsque l'hélico nous dépose...
helo flyInHeightASL [25,50,50];
//Add rtb addaction
[] spawn dub_fnc_rtb;
dub_showActions = true;
};
dub_fnc_rtb = {
sleep 3;
execVm "Sound\heli\heli10.sqf"; //heli10
sleep 2;
_rtb = player addAction ["<t color='#2097F7'>Retour à la base!</t>" ,{
_insertionWp3 = InsertionHeli addWaypoint [getMarkerPos "transportdelete", 0];
_insertionWp3 setWaypointType "MOVE";
_insertionWp3 setWaypointSpeed "FULL";
_insertionWp3 setWaypointFormation "COLUMN";
_insertionWp3 setWaypointCompletionRadius 50;
InsertionHeli setBehaviour "CARELESS";
_insertionWp3 setWaypointStatements ["true","{deleteVehicle _x} forEach crew helo + [helo]; " ];
missionNamespace setVariable["insertion",false,true];
_player = _this select 1;
_id = _this select 2;
_player removeaction _id;
execVm "Sound\heli\heli11.sqf";//heli11
},[],0,false,true,"",'vehicle player ==_target'];
};
/****************************************MENU***************************************/ //partie que je souhaite faire disparaitre
INSERTIONMENU =
[
["Options",true],
["Attérir", [3], "", -5, [["expression", "_thread = 1 spawn dub_fnc_Land ;"]], "1", "1"]
];
_menu = _caller addAction [("<t color=""#2097F7"">" + ("Ordre de départ") + "</t>"), {showCommandingMenu "#USER:INSERTIONMENU";}, [], -99, false, true, "", "dub_showActions"];
if (!alive helo) exitWith { _caller removeaction _menu;};
Merci d'avance pour les possibles éclaircissements !
|
|
Hello le clan Ado, après un paquet de mois de pause, j'ai repris l'édition de mission.
Je fais à nouveau face à un joli mur
Après avoir essayer le scénario "Extraction" de Western Sahara, j'ai voulu me renseigner sur un script de transport en hélico un peu plus poussé que le module de base du jeu.
En fouillant, j'ai trouvé quelque chose qui me rappelait Arma 2 (avec signalement à la fumigène ou IR)
J'ai donc commencé à mettre en forme le code que je souhaite en me basant sur celui trouvé. Je souhaite qu'il soit fonctionnel en SP et MP.
J'ai essayé de joindre le codeur intial Thedubl via Steam mais pas de réponses pour le moment.
Deux soucis s'offrent à moi:
- j'aimerais rendre l'addAction uniquement disponible quand aucun hélicoptère n'est créé. Actuellement, à chaque activation, un hélico spawn...
- pour le visuel, je souhaiterais inclure une image à coté du Addaction du menu déroulant (<img size='2' image='\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\transport_ca.paa'/>)
J'ai essayé pleins de méthodes, mais rien ne semble fonctionner. En dehors de ça, le script est tout à fait fonctionnel, traduit en VF et incluant les sons en Anglais.
J'utilise 2 fichiers pour faire tourner ça:
initPlayerlocal.sqf
//insertion
[[player,[("<t color=""#2097F7"">" + ("Transport Aérien") + "</t>"),{_this execVM "scripts\insertion.sqf"},[player],0,false,true, "",'player ==_target and (_target distance getMarkerPos ''safezone'') >= 250']],"addAction",true,true,false] call BIS_fnc_MP;
// Add it back when you die/respawn.
player addEventHandler
[
"respawn",
{
insertion = [[player,[("<t color=""#2097F7"">" + ("Transport Aérien") + "</t>"),{_this execVM "scripts\insertion.sqf"},[player],0,false,true, "",'player ==_target and (_target distance getMarkerPos ''safezone'') >= 250']],"addAction",true,true,false] call BIS_fnc_MP;
}
];
et
insertion.sqf
/*************************************************************************************************************
Original code: thedubl
Modification with sound & French translation: P. Milkman
setup:
1. add this to initplayerlocal
[[player,[("<t color=""#ff8000"">" + ("Transport") + "</t>"),{_this execVM "scripts\insertion.sqf"},[player],0,false,true, "",'player ==_target']],"addAction",true,true,false] call BIS_fnc_MP;
2. Place this code in folder called "scripts" and name it "insertion.sqf"
3. Place the folder "heli" in a folder named Sound in your mission's folder
3. place a default marker anywhere on the map called "transportdelete"
************************************************************************************************************/
_host = _this select 0;
_caller = _this select 1;
_id = _this select 2;
_params = _this select 3;
_type = _params select 0;//true for all group, false for player only.
execVm "Sound\heli\heli1.sqf"; //heli1
sleep 4; //heli1
/********************************************************************
spawn chopper
**Going to make this spawn multiple helos later.
********************************************************************/
_heliPos = [(getPos player select 0)+1000,(getPos player select 1)+random 1000,(getPos player select 2)+300];
InsertionHeli = createGroup WEST;
{
_vehType = _x select 0;
_vehName = _x select 1;
_veh = [_heliPos, 0, _vehType, InsertionHeli] call BIS_fnc_spawnVehicle;
if (_vehName != "") then {
(_veh select 0) setVehicleVarName _vehName;
missionNamespace setVariable [_vehName, (_veh select 0)];
};
} forEach [
["B_Heli_Transport_01_F", "helo"] //** heli classname
];
sleep 1;
//pickup
_playerPos = getPos player;
_arrivePos = [( _playerPos select 0)+50,(_playerPos select 1)+100,( _playerPos select 2)];
_pickupPos = [( _playerPos select 0)+round(random 10),( _playerPos select 1)+round(random 10),( _playerPos select 2)];
//monitor
_monitor = [] spawn { waituntil { sleep 1; (!alive helo) && (!alive player)}; {deleteVehicle _x} forEach crew helo + [helo];};
//Go to location wait for signal
_insertWp = InsertionHeli addWaypoint [_arrivePos, 0];
_insertWp setWaypointType "Move";
_insertWp setWaypointSpeed "LIMITED";
_insertWp setWaypointFormation "COLUMN";
//_insertWp setWaypointLoiterRadius 50;
_insertWp setWaypointCompletionRadius 50;
//_insertWp setWaypointStatements ["true", "if (daytime >= 0 && daytime <= 6 ) then {""Deploy IR gernade!"" remoteExec [""hint""];}else{"" Pop smoke!"" remoteExec [""hint""];};"];
//depending on time of dayt requires either ir or smoke
if (daytime >= 0 && daytime <= 6 ) then {
//_caller groupchat "Wait to deploy IR gernade until we clear the area and in range!";
execVm "Sound\heli\heli2.sqf"; //heli2
}else{
//_caller groupchat "Wait to pop smoke until we clear the area and in range!";
execVm "Sound\heli\heli3.sqf"; //heli3
};
//Wait until the chopper is close.
waituntil { sleep 1; (_caller distance helo) <= 250 ; }; //B_IR_Grenade
if (daytime >= 0 && daytime <= 6 ) then {
execVm "Sound\heli\heli4.sqf"; //heli4
waituntil { sleep 1; count(_caller nearObjects ["IRStrobeBase",50])!=0 };
}else{
execVm "Sound\heli\heli5.sqf"; //heli5
waituntil { sleep 1; count( _caller nearObjects ["SmokeShell",50])!=0;};
};
sleep 5;
//PICKUP!!!
//_caller groupchat "We have eyes on... Landing!";
execVm "Sound\heli\heli6.sqf"; //heli6
sleep 2;
//set the way point for pickup
_insertionWp = InsertionHeli addWaypoint [_pickupPos, 0];
_insertionWp setWaypointType "TR UNLOAD";
_insertionWp setWaypointSpeed "LIMITED";
_insertionWp setWaypointFormation "COLUMN";
_insertionWp setWaypointCompletionRadius 10;
sleep 3;
//_caller groupchat "Once we land, load up quickly...";
execVm "Sound\heli\heli7.sqf"; //heli7
//Once in allow order options
waituntil { sleep 1; (player != vehicle player && player in helo && alive helo || (!alive helo)) } ;
//**********************************open map and get pos***************************
if (not alive _host) exitwith {
hint "Insertion non valide";
_host removeaction _id;
};
//_caller groupchat "Select insertion point.";
hint "Commande: Choisir un point d'insertion.";
openMap true;
mapclick = false;
onMapSingleClick "clickpos = _pos; mapclick = true; onMapSingleClick """";true;";
waituntil {mapclick or !(visiblemap)};
if (!visibleMap) exitwith {
//_caller groupchat "Request Cancelled...";
hint "Commande: Demande annulée...";
};
pos = clickpos;
sleep 1;
openMap false;
//*****************************************************************************
//_caller groupchat "Waiting for orders... use the order pilot action!";
execVm "Sound\heli\heli8.sqf"; //heli8
if (!alive helo) exitWith {};
/**************Funcitons for commanding pilot******************************/
dub_showActions = true;
dub_fnc_Land = {
_insertionWp2 = InsertionHeli addWaypoint [pos, 0];
_insertionWp2 setWaypointType "TR UNLOAD";
_insertionWp2 setWaypointSpeed "FULL";
_insertionWp2 setWaypointFormation "COLUMN";
_insertionWp2 setWaypointCompletionRadius 10;
InsertionHeli setBehaviour "CARELESS";
_insertionWp2 setWaypointStatements ["true", {_this execVm "Sound\heli\heli9.sqf";}]; //heli9"];
helo flyInHeightASL [25,50,50];
//Add rtb addaction
[] spawn dub_fnc_rtb;
dub_showActions = false;
};
dub_fnc_rtb = {
sleep 3;
execVm "Sound\heli\heli10.sqf"; //heli10
sleep 2;
_rtb = player addAction ["<t color='#2097F7'>Retour à la base!</t>" ,{
_insertionWp3 = InsertionHeli addWaypoint [getMarkerPos "transportdelete", 0];
_insertionWp3 setWaypointType "MOVE";
_insertionWp3 setWaypointSpeed "FULL";
_insertionWp3 setWaypointFormation "COLUMN";
_insertionWp3 setWaypointCompletionRadius 50;
InsertionHeli setBehaviour "CARELESS";
_insertionWp3 setWaypointStatements ["true","{deleteVehicle _x} forEach crew helo + [helo]; " ];
_player = _this select 1;
_id = _this select 2;
_player removeaction _id;
execVm "Sound\heli\heli11.sqf";//heli11
},[],0,false,true,"",'vehicle player ==_target'];
};
/****************************************MENU***************************************/
INSERTIONMENU =
[
["Options",true],
["Attérir", [3], "", -5, [["expression", "_thread = 1 spawn dub_fnc_Land ;"]], "1", "1"]
];
_menu = _caller addAction [("<t color=""#2097F7"">" + ("Ordre de départ") + "</t>"), {showCommandingMenu "#USER:INSERTIONMENU";}, [], -99, false, true, "", "dub_showActions"];
if (!alive helo) exitWith { _caller removeaction _menu;};
Est-ce que l'un d'entre vous aurez une idée pour mes deux petits soucis ?
D'avance merci
|
|
Je suis toujours sur le soucis de faire disparaitre la possibilité de choisir le loadout de base de l'unité en plus de ceux que j'ai ajouté, dês que j'aurais bouclé ça, je pense que j'aurai fais le tour de l'outil respawn de base du jeu, je ferais un tuto complet (surement ici et sur le forum de la cfr), car à part les deux trois infos de base fournies par Bohemia, pas grand chose sur l'utilisation de ce bidule.
|
|
Chef oui chef, aprês quelques tentatives j'ai finalement trouvé un compromis pas mauvais.
Voici un bout de mon description.ext:
class CfgRoles
{
class Seal
{
displayName = "Seal";
icon = "\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa";
};
};
class CfgRespawnInventory
{
class WEST1
{
displayName = "Team Leader"; // Name visible in the menu
icon = "\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa"; // Icon displayed next to the name
role = "Seal";
weapons[] =
{
"SMA_HK417vfg",
"Rangefinder",
"hgun_mas_cia_P07_F"
};
magazines[] =
{
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"16Rnd_9x21_red_Mag",
"16Rnd_9x21_red_Mag"
};
items[] =
{
"FirstAidKit",
"FirstAidKit",
"FirstAidKit",
"FirstAidKit",
"Chemlight_green",
"Chemlight_green",
"Chemlight_green",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell"
};
linkedItems[] =
{
"V_mas_cia_PlateCarrier1_rgr",
"rhsusf_opscore_mar_fg_pelt",
"G_Shades_Black",
"ItemMap",
"ItemCompass",
"ItemWatch",
"ItemRadio",
"ItemGps",
"rhsusf_ANPVS_15",
"SMA_supptan_762",
"rhsusf_acc_anpeq15",
"rhsusf_acc_premier_anpvs27",
"SMA_Gripod_01",
"muzzle_snds_L"
};
uniformClass = "rhs_uniform_g3_rgr";
backpack = "B_TacticalPack_blk";
};
class WEST2
{
displayName = "Sniper"; // Name visible in the menu
icon = "\A3\Ui_f\data\GUI\Cfg\Ranks\sergeant_gs.paa"; // Icon displayed next to the name
role = "Seal";
weapons[] =
{
"srifle_LRR_F",
"Rangefinder",
"hgun_ACPC2_F"
};
magazines[] =
{
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"7Rnd_408_Mag",
"rhs_mag_m18_red",
"rhs_mag_m18_red",
"rhs_mag_m18_red",
"rhs_mag_m18_red",
"rhs_mag_m18_red",
"rhs_mag_m18_red",
"9Rnd_45ACP_Mag",
"9Rnd_45ACP_Mag"
};
items[] =
{
"Medikit",
"Chemlight_green",
"Chemlight_green",
"Chemlight_green",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell"
};
linkedItems[] =
{
"rhsusf_spc_marksman",
"rhsusf_mich_helmet_marpatwd_norotos_arc",
"G_Squares_Tinted",
"ItemMap",
"ItemCompass",
"ItemWatch",
"ItemRadio",
"ItemGps",
"NVGogglesB_gry_F",
"SMA_supptan_762",
"rhsusf_acc_anpeq15",
"optic_tws_mg",
"muzzle_snds_acp"
};
uniformClass = "rhs_uniform_FROG01_wd";
backpack = "B_AssaultPack_cbr";
};
};
Couplé à ces quelques lignes dans l'init:
[west,"WEST1"] call BIS_fnc_addRespawnInventory;
[west,"WEST2"] call BIS_fnc_addRespawnInventory;
Ma class rôle fonctionne, Seal apparait, et j'ai bien le choix entre Team Leader et Sniper, mais pour une raison que je n'explique pas, j'ai également un rôle Grenadier et chef d'équipe reco en classe, surement le bazar de base, une idée de comment virer ce truc ?
|
|
J'ai à peu prês compris comment fonctionne le bazar, mais je reste bloqué sur la création de classes/rôles. L'idée c'est de proposé différentes classes, avec chacune un loadout précis lors de l'écran de spawn/respawn.
J'ai essayer avec ça dans mon descritpion.ext :
class CfgRespawnInventory
{
class TeamLeader
{
displayName = "Team Leader";
icon = "\A3\ui_f\data\igui\cfg\weaponicons\srifle_ca.paa";
role = "Team Leader";
weapons[] =
{
"SMA_HK417vfg",
"Rangefinder"
};
magazines[] =
{
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"SMA_20Rnd_762x51mm_M80A1_EPR_IR",
"16Rnd_9x21_red_Mag",
"16Rnd_9x21_red_Mag"
};
items[] =
{
"FirstAidKit",
"FirstAidKit",
"FirstAidKit",
"FirstAidKit",
"Chemlight_green",
"Chemlight_green",
"Chemlight_green",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"HandGrenade",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell",
"SmokeShell"
};
linkedItems[] =
{
"V_mas_cia_PlateCarrier1_rgr",
"rhsusf_opscore_mar_fg_pelt",
"G_Shades_Black",
"ItemMap",
"ItemCompass",
"ItemWatch",
"ItemRadio",
"ItemGps",
"rhsusf_ANPVS_15",
"SMA_supptan_762",
"rhsusf_acc_anpeq15",
"rhsusf_acc_premier_anpvs27",
"SMA_Gripod_01",
"hgun_mas_cia_P07_F",
"muzzle_snds_L"
};
uniformClass = "rhs_uniform_g3_rgr";
backpack = "B_TacticalPack_blk";
}; };
Suivi de ça dans l'init:
[west, TeamLeader] call BIS_fnc_addRespawnInventory;
Mais ça ne semble pas fonctionner, des idées ?
|
|
Super, ça marche nickel, un grand merci, je n'avais plus du tout pensé au initServer ... Laborieux comme reprise !!
Merci du coup de pouce !
|
|
Aprês quelques heures de recherches, encore et encore, j'suis tombé sur une fonction sympa que je vous partage:
[CAMP, NomDeMarqueur] call BIS_fnc_addRespawnPosition;
Fonctionne au poil en solo et coop pour ajouter des respawn durant le scénario.
Je reste à l'écoute pour tous conseils/astuces pour ce systême de respawn.
|
|
Re-bonjour à tous,
Je suis face à un soucis, toujours sur la même mission, j'ai besoin de créer un addaction sur un objet (land_document_01_f, le dossier top secret) que j'ai nommé: table. Cet addaction servira pour une des tà¢ches qui consiste à récupérer des informations.
Via l'init de ma mission j'ai insérer cette ligne pour l'addaction:
[[table, ["<t color='#68ccf6'>Récupérer les documents</t>","scripts\objectif.sqf"]],"addAction",true,true] call BIS_fnc_MP;
qui renvoi à mon objectif.sqf
task3 setTaskState "SUCCEEDED";
["TaskSucceeded",["","Récupérer les informations"]] call bis_fnc_showNotification;
deleteVehicle table;
task4 = player createSimpleTask["Contact du FIA"];
task4 setSimpleTaskDescription["Les informations que vous venez de récupérer sont essentielles.<br/>
Nous avons réussir à établir une liaison avec un petit groupe du FIA basé un peu plus au nord de votre position. Mettez-vous en route pour leur remettre les documents.
<br/>
Une fois sur place, faites profil bas, essayez de ne pas vous faire repérer, sinon assurez-vous d'éliminer la menace. La zone que vous allez traverser grouille de CSAT, soyez prudent.
<br/>
Terminé. ", "Contact du FIA", "Contact du FIA"];
task4 setSimpleTaskDestination (getMarkerPos "obj4");
player setcurrenttask task4;
["TaskAssigned",["","Contact du FIA"]] call bis_fnc_showNotification;
seal1 setcurrenttask task4;
seal2 setcurrenttask task4;
seal3 setcurrenttask task4;
seal4 setcurrenttask task4;
seal5 setcurrenttask task4;
_respawn_west2 = createMarker ["respawn_west2", respawn3];
"respawn_west2" setMarkerType "Empty";
En mode test via l'éditeur cela fonctionne, mais en coop en ligne j'ai fais déclencher l'action pour un de mes collêgues, les documents ont bien disparus de la table, mais pas de validation de tà¢che ni d'assignation/création de la suivante, une idée du pourquoi ?
D'avance merci!
|
|
Bonjour, en ce moment je bosse sur une coop assez simple (reprise en main du fameux Eden ^^)
Je souhaite utiliser le systême de respawn présent dans Apex,
J'ai bien compris que cela se faisait depuis le menu Eden, attributs, multijoueur, y a-t-il des choses à savoir spécifiquement pour que tout fonctionne en coop en ligne ?
En suite, j'aimerai que différents respawn apparaissent en fonction de la réussite des tà¢ches.
J'ai donc insérer ce genre de ligne dans mes déclencheurs de tà¢ches afin de créer de nouveaux respawn:
_respawn_west1 = createMarker ["respawn_west1", respawn2];
"respawn_west1" setMarkerType "Empty";
Est-ce que j'ai bon dans la démarche ?
Quelqu'un a-t-il connaissance d'un site avec des infos/astuces sur ce systême concernant les possibilités de création et d'utilisation(en français ou anglais peu importe), car dans l'éditeur il n'y a pas grand chose de clair.
D'avance merci.
|
|
|