on va prendre pour exemple une insertion en helico qui débute dans un canyon ,suit ce canyon ,se pose prés de la ville et l'helico éjecte tous les passager et puis repart .
d'abord on vas capturer les mouvement ,
pour ce faire on creer un declencheur Radio alpha et dans le champ sur act on mets
Code : Tout sélectionner
null = [plane1, 120, 30, true] spawn BIS_fnc_UnitCapture
Code : Tout sélectionner
null = [unit, duration, FPS, Firing, StartTime] spawn BIS_fnc_UnitCapture
Unit - l'unite qui vas servir de modele pour la capture
Duration - le temps maxi de l'enregistrement
OPT:FPS - OPTIONAL: le nombres de FPS max qui vont être capturé (default 20). la Limite est de 1 a 100
OPT:Firing - OPTIONAL: si true, est sélectionner on peut a l'instar des mouvement capturer aussi les tirs effectuer par le modele
OPT:StartTime - OPTIONAL: ???????
et on crée un helico et on le nomme plane1
puis pour commencer l'enregistrement on fais 0-0-1
des que on a fini on fais echap une première fois puis encore une fois pour arriver a cette écran
on fais F1, et puis on colle tous ça dans un document texte que on appelleras uh60_1a.sqf (pour moi plus d'une demi-heure pour coller) et on devrait avoir un truc de ce genre la :
on cree 2 uh60 et on les nommes mh1 et mh2 puis un 2 groupes d'infanterie avec pour un dans l'init {_X moveInCargo mh1} forEach units group this et pour l'autre {_X moveInCargo mh2} forEach units group this.
on sauvegarde la mission et on quite arma,on vas dans le dossier mission ou on a créer un init et notre script uh60_1a.sqf
on vas appeler la sequence enregistrer avec cette commande
[mh1,call compile loadFile "uh60_1a.sqf",[mh1,"landingDone"]] spawn BIS_fnc_UnitPlay;
[unite,call compile loadFile "uh60_1a.sqf",[mh1,"variable de la sequence"]] spawn BIS_fnc_UnitPlay;
unite,le nom de l'helico qui vas jouer la séquence
uh60_1a.sqf ,le nom du script ou on a coller l'enregistrement
init.sqf
Code : Tout sélectionner
sleep 0.5;
[mh1,call compile loadFile "uh60_1a.sqf",[mh1,"landingDone"]] spawn BIS_fnc_UnitPlay;
sleep 2;
[mh2,call compile loadFile "uh60_2a.sqf",[mh2,"landingDone"]] spawn BIS_fnc_UnitPlay;
mh1 setVariable ["landingDone",false];
mh2 setVariable ["landingDone",false];
mh1 setVariable ["takeOffReady",false];
mh2 setVariable ["takeOffReady",false];
_stop = {
waitUntil{_this getVariable "landingDone"};
doStop _this;
_this flyInHeight 0;
(driver _this) disableAI "MOVE";
(driver _this) disableAI "AUTOTARGET";
waitUntil{_this setVelocity [0,0,0]; _this getVariable "takeOffReady"};
};
mh1 spawn _stop;
mh2 spawn _stop;
waitUntil{{_X getVariable "landingDone"} count [mh1,mh2] >= 2};
mh1 execVM "unload_uh60.sqf";
mh2 execVM "unload_uh60.sqf";
waitUntil{{_X getVariable "unloaded"} count [mh1,mh2] >= 2};
mh1 setVariable ["takeOffReady",true];
[mh1,call compile loadFile "uh60_1b.sqf",[mh1,"insertionDone"]] spawn BIS_fnc_UnitPlay;
sleep 2;
mh2 setVariable ["takeOffReady",true];
[mh2,call compile loadFile "uh60_2b.sqf",[mh2,"insertionDone"]] spawn BIS_fnc_UnitPlay;
mh1 setVariable ["insertionDone",false];
mh2 setVariable ["insertionDone",false];
_remove = {
waitUntil{_this getVariable "insertionDone"};
_this setPos [random 50,random 50,100 + random 100];
_this setVelocity [0,0,0];
_this enableSimulation false;
_this hideObject true;
};
mh1 spawn _remove;
mh2 spawn _remove;
unload_uh60.sqf
Code : Tout sélectionner
_uh60 = _this;
_uh60 setVariable ["unloaded",false];
_crew = crew _uh60;
_cargo = [_crew,{group _X != group driver _uh60}] call BIS_fnc_conditionalSelect;
waitUntil{(getPos _uh60 select 2) < 1 && (speed _uh60) < 1};
_i = 0;
{
unassignVehicle _X;
_X action ["GETOUT",_uh60];
if(_i mod 2 == 0)then{
_X setPos (_uh60 modelToWorld [2,2,-2]);
_X setDir (getDir _uh60 + 40 + random 25);
}else{
_X setPos (_uh60 modelToWorld [-2,2,-2]);
_X setDir (getDir _uh60 - 40 - random 25);
sleep 1.3;
};
_i = _i + 1;
} forEach _cargo;
sleep 0.7;
_uh60 setVariable ["unloaded",true];
au debut de linit on apelle la sequence d'aproche pour chaque helico
on mets les variable en false
dans la partie _stop ,
avec waitUntil on vas atendre que l'helico est fini sa sequenche d'aproche et passe la variable landingDone en true
pour stopper l'helico, et empêcher que l'ia reprenne les commandes
mh1 spawn _stop;
mh2 spawn _stop;
on fais excuter la partie stop
waitUntil{{_X getVariable "landingDone"} count [mh1,mh2] >= 2}
on synchronise les deux helico dans la phase d'atterrissage
mh1 execVM "unload_uh60.sqf";
mh2 execVM "unload_uh60.sqf";
on fais faire exécuter le script de déchargement de l'infanterie
un fois le script de déchargement de l'infanterie on as un variable unloaded qui passer a true
pour dire que l'infanterie a debarquer
waitUntil{{_X getVariable "unloaded"} count [mh1,mh2] >= 2};
on synchronise les deux helico dans la phase de debarquement
[mh1,call compile loadFile "uh60_1b.sqf",[mh1,"insertionDone"]] spawn BIS_fnc_UnitPlay;
on fais jouer les séquences de décollage et retour a la base
remove = {
waitUntil{_this getVariable "insertionDone"};
_this setPos [random 50,random 50,100 + random 100];
_this setVelocity [0,0,0];
_this enableSimulation false;
_this hideObject true;
};
une fois les séquences de décollage et retour a la base on a la variable insertionDone qui passe en true
on attend que la variable insertionDone passe en true
pour déplacer l'helico hors de vue
le stopper
empêcher que l'ia reprenne le contrôle
et on le cache .
PS
pour jouer des sequences de tir la commande est spawn BIS_fnc_UnitPlayFiring
pour jouer des sequences de mouvement la commande est spawn BIS_fnc_UnitPlayFiring
nutiliser pas calll a la place de spawn
et combiner les deux
[heli1,call compile loadFile "mouvement.sqf",[heli1,"mouvement"]] spawn BIS_fnc_UnitPlay;
[heli1,call compile loadFile "tir.sqf",[heli1,"tir"]] spawn BIS_fnc_UnitPlayFiring;
selon la syntaxe vu plus haut