Salut à tous,
Je viens de terminer une petite série de scripts dont je tiens à vous faire profiter pour éventuellement les tester en masse et les faire évoluer.
J'avais besoin de mettre énormément d'unités sur Altis pour une mission, mais le soucis, c'était qu'avec trop de monde, ça laggait à mort et je ne pouvais pas dépasser la limite des 144 groupes.
J'ai donc décidé de faire apparaitre des groupes dans des zones et de les faire disparaitre dês le départ des joueurs.
Pour ma mission, c'était idéal puisque l'à®le était occupé par le FIA et le CSAT qui s'affrontaient et que seul mon groupe était BLUFOR.
Il s'agit donc de 4 scripts différents dont je met ici uniquement le code :
SCRIPT pat_spawn.sqf :
SCRIPT vehic_spawn.sqf
SCRIPT combat_spawn.sqf
SCRIPT sup_IA.sqf
Pour appeler ces scripts, il vous suffit de placer sur la map un déclencheur de grande taille (au moins 1200 m) et de le mettre en répétition, déclenchement par le camp du joueur.
Dans le champ activation du déclencheur, indiquer par exemple :
Dans le champ désactivation du déclencheur indiquer par exemple :
Avec cet exemple vous ferez apparaitre entre 1 et 6 groupes d'infanteries du CSAT aléatoirement dans un rayon de 800 m autour du centre du déclencheur. Elles feront chacune des déplacments aléatoires dans une zone d'environ 350 m autour de leur point d'apparition.
Lorsque le groupe du joueur quitte la zone, toutes les unités IA à moins de 1400m du centre du déclencheur seront supprimées.
Sur une mission, il est donc possible de mettre des déclencheurs un peu partout (qui se chevauchent de préférence) et lorsque l'quipe du joueur se déplace, elle rencontre à chaque zone des situations aléatoires avec de nombreuses unités. On peut même simuler des zones de combats assez dense que notre petite équipe traversera.
Dans ma mission par exemple, le groupe arrive dans une ville o๠vont s'affronter plusieurs groupes d'infanterie, assistés par plusieurs groupes de blindés et appuyés par des avions de chasse et des hélicos. Le tout spawnant lorsqu'on pénêtre dans la zone.
EDIT : j'ai corrigé les scripts. Vous pouvez aussi les télécharger directement avec le lien ci-dessous :
https://e-nautia.com/pharel/disk/Divers/SpawnGroup.rar
Je viens de terminer une petite série de scripts dont je tiens à vous faire profiter pour éventuellement les tester en masse et les faire évoluer.
J'avais besoin de mettre énormément d'unités sur Altis pour une mission, mais le soucis, c'était qu'avec trop de monde, ça laggait à mort et je ne pouvais pas dépasser la limite des 144 groupes.
J'ai donc décidé de faire apparaitre des groupes dans des zones et de les faire disparaitre dês le départ des joueurs.
Pour ma mission, c'était idéal puisque l'à®le était occupé par le FIA et le CSAT qui s'affrontaient et que seul mon groupe était BLUFOR.
Il s'agit donc de 4 scripts différents dont je met ici uniquement le code :
SCRIPT pat_spawn.sqf :
Code (Sélectionner)
// Pat_Spawn by Raph_VR : script pour faire apparaitre un certain nombre de patrouilles dans une zone donnée /* entrer en argument : - le nom du déclencheur - le nombre de groupes maximum qui composeront les patrouilles de la zone - l'écartement en m maximal des patrouilles par rapport au centre du déclencheur - l'amplitude maximale de déplacement de chaque patrouille en m - le camp (west, east, resistance) des patrouilles - le lien du configfile du groupe que vous voulez créer ex : configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad" Exemple à placer dans le champ activation d'un déclencheur (nommé "pat") qui fera spawner la patrouille : patrouille = [pat,6,800,350,east,configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad"] execVM "SpawnGroup\pat_spawn.sqf"; */ if (not isServer) exitwith {}; _trg = _this select 0; _taille = _this select 1; _dispersion = _this select 2; _amplitude = _this select 3; _camp = _this select 4; _type = _this select 5; _pos = getpos _trg; for "_x" from 1 to (random _taille) do { grp_x = [[(_pos select 0) + random (_dispersion) - random (_dispersion) , (_pos select 1) + random (_dispersion) - random (_dispersion) , _pos select 2] ,_camp ,_type] call BIS_fnc_spawnGroup; [grp_x, _pos, _amplitude] call bis_fnc_taskPatrol; };
SCRIPT vehic_spawn.sqf
Code (Sélectionner)
// Vehic_Spawn by Raph_VR : script pour faire apparaitre des véhicules et leur équipage dans une zone donnée et les faire patrouiller. Idéal pour les véhicules aériens. /* entrer en argument : - le nom du déclencheur - le nombre d'unités maximum qui vont spawner dans la zone - l'écartement en m maximal des patrouilles par rapport au centre du déclencheur - l'amplitude maximale de déplacement de chaque patrouille en m - le camp (west, east, resistance) des patrouilles - le type d'unité que vous voulez créer. ex : "O_Heli_Attack_02_F" Exemple à placer dans le champ activation d'un déclencheur (nommé heli) qui fera spawner les véhicules aériens patair = [heli,2,100,1700,east,"O_Heli_Attack_02_F"] execVM "SpawnGroup\vehic_spawn.sqf"; */ if (not isServer) exitwith {}; _trg = _this select 0; _taille = _this select 1; _dispersion = _this select 2; _amplitude = _this select 3; _camp = _this select 4; _type = _this select 5; _pos = getpos _trg; for "_x" from 1 to (random _taille) do { vehic_x = [[(_pos select 0) + random (_dispersion) - random (_dispersion) , (_pos select 1) + random (_dispersion) - random (_dispersion) , _pos select 2] ,0,_type,_camp] call BIS_fnc_spawnVehicle; [(group vehic_x), _pos, _amplitude] call bis_fnc_taskPatrol; };
SCRIPT combat_spawn.sqf
Code (Sélectionner)
// combat_spawn par Raph_VR : script pour générerun combat entre deux armées sur une zone donnée /*entrer en argument : - le nom du déclencheur - le nombre de groupes minimum qui composeront chaque armée - le nombre de groupes maximum qui composeront chaque armée - l'écartement en m maximal des groupes d'une armée par rapport au centre de celle-ci - l'amplitude maximale de la zone de rencontre pour le combat - l'orientation en abscisse du camp 1 (axe des x : valeur -1, 0 ou 1) - l'orientation en ordonnée du camp 1 (axe des y : valeur -1, 0 ou 1) - le décalage des points de départ de chaque armée par rapport au centre du déclencheur. - le camp (west, east, resistance) de l'armée 1 - le lien du configfile des groupes que vous voulez créer pour l'armée 1 ex : configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad" - le camp (west, east, resistance) de l'armée 2 - le lien du configfile des groupes que vous voulez créer pour l'armée 2 ex : configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfSquad" Exemple à placer dans le champ activation du déclencheur (nommé "comb") qui fera spawner le combat : comb = [combatinf,2,4,500,350,1,-1,900,east,configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad",resistance,configfile >> "CfgGroups" >> "Indep" >> "IND_F" >> "Infantry" >> "HAF_InfSquad"] execVM "SpawnGroup\combat_spawn.sqf"; */ if (not isServer) exitwith {}; _trg = _this select 0; _taillemin = _this select 1; _taillemax = _this select 2; _dispersion = _this select 3; _amplitude = _this select 4; _orientationx = _this select 5; _orientationy = _this select 6; _decalage = _this select 7; _camp1 = _this select 8; _type1 = _this select 9; _camp2 = _this select 10; _type2 = _this select 11; _pos = getpos _trg; for "_x" from 1 to (_taillemin + random (_taillemax - _taillemin)) do { grp_x = [[(_pos select 0) + (_orientationx * _decalage) + random (_dispersion) - random (_dispersion) , (_pos select 1) + (_orientationy * _decalage) + random (_dispersion) - random (_dispersion) , _pos select 2] ,_camp1 ,_type1 ] call BIS_fnc_spawnGroup; [grp_x, [(_pos select 0) + random (_amplitude) - random (_amplitude) , (_pos select 1) + random (_amplitude) - random (_amplitude), _pos select 2]] call bis_fnc_taskAttack; }; for "_y" from 1 to (_taillemin + random (_taillemax - _taillemin)) do { grp_y = [[(_pos select 0) - (_orientationx * _decalage) + random (_dispersion) - random (_dispersion) , (_pos select 1) - (_orientationy * _decalage) + random (_dispersion) - random (_dispersion) , _pos select 2] ,_camp2 ,_type2 ] call BIS_fnc_spawnGroup; [grp_y, [(_pos select 0) + random (_amplitude) - random (_amplitude) , (_pos select 1) + random (_amplitude) - random (_amplitude), _pos select 2]] call bis_fnc_taskAttack; };
SCRIPT sup_IA.sqf
Code (Sélectionner)
// Sup_IA by Raph_VR : script pour supprimer toutes les unités IA et leurs véhicules des deux camps considérés /* entrer en argument : - le nom du déclencheur - l'amplitude de la zone de suppression autour du centre du déclencheur - le premier camp à supprimer - le deuxiême camp à supprimer Exemple à placer dans le champ désactivation d'un déclencheur (nommé pat) qui fera spawner les véhicules aériens => A combiner avec les autres scripts, ce script a pour effet de supprimer ce que vous avez fait spawner en entrant dans une zone. supp = [pat,800,east,resistance] execVM "SpawnGroup\sup_IA.sqf"; */ if (not isServer) exitwith {}; _trig = _this select 0; _amplitude = _this select 1; _camp1 = _this select 2; _camp2 = _this select 3; _posi = getpos _trig; {if (((side _x == _camp1)OR(side _x == _camp2))&&(_x distance _posi < _amplitude) ) then{deleteVehicle vehicle _x; deleteVehicle _x;} else {}}forEach allUnits;
Pour appeler ces scripts, il vous suffit de placer sur la map un déclencheur de grande taille (au moins 1200 m) et de le mettre en répétition, déclenchement par le camp du joueur.
Dans le champ activation du déclencheur, indiquer par exemple :
Citation
patrouille = [pat,6,800,350,east,configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad"] execVM "pat_spawn.sqf";
Dans le champ désactivation du déclencheur indiquer par exemple :
Citation
sup = [pat,1400] execVM "sup_IA.sqf";
Avec cet exemple vous ferez apparaitre entre 1 et 6 groupes d'infanteries du CSAT aléatoirement dans un rayon de 800 m autour du centre du déclencheur. Elles feront chacune des déplacments aléatoires dans une zone d'environ 350 m autour de leur point d'apparition.
Lorsque le groupe du joueur quitte la zone, toutes les unités IA à moins de 1400m du centre du déclencheur seront supprimées.
Sur une mission, il est donc possible de mettre des déclencheurs un peu partout (qui se chevauchent de préférence) et lorsque l'quipe du joueur se déplace, elle rencontre à chaque zone des situations aléatoires avec de nombreuses unités. On peut même simuler des zones de combats assez dense que notre petite équipe traversera.
Dans ma mission par exemple, le groupe arrive dans une ville o๠vont s'affronter plusieurs groupes d'infanterie, assistés par plusieurs groupes de blindés et appuyés par des avions de chasse et des hélicos. Le tout spawnant lorsqu'on pénêtre dans la zone.
EDIT : j'ai corrigé les scripts. Vous pouvez aussi les télécharger directement avec le lien ci-dessous :
https://e-nautia.com/pharel/disk/Divers/SpawnGroup.rar