Guest User

Untitled

a guest
Oct 7th, 2014
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 36.36 KB | None | 0 0
  1. [] spawn {[] execVM "\z\addons\dayz_server\init\AH.sqf";};
  2. waituntil {!isnil "bis_fnc_init"};
  3.  
  4. BIS_MPF_remoteExecutionServer = {
  5. if ((_this select 1) select 2 == "JIPrequest") then {
  6. [nil,(_this select 1) select 0,"loc",rJIPEXEC,[any,any,"per","execVM","ca\Modules\Functions\init.sqf"]] call RE;
  7. };
  8. };
  9.  
  10. BIS_Effects_Burn = {};
  11. server_playerCharacters = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerCharacters.sqf";
  12. server_playerLogin = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerLogin.sqf";
  13. server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSetup.sqf";
  14. server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf";
  15. server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
  16. server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
  17. server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf";
  18. server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf";
  19. server_swapObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_swapObject.sqf";
  20. server_publishVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle.sqf";
  21. server_publishVeh2 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle2.sqf";
  22. server_publishVeh3 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle3.sqf";
  23. server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_tradeObject.sqf";
  24. server_traders = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_traders.sqf";
  25. server_playerSync = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSync.sqf";
  26. server_spawnCrashSite = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnCrashSite.sqf";
  27. server_spawnEvents = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnEvent.sqf";
  28. //server_weather = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_weather.sqf";
  29. fnc_plyrHit = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
  30. server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf";
  31. server_maintainArea = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_maintainArea.sqf";
  32.  
  33. /* PVS/PVC - Skaronator */
  34. server_sendToClient = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_sendToClient.sqf";
  35.  
  36. #include "\z\addons\dayz_server\bankzones\bankinit.sqf"
  37.  
  38. //onPlayerConnected {[_uid,_name] call server_onPlayerConnect;};
  39. onPlayerDisconnected {[_uid,_name] call server_onPlayerDisconnect;};
  40.  
  41. "PVDZE_veh_Colour" addPublicVariableEventHandler {
  42. private["_position","_worldspace","_fuel","_key","_colour","_colour2","_object","_objectID","_PUID","_clrinit","_clrinit2","_pname","_name"];
  43. _object = ((_this select 1) select 0);
  44. _colour = ((_this select 1) select 1);
  45. _colour2 = ((_this select 1) select 2);
  46.  
  47. _clrinit = format ["#(argb,8,8,3)color(%1)",_colour];
  48. _clrinit2 = format ["#(argb,8,8,3)color(%1)",_colour2];
  49. _object setVehicleInit "this setObjectTexture [0,"+str _clrinit+"];";
  50. _object setVehicleInit "this setObjectTexture [1,"+str _clrinit2+"];";
  51.  
  52. _object setVariable["Colour",_colour,true];
  53. _object setVariable["Colour2",_colour2,true];
  54.  
  55. _name = getText(configFile >> "cfgVehicles" >> (typeOf _object) >> "displayName");
  56. _PUID = ((_this select 1) select 3);
  57. _pname = ((_this select 1) select 4);
  58.  
  59. diag_log format ["VEHICLE PAINT: Player %1 (%2) has painted a %3!",_pname,_PUID,_name];
  60.  
  61. _position = getPosATL _object;
  62.  
  63. _worldspace = [
  64. round(direction _object),
  65. _position,
  66. _colour,
  67. _colour2
  68. ];
  69.  
  70. _fuel = 0;
  71. _fuel = fuel _object;
  72.  
  73. _objectID = _object getVariable ["ObjectID","0"];
  74.  
  75. _key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
  76. _key call server_hiveWrite;
  77. };
  78.  
  79. server_updateNearbyObjects = {
  80. private["_pos"];
  81. _pos = _this select 0;
  82. {
  83. [_x, "gear"] call server_updateObject;
  84. } count nearestObjects [_pos, dayz_updateObjects, 10];
  85. };
  86.  
  87. server_handleZedSpawn = {
  88. private["_zed"];
  89. _zed = _this select 0;
  90. _zed enableSimulation false;
  91. };
  92.  
  93. zombie_findOwner = {
  94. private["_unit"];
  95. _unit = _this select 0;
  96. #ifdef DZE_SERVER_DEBUG
  97. diag_log ("CLEANUP: DELETE UNCONTROLLED ZOMBIE: " + (typeOf _unit) + " OF: " + str(_unit) );
  98. #endif
  99. deleteVehicle _unit;
  100. };
  101.  
  102. vehicle_handleInteract = {
  103. private["_object"];
  104. _object = _this select 0;
  105. needUpdate_objects = needUpdate_objects - [_object];
  106. [_object, "all"] call server_updateObject;
  107. };
  108.  
  109. array_reduceSizeReverse = {
  110. private["_array","_count","_num","_newarray","_startnum","_index"];
  111. _array = _this select 0;
  112. _newarray = [];
  113. _count = _this select 1;
  114. _num = count _array;
  115. if (_num > _count) then {
  116. _startnum = _num - 1;
  117. _index = _count - 1;
  118. for "_i" from 0 to _index do {
  119. _newarray set [(_index-_i),_array select (_startnum - _i)];
  120. };
  121. _array = _newarray;
  122. };
  123. _array
  124. };
  125.  
  126. array_reduceSize = {
  127. private ["_array1","_array","_count","_num"];
  128. _array1 = _this select 0;
  129. _array = _array1 - ["Hatchet_Swing","Machete_Swing","Fishing_Swing","sledge_swing","crowbar_swing","CSGAS"];
  130. _count = _this select 1;
  131. _num = count _array;
  132. if (_num > _count) then {
  133. _array resize _count;
  134. };
  135. _array
  136. };
  137.  
  138. object_handleServerKilled = {
  139. private["_unit","_objectID","_objectUID","_killer"];
  140. _unit = _this select 0;
  141. _killer = _this select 1;
  142.  
  143. _objectID = _unit getVariable ["ObjectID","0"];
  144. _objectUID = _unit getVariable ["ObjectUID","0"];
  145.  
  146. [_objectID,_objectUID,_killer] call server_deleteObj;
  147.  
  148. _unit removeAllMPEventHandlers "MPKilled";
  149. _unit removeAllEventHandlers "Killed";
  150. _unit removeAllEventHandlers "HandleDamage";
  151. _unit removeAllEventHandlers "GetIn";
  152. _unit removeAllEventHandlers "GetOut";
  153. };
  154.  
  155. check_publishobject = {
  156. private["_allowed","_object","_playername"];
  157.  
  158. _object = _this select 0;
  159. _playername = _this select 1;
  160. _allowed = false;
  161.  
  162. if ((typeOf _object) in dayz_allowedObjects) then {
  163. //diag_log format ["DEBUG: Object: %1 published by %2 is Safe",_object, _playername];
  164. _allowed = true;
  165. };
  166. _allowed
  167. };
  168.  
  169. //event Handlers
  170. eh_localCleanup = {
  171. private ["_object"];
  172. _object = _this select 0;
  173. _object addEventHandler ["local", {
  174. if(_this select 1) then {
  175. private["_type","_unit"];
  176. _unit = _this select 0;
  177. _type = typeOf _unit;
  178. _myGroupUnit = group _unit;
  179. _unit removeAllMPEventHandlers "mpkilled";
  180. _unit removeAllMPEventHandlers "mphit";
  181. _unit removeAllMPEventHandlers "mprespawn";
  182. _unit removeAllEventHandlers "FiredNear";
  183. _unit removeAllEventHandlers "HandleDamage";
  184. _unit removeAllEventHandlers "Killed";
  185. _unit removeAllEventHandlers "Fired";
  186. _unit removeAllEventHandlers "GetOut";
  187. _unit removeAllEventHandlers "GetIn";
  188. _unit removeAllEventHandlers "Local";
  189. clearVehicleInit _unit;
  190. deleteVehicle _unit;
  191. if ((count (units _myGroupUnit) == 0) && (_myGroupUnit != grpNull)) then {
  192. deleteGroup _myGroupUnit;
  193. };
  194. //_unit = nil;
  195. // diag_log ("CLEANUP: DELETED A " + str(_type) );
  196. };
  197. }];
  198. };
  199.  
  200. server_hiveWrite = {
  201. private["_data"];
  202. _data = "HiveExt" callExtension _this;
  203. };
  204.  
  205. server_hiveReadWrite = {
  206. private["_key","_resultArray","_data"];
  207. _key = _this;
  208. _data = "HiveExt" callExtension _key;
  209. _resultArray = call compile format ["%1",_data];
  210. _resultArray
  211. };
  212.  
  213. server_hiveReadWriteLarge = {
  214. private["_key","_resultArray","_data"];
  215. _key = _this;
  216. _data = "HiveExt" callExtension _key;
  217. _resultArray = call compile _data;
  218. _resultArray
  219. };
  220.  
  221. server_checkIfTowed = {
  222. private ["_vehicle","_player","_attached"];
  223. if (DZE_HeliLift) then {
  224. _vehicle = _this select 0;
  225. _player = _this select 2;
  226. _attached = _vehicle getVariable["attached",false];
  227. if (typeName _attached == "OBJECT") then {
  228. _player action ["eject", _vehicle];
  229. detach _vehicle;
  230. _vehicle setVariable["attached",false,true];
  231. _attached setVariable["hasAttached",false,true];
  232. };
  233. };
  234. };
  235.  
  236. server_characterSync = {
  237. private ["_characterID","_playerPos","_playerGear","_playerBackp","_medical","_currentState","_currentModel","_key"];
  238. _characterID = _this select 0;
  239. _playerPos = _this select 1;
  240. _playerGear = _this select 2;
  241. _playerBackp = _this select 3;
  242. _medical = _this select 4;
  243. _currentState = _this select 5;
  244. _currentModel = _this select 6;
  245.  
  246. _key = format["CHILD:201:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:",_characterID,_playerPos,_playerGear,_playerBackp,_medical,false,false,0,0,0,0,_currentState,0,0,_currentModel,0];
  247. _key call server_hiveWrite;
  248. };
  249.  
  250. if(isnil "dayz_MapArea") then {
  251. dayz_MapArea = 10000;
  252. };
  253. if(isnil "DynamicVehicleArea") then {
  254. DynamicVehicleArea = dayz_MapArea / 2;
  255. };
  256.  
  257. // Get all buildings && roads only once TODO: set variables to nil after done if nessicary
  258. MarkerPosition = getMarkerPos "center";
  259. RoadList = MarkerPosition nearRoads DynamicVehicleArea;
  260.  
  261. // Very taxing !!! but only on first startup
  262. BuildingList = [];
  263. {
  264. if (DZE_MissionLootTable) then {
  265. if (isClass (missionConfigFile >> "CfgBuildingLoot" >> (typeOf _x))) then
  266. {
  267. BuildingList set [count BuildingList,_x];
  268. };
  269. } else {
  270. if (isClass (configFile >> "CfgBuildingLoot" >> (typeOf _x))) then
  271. {
  272. BuildingList set [count BuildingList,_x];
  273. };
  274. };
  275.  
  276.  
  277. } count (MarkerPosition nearObjects ["building",DynamicVehicleArea]);
  278.  
  279. spawn_vehicles = {
  280. private ["_random","_lastIndex","_weights","_index","_vehicle","_velimit","_qty","_isAir","_isShip","_position","_dir","_istoomany","_veh","_objPosition","_marker","_iClass","_itemTypes","_cntWeights","_itemType","_num","_allCfgLoots"];
  281.  
  282. if (!isDedicated) exitWith { }; //Be sure the run this
  283.  
  284. while {count AllowedVehiclesList > 0} do {
  285. // BIS_fnc_selectRandom replaced because the index may be needed to remove the element
  286. _index = floor random count AllowedVehiclesList;
  287. _random = AllowedVehiclesList select _index;
  288.  
  289. _vehicle = _random select 0;
  290. _velimit = _random select 1;
  291.  
  292. _qty = {_x == _vehicle} count serverVehicleCounter;
  293.  
  294. // If under limit allow to proceed
  295. if (_qty <= _velimit) exitWith {};
  296.  
  297. // vehicle limit reached, remove vehicle from list
  298. // since elements cannot be removed from an array, overwrite it with the last element && cut the last element of (as long as order is not important)
  299. _lastIndex = (count AllowedVehiclesList) - 1;
  300. if (_lastIndex != _index) then {
  301. AllowedVehiclesList set [_index, AllowedVehiclesList select _lastIndex];
  302. };
  303. AllowedVehiclesList resize _lastIndex;
  304. };
  305.  
  306. if (count AllowedVehiclesList == 0) then {
  307. diag_log("DEBUG: unable to find suitable vehicle to spawn");
  308. } else {
  309.  
  310. // add vehicle to counter for next pass
  311. serverVehicleCounter set [count serverVehicleCounter,_vehicle];
  312.  
  313. // Find Vehicle Type to better control spawns
  314. _isAir = _vehicle isKindOf "Air";
  315. _isShip = _vehicle isKindOf "Ship";
  316.  
  317. if(_isShip || _isAir) then {
  318. if(_isShip) then {
  319. // Spawn anywhere on coast on water
  320. waitUntil{!isNil "BIS_fnc_findSafePos"};
  321. _position = [MarkerPosition,0,DynamicVehicleArea,10,1,2000,1] call BIS_fnc_findSafePos;
  322. //diag_log("DEBUG: spawning boat near coast " + str(_position));
  323. } else {
  324. // Spawn air anywhere that is flat
  325. waitUntil{!isNil "BIS_fnc_findSafePos"};
  326. _position = [MarkerPosition,0,DynamicVehicleArea,10,0,2000,0] call BIS_fnc_findSafePos;
  327. //diag_log("DEBUG: spawning air anywhere flat " + str(_position));
  328. };
  329.  
  330.  
  331. } else {
  332. // Spawn around buildings && 50% near roads
  333. if((random 1) > 0.5) then {
  334.  
  335. waitUntil{!isNil "BIS_fnc_selectRandom"};
  336. _position = RoadList call BIS_fnc_selectRandom;
  337.  
  338. _position = _position modelToWorld [0,0,0];
  339.  
  340. waitUntil{!isNil "BIS_fnc_findSafePos"};
  341. _position = [_position,0,10,10,0,2000,0] call BIS_fnc_findSafePos;
  342.  
  343. //diag_log("DEBUG: spawning near road " + str(_position));
  344.  
  345. } else {
  346.  
  347. waitUntil{!isNil "BIS_fnc_selectRandom"};
  348. _position = BuildingList call BIS_fnc_selectRandom;
  349.  
  350. _position = _position modelToWorld [0,0,0];
  351.  
  352. waitUntil{!isNil "BIS_fnc_findSafePos"};
  353. _position = [_position,0,40,5,0,2000,0] call BIS_fnc_findSafePos;
  354.  
  355. //diag_log("DEBUG: spawning around buildings " + str(_position));
  356.  
  357. };
  358. };
  359. // only proceed if two params otherwise BIS_fnc_findSafePos failed && may spawn in air
  360. if ((count _position) == 2) then {
  361.  
  362. _dir = round(random 180);
  363.  
  364. _istoomany = _position nearObjects ["AllVehicles",50];
  365. if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many vehicles at " + str(_position)); };
  366.  
  367. //place vehicle
  368. _veh = createVehicle [_vehicle, _position, [], 0, "CAN_COLLIDE"];
  369. _veh setdir _dir;
  370. _veh setpos _position;
  371.  
  372. [_vehicle,_veh] execVM "\z\addons\dayz_server\compile\remove_ammo.sqf";
  373.  
  374. if(DZEdebug) then {
  375. _marker = createMarker [str(_position) , _position];
  376. _marker setMarkerShape "ICON";
  377. _marker setMarkerType "DOT";
  378. _marker setMarkerText _vehicle;
  379. };
  380.  
  381. // Get position with ground
  382. _objPosition = getPosATL _veh;
  383.  
  384. clearWeaponCargoGlobal _veh;
  385. clearMagazineCargoGlobal _veh;
  386. // _veh setVehicleAmmo DZE_vehicleAmmo;
  387.  
  388. // Add 0-3 loots to vehicle using random cfgloots
  389. _num = floor(random 4);
  390. _allCfgLoots = ["trash","civilian","food","generic","medical","military","policeman","hunter","worker","clothes","militaryclothes","specialclothes","trash"];
  391.  
  392. for "_x" from 1 to _num do {
  393. _iClass = _allCfgLoots call BIS_fnc_selectRandom;
  394.  
  395. _itemTypes = [];
  396. if (DZE_MissionLootTable) then{
  397. {
  398. _itemTypes set[count _itemTypes, _x select 0]
  399. } count getArray(missionConfigFile >> "cfgLoot" >> _iClass);
  400. }
  401. else {
  402. {
  403. _itemTypes set[count _itemTypes, _x select 0]
  404. } count getArray(configFile >> "cfgLoot" >> _iClass);
  405. };
  406.  
  407. _index = dayz_CLBase find _iClass;
  408. _weights = dayz_CLChances select _index;
  409. _cntWeights = count _weights;
  410.  
  411. _index = floor(random _cntWeights);
  412. _index = _weights select _index;
  413. _itemType = _itemTypes select _index;
  414. _veh addMagazineCargoGlobal [_itemType,1];
  415. //diag_log("DEBUG: spawed loot inside vehicle " + str(_itemType));
  416. };
  417.  
  418. [_veh,[_dir,_objPosition],_vehicle,true,"0"] call server_publishVeh;
  419. };
  420. };
  421. };
  422.  
  423. spawn_ammosupply = {
  424. private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
  425. if (isDedicated) then {
  426. _WreckList = ["Supply_Crate_DZE"];
  427. waitUntil{!isNil "BIS_fnc_selectRandom"};
  428. _position = RoadList call BIS_fnc_selectRandom;
  429. _position = _position modelToWorld [0,0,0];
  430. waitUntil{!isNil "BIS_fnc_findSafePos"};
  431. _position = [_position,5,20,5,0,2000,0] call BIS_fnc_findSafePos;
  432. if ((count _position) == 2) then {
  433.  
  434. _istoomany = _position nearObjects ["All",5];
  435.  
  436. if((count _istoomany) > 0) exitWith { diag_log("DEBUG VEIN: Too many at " + str(_position)); };
  437.  
  438. _spawnveh = _WreckList call BIS_fnc_selectRandom;
  439.  
  440. if(DZEdebug) then {
  441. _marker = createMarker [str(_position) , _position];
  442. _marker setMarkerShape "ICON";
  443. _marker setMarkerType "DOT";
  444. _marker setMarkerText str(_spawnveh);
  445. };
  446.  
  447. _veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
  448. _veh enableSimulation false;
  449. _veh setDir round(random 360);
  450. _veh setpos _position;
  451. _veh setVariable ["ObjectID","1",true];
  452. };
  453. };
  454. };
  455.  
  456. DZE_LocalRoadBlocks = [];
  457.  
  458. spawn_roadblocks = {
  459. private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
  460. _WreckList = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1","Rubbish2"];
  461.  
  462. waitUntil{!isNil "BIS_fnc_selectRandom"};
  463. if (isDedicated) then {
  464.  
  465. _position = RoadList call BIS_fnc_selectRandom;
  466.  
  467. _position = _position modelToWorld [0,0,0];
  468.  
  469. waitUntil{!isNil "BIS_fnc_findSafePos"};
  470. _position = [_position,0,10,5,0,2000,0] call BIS_fnc_findSafePos;
  471.  
  472. if ((count _position) == 2) then {
  473. // Get position with ground
  474.  
  475. _istoomany = _position nearObjects ["All",5];
  476.  
  477. if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many at " + str(_position)); };
  478.  
  479. waitUntil{!isNil "BIS_fnc_selectRandom"};
  480. _spawnveh = _WreckList call BIS_fnc_selectRandom;
  481.  
  482. if(DZEdebug) then {
  483. _marker = createMarker [str(_position) , _position];
  484. _marker setMarkerShape "ICON";
  485. _marker setMarkerType "DOT";
  486. _marker setMarkerText str(_spawnveh);
  487. };
  488.  
  489. _veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
  490. _veh enableSimulation false;
  491.  
  492. _veh setDir round(random 360); // Randomize placement a bit
  493. _veh setpos _position;
  494.  
  495. _veh setVariable ["ObjectID","1",true];
  496. };
  497.  
  498. };
  499.  
  500. };
  501.  
  502. spawn_mineveins = {
  503. private ["_position","_veh","_istoomany","_marker","_spawnveh","_positions"];
  504.  
  505. if (isDedicated) then {
  506.  
  507. _position = [getMarkerPos "center",0,(HeliCrashArea*0.75),10,0,2000,0] call BIS_fnc_findSafePos;
  508.  
  509. if ((count _position) == 2) then {
  510.  
  511. _positions = selectBestPlaces [_position, 500, "(1 + forest) * (1 + hills) * (1 - houses) * (1 - sea)", 10, 5];
  512.  
  513. _position = (_positions call BIS_fnc_selectRandom) select 0;
  514.  
  515. // Get position with ground
  516. _istoomany = _position nearObjects ["All",10];
  517.  
  518. if((count _istoomany) > 0) exitWith { diag_log("DEBUG VEIN: Too many objects at " + str(_position)); };
  519.  
  520. if(isOnRoad _position) exitWith { diag_log("DEBUG VEIN: on road " + str(_position)); };
  521.  
  522. _spawnveh = ["Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Silver_Vein_DZE","Silver_Vein_DZE","Silver_Vein_DZE","Gold_Vein_DZE","Gold_Vein_DZE"] call BIS_fnc_selectRandom;
  523.  
  524. if(DZEdebug) then {
  525. _marker = createMarker [str(_position) , _position];
  526. _marker setMarkerShape "ICON";
  527. _marker setMarkerType "DOT";
  528. _marker setMarkerText str(_spawnveh);
  529. };
  530.  
  531. //diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
  532. _veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
  533. _veh enableSimulation false;
  534.  
  535. // Randomize placement a bit
  536. _veh setDir round(random 360);
  537. _veh setpos _position;
  538.  
  539. _veh setVariable ["ObjectID","1",true];
  540.  
  541.  
  542. };
  543. };
  544. };
  545.  
  546. if(isnil "DynamicVehicleDamageLow") then {
  547. DynamicVehicleDamageLow = 0;
  548. };
  549. if(isnil "DynamicVehicleDamageHigh") then {
  550. DynamicVehicleDamageHigh = 100;
  551. };
  552.  
  553. if(isnil "DynamicVehicleFuelLow") then {
  554. DynamicVehicleFuelLow = 0;
  555. };
  556. if(isnil "DynamicVehicleFuelHigh") then {
  557. DynamicVehicleFuelHigh = 100;
  558. };
  559.  
  560. if(isnil "DZE_DiagFpsSlow") then {
  561. DZE_DiagFpsSlow = false;
  562. };
  563. if(isnil "DZE_DiagFpsFast") then {
  564. DZE_DiagFpsFast = false;
  565. };
  566. if(isnil "DZE_DiagVerbose") then {
  567. DZE_DiagVerbose = false;
  568. };
  569.  
  570. dze_diag_fps = {
  571. if(DZE_DiagVerbose) then {
  572. diag_log format["DEBUG FPS : %1 OBJECTS: %2 : PLAYERS: %3", diag_fps,(count (allMissionObjects "")),(playersNumber west)];
  573. } else {
  574. diag_log format["DEBUG FPS : %1", diag_fps];
  575. };
  576. };
  577.  
  578. // Damage generator function
  579. generate_new_damage = {
  580. private ["_damage"];
  581. _damage = ((random(DynamicVehicleDamageHigh-DynamicVehicleDamageLow))+DynamicVehicleDamageLow) / 100;
  582. _damage;
  583. };
  584.  
  585. // Damage generator fuction
  586. generate_exp_damage = {
  587. private ["_damage"];
  588. _damage = ((random(DynamicVehicleDamageHigh-DynamicVehicleDamageLow))+DynamicVehicleDamageLow) / 100;
  589.  
  590. // limit this to 85% since vehicle would blow up otherwise.
  591. //if(_damage >= 0.85) then {
  592. // _damage = 0.85;
  593. //};
  594. _damage;
  595. };
  596.  
  597. server_getDiff = {
  598. private["_variable","_object","_vNew","_vOld","_result"];
  599. _variable = _this select 0;
  600. _object = _this select 1;
  601. _vNew = _object getVariable[_variable,0];
  602. _vOld = _object getVariable[(_variable + "_CHK"),_vNew];
  603. _result = 0;
  604. if (_vNew < _vOld) then {
  605. //JIP issues
  606. _vNew = _vNew + _vOld;
  607. _object getVariable[(_variable + "_CHK"),_vNew];
  608. } else {
  609. _result = _vNew - _vOld;
  610. _object setVariable[(_variable + "_CHK"),_vNew];
  611. };
  612. _result
  613. };
  614.  
  615. server_getDiff2 = {
  616. private["_variable","_object","_vNew","_vOld","_result"];
  617. _variable = _this select 0;
  618. _object = _this select 1;
  619. _vNew = _object getVariable[_variable,0];
  620. _vOld = _object getVariable[(_variable + "_CHK"),_vNew];
  621. _result = _vNew - _vOld;
  622. _object setVariable[(_variable + "_CHK"),_vNew];
  623. _result
  624. };
  625.  
  626. dayz_objectUID = {
  627. private["_position","_dir","_key","_object"];
  628. _object = _this;
  629. _position = getPosATL _object;
  630. _dir = direction _object;
  631. _key = [_dir,_position] call dayz_objectUID2;
  632. _key
  633. };
  634.  
  635. dayz_objectUID2 = {
  636. private["_position","_dir","_key"];
  637. if((count _this) == 2) then{
  638. _dir = _this select 0;
  639. _key = "";
  640. _position = _this select 1;
  641. {
  642. _x = _x * 10;
  643. if ( _x < 0 ) then { _x = _x * -10 };
  644. _key = _key + str(round(_x));
  645. } count _position;
  646. _key = _key + str(round(_dir));
  647. }else{
  648. if((count _this) == 3) then{
  649. if(typename (_this select 2) == "ARRAY")then{
  650. _vector = _this select 2;
  651. if(count _vector == 2)then{
  652. if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
  653. _key = "";
  654. _position = _this select 1;
  655. {
  656. _x = _x * 10;
  657. if ( _x < 0 ) then { _x = _x * -10 };
  658. _key = _key + str(round(_x));
  659. } count _position;
  660.  
  661. _vecCnt = 0;
  662. {
  663. _set = _x;
  664. {
  665. _vecCnt = _vecCnt + (round (_x * 100))
  666.  
  667. } foreach _set;
  668.  
  669. } foreach _vector;
  670. if(_vecCnt < 0)then{
  671. _vecCnt = ((_vecCnt * -1) * 3);
  672. };
  673. _key = _key + str(_vecCnt);
  674. }else{
  675. _dir = _this select 0;
  676. _key = "";
  677. _position = _this select 1;
  678. {
  679. _x = _x * 10;
  680. if ( _x < 0 ) then { _x = _x * -10 };
  681. _key = _key + str(round(_x));
  682. } count _position;
  683. _key = _key + str(round(_dir));
  684. };
  685. }else{
  686. _dir = _this select 0;
  687. _key = "";
  688. _position = _this select 1;
  689. {
  690. _x = _x * 10;
  691. if ( _x < 0 ) then { _x = _x * -10 };
  692. _key = _key + str(round(_x));
  693. } count _position;
  694. _key = _key + str(round(_dir));
  695. };
  696.  
  697. }else{
  698. _dir = _this select 0;
  699. _key = "";
  700. _position = _this select 1;
  701. {
  702. _x = _x * 10;
  703. if ( _x < 0 ) then { _x = _x * -10 };
  704. _key = _key + str(round(_x));
  705. } count _position;
  706. _key = _key + str(round(_dir));
  707. };
  708. }else{
  709. if((count _this) == 4) then{
  710. if(typename (_this select 3) == "ARRAY")then{
  711. _vector = _this select 3;
  712. if(count _vector == 2)then{
  713. if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
  714. _key = "";
  715. _position = _this select 1;
  716. {
  717. _x = _x * 10;
  718. if ( _x < 0 ) then { _x = _x * -10 };
  719. _key = _key + str(round(_x));
  720. } count _position;
  721.  
  722. _vecCnt = 0;
  723. {
  724. _set = _x;
  725. {
  726. _vecCnt = _vecCnt + (round (_x * 100))
  727.  
  728. } foreach _set;
  729.  
  730. } foreach _vector;
  731. if(_vecCnt < 0)then{
  732. _vecCnt = ((_vecCnt * -1) * 3);
  733. };
  734. _key = _key + str(_vecCnt);
  735. }else{
  736. _dir = _this select 0;
  737. _key = "";
  738. _position = _this select 1;
  739. {
  740. _x = _x * 10;
  741. if ( _x < 0 ) then { _x = _x * -10 };
  742. _key = _key + str(round(_x));
  743. } count _position;
  744. _key = _key + str(round(_dir));
  745. };
  746. }else{
  747. _dir = _this select 0;
  748. _key = "";
  749. _position = _this select 1;
  750. {
  751. _x = _x * 10;
  752. if ( _x < 0 ) then { _x = _x * -10 };
  753. _key = _key + str(round(_x));
  754. } count _position;
  755. _key = _key + str(round(_dir));
  756. };
  757. }else{
  758. if(typename (_this select 2) == "ARRAY")then{
  759. _vector = _this select 2;
  760. if(count _vector == 2)then{
  761. if(((count (_vector select 0)) == 3) && ((count (_vector select 1)) == 3))then{
  762. _key = "";
  763. _position = _this select 1;
  764. {
  765. _x = _x * 10;
  766. if ( _x < 0 ) then { _x = _x * -10 };
  767. _key = _key + str(round(_x));
  768. } count _position;
  769.  
  770. _vecCnt = 0;
  771. {
  772. _set = _x;
  773. {
  774. _vecCnt = _vecCnt + (round (_x * 100))
  775.  
  776. } foreach _set;
  777.  
  778. } foreach _vector;
  779. if(_vecCnt < 0)then{
  780. _vecCnt = ((_vecCnt * -1) * 3);
  781. };
  782. _key = _key + str(_vecCnt);
  783. }else{
  784. _dir = _this select 0;
  785. _key = "";
  786. _position = _this select 1;
  787. {
  788. _x = _x * 10;
  789. if ( _x < 0 ) then { _x = _x * -10 };
  790. _key = _key + str(round(_x));
  791. } count _position;
  792. _key = _key + str(round(_dir));
  793. };
  794. }else{
  795. _dir = _this select 0;
  796. _key = "";
  797. _position = _this select 1;
  798. {
  799. _x = _x * 10;
  800. if ( _x < 0 ) then { _x = _x * -10 };
  801. _key = _key + str(round(_x));
  802. } count _position;
  803. _key = _key + str(round(_dir));
  804. };
  805. }else{
  806. _dir = _this select 0;
  807. _key = "";
  808. _position = _this select 1;
  809. {
  810. _x = _x * 10;
  811. if ( _x < 0 ) then { _x = _x * -10 };
  812. _key = _key + str(round(_x));
  813. } count _position;
  814. _key = _key + str(round(_dir));
  815. };
  816. };
  817. }else{
  818. _dir = _this select 0;
  819. _key = "";
  820. _position = _this select 1;
  821. {
  822. _x = _x * 10;
  823. if ( _x < 0 ) then { _x = _x * -10 };
  824. _key = _key + str(round(_x));
  825. } count _position;
  826. _key = _key + str(round(_dir));
  827. };
  828. };
  829.  
  830. };
  831. _key
  832. };
  833.  
  834. dayz_objectUID3 = {
  835. private["_position","_dir","_key"];
  836. _dir = _this select 0;
  837. _key = "";
  838. _position = _this select 1;
  839. {
  840. _x = _x * 10;
  841. if ( _x < 0 ) then { _x = _x * -10 };
  842. _key = _key + str(round(_x));
  843. } count _position;
  844. _key = _key + str(round(_dir + time));
  845. _key
  846. };
  847.  
  848. dayz_recordLogin = {
  849. private["_key"];
  850. _key = format["CHILD:103:%1:%2:%3:",_this select 0,_this select 1,_this select 2];
  851. _key call server_hiveWrite;
  852. };
  853.  
  854. dayz_perform_purge = {
  855. if(!isNull(_this)) then {
  856. _group = group _this;
  857. _this removeAllMPEventHandlers "mpkilled";
  858. _this removeAllMPEventHandlers "mphit";
  859. _this removeAllMPEventHandlers "mprespawn";
  860. _this removeAllEventHandlers "FiredNear";
  861. _this removeAllEventHandlers "HandleDamage";
  862. _this removeAllEventHandlers "Killed";
  863. _this removeAllEventHandlers "Fired";
  864. _this removeAllEventHandlers "GetOut";
  865. _this removeAllEventHandlers "GetIn";
  866. _this removeAllEventHandlers "Local";
  867. clearVehicleInit _this;
  868. deleteVehicle _this;
  869. if ((count (units _group) == 0) && (_group != grpNull)) then {
  870. deleteGroup _group;
  871. };
  872. };
  873. };
  874.  
  875. dayz_perform_purge_player = {
  876.  
  877. private ["_countr","_backpack","_backpackType","_backpackWpn","_backpackMag","_objWpnTypes","_objWpnQty","_location","_dir","_holder","_weapons","_magazines"];
  878. diag_log ("Purging player: " + str(_this));
  879.  
  880. if(!isNull(_this)) then {
  881.  
  882. _location = getPosATL _this;
  883. _dir = getDir _this;
  884.  
  885. _holder = createVehicle ["GraveDZE", _location, [], 0, "CAN_COLLIDE"];
  886. _holder setDir _dir;
  887. _holder setPosATL _location;
  888.  
  889. _holder enableSimulation false;
  890.  
  891. _weapons = weapons _this;
  892. _magazines = magazines _this;
  893.  
  894. // find backpack
  895. if(!(isNull unitBackpack _this)) then {
  896. _backpack = unitBackpack _this;
  897. _backpackType = typeOf _backpack;
  898. _backpackWpn = getWeaponCargo _backpack;
  899. _backpackMag = getMagazineCargo _backpack;
  900.  
  901. _holder addBackpackCargoGlobal [_backpackType,1];
  902.  
  903. // add items from backpack
  904. _objWpnTypes = _backpackWpn select 0;
  905. _objWpnQty = _backpackWpn select 1;
  906. _countr = 0;
  907. {
  908. _holder addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
  909. _countr = _countr + 1;
  910. } count _objWpnTypes;
  911.  
  912. // add backpack magazine items
  913. _objWpnTypes = _backpackMag select 0;
  914. _objWpnQty = _backpackMag select 1;
  915. _countr = 0;
  916. {
  917. _holder addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
  918. _countr = _countr + 1;
  919. } count _objWpnTypes;
  920. };
  921. };
  922.  
  923. // add weapons
  924. {
  925. _holder addWeaponCargoGlobal [_x, 1];
  926. } count _weapons;
  927.  
  928. // add mags
  929. {
  930. _holder addMagazineCargoGlobal [_x, 1];
  931. } count _magazines;
  932. _group = group _this;
  933. _this removeAllMPEventHandlers "mpkilled";
  934. _this removeAllMPEventHandlers "mphit";
  935. _this removeAllMPEventHandlers "mprespawn";
  936. _this removeAllEventHandlers "FiredNear";
  937. _this removeAllEventHandlers "HandleDamage";
  938. _this removeAllEventHandlers "Killed";
  939. _this removeAllEventHandlers "Fired";
  940. _this removeAllEventHandlers "GetOut";
  941. _this removeAllEventHandlers "GetIn";
  942. _this removeAllEventHandlers "Local";
  943. clearVehicleInit _this;
  944. deleteVehicle _this;
  945. if ((count (units _group) == 0) && (_group != grpNull)) then {
  946. deleteGroup _group;
  947. };
  948. // _this = nil;
  949. };
  950.  
  951.  
  952. dayz_removePlayerOnDisconnect = {
  953. if(!isNull(_this)) then {
  954. _group = group _this;
  955. _this removeAllMPEventHandlers "mphit";
  956. deleteVehicle _this;
  957. deleteGroup (group _this);
  958. };
  959. };
  960.  
  961. server_timeSync = {
  962. //Send request
  963. private ["_hour","_minute","_date","_key","_result","_outcome"];
  964. _key = "CHILD:307:";
  965. _result = _key call server_hiveReadWrite;
  966. _outcome = _result select 0;
  967. if(_outcome == "PASS") then {
  968. _date = _result select 1;
  969.  
  970. if(dayz_fullMoonNights) then {
  971. _hour = _date select 3;
  972. _minute = _date select 4;
  973. //Force full moon nights
  974. _date = [2013,8,3,_hour,_minute];
  975. };
  976.  
  977. setDate _date;
  978. PVDZE_plr_SetDate = _date;
  979. publicVariable "PVDZE_plr_SetDate";
  980. diag_log ("TIME SYNC: Local Time set to " + str(_date));
  981. };
  982. };
  983.  
  984. // must spawn these
  985. server_spawncleanDead = {
  986. private ["_deathTime","_delQtyZ","_delQtyP","_qty","_allDead"];
  987. _allDead = allDead;
  988. _delQtyZ = 0;
  989. _delQtyP = 0;
  990. {
  991. if (local _x) then {
  992. if (_x isKindOf "zZombie_Base") then
  993. {
  994. _x call dayz_perform_purge;
  995. sleep 0.05;
  996. _delQtyZ = _delQtyZ + 1;
  997. } else {
  998. if (_x isKindOf "CAManBase") then {
  999. _deathTime = _x getVariable ["processedDeath", diag_tickTime];
  1000. if (diag_tickTime - _deathTime > 1800) then {
  1001. _x call dayz_perform_purge_player;
  1002. sleep 0.025;
  1003. _delQtyP = _delQtyP + 1;
  1004. };
  1005. };
  1006. };
  1007. };
  1008. sleep 0.025;
  1009. } count _allDead;
  1010. if (_delQtyZ > 0 || _delQtyP > 0) then {
  1011. _qty = count _allDead;
  1012. diag_log (format["CLEANUP: Deleted %1 players && %2 zombies out of %3 dead",_delQtyP,_delQtyZ,_qty]);
  1013. };
  1014. };
  1015. server_cleanupGroups = {
  1016. if (DZE_DYN_AntiStuck3rd > 3) then { DZE_DYN_GroupCleanup = nil; DZE_DYN_AntiStuck3rd = 0; };
  1017. if(!isNil "DZE_DYN_GroupCleanup") exitWith { DZE_DYN_AntiStuck3rd = DZE_DYN_AntiStuck3rd + 1;};
  1018. DZE_DYN_GroupCleanup = true;
  1019. {
  1020. if ((count (units _x) == 0) && (_x != grpNull)) then {
  1021. deleteGroup _x;
  1022. };
  1023. sleep 0.001;
  1024. } count allGroups;
  1025. DZE_DYN_GroupCleanup = nil;
  1026. };
  1027.  
  1028. server_checkHackers = {
  1029. if (DZE_DYN_AntiStuck2nd > 3) then { DZE_DYN_HackerCheck = nil; DZE_DYN_AntiStuck2nd = 0; };
  1030. if(!isNil "DZE_DYN_HackerCheck") exitWith { DZE_DYN_AntiStuck2nd = DZE_DYN_AntiStuck2nd + 1;};
  1031. DZE_DYN_HackerCheck = true;
  1032. {
  1033. if (!((isNil "_x") || {(isNull _x)})) then {
  1034. if(vehicle _x != _x && !(vehicle _x in PVDZE_serverObjectMonitor) && (isPlayer _x) && !((typeOf vehicle _x) in DZE_safeVehicle) && (vehicle _x getVariable ["MalSar",0] != 1) && (vehicle _x getVariable ["Sarge",0] != 1)) then {
  1035. diag_log ("CLEANUP: KILLING A HACKER " + (name _x) + " " + str(_x) + " IN " + (typeOf vehicle _x));
  1036. (vehicle _x) setDamage 1;
  1037. _x setDamage 1;
  1038. sleep 0.25;
  1039. };
  1040. };
  1041. sleep 0.001;
  1042. } count allUnits;
  1043. DZE_DYN_HackerCheck = nil;
  1044. };
  1045.  
  1046. server_spawnCleanFire = {
  1047. private ["_delQtyFP","_qty","_delQtyNull","_missionFires"];
  1048. _missionFires = allMissionObjects "Land_Fire_DZ";
  1049. _delQtyFP = 0;
  1050. {
  1051. if (local _x) then {
  1052. deleteVehicle _x;
  1053. sleep 0.025;
  1054. _delQtyFP = _delQtyFP + 1;
  1055. };
  1056. sleep 0.001;
  1057. } count _missionFires;
  1058. if (_delQtyFP > 0) then {
  1059. _qty = count _missionFires;
  1060. diag_log (format["CLEANUP: Deleted %1 fireplaces out of %2",_delQtyNull,_qty]);
  1061. };
  1062. };
  1063. server_spawnCleanLoot = {
  1064. private ["_created","_delQty","_nearby","_age","_keep","_qty","_missionObjs","_dateNow"];
  1065. if (DZE_DYN_AntiStuck > 3) then { DZE_DYN_cleanLoot = nil; DZE_DYN_AntiStuck = 0; };
  1066. if(!isNil "DZE_DYN_cleanLoot") exitWith { DZE_DYN_AntiStuck = DZE_DYN_AntiStuck + 1;};
  1067. DZE_DYN_cleanLoot = true;
  1068.  
  1069. _missionObjs = allMissionObjects "ReammoBox";
  1070. _delQty = 0;
  1071. _dateNow = (DateToNumber date);
  1072. {
  1073. if (!isNull _x) then {
  1074. _keep = _x getVariable["permaLoot", false];
  1075. if (!_keep) then {
  1076. _created = _x getVariable["created", -0.1];
  1077. if (_created == -0.1) then{
  1078. _x setVariable["created", _dateNow, false];
  1079. _created = _dateNow;
  1080. }
  1081. else {
  1082. _age = (_dateNow - _created) * 525948;
  1083. if (_age > 20) then{
  1084. _nearby = { (isPlayer _x) && (alive _x) } count(_x nearEntities[["CAManBase", "AllVehicles"], 130]);
  1085. if (_nearby == 0) then{
  1086. deleteVehicle _x;
  1087. sleep 0.025;
  1088. _delQty = _delQty + 1;
  1089. };
  1090. };
  1091. };
  1092. };
  1093. };
  1094. sleep 0.001;
  1095. } count _missionObjs;
  1096. if (_delQty > 0) then {
  1097. _qty = count _missionObjs;
  1098. diag_log (format["CLEANUP: Deleted %1 Loot Piles out of %2",_delQty,_qty]);
  1099. };
  1100. DZE_DYN_cleanLoot = nil;
  1101. };
  1102.  
  1103. server_spawnCleanAnimals = {
  1104. private ["_pos","_delQtyAnimal","_qty","_missonAnimals","_nearby"];
  1105. _missonAnimals = entities "CAAnimalBase";
  1106. _delQtyAnimal = 0;
  1107. {
  1108. if (local _x) then {
  1109. _x call dayz_perform_purge;
  1110. sleep 0.05;
  1111. _delQtyAnimal = _delQtyAnimal + 1;
  1112. } else {
  1113. if (!alive _x) then {
  1114. _pos = getPosATL _x;
  1115. if (count _pos > 0) then {
  1116. _nearby = {(isPlayer _x) && (alive _x)} count (_pos nearEntities [["CAManBase","AllVehicles"], 130]);
  1117. if (_nearby==0) then {
  1118. _x call dayz_perform_purge;
  1119. sleep 0.05;
  1120. _delQtyAnimal = _delQtyAnimal + 1;
  1121. };
  1122. };
  1123. };
  1124. };
  1125. sleep 0.001;
  1126. } count _missonAnimals;
  1127. if (_delQtyAnimal > 0) then {
  1128. _qty = count _missonAnimals;
  1129. diag_log (format["CLEANUP: Deleted %1 Animals out of %2",_delQtyAnimal,_qty]);
  1130. };
  1131. };
  1132.  
  1133. server_logUnlockLockEvent = {
  1134. private["_player", "_obj", "_objectID", "_objectUID", "_statusText", "_status"];
  1135. _player = _this select 0;
  1136. _obj = _this select 1;
  1137. _status = _this select 2;
  1138. if (!isNull(_obj)) then {
  1139. _objectID = _obj getVariable["ObjectID", "0"];
  1140. _objectUID = _obj getVariable["ObjectUID", "0"];
  1141. _statusText = "UNLOCKED";
  1142. if (_status) then {
  1143. [_obj, "gear"] call server_updateObject;
  1144. _statusText = "LOCKED";
  1145. };
  1146. diag_log format["SAFE %5: ID:%1 UID:%2 BY %3(%4)", _objectID, _objectUID, (name _player), (getPlayerUID _player), _statusText];
  1147. };
  1148. };
  1149.  
  1150. KK_fnc_floatToString = {
  1151. private "_arr";
  1152. if (abs (_this - _this % 1) == 0) exitWith { str _this };
  1153. _arr = toArray str abs (_this % 1);
  1154. _arr set [0, 32];
  1155. toString (toArray str (
  1156. abs (_this - _this % 1) * _this / abs _this
  1157. ) + _arr - [32])
  1158. };
  1159.  
  1160. KK_fnc_positionToString = {
  1161. format [
  1162. "[%1,%2,%3]",
  1163. _this select 0 call KK_fnc_floatToString,
  1164. _this select 1 call KK_fnc_floatToString,
  1165. _this select 2 call KK_fnc_floatToString
  1166. ]
  1167. };
  1168.  
  1169. [] execVM "\z\addons\dayz_server\addons\NEAF.sqf";
  1170. [] execVM "\z\addons\dayz_server\addons\NWAF.sqf";
  1171. [] execVM "\z\addons\dayz_server\addons\Random.sqf";
  1172. [] execVM "\z\addons\dayz_server\addons\Random2.sqf";
  1173. [] execVM "\z\addons\dayz_server\addons\PrigTrader.sqf";
  1174. [] execVM "\z\addons\dayz_server\addons\LHD.sqf";
  1175. [] execVM "\z\addons\dayz_server\addons\SuperHero.sqf";
  1176. [] execVM "\z\addons\dayz_server\addons\SuperBandit.sqf";
Advertisement
Add Comment
Please, Sign In to add comment