Advertisement
Ranzen

server_functions.sqf

Oct 7th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.86 KB | None | 0 0
  1. #include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
  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_playerLogin = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerLogin.sqf";
  12. server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSetup.sqf";
  13. server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf";
  14. server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
  15. server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
  16. server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB
  17. server_publishBld = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishBuilding.sqf"; //Creates the building in DB
  18. server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf"; //Removes the object from the DB
  19. server_playerSync = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSync.sqf";
  20. zombie_findOwner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_findOwner.sqf";
  21. server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf";
  22. server_spawnCrashSite = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnCrashSite.sqf";
  23. server_sendToClient = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_sendToClient.sqf";
  24. server_Wildgenerate = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_Wildgenerate.sqf";
  25. server_plantSpawner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_plantSpawner.sqf";
  26.  
  27. //Get instance name (e.g. dayz_1.chernarus)
  28. fnc_instanceName = {
  29. "dayz_" + str(dayz_instance) + "." + worldName
  30. };
  31. spawnComposition = compile preprocessFileLineNumbers "ca\modules\dyno\data\scripts\objectMapper.sqf"; //"\z\addons\dayz_code\compile\object_mapper.sqf";
  32. fn_bases = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fn_bases.sqf";
  33.  
  34. vehicle_handleServerKilled = {
  35. private["_unit","_killer"];
  36. _unit = _this select 0;
  37. _killer = _this select 1;
  38.  
  39. [_unit, "killed"] call server_updateObject;
  40.  
  41. _unit removeAllMPEventHandlers "MPKilled";
  42. _unit removeAllMPEventHandlers "mphit";
  43. _unit removeAllMPEventHandlers "mprespawn";
  44. _unit removeAllEventHandlers "FiredNear";
  45. _unit removeAllEventHandlers "Killed";
  46. _unit removeAllEventHandlers "HandleDamage";
  47. _unit removeAllEventHandlers "GetIn";
  48. _unit removeAllEventHandlers "GetOut";
  49. _unit removeAllEventHandlers "Fired";
  50. _unit removeAllEventHandlers "Local";
  51. };
  52.  
  53. check_publishobject = {
  54. private ["_allowed","_allowedObjects","_object","_playername"];
  55.  
  56. _object = _this select 0;
  57. _playername = _this select 1;
  58. _allowedObjects = ["TentStorage", "Hedgehog_DZ", "Sandbag1_DZ", "BearTrap_DZ", "Wire_cat1", "StashSmall", "StashMedium", "DomeTentStorage", "CamoNet_DZ", "Trap_Cans", "TrapTripwireFlare", "TrapBearTrapSmoke", "TrapTripwireGrenade", "TrapTripwireSmoke", "TrapBearTrapFlare"];
  59. _allowed = false;
  60.  
  61. #ifdef OBJECT_DEBUG
  62. diag_log format ["DEBUG: Checking if Object: %1 is allowed published by %2", _object, _playername];
  63. #endif
  64.  
  65. if ((typeOf _object) in _allowedObjects || (typeOf _object) in allbuildables_class) then {
  66. #ifdef OBJECT_DEBUG
  67. diag_log format ["DEBUG: Object: %1 published by %2 is Safe",_object, _playername];
  68. #endif
  69. _allowed = true;
  70. };
  71.  
  72. _allowed;
  73. };
  74.  
  75. //event Handlers
  76. eh_localCleanup = {
  77.  
  78. private ["_object","_type","_unit"];
  79. _object = _this select 0;
  80. _object addEventHandler ["local", {
  81. if(_this select 1) then {
  82. _unit = _this select 0;
  83. _type = typeOf _unit;
  84. _myGroupUnit = group _unit;
  85. _unit removeAllMPEventHandlers "mpkilled";
  86. _unit removeAllMPEventHandlers "mphit";
  87. _unit removeAllMPEventHandlers "mprespawn";
  88. _unit removeAllEventHandlers "FiredNear";
  89. _unit removeAllEventHandlers "HandleDamage";
  90. _unit removeAllEventHandlers "Killed";
  91. _unit removeAllEventHandlers "Fired";
  92. _unit removeAllEventHandlers "GetOut";
  93. _unit removeAllEventHandlers "GetIn";
  94. _unit removeAllEventHandlers "Local";
  95. clearVehicleInit _unit;
  96. deleteVehicle _unit;
  97. deleteGroup _myGroupUnit;
  98. _unit = nil;
  99. diag_log ("CLEANUP: DELETED A " + str(_type) );
  100. };
  101. }];
  102. };
  103.  
  104. server_hiveWrite = {
  105. private["_data"];
  106. //diag_log ("ATTEMPT WRITE: " + _this);
  107. _data = "HiveExt" callExtension _this;
  108. //diag_log ("WRITE: " +str(_data));
  109. };
  110.  
  111. server_hiveReadWrite = {
  112. private["_key","_resultArray","_data"];
  113. _key = _this;
  114. //diag_log ("ATTEMPT READ/WRITE: " + _key);
  115. _data = "HiveExt" callExtension _key;
  116. //diag_log ("READ/WRITE: " +str(_data));
  117. _resultArray = call compile format ["%1",_data];
  118. _resultArray;
  119. };
  120.  
  121. onPlayerDisconnected "[_uid,_name] call server_onPlayerDisconnect;";
  122.  
  123. server_getDiff = {
  124. private["_variable","_object","_vNew","_vOld","_result"];
  125. _variable = _this select 0;
  126. _object = _this select 1;
  127. _vNew = _object getVariable[_variable,0];
  128. _vOld = _object getVariable[(_variable + "_CHK"),_vNew];
  129. _result = 0;
  130. if (_vNew < _vOld) then {
  131. //JIP issues
  132. _vNew = _vNew + _vOld;
  133. _object getVariable[(_variable + "_CHK"),_vNew];
  134. } else {
  135. _result = _vNew - _vOld;
  136. _object setVariable[(_variable + "_CHK"),_vNew];
  137. };
  138. _result;
  139. };
  140.  
  141. server_getDiff2 = {
  142. private["_variable","_object","_vNew","_vOld","_result"];
  143. _variable = _this select 0;
  144. _object = _this select 1;
  145. _vNew = _object getVariable[_variable,0];
  146. _vOld = _object getVariable[(_variable + "_CHK"),_vNew];
  147. _result = _vNew - _vOld;
  148. _object setVariable[(_variable + "_CHK"),_vNew];
  149. _result;
  150. };
  151.  
  152. dayz_objectUID2 = {
  153. private["_position","_dir","_key"];
  154. _dir = _this select 0;
  155. _key = "";
  156. _position = _this select 1;
  157. {
  158. _x = _x * 10;
  159. if ( _x < 0 ) then { _x = _x * -10 };
  160. _key = _key + str(round(_x));
  161. } forEach _position;
  162. _key = _key + str(round(_dir));
  163. _key;
  164. };
  165.  
  166. dayz_recordLogin = {
  167. private["_key"];
  168. _key = format["CHILD:103:%1:%2:%3:",_this select 0,_this select 1,_this select 2];
  169. _key call server_hiveWrite;
  170. };
  171.  
  172. call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fa_hiveMaintenance.sqf";
  173. // BASE BUILDING 1.2 Build Array
  174. build_baseBuilding_arrays = {
  175.  
  176. // ################################### BUILD LIST ARRAY SERVER SIDE ######################################## START
  177. /*
  178. Build list by Daimyo for SERVER side
  179. Add and remove recipes, Objects(classnames), requirments to build, and town restrictions + extras
  180. This method is used because we are referencing magazines from player inventory as buildables.
  181. Main array (_buildlist) consist of 34 arrays within. These arrays contains parameters for player_build.sqf
  182. From left to right, each array contains 3 elements, 1st: Recipe Array, 2nd: "Classname", 3rd: Requirements array.
  183. Check comments below for more info on parameters
  184. */
  185. private["_isDestructable","_classname","_isSimulated","_disableSims","_objectSims","_objectSim","_requirements","_isStructure","_structure","_wallType","_removable","_buildlist","_build_townsrestrict"];
  186. // Count is 34
  187. // Info on Parameters (Copy and Paste to add more recipes and their requirments!):
  188. //[TankTrap, SandBags, Wires, Logs, Scrap Metal, Grenades], "Classname", [_attachCoords, _startPos, _modDir, _toolBox, _eTool, _medWait, _longWait, _inBuilding, _roadAllowed, _inTown, _removable, _isStructure, _isSimulated, _isDestructable];
  189. _buildlist = [
  190. [[0, 1, 0, 0, 1, 1], "Grave", [[0,2.5,.1],[0,2,0], 0, true, true, true, false, false, true, true, false, false, true, false]],//Booby Traps --1
  191. [[2, 0, 0, 3, 1, 0], "Concrete_Wall_EP1", [[0,5,1.75],[0,2,0], 0, true, false, true, false, false, true, false, false, false, true, false]],//Gate Concrete Wall --2
  192. [[1, 0, 1, 0, 1, 0], "Infostand_2_EP1", [[0,2.5,.6],[0,2,0], 0, true, false, true, false, false, false, false, false, false, false, false]],//Gate Panel w/ KeyPad --3
  193. [[3, 3, 2, 2, 0, 0], "WarfareBDepot", [[0,18,2], [0,15,0], 90, true, true, false, true, false, false, false, false, true, true, false]],//WarfareBDepot --4
  194. [[4, 1, 2, 2, 0, 0], "Base_WarfareBBarrier10xTall", [[0,10,1], [0,10,0], 0, true, true, false, true, false, false, false, false, false, true, false]],//Base_WarfareBBarrier10xTall --5
  195. [[2, 1, 2, 1, 0, 0], "WarfareBCamp", [[0,12,1], [0,10,0], 0, true, true, false, true, false, false, false, false, true, true, false]],//WarfareBCamp --6
  196. [[2, 1, 1, 1, 0, 0], "Base_WarfareBBarrier10x", [[0,10,.6], [0,10,0], 0, true, true, false, true, false, false, false, false, false, true, false]],//Base_WarfareBBarrier10x --7
  197. [[2, 2, 0, 2, 0, 0], "Land_fortified_nest_big", [[0,12,1], [2,8,0], 180,true, true, false, true, false, false, false, false, true, true, false]],//Land_fortified_nest_big --8
  198. [[2, 1, 2, 2, 0, 0], "Land_Fort_Watchtower", [[0,10,2.2],[0,8,0], 90, true, true, false, true, false, false, false, false, true, true, false]],//Land_Fort_Watchtower --9
  199. [[4, 1, 1, 3, 0, 0], "Land_fort_rampart_EP1", [[0,7,.2], [0,8,0], 0, true, true, false, true, false, false, false, true, false, true, false]],//Land_fort_rampart_EP1 --10
  200. [[2, 1, 1, 0, 0, 0], "Land_HBarrier_large", [[0,7,1], [0,4,0], 0, true, true, true, false, false, false, false, false, false, true, false]],//Land_HBarrier_large --11
  201. [[2, 1, 0, 1, 0, 0], "Land_fortified_nest_small", [[0,7,1], [0,3,0], 90, true, true, true, false, false, false, false, false, true, true, false]],//Land_fortified_nest_small --12
  202. [[0, 1, 1, 0, 0, 0], "Land_BagFenceRound", [[0,4,.5], [0,2,0], 180,true, true, false, false, false, false, false, true, false, true, false]],//Land_BagFenceRound --13
  203. [[0, 1, 0, 0, 0, 0], "Land_fort_bagfence_long", [[0,4,.3], [0,2,0], 0, true, true, false, false, false, false, false, true, false, true, false]],//Land_fort_bagfence_long --14
  204. [[6, 0, 0, 0, 2, 0], "Land_Misc_Cargo2E", [[0,7,2.6], [0,5,0], 90, true, false, false, true, false, false, false, false, false, true, false]],//Land_Misc_Cargo2E --15
  205. [[5, 0, 0, 0, 1, 0], "Misc_Cargo1Bo_military", [[0,7,1.3], [0,5,0], 90, true, false, false, true, false, false, false, false, false, true, false]],//Misc_Cargo1Bo_military --16
  206. [[3, 0, 0, 0, 1, 0], "Ins_WarfareBContructionSite", [[0,7,1.3], [0,5,0], 90, true, false, false, true, false, false, false, false, false, true, false]],//Ins_WarfareBContructionSite --17
  207. [[1, 1, 0, 2, 1, 0], "Land_pumpa", [[0,3,.4], [0,3,0], 0, true, true, true, false, false, false, false, true, false, true, false]],//Land_pumpa --18
  208. [[1, 0, 0, 0, 0, 0], "Land_CncBlock", [[0,3,.4], [0,2,0], 0, true, false, false, false, false, true, true, true, false, true, false]],//Land_CncBlock --19
  209. [[4, 0, 0, 0, 0, 0], "Hhedgehog_concrete", [[0,5,.6], [0,4,0], 0, true, true, false, true, false, true, false, false, false, true, false]],//Hhedgehog_concrete --20
  210. [[1, 0, 0, 0, 1, 0], "Misc_cargo_cont_small_EP1", [[0,5,1.3], [0,4,0], 90, true, false, false, false, false, false, false, true, false, true, false]],//Misc_cargo_cont_small_EP1 --21
  211. [[1, 0, 0, 2, 0, 0], "Land_prebehlavka", [[0,6,.7], [0,3,0], 90, true, false, false, false, false, false, false, true, false, true, true]],//Land_prebehlavka(Ramp) --22
  212. [[2, 0, 0, 0, 0, 0], "Fence_corrugated_plate", [[0,4,.6], [0,3,0], 0, true, false, false, false, false, false, false, true, false, true, true]],//Fence_corrugated_plate --23
  213. [[2, 0, 1, 0, 0, 0], "ZavoraAnim", [[0,5,4.0], [0,5,0], 0, true, false, false, false, false, true, false, true, false, true, true]],//ZavoraAnim --24
  214. [[0, 0, 7, 0, 1, 0], "Land_tent_east", [[0,8,1.7], [0,6,0], 0, true, false, false, true, false, false, false, false, true, true, true]],//Land_tent_east --25
  215. [[0, 0, 6, 0, 1, 0], "Land_CamoNetB_EAST", [[0,10,2], [0,10,0], 0, true, false, false, true, false, false, false, true, true, true, true]],//Land_CamoNetB_EAST --26
  216. [[0, 0, 5, 0, 1, 0], "Land_CamoNetB_NATO", [[0,10,2], [0,10,0], 0, true, false, false, true, false, false, false, true, true, true, true]],//Land_CamoNetB_NATO --27
  217. [[0, 0, 4, 0, 1, 0], "Land_CamoNetVar_EAST", [[0,10,1.2],[0,7,0], 0, true, false, true, false, false, false, false, true, false, true, true]],//Land_CamoNetVar_EAST --28
  218. [[0, 0, 3, 0, 1, 0], "Land_CamoNetVar_NATO", [[0,10,1.2],[0,7,0], 0, true, false, true, false, false, false, false, true, false, true, true]],//Land_CamoNetVar_NATO --29
  219. [[0, 0, 2, 0, 1, 0], "Land_CamoNet_EAST", [[0,8,1.2], [0,7,0], 0, true, false, true, false, false, false, false, true, false, true, true]],//Land_CamoNet_EAST --30
  220. [[0, 0, 1, 0, 1, 0], "Land_CamoNet_NATO", [[0,8,1.2], [0,7,0], 0, true, false, true, false, false, false, false, true, false, true, true]],//Land_CamoNet_NATO --31
  221. [[0, 0, 2, 2, 0, 0], "Fence_Ind_long", [[0,5,.6], [-4,1.5,0], 0, true, false, true, false, false, false, false, true, false, true, true]], //Fence_Ind_long --32
  222. [[0, 0, 2, 0, 0, 0], "Fort_RazorWire", [[0,5,.8], [0,4,0], 0, true, false, false, false, false, false, false, true, false, true, true]],//Fort_RazorWire --33
  223. [[0, 0, 1, 0, 0, 0], "Fence_Ind", [[0,4,.7], [0,2,0], 0, true, false, false, false, false, false, true, true, false, true, true]] //Fence_Ind --34 *** Remember that the last element in array does not get comma ***
  224. ];
  225. // Build allremovables array for remove action
  226. for "_i" from 0 to ((count _buildlist) - 1) do
  227. {
  228. _removable = (_buildlist select _i) select _i - _i + 1;
  229. if (_removable != "Grave") then { // Booby traps have disarm bomb
  230. allremovables set [count allremovables, _removable];
  231. };
  232. };
  233. // Build classnames array for use later
  234. for "_i" from 0 to ((count _buildlist) - 1) do
  235. {
  236. _classname = (_buildlist select _i) select _i - _i + 1;
  237. allbuildables_class set [count allbuildables_class, _classname];
  238. };
  239.  
  240.  
  241. /*
  242. *** Remember that the last element in ANY array does not get comma ***
  243. Notice lines 47 and 62
  244. */
  245. // Towns to restrict from building in. (Type exact name as shown on map, NOT Case-Sensitive but spaces important)
  246. // ["Classname", range restriction];
  247. // NOT REQUIRED SERVER SIDE, JUST ADDED IN IF YOU NEED TO USE IT
  248. _build_townsrestrict = [
  249. ["Lyepestok", 1000],
  250. ["Sabina", 900],
  251. ["Branibor", 600],
  252. ["Bilfrad na moru", 400],
  253. ["Mitrovice", 350],
  254. ["Seven", 300],
  255. ["Blato", 300]
  256. ];
  257. // Here we are filling the global arrays with this local list
  258. allbuildables = _buildlist;
  259. allbuild_notowns = _build_townsrestrict;
  260.  
  261. // ################################### BUILD LIST ARRAY SERVER SIDE ######################################## END
  262.  
  263. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement