Bonjour, vous n'êtes actuellement pas connecté sur le forum
Contacter un administrateur :: Se connecter :: S'enregistrer


Armée de l'Ombre


Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Scripts pour spawn de patrouilles aléatoires


Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 23 Septembre 2013, 15:18
Message édité 1 fois, dernière édition par Raph_VR, 16 Octobre 2013, 15:49  

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 :

// 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

// 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

// 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

// 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

Membre
Avatar de JonyBIgooD
  • Messages : 96
  • Inscrit : 19 Mai 2013
  • Statut : Hors ligne
 
Lien vers ce message 23 Septembre 2013, 17:06

:militaire1: Salut Raph_VR,

Merci pour ton travail, c'est cool c'est exactement ce genre de script que je cherchais. Niquel.

Dês que je peux je test dans ma futur mission, t'inquiête je te signalerai en cas de bugs aprês la batterie de test (je n'utilise pas de serveur privé)

A plus n'hésite pas à nous mettre d'autres scripts qui rendent les missions beaucoup plus réaliste

:fsb2_godgrace: :fsb2_godgrace: :fsb2_godgrace:

Cordialement,
JonyBIgooD :fsb2_drink:


http://img401.imageshack.us/img401/8648/signatureclanado1300x16.jpg

// JonyBIgooD // Chaine Youtube
http://www.youtube.com/channel/UC7Hj1ldxwyjqQxUF4MXUN9w

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 26 Septembre 2013, 9:37

Au fait, j'ai oublié de préciser, pour le script de combat, que les orientations x et y de l'armée 1 sont prises en compte dans le repêre xOy de la map.
Pour être clair, si vous entrez les valeurs x=1 et y=1, l'armée 1 attaquera par le nord est, x=1 et y=0 elle attaquera plein est, x=0 y=1 elle viendra par le nord. Etc...

à‰videmment l'armée 2 arrive par le coté opposé et les deux groupes se rencontrent au milieu (approximativement) du déclencheur.

Pour bien rendre l'atmosphêre et avoir une belle bataille, je recommande de superposer plusieurs déclencheurs :
=> Un déclencheur avec des groupes d'infanterie, un déclencheur avec des groupes mécanisés (assités par des blindés) un déclencheur faisant spawner des avions et hélicos en patrouille pour chaque camp.
Si vous ajoutez à ça des bombardement d'artillerie aléatoire...ça devient une vraie tuerie !

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 28 Septembre 2013, 7:52

Si quelqu'un utilise ces scripts, merci de faire un retour pour que je sache si ça fonctionne bien dans diverses situations.

Vu qu'il s'agit d'une "adaptation" de ceux que j'ai mis dans ma propre mission, je n'ai pas testé en live.

Mission Maker
Avatar de poran
  • Age : 50 ans
  • Messages : 883
  • Inscrit : 28 Mars 2013
  • Statut : Hors ligne
  • Spécialité : Génie Expert
 
Lien vers ce message 28 Septembre 2013, 8:14

je vais regarder ça, je te fais un retour d'ici 1 semaine

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 11 Octobre 2013, 8:02

J'ai retesté ces scripts dans une autre mission mission et ça ne fonctionne pas. Ma premiêre version marche mais pas celle-ci !
Je vais corriger ça et remettre en DL les versions définitives et testées

Mission Maker
Avatar de poran
  • Age : 50 ans
  • Messages : 883
  • Inscrit : 28 Mars 2013
  • Statut : Hors ligne
  • Spécialité : Génie Expert
 
Lien vers ce message 11 Octobre 2013, 11:08

on attends ta nouvelle correction?

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 11 Octobre 2013, 19:18

Ouais, j'essaye de finaliser ça ce week end ou en début de semaine.

Aprês, sans vouloir faire de la pub pour mon travail, je ne peux que vous encourager à utiliser ces scripts pour vos missions car ça permet de réellement créer un gros maillage défensif sur l'énorme à®le d'Altis sans pour autant faire baisser les performances du jeu ni dépasser la limite des 144 groupes alors que "virtuellement" j'en met beaucoup plus.

Mission Maker
Avatar de poran
  • Age : 50 ans
  • Messages : 883
  • Inscrit : 28 Mars 2013
  • Statut : Hors ligne
  • Spécialité : Génie Expert
 
Lien vers ce message 11 Octobre 2013, 19:27
Message édité 1 fois, dernière édition par poran, 11 Octobre 2013, 19:28  

oui j'attends ta correction, et j'adopterai sur une mission en cours de création sur altis :wink:

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 16 Octobre 2013, 15:45

Voici un lien vers la version finale de mes scripts :

https://e-nautia.com/disk/download.php?id=5289859

Pour les installer, il suffit de les copier dans le dossier de votre mission, tout est regroupé dans un dossier appelé SpawnGroup.

Pour chaque script, j'ai mis quelques explications sur les arguments à entrer ainsi qu'un exemple à placer dans le champ activation d'un déclencheur.

L'idée est donc d'utiliser un déclencheur qui s'active lorsque votre groupe (activation par BLUFOR par exemple) entre dans le déclencheur. Vous y faites alors spawner des groupes de patrouilles (nombre et position aléatoire)
Lorsque votre groupe quitte la zone, si vous avez placé le script supp_IA dans le champ désactivation, ça supprimera toutes les patrouilles que vous n'aurez pas tuées.

Mission Maker
Avatar de poran
  • Age : 50 ans
  • Messages : 883
  • Inscrit : 28 Mars 2013
  • Statut : Hors ligne
  • Spécialité : Génie Expert
 
Lien vers ce message 16 Octobre 2013, 17:47

super, je teste d'ici 10 jours, sur une mission. :fsb2_smyle:

en te remerciant encore.

Membre
Avatar de Raph_VR
  • Messages : 42
  • Inscrit : 06 Décembre 2012
  • Statut : Hors ligne
 
Lien vers ce message 19 Novembre 2013, 21:42

Au fait, j'ai pas eu de retour sur ces scripts.

Est-ce que ça fonctionne comme tu le souhaites ?

Membre
VIP
Avatar de Husky
  • Age : 40 ans
  • Messages : 450
  • Inscrit : 14 Février 2007
  • Statut : Hors ligne
 
Lien vers ce message 20 Novembre 2013, 0:07
Message édité 1 fois, dernière édition par Husky, 20 Novembre 2013, 0:07  

çà m'intéresse beaucoup, je suis souvent sur ce forum et pourtant, distrait, je n'y ai pas fait attention.
je vais le tester chez moi, mais j'ai une question :

patrouille = [pat,6,800,350,east,configfile >> "CfgGroups" >> "East" >> "OPF_F" >> "Infantry" >> "OIA_InfSquad"] execVM "SpawnGroup\pat_spawn.sqf";
que signifient ces chiffres en rouge stp ? afin de pouvoir l'utiliser au mieux.


Nous avons des droits mais également des devoirs, c'est l'essence même de la liberté.

Membre
VIP
Avatar de benson09
  • Age : 59 ans
  • Messages : 548
  • Inscrit : 04 Février 2007
  • Statut : Hors ligne
  • Spécialité : Tireur d'élite Expert
 
Lien vers ce message 20 Novembre 2013, 19:01
Message édité 1 fois, dernière édition par benson09, 20 Novembre 2013, 19:05  

réponse déjà visible au début du post...étourdi ! ! :wink:

"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."

6 = ferez apparaitre entre 1 et 6 groupes d'infanteries du CSAT
800 = aléatoirement dans un rayon de 800 m
350 = Elles feront chacune des déplacments aléatoires dans une zone d'environ 350 m autour de leur point d'apparition.
east = groupes d'infanteries du CSAT ??....là je suis moins sà»r !

Je n'ai pas essayé...mais en tout cas c'est un beau projet ! ! Bravo et merci pour le partage ! !


http://www.clan-ado.fr/images/upload/membres/641_1335221113.jpg
Qui ne voit pas loin, verra les ennuis de près (Confucius).

Membre
VIP
Avatar de Husky
  • Age : 40 ans
  • Messages : 450
  • Inscrit : 14 Février 2007
  • Statut : Hors ligne
 
Lien vers ce message 20 Novembre 2013, 19:08

oups, pas vu :p
je devais avoir le cerveau saturé d'info pour ne pas avoir suffisamment bien lu le post ^^


Nous avons des droits mais également des devoirs, c'est l'essence même de la liberté.
Répondre





.