Ce code à pour but de générer dynamiquement un convoi de véhicule qui va se rendre d'un point à un autre de la map. L'itinéraire emprunté est choisi aléatoirement parmi une liste d'itinéraires que vous définissez.
Les points de passage sont stockés dans un tableaux et le programme choisi aléatoirement la trajectoire à suivre.
Ce script fait appel aux script Générateur de groupes présent dans ce WiKi.
Les points de passages ont été définis par le script debuggage
Ce scripts à été inspiré par les scripts des Domination écrites par l' excellent Xeno
Le script doit être appelé au moment où l'on souhaite la création du convoi
//Déclenchement de la création du convoi [] execVM "make_convoy.sqf";
//Déclaration des variables locales private ["_ar_convoy_wp","_p","_waypoints","_wp","_grp1","_grp2","_grp3","_grp4","_grp5","_grp6","_grp7","_grp8","_grp9","_grp10","_grp11","_grp12","_grp13","_convoy_OK","_convoy_destroyed"]; /* Création du tableau contenant les points de passages. Ici deux groupes de points de passages sont définis, un qui va de Iguana a Paraizo Via Gulan et un autre qui va de Iguana a Paraizo Via Ortego. La routine choisira aléatoirement un itinéraire ou l'autre. */ _ar_convoy_wp=[ //Iguana a Paraizo Via Gulan [ [10947.8,5072.5,0], [10690.9,5035.82,0], [9799.66,5354.97,0], [9445.05,6213.33,0], [9037.25,6687.27,0], [8803.59,7002.65,0], [8958.15,7775.91,0], [9262.09,8320.11,0], [9801.86,8688.01,0], [10148.6,9318.75,0], [10306.3,9476.01,0], [10455.8,9479.45,0], [10464.4,9322.39,0], [10435.4,9250.11,0] ], //Iguana a Paraizo Via Ortego [ [10940.9,5073.19,0], [10692.9,5035.34,0], [10367.9,5245.27,0], [11344.3,5767.16,0], [11459.8,6127.58,0], [11606.6,6208.40,0], [11823.9,6298.87,0], [12295.8,6785.78,0], [12415.7,7429.14,0], [12746.6,8095.00,0], [12967.2,8847.21,0], [12630.9,8879.27,0], [12601.6,9284.47,0], [11735.6,10226.6,0], [10880.7,10623.1,0], [10501.0,9852.48,0], [10459.8,9623.85,0], [10463.1,9332.91,0], [10432.5,9256.53,0] ] ]; //Sélection d'un itinéraire aléatoire _r=round(random 1); _waypoints=_ar_convoy_wp select _r; _p=(_waypoints) select 0; /* Création des groupes qui composeront notre convoi. */ _grp7=[[(_p select 0)+0, _p select 1, _p select 2],ar_grp_suaz,"BMP2"] call mk_group; _grp1=[[(_p select 0)+30, _p select 1, _p select 2],ar_grp_ural,"UralOpen"] call mk_group; _grp13=[[(_p select 0)+60, _p select 1, _p select 2],ar_grp_suaz,"UralOpen"] call mk_group; _grp2=[[(_p select 0)+90, _p select 1, _p select 2],ar_grp_sural,"UralOpen"] call mk_group; _grp5=[[(_p select 0)+120, _p select 1, _p select 2],ar_grp_suaz,"UAZMG"] call mk_group; _grp3=[[(_p select 0)+150, _p select 1, _p select 2],ar_grp_sural,"UralOpen"] call mk_group; _grp4=[[(_p select 0)+180, (_p select 1)+30, _p select 2],ar_grp_suaz,"UAZMG"] call mk_group; _grp12=[[(_p select 0)+210, (_p select 1)+50, _p select 2],ar_grp_suaz2,"ZSU"] call mk_group; _grp8=[[(_p select 0)+120, (_p select 1)+50, _p select 2],ar_grp_ssolo,"UralRefuel"] call mk_group; _grp9=[[(_p select 0)+150, (_p select 1)+50, _p select 2],ar_grp_ssolo,"UralRepair"] call mk_group; _grp10=[[(_p select 0)+180, (_p select 1)+80, _p select 2],ar_grp_ssolo,"UralReammo"] call mk_group; _grp11=[[(_p select 0)+210, (_p select 1)+80, _p select 2],ar_grp_ssolo,"BMP2Ambul"] call mk_group; _grp6=[[(_p select 0)+240, (_p select 1)+80, _p select 2],ar_grp_suaz,"BMP2"] call mk_group; /* Tous les groupes sont rassemblés en seul, le _grp7 */ {[_x] join _grp7;} forEach units _grp1; {[_x] join _grp7;} forEach units _grp13; {[_x] join _grp7;} forEach units _grp2; {[_x] join _grp7;} forEach units _grp5; {[_x] join _grp7;} forEach units _grp3; {[_x] join _grp7;} forEach units _grp4; {[_x] join _grp7;} forEach units _grp12; {[_x] join _grp7;} forEach units _grp8; {[_x] join _grp7;} forEach units _grp9; {[_x] join _grp7;} forEach units _grp10; {[_x] join _grp7;} forEach units _grp11; {[_x] join _grp7;} forEach units _grp6; /* On créé les points de passages pour le groupe 7. */ { _wp=_grp7 addWaypoint[_x, 0]; _wp setWaypointBehaviour "SAFE"; _wp setWaypointSpeed "NORMAL"; _wp setwaypointtype "MOVE"; _wp setWaypointFormation "COLUMN"; _wp setWaypointTimeout [0,0,0]; sleep 0.001; } forEach _waypoints; /* On change le dernier wp en mode Garde et Combat pour que les gars soient prêts à attaquer quand ils arrivent */ _wp setWaypointFormation "GUARD"; _wp setWaypointBehaviour "COMBAT"; //On efface le 1er waypoint deleteWaypoint [_grp7, 0]; //On va attendre un peu et mettre le convoi en route sleep 60; hint "Le convoi se met en route"; /* On va attendre ici que soit le convoi arrive à destination soit qu'il soit complètement détruit. */ _convoy_OK = false; _convoy_destroyed = false; while {!_convoy_OK && !_convoy_destroyed} do { if (isNull _grp7 || ({alive _x} count (units _grp7)) == 0) then { _convoy_destroyed = true; } else { _leader = leader _grp7; if ((position _leader) distance _pos_end < 50) then { _convoy_OK = true; }; }; sleep 5; }; if(_convoy_OK) then { hint "Le convoi est arrivé"; }; if(_convoy_destroyed) then { hint "Le convoi a été détruit"; }; if (true) exitWith {};
Pas de paramètres
—- clint 26/03/2009 20:51