Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _markers = Markers;
- _squad = group (_this select 0);
- _names = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"];
- //again this script will fire once for the squad
- num1 = (round(random (count _names))) - 1;
- num2 = ceil(random 99);
- _varCreate = [] call compile format["%1%2 = 0;%1%2 = _numVar;",num1,num2];
- varAlgo =
- {
- _killed = _this select 0;
- _killer = _this select 1;
- _time = _this select 2;
- _killers = units (group _killer);
- _types = [ ];
- _processed = [ ];
- _tempNum1 = _killed getvariable "support";
- if (_tempNum1 == 1) then {
- { _x setvariable ["support",0];
- }
- foreach units (group _killed);
- _killedGroup = units (group _killed);
- _temp1 = 0;
- sleep _time;
- {
- if (alive _x) then {
- _temp1 = _temp1 + 1;
- };
- }
- foreach _killedGroup;
- if (_temp1>0) exitwith { };
- {
- if (!((vehicle _x) in _processed)) then {
- _processed = _processed + [(vehicle _x)];
- _tempNum2 = 1;
- _passedIn = 0;
- _tempVeh = _x;
- {
- if ((typeof _tempVeh)==(_x select 0)) then
- {
- _passedIn = 1;
- };
- }
- forEach _types;
- if (_passedIn==0) then {
- _types = _types + [[(typeof _veh),1]];
- } else {
- { if ((_x select 0)==(typeof _tempVeh) then {
- _x set [1,(_x select 1) + 1];
- };
- }
- foreach _types;
- };
- };
- } foreach _killers;
- //killers (friendly) array created
- //block for closest marker select
- _closest = (getmarkerpos (supMarkers select 0)) distance (getpos _killed);
- _closestMarker = 0;
- {
- if (((getpos _killed) distance (getMarkerPos _x))< _closest) then {
- _closestMarker = _forEachIndex;
- };
- }
- forEach supMarkers;
- //spawn support units
- //set general amounts for each type
- _supportType = [["Man",0],["Car",0],["Tank",0],["Helicopter",0],["Plane",0]];
- {
- _tempVeh = _x;
- {
- if ((_x select 0) isKindOf (_tempVeh select 0)) then {
- while {(_x select 1)>0} do {
- _tempVeh set [1,(_tempVeh select 1) + 1];
- _x set [1,(_x select 1) - 1];
- };
- };
- } foreach _types;
- _fixAmount = ceil(((_x select 1)^2)/2 + (_x select 1));
- _x set [1,_fixAmount];
- }
- foreach _supportType;
- //set counter unit by random chance. for example, a tank thread might have an AT squad spawned or another tank.
- _spawnforces = {
- _side = _this select 0;
- _opforSup = {
- _group = creategroup opfor;
- _classInf = "O_Soldier_F";
- _classInfAT = "O_Soldier_AT_F";
- _classInfAA = "O_Soldier_AA_F";
- _classTank = "B_MBT_01_cannon_F";
- _classCar = "O_MRAP_02_hmg_F";
- _classAPC = "O_APC_Tracked_02_cannon_F";
- _classAA = "O_APC_Tracked_02_AA_F";
- _classTHelo = "O_Heli_Light_02_unarmed_F";
- _classAHelo = "O_Heli_Attack_02_F";
- _classCAP = "I_Plane_Fighter_03_AA_F";
- _classCAS = "O_Plane_CAS_02_F";
- };
- _bluforSup = {
- _group = creategroup blufor;
- _classInf = "B_Soldier_F";
- _classInfAT = "B_Soldier_AT_F";
- _classInfAA = "B_Soldier_AA_F";
- _classTank = "B_MBT_01_cannon_F";
- _classCar = "B_MRAP_01_hmg_F";
- _classAPC = "B_APC_Wheeled_01_cannon_F";
- _classAA = "B_APC_Tracked_01_AA_F";
- _classTHelo = "B_Heli_Transport_01_camo_F";
- _classAHelo = "B_Heli_Attack_01_F";
- _classCAP = "I_Plane_Fighter_03_AA_F";
- _classCAS = "B_Plane_CAS_01_F";
- };
- _sideDet = {
- switch (_side) do {
- case opfor : {
- [] call _opforSup
- };
- case blufor : {
- [] call _bluforSup
- };
- };
- };
- _infSpawn = {
- for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
- (_this select 1) createUnit [getmarkerpos (supMarkers select _closestMarker), _group, "", ((round(random 9))+1)/10,"private"];
- };
- [1,_classTHelo] call _airSpawn;
- _veh1 = _veh;
- {
- _x moveInCargo _veh1;
- }
- foreach (units _group);
- waituntil{unitReady _veh};
- _veh1 land "GET OUT";
- doGetOut ((units _group)-(driver _veh1));
- waituntil{(count (crew _veh1))==1};
- _veh1 domove (getmarkerpos (supMarkers select _closestMarker));
- waituntil{unitready _veh1};
- deletevehicle _veh1;
- };
- _vehSpawn = {
- for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
- _veh = (_this select 1) createVehicle (getmarkerpos (supMarkers select _closestMarker));
- createVehicleCrew _veh;
- (crew _veh) joinSilent _group;
- (units _group) doMove (getpos _killed);
- };
- };
- _airSpawn = {
- for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
- _veh = createVehicle [(_this select 1),_closestMarker, [], 0, "FLY"];
- createVehicleCrew _veh;
- (crew _veh) joinSilent _group;
- (units _group) doMove (getpos _killed);
- };
- };
- _manCheck = {
- [] call _sideDet;
- _number = (_supportType select 0) select 1;
- _ran1 = round(random 2);
- switch (_ran1) do {
- case 0: {[_number,_classInf] call _infSpawn};
- case 1: {[ceil(_number/5),_classCar] call _vehSpawn};
- case 2: {[1,_classAHelo] call _airSpawn};
- };
- };
- _carCheck = {
- [] call _sideDet;
- _number = (_supportType select 1) select 1;
- _ran1 = round(random 3);
- switch (_ran1) do {
- case 0: {[_number+2,_classInfAT] call _infSpawn};
- case 1: {[ceil(_number),_classCar] call _vehSpawn};
- case 2: {[ceil(_number/10),_classAHelo] call _airSpawn};
- case 3: {[ceil(_number)/1.25,_classAPC] call _airSpawn};
- };
- };
- _tankCheck = {
- [] call _sideDet;
- _number = (_supportType select 2) select 1;
- _ran1 = round(random 3);
- switch (_ran1) do {
- case 0: {[_number+4,_classInfAT] call _infSpawn};
- case 1: {[ceil(_number),_classTank] call _vehSpawn};
- case 2: {[ceil(_number/10),_classAHelo] call _airSpawn};
- case 3: {[ceil(_number/10),_classCAS] call _airSpawn};
- };
- };
- _heloCheck = {
- [] call _sideDet;
- _number = (_supportType select 3) select 1;
- _ran1 = round(random 3);
- switch (_ran1) do {
- case 0: {[_number+2,_classInfAA] call _infSpawn};
- case 1: {[ceil(_number),_classAA] call _vehSpawn};
- case 2: {[_number,_classAHelo] call _airSpawn};
- case 3: {[1,_classCAP] call _airSpawn};
- };
- };
- _airCheck = {
- [] call _sideDet;
- _number = (_supportType select 3) select 1;
- _ran1 = round(random 3);
- switch (_ran1) do {
- case 0: {[_number+4,_classInfAA] call _infSpawn};
- case 1: {[ceil(_number),_classAA] call _vehSpawn};
- case 2: {[_number + 1,_classAHelo] call _airSpawn};
- case 3: {[ceil(_number/1.5),_classCAP] call _airSpawn};
- };
- };
- [_side] spawn _manCheck;
- [_side] spawn _carCheck;
- [_side] spawn _tankCheck;
- [_side] spawn _heloCheck;
- [_side] spawn _airCheck;
- };
- };
- [side _killed] call _spawnedForces;
- };
- {
- _x setVariable ["supportCall",1];
- }
- foreach units (group _squad);
- };
- {
- _eHNum = _x addEventHandler
- [
- "killed",
- {
- _varCall = (_this +[reinTime]) call varAlgo;
- {
- _x removeEventHandler ["killed",_eHNum];
- }
- foreach units (group _x);
- }
- ]
- }
- foreach units _squad;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement