mk_group

Création de dynamique de groupes d'IA

Ce script permet de créer un groupe d'ennemies à la volée.

Il s'agit d'une fonction qui peut être appelée de n'importe où dans vos scripts.

Mise en place

Dans le fichier Init.sqf placer le code suivant :

 
Createcenter east;
Createcenter west;
 
WEST setFriend [EAST,0];
EAST setFriend [WEST,0];
 
if(isServer) then {
	mk_group = compile preprocessFile "scripts\mk_group.sqf";
};

Cela permet de créer la fonction mk_group qui pourra être appelé à partir de vos scripts ou les champs appropriés dans l'éditeur

Toujours dans le fichier Init.sqf on placera le code suivant :

//Définition d'un groupe de 14 Caporaux Spetsnaz et 1 Sergent Spetsnaz
ar_grp_sural=
[
	["SoldierESaboteurMarksman","SERGEANT",1],
	["SoldierESaboteurPipe","CAPORAL",14]
];
 
//Définition d'un groupe de 2 Caporaux Spetsnaz et 1 Sergent Spetsnaz
ar_grp_suaz=
[
	["SoldierESaboteurMarksman","SERGEANT",1],
	["SoldierESaboteurPipe","CAPORAL",2]
];
 
//Définition d'un groupe de 2 Caporaux Spetsnaz et 1 Sergent Spetsnaz
ar_grp_suaz2=
[
	["SoldierESaboteurMarksman","SERGEANT",1],
	["SoldierESaboteurPipe","CAPORAL",1],
	["SoldierESaboteurPipe","CAPORAL",1],
];

Cela permet de définir de quoi seront composé nos groupes. Cette définition est rangée dans les tableaux : ar_grp_sural, ar_grp_suaz et ar_grp_suaz2

Utilisation

Pour l'insertion des unités sur la missions il faut placer le code ci-dessous dans l'activation d'un déclencheur ou d'un point de passage par exemple :

_p=position player;
_grp=[[(_p select 0)+05, _p select 1, _p select 2],ar_grp_sural] call mk_group;

Le code récupère la position du joueur et la range dans la variable _p. Le groupe est créé par appel de la fonction mk_group

A noter que si on avait voulu doter le groupe d'un camion, on aurait appelé la fonction comme ceci :

_p=position player;
_grp=[[(p select 0)+20, p select 1, p select 2],ar_grp_sural,"UralOpen"] call mk_group;

Pour créer un autre autres on pourrait écrire cela :

_p=position player;
_grp1=[[(p select 0)+20, p select 1, p select 2],ar_grp_sural,"UralOpen"] call mk_group;
_grp2=[[(p select 0)+40, p select 1, p select 2],ar_grp_sural,"UralOpen"] call mk_group;

Les paramètres

  • Param1 = Position du groupe [x,y,z] à créer
  • Param2 = Tableau du groupe d'unités
  • Param3 = Le véhicule du groupe (facultatif)
  • Retour = Une variable représentant le groupe.

Le code

//Création d'un groupe d'unité
// Param1= Position du groupe [x,y,z]
// Param2= Tableau du groupe d'unite
// Param3= Vehicule ou vide
// Return le groupe 
 
private ["_pos","_type","_vehicule","_vehic","_gp","_max","_i","_unit","_placelibre","_leader"];
 
_pos = _this select 0;
_type = _this select 1;
_vehicule = _this select 2;
 
 
_gp = createGroup east; 
_gp allowFleeing 0;
_gp setCombatMode "GREEN";
_gp setFormation "COLUMN";
_gp setSpeedMode "NORMAL";
 
sleep 0.1;
 
if( _vehicule != "") then {
	_vehic = _vehicule createVehicle _pos;
	_vehic setDir 250;
};
 
{
	_max=_x select 2;
	for "_i" from 1 to _max do
	{
		_x select 0 createUnit [_pos, _gp,"void=this;",Ennemy_skill,_x select 1];
		if( _vehicule != "" ) then {
			_placelibre =_vehic emptyPositions "driver";
			if(_placelibre>0) then {
				void moveInDriver _vehic;
			} else {					
				_placelibre =_vehic emptyPositions "gunner";
				if(_placelibre>0) then {
					void moveInGunner _vehic;
				}else{
					void moveInCargo _vehic;
				};
			};		
		};
		sleep 0.001;
	};
} forEach _type select 0;
 
_leader = leader _gp;
_leader setRank "LIEUTENANT";
 
_gp;

—- clint 21/03/2009 23:24

 
scripts/mk_group.txt · Dernière modification: 01/05/2009 19:08 par KillJoe
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki