Advertisement
Guest User

Untitled

a guest
May 3rd, 2014
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.15 KB | None | 0 0
  1. _markers = Markers;
  2. _squad = group (_this select 0);
  3. _names = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p"];
  4. //again this script will fire once for the squad
  5. num1 = (round(random (count _names))) - 1;
  6. num2 = ceil(random 99);
  7.  
  8. _varCreate = [] call compile format["%1%2 = 0;%1%2 = _numVar;",num1,num2];
  9.  
  10.  
  11. varAlgo =
  12. {
  13. _killed = _this select 0;
  14. _killer = _this select 1;
  15. _time = _this select 2;
  16. _killers = units (group _killer);
  17. _types = [ ];
  18. _processed = [ ];
  19.  
  20. _tempNum1 = _killed getvariable "support";
  21.  
  22. if (_tempNum1 == 1) then {
  23. { _x setvariable ["support",0];
  24. }
  25. foreach units (group _killed);
  26.  
  27. _killedGroup = units (group _killed);
  28. _temp1 = 0;
  29. sleep _time;
  30. {
  31. if (alive _x) then {
  32. _temp1 = _temp1 + 1;
  33. };
  34. }
  35. foreach _killedGroup;
  36.  
  37. if (_temp1>0) exitwith { };
  38.  
  39. {
  40.  
  41. if (!((vehicle _x) in _processed)) then {
  42. _processed = _processed + [(vehicle _x)];
  43. _tempNum2 = 1;
  44. _passedIn = 0;
  45. _tempVeh = _x;
  46.  
  47. {
  48. if ((typeof _tempVeh)==(_x select 0)) then
  49. {
  50. _passedIn = 1;
  51. };
  52. }
  53. forEach _types;
  54.  
  55. if (_passedIn==0) then {
  56. _types = _types + [[(typeof _veh),1]];
  57. } else {
  58. { if ((_x select 0)==(typeof _tempVeh) then {
  59. _x set [1,(_x select 1) + 1];
  60. };
  61. }
  62. foreach _types;
  63. };
  64.  
  65. };
  66.  
  67. } foreach _killers;
  68. //killers (friendly) array created
  69.  
  70. //block for closest marker select
  71. _closest = (getmarkerpos (supMarkers select 0)) distance (getpos _killed);
  72. _closestMarker = 0;
  73. {
  74. if (((getpos _killed) distance (getMarkerPos _x))< _closest) then {
  75. _closestMarker = _forEachIndex;
  76. };
  77. }
  78. forEach supMarkers;
  79.  
  80. //spawn support units
  81.  
  82. //set general amounts for each type
  83. _supportType = [["Man",0],["Car",0],["Tank",0],["Helicopter",0],["Plane",0]];
  84.  
  85. {
  86. _tempVeh = _x;
  87.  
  88. {
  89. if ((_x select 0) isKindOf (_tempVeh select 0)) then {
  90. while {(_x select 1)>0} do {
  91. _tempVeh set [1,(_tempVeh select 1) + 1];
  92. _x set [1,(_x select 1) - 1];
  93. };
  94. };
  95. } foreach _types;
  96.  
  97. _fixAmount = ceil(((_x select 1)^2)/2 + (_x select 1));
  98. _x set [1,_fixAmount];
  99.  
  100. }
  101. foreach _supportType;
  102.  
  103. //set counter unit by random chance. for example, a tank thread might have an AT squad spawned or another tank.
  104.  
  105. _spawnforces = {
  106. _side = _this select 0;
  107. _opforSup = {
  108. _group = creategroup opfor;
  109. _classInf = "O_Soldier_F";
  110. _classInfAT = "O_Soldier_AT_F";
  111. _classInfAA = "O_Soldier_AA_F";
  112. _classTank = "B_MBT_01_cannon_F";
  113. _classCar = "O_MRAP_02_hmg_F";
  114. _classAPC = "O_APC_Tracked_02_cannon_F";
  115. _classAA = "O_APC_Tracked_02_AA_F";
  116. _classTHelo = "O_Heli_Light_02_unarmed_F";
  117. _classAHelo = "O_Heli_Attack_02_F";
  118. _classCAP = "I_Plane_Fighter_03_AA_F";
  119. _classCAS = "O_Plane_CAS_02_F";
  120. };
  121. _bluforSup = {
  122. _group = creategroup blufor;
  123. _classInf = "B_Soldier_F";
  124. _classInfAT = "B_Soldier_AT_F";
  125. _classInfAA = "B_Soldier_AA_F";
  126. _classTank = "B_MBT_01_cannon_F";
  127. _classCar = "B_MRAP_01_hmg_F";
  128. _classAPC = "B_APC_Wheeled_01_cannon_F";
  129. _classAA = "B_APC_Tracked_01_AA_F";
  130. _classTHelo = "B_Heli_Transport_01_camo_F";
  131. _classAHelo = "B_Heli_Attack_01_F";
  132. _classCAP = "I_Plane_Fighter_03_AA_F";
  133. _classCAS = "B_Plane_CAS_01_F";
  134. };
  135.  
  136. _sideDet = {
  137. switch (_side) do {
  138. case opfor : {
  139. [] call _opforSup
  140. };
  141. case blufor : {
  142. [] call _bluforSup
  143. };
  144. };
  145. };
  146.  
  147. _infSpawn = {
  148. for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
  149. (_this select 1) createUnit [getmarkerpos (supMarkers select _closestMarker), _group, "", ((round(random 9))+1)/10,"private"];
  150. };
  151. [1,_classTHelo] call _airSpawn;
  152. _veh1 = _veh;
  153. {
  154. _x moveInCargo _veh1;
  155. }
  156. foreach (units _group);
  157. waituntil{unitReady _veh};
  158. _veh1 land "GET OUT";
  159. doGetOut ((units _group)-(driver _veh1));
  160. waituntil{(count (crew _veh1))==1};
  161. _veh1 domove (getmarkerpos (supMarkers select _closestMarker));
  162. waituntil{unitready _veh1};
  163. deletevehicle _veh1;
  164. };
  165.  
  166. _vehSpawn = {
  167. for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
  168. _veh = (_this select 1) createVehicle (getmarkerpos (supMarkers select _closestMarker));
  169. createVehicleCrew _veh;
  170. (crew _veh) joinSilent _group;
  171. (units _group) doMove (getpos _killed);
  172. };
  173. };
  174.  
  175. _airSpawn = {
  176. for [{_a = _this select 0},{_a>0},{_a=_a-1}] do {
  177. _veh = createVehicle [(_this select 1),_closestMarker, [], 0, "FLY"];
  178. createVehicleCrew _veh;
  179. (crew _veh) joinSilent _group;
  180. (units _group) doMove (getpos _killed);
  181. };
  182. };
  183.  
  184. _manCheck = {
  185. [] call _sideDet;
  186. _number = (_supportType select 0) select 1;
  187. _ran1 = round(random 2);
  188. switch (_ran1) do {
  189. case 0: {[_number,_classInf] call _infSpawn};
  190. case 1: {[ceil(_number/5),_classCar] call _vehSpawn};
  191. case 2: {[1,_classAHelo] call _airSpawn};
  192. };
  193. };
  194.  
  195. _carCheck = {
  196. [] call _sideDet;
  197. _number = (_supportType select 1) select 1;
  198. _ran1 = round(random 3);
  199. switch (_ran1) do {
  200. case 0: {[_number+2,_classInfAT] call _infSpawn};
  201. case 1: {[ceil(_number),_classCar] call _vehSpawn};
  202. case 2: {[ceil(_number/10),_classAHelo] call _airSpawn};
  203. case 3: {[ceil(_number)/1.25,_classAPC] call _airSpawn};
  204. };
  205. };
  206.  
  207. _tankCheck = {
  208. [] call _sideDet;
  209. _number = (_supportType select 2) select 1;
  210. _ran1 = round(random 3);
  211. switch (_ran1) do {
  212. case 0: {[_number+4,_classInfAT] call _infSpawn};
  213. case 1: {[ceil(_number),_classTank] call _vehSpawn};
  214. case 2: {[ceil(_number/10),_classAHelo] call _airSpawn};
  215. case 3: {[ceil(_number/10),_classCAS] call _airSpawn};
  216. };
  217. };
  218.  
  219. _heloCheck = {
  220. [] call _sideDet;
  221. _number = (_supportType select 3) select 1;
  222. _ran1 = round(random 3);
  223. switch (_ran1) do {
  224. case 0: {[_number+2,_classInfAA] call _infSpawn};
  225. case 1: {[ceil(_number),_classAA] call _vehSpawn};
  226. case 2: {[_number,_classAHelo] call _airSpawn};
  227. case 3: {[1,_classCAP] call _airSpawn};
  228. };
  229. };
  230. _airCheck = {
  231. [] call _sideDet;
  232. _number = (_supportType select 3) select 1;
  233. _ran1 = round(random 3);
  234. switch (_ran1) do {
  235. case 0: {[_number+4,_classInfAA] call _infSpawn};
  236. case 1: {[ceil(_number),_classAA] call _vehSpawn};
  237. case 2: {[_number + 1,_classAHelo] call _airSpawn};
  238. case 3: {[ceil(_number/1.5),_classCAP] call _airSpawn};
  239. };
  240. };
  241. [_side] spawn _manCheck;
  242. [_side] spawn _carCheck;
  243. [_side] spawn _tankCheck;
  244. [_side] spawn _heloCheck;
  245. [_side] spawn _airCheck;
  246. };
  247. };
  248. [side _killed] call _spawnedForces;
  249. };
  250.  
  251.  
  252.  
  253. {
  254. _x setVariable ["supportCall",1];
  255. }
  256. foreach units (group _squad);
  257.  
  258. };
  259.  
  260.  
  261. {
  262. _eHNum = _x addEventHandler
  263. [
  264. "killed",
  265. {
  266. _varCall = (_this +[reinTime]) call varAlgo;
  267.  
  268. {
  269. _x removeEventHandler ["killed",_eHNum];
  270. }
  271. foreach units (group _x);
  272. }
  273. ]
  274. }
  275. foreach units _squad;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement