mirror of
https://github.com/Teh-Dango/Sarge-AI.git
synced 2024-08-30 16:32:11 +00:00
c5e98f17e6
Epoch Update
89 lines
2.5 KiB
Plaintext
89 lines
2.5 KiB
Plaintext
/****************************************************************
|
|
File: UPSMON_Clones.sqf
|
|
Author: Monsada
|
|
|
|
Description:
|
|
The script will create X Group with the same parameters and unit than the group of reference
|
|
|
|
Parameter(s):
|
|
<--- Parameters of the original group
|
|
<--- Minimum number of group to create
|
|
<--- Maximum number of group to create
|
|
Returns:
|
|
nothing
|
|
****************************************************************/
|
|
|
|
private ["_Ucthis","_mincopies","_maxcopies","_copies","_grpcnt","_unittype","_grp","_lead","_initstr","_members","_newunit"];
|
|
|
|
_Ucthis = _this select 0;
|
|
_mincopies = _this select 1;
|
|
_maxcopies = _this select 2;
|
|
|
|
_npc = _Ucthis select 0;
|
|
_grp = group _npc;
|
|
_members = (_this select 3) select 0;
|
|
_grpcnt = count units _npc;
|
|
_orgPos = (_grp getvariable "UPSMON_Origin") select 0;
|
|
_behaviour = (_grp getvariable "UPSMON_Origin") select 1;
|
|
_speedmode = (_grp getvariable "UPSMON_Origin") select 2;
|
|
If (UPSMON_Debug > 0) then {diag_log format ["%1 copy",_npc];};
|
|
_copies=_mincopies+random (_maxcopies-_mincopies);
|
|
|
|
// create the clones
|
|
for "_grpcnt" from 1 to _copies do
|
|
{
|
|
// copy groups
|
|
if (isNil ("UPSMON_grpindex")) then {UPSMON_grpindex = 0};
|
|
UPSMON_grpindex = UPSMON_grpindex+1;
|
|
|
|
_grp=createGroup (side _npc);
|
|
// make the clones civilians
|
|
// use random Civilian models for single unit groups
|
|
// any init strings?
|
|
_initstr = ["INIT:","",_UCthis] call UPSMON_getArg;
|
|
_lead = ObjNull;
|
|
// copy team members (skip the leader)
|
|
_c=0;
|
|
{
|
|
_unittype = _x select 0;
|
|
if (((side _npc) == Civilian) && (count _members==1)) then {_rnd=1+round(random 20); if (_rnd>1) then {_unittype=format["Civilian%1",_rnd]}};
|
|
_roletype = _x select 2;
|
|
_targetpos = _orgpos findEmptyPosition [5,50];
|
|
if (count _targetpos == 0) then {_targetpos = _orgpos};
|
|
_newunit = _grp createUnit [_unittype, _targetpos, [], 0, "FORM"];
|
|
_newunit setBehaviour _behaviour;
|
|
_newunit setSpeedMode _speedmode;
|
|
_equipment = _x select 1;
|
|
[_newunit,_equipment] call UPSMON_addequipment;
|
|
|
|
if (isMultiplayer) then
|
|
{
|
|
[[netid _newunit, _initstr], "UPSMON_fnc_setVehicleInit", true, true] spawn BIS_fnc_MP;
|
|
}
|
|
else
|
|
{
|
|
_unitstr = "_newunit";
|
|
_index=[_initstr,"this",_unitstr] call UPSMON_Replace;
|
|
call compile format ["%1",_index];
|
|
};
|
|
|
|
If (count _roletype > 0) then
|
|
{
|
|
_crews pushback [_newunit,_roletype];
|
|
};
|
|
|
|
[_newunit] join _grp;
|
|
If (_c == 0) then
|
|
{
|
|
_grp selectLeader _newunit;
|
|
_lead = _newunit;
|
|
};
|
|
_c=_c+1;
|
|
sleep 0.1;
|
|
} foreach _members;
|
|
|
|
_Ucthis set [0,_lead];
|
|
nul= _Ucthis spawn UPSMON;
|
|
//sleep .05;
|
|
};
|
|
sleep .05; |