mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
Update server_monitor
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
- dayz_allowedObjects --> DayZ_SafeObjects
|
- dayz_allowedObjects --> DayZ_SafeObjects
|
||||||
- dayz_updateObjects --> DayZ_GearedObjects
|
- dayz_updateObjects --> DayZ_GearedObjects
|
||||||
- freeTarget --> OpenTarget
|
- freeTarget --> OpenTarget
|
||||||
|
- PVDZE_serverObjectMonitor --> dayz_serverObjectMonitor
|
||||||
- Duplicate public variables have been renamed:
|
- Duplicate public variables have been renamed:
|
||||||
- dayzPlayerLogin --> PVCDZ_plr_Login
|
- dayzPlayerLogin --> PVCDZ_plr_Login
|
||||||
- dayzPlayerLogin2 --> PVCDZ_plr_Login2
|
- dayzPlayerLogin2 --> PVCDZ_plr_Login2
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ REMOVE TOOL BREAKING, IT'S STUPID
|
|||||||
|
|
||||||
player_craftItem_DZV = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf";
|
player_craftItem_DZV = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf";
|
||||||
|
|
||||||
dayz_serverObjectMonitor = []; IS REPLACED WITH PVDZE_serverObjectMonitor = [];
|
|
||||||
trap_monitor.fsm is no more!
|
trap_monitor.fsm is no more!
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) spawn local_lockUnlock};
|
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) spawn local_lockUnlock};
|
||||||
"PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ};
|
"PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ};
|
||||||
"PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH};
|
"PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH};
|
||||||
"PVDZE_serverObjectMonitor" addPublicVariableEventHandler {PVDZE_serverObjectMonitor = dayz_safety};
|
|
||||||
|
|
||||||
{
|
{
|
||||||
private ["_building","_fckingcode"];
|
private ["_building","_fckingcode"];
|
||||||
|
|||||||
@@ -137,7 +137,6 @@ SleepTemperatur = 90 / 100; //First value = Minutes until player reaches the col
|
|||||||
//Server Variables
|
//Server Variables
|
||||||
allowConnection = false;
|
allowConnection = false;
|
||||||
dayz_serverObjectMonitor = [];
|
dayz_serverObjectMonitor = [];
|
||||||
PVDZE_serverObjectMonitor = [];
|
|
||||||
|
|
||||||
//Streaming Variables (player only)
|
//Streaming Variables (player only)
|
||||||
dayz_Locations = [];
|
dayz_Locations = [];
|
||||||
@@ -564,6 +563,9 @@ if (isServer) then {
|
|||||||
//dayz_spawnCrashSite_clutterCutter=0; // helicrash spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
|
//dayz_spawnCrashSite_clutterCutter=0; // helicrash spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
|
||||||
//dayz_spawnInfectedSite_clutterCutter=0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
|
//dayz_spawnInfectedSite_clutterCutter=0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
|
||||||
//Objects to remove when killed.
|
//Objects to remove when killed.
|
||||||
|
DayZ_nonCollide = ["TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","TentStorage4","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3", "StashMedium4", "DomeTentStorage", "DomeTentStorage0", "DomeTentStorage1", "DomeTentStorage2", "DomeTentStorag3", "DomeTentStorage4", "CamoNet_DZ"];
|
||||||
|
DayZ_WoodenFence = ["WoodenFence_1","WoodenFence_2","WoodenFence_3","WoodenFence_4","WoodenFence_5","WoodenFence_6","WoodenFence_7"];
|
||||||
|
DayZ_WoodenGates = ["WoodenGate_1","WoodenGate_2","WoodenGate_3","WoodenGate_4"];
|
||||||
DayZ_removableObjects = ["Wire_cat1","Sandbag1_DZ","Hedgehog_DZ","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare"];
|
DayZ_removableObjects = ["Wire_cat1","Sandbag1_DZ","Hedgehog_DZ","CamoNet_DZ","Trap_Cans","TrapTripwireFlare","TrapBearTrapSmoke","TrapTripwireGrenade","TrapTripwireSmoke","TrapBearTrapFlare"];
|
||||||
//[10416.695, 4198.4634],[7982.2563, 1419.8256],[10795.93, 1419.8263],[7966.083, 4088.7463],[9259.7266, 2746.1985],[5200.5234, 3915.3274],[6494.1665, 2572.7798],[5216.6968, 1246.407],[2564.7244, 3915.3296],[3858.3674, 2572.782],[2580.8977, 1246.4092],[13398.995, 4400.5874],[12242.025, 2948.3196],[13551.842, 1832.2257],[14870.512, 3009.5117],[-178.19415, 1062.4478],[1099.2754, 2388.8206],[-194.36755, 3731.3679],[10394.215, 8322.1719],[7959.7759, 5543.5342],[10773.449, 5543.5342],
|
//[10416.695, 4198.4634],[7982.2563, 1419.8256],[10795.93, 1419.8263],[7966.083, 4088.7463],[9259.7266, 2746.1985],[5200.5234, 3915.3274],[6494.1665, 2572.7798],[5216.6968, 1246.407],[2564.7244, 3915.3296],[3858.3674, 2572.782],[2580.8977, 1246.4092],[13398.995, 4400.5874],[12242.025, 2948.3196],[13551.842, 1832.2257],[14870.512, 3009.5117],[-178.19415, 1062.4478],[1099.2754, 2388.8206],[-194.36755, 3731.3679],[10394.215, 8322.1719],[7959.7759, 5543.5342],[10773.449, 5543.5342],
|
||||||
dayz_grid =[[7943.6025, 8212.4551],[9237.2461, 6869.9063],[5178.043, 8039.0361],[6471.686, 6696.4883],[5194.2163, 5370.1152],[2542.2439, 8039.0381],[3835.887, 6696.4902],[2558.4172, 5370.1172],[13376.514, 8524.2969],[12219.544, 7072.0273],[13529.361, 5955.9336],[14848.032, 7133.2197],[-200.67474, 5186.1563],[1076.7949, 6512.5283],[-216.84814, 7855.0771],[10293.751, 12197.736],[7859.312, 9419.0996],[10672.988, 9419.0996],[7843.1387, 12088.021],[9136.7822, 10745.474],[5077.5791, 11914.601],[6371.2222, 10572.052],[5093.7524, 9245.6816],[2441.78, 11914.604],[3735.4231, 10572.055],[2457.9534, 9245.6816],[13276.053, 12399.861],[12119.08, 10947.596],[13428.897, 9831.501],[14747.566, 11008.786],[-301.13867, 9061.7207],[976.33112, 10388.096],[-317.31201, 11730.642],[10271.271, 16321.429],[7836.8315, 13542.813],[10650.506, 13542.813],[7820.6582, 16211.718],[9114.3018, 14869.175],[5055.0986, 16038.3],[6348.7417, 14695.758],[5071.272, 13369.392],[2419.2996, 16038.305],[3712.9426, 14695.76],[2435.4729, 13369.392],[13253.568, 16523.553],[12096.6, 15071.295],[13406.416, 13955.209],[14725.089, 15132.486],[-323.61914, 13185.43],[953.85059, 14511.8],[-339.79248, 15854.346]];
|
dayz_grid =[[7943.6025, 8212.4551],[9237.2461, 6869.9063],[5178.043, 8039.0361],[6471.686, 6696.4883],[5194.2163, 5370.1152],[2542.2439, 8039.0381],[3835.887, 6696.4902],[2558.4172, 5370.1172],[13376.514, 8524.2969],[12219.544, 7072.0273],[13529.361, 5955.9336],[14848.032, 7133.2197],[-200.67474, 5186.1563],[1076.7949, 6512.5283],[-216.84814, 7855.0771],[10293.751, 12197.736],[7859.312, 9419.0996],[10672.988, 9419.0996],[7843.1387, 12088.021],[9136.7822, 10745.474],[5077.5791, 11914.601],[6371.2222, 10572.052],[5093.7524, 9245.6816],[2441.78, 11914.604],[3735.4231, 10572.055],[2457.9534, 9245.6816],[13276.053, 12399.861],[12119.08, 10947.596],[13428.897, 9831.501],[14747.566, 11008.786],[-301.13867, 9061.7207],[976.33112, 10388.096],[-317.31201, 11730.642],[10271.271, 16321.429],[7836.8315, 13542.813],[10650.506, 13542.813],[7820.6582, 16211.718],[9114.3018, 14869.175],[5055.0986, 16038.3],[6348.7417, 14695.758],[5071.272, 13369.392],[2419.2996, 16038.305],[3712.9426, 14695.76],[2435.4729, 13369.392],[13253.568, 16523.553],[12096.6, 15071.295],[13406.416, 13955.209],[14725.089, 15132.486],[-323.61914, 13185.43],[953.85059, 14511.8],[-339.79248, 15854.346]];
|
||||||
@@ -578,6 +580,7 @@ if (isServer) then {
|
|||||||
currentObjectUIDs = [];
|
currentObjectUIDs = [];
|
||||||
keyStartNumber = 100000000000;
|
keyStartNumber = 100000000000;
|
||||||
DZE_safeVehicle = ["ParachuteWest","ParachuteC"];
|
DZE_safeVehicle = ["ParachuteWest","ParachuteC"];
|
||||||
|
serverVehicleCounter = [];
|
||||||
if(isNil "EpochEvents") then {EpochEvents = [];};
|
if(isNil "EpochEvents") then {EpochEvents = [];};
|
||||||
if(isNil "DZE_vehicleAmmo") then {DZE_vehicleAmmo = 0;};
|
if(isNil "DZE_vehicleAmmo") then {DZE_vehicleAmmo = 0;};
|
||||||
if(isNil "DZE_BackpackGuard") then {DZE_BackpackGuard = true;};
|
if(isNil "DZE_BackpackGuard") then {DZE_BackpackGuard = true;};
|
||||||
@@ -592,9 +595,13 @@ if (isServer) then {
|
|||||||
if(isNil "DynamicVehicleFuelHigh") then {DynamicVehicleFuelHigh = 100;};
|
if(isNil "DynamicVehicleFuelHigh") then {DynamicVehicleFuelHigh = 100;};
|
||||||
if(isNil "HeliCrashArea") then {HeliCrashArea = dayz_MapArea / 2;};
|
if(isNil "HeliCrashArea") then {HeliCrashArea = dayz_MapArea / 2;};
|
||||||
if(isNil "OldHeliCrash") then {OldHeliCrash = false;};
|
if(isNil "OldHeliCrash") then {OldHeliCrash = false;};
|
||||||
if(isNil "DZE_DiagFpsSlow") then {DZE_DiagFpsSlow = false;};
|
if(isNil "DZE_DiagFpsSlow") then {DZE_DiagFpsSlow = false;}; // Log server FPS + player count every 5 minutes
|
||||||
if(isNil "DZE_DiagFpsFast") then {DZE_DiagFpsFast = false;};
|
if(isNil "DZE_DiagFpsFast") then {DZE_DiagFpsFast = false;}; // Log server FPS + player count every 2 minutes
|
||||||
if(isNil "DZE_DiagVerbose") then {DZE_DiagVerbose = false;};
|
if(isNil "DZE_DiagVerbose") then {DZE_DiagVerbose = false;}; // Also log allMissionObjects count (very intensive)
|
||||||
|
if(isNil "MaxAmmoBoxes") then {MaxAmmoBoxes = 3;};
|
||||||
|
if(isNil "MaxDynamicDebris") then {MaxDynamicDebris = 100;};
|
||||||
|
if(isNil "MaxMineVeins") then {MaxMineVeins = 50;};
|
||||||
|
if(isNil "MaxVehicleLimit") then {MaxVehicleLimit = 50;};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!isDedicated) then {
|
if (!isDedicated) then {
|
||||||
|
|||||||
@@ -30,6 +30,6 @@ if (DZE_GodModeBase) then {
|
|||||||
// Test disabling simulation server side on buildables only.
|
// Test disabling simulation server side on buildables only.
|
||||||
_object enableSimulation false;
|
_object enableSimulation false;
|
||||||
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
||||||
|
|
||||||
//diag_log ("PUBLISH: Created " + (_class) + " with ID " + _uid);
|
//diag_log ("PUBLISH: Created " + (_class) + " with ID " + _uid);
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ _key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance, _class, _da
|
|||||||
diag_log ("HIVE: WRITE: "+ str(_key));
|
diag_log ("HIVE: WRITE: "+ str(_key));
|
||||||
_key call server_hiveWrite;
|
_key call server_hiveWrite;
|
||||||
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
||||||
|
|
||||||
// Switched to spawn so we can wait a bit for the ID
|
// Switched to spawn so we can wait a bit for the ID
|
||||||
[_object,_uid,_fuel,_damage,_array,_characterID,_class] spawn {
|
[_object,_uid,_fuel,_damage,_array,_characterID,_class] spawn {
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ _key call server_hiveWrite;
|
|||||||
deleteVehicle _object_para;
|
deleteVehicle _object_para;
|
||||||
};
|
};
|
||||||
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
||||||
|
|
||||||
_object call fnc_veh_ResetEH;
|
_object call fnc_veh_ResetEH;
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ _key call server_hiveWrite;
|
|||||||
|
|
||||||
_object setVariable ["CharacterID", _characterID, true];
|
_object setVariable ["CharacterID", _characterID, true];
|
||||||
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
||||||
|
|
||||||
_object call fnc_veh_ResetEH;
|
_object call fnc_veh_ResetEH;
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ while {1 == 1} do {
|
|||||||
_crash setPos _adjustedPos;
|
_crash setPos _adjustedPos;
|
||||||
|
|
||||||
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_crash];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_crash];
|
||||||
|
|
||||||
_crash setVariable ["ObjectID","1",true];
|
_crash setVariable ["ObjectID","1",true];
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,6 @@ if (DZE_GodModeBase) then {
|
|||||||
// Test disabling simulation server side on buildables only.
|
// Test disabling simulation server side on buildables only.
|
||||||
_object enableSimulation false;
|
_object enableSimulation false;
|
||||||
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object];
|
||||||
|
|
||||||
diag_log ("PUBLISH: " + str(_activatingPlayer) + " upgraded " + (_class) + " with ID " + str(_uid));
|
diag_log ("PUBLISH: " + str(_activatingPlayer) + " upgraded " + (_class) + " with ID " + str(_uid));
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
private ["_position","_veh","_istoomany"];
|
private ["_position","_veh","_istoomany"];
|
||||||
|
|
||||||
waitUntil {!isNil "BIS_fnc_selectRandom"};
|
waitUntil {!isNil "BIS_fnc_selectRandom"};
|
||||||
_position = RoadList call BIS_fnc_selectRandom;
|
_position = roadList call BIS_fnc_selectRandom;
|
||||||
_position = _position modelToWorld [0,0,0];
|
_position = _position modelToWorld [0,0,0];
|
||||||
|
|
||||||
waitUntil {!isNil "BIS_fnc_findSafePos"};
|
waitUntil {!isNil "BIS_fnc_findSafePos"};
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
private ["_position","_veh","_istoomany","_spawnveh"];
|
private ["_position","_veh","_istoomany","_spawnveh"];
|
||||||
|
|
||||||
waitUntil {!isNil "BIS_fnc_selectRandom"};
|
waitUntil {!isNil "BIS_fnc_selectRandom"};
|
||||||
_position = RoadList call BIS_fnc_selectRandom;
|
_position = roadList call BIS_fnc_selectRandom;
|
||||||
_position = _position modelToWorld [0,0,0];
|
_position = _position modelToWorld [0,0,0];
|
||||||
|
|
||||||
waitUntil {!isNil "BIS_fnc_findSafePos"};
|
waitUntil {!isNil "BIS_fnc_findSafePos"};
|
||||||
|
|||||||
@@ -18,14 +18,11 @@ while {count AllowedVehiclesList > 0} do {
|
|||||||
// BIS_fnc_selectRandom replaced because the index may be needed to remove the element
|
// BIS_fnc_selectRandom replaced because the index may be needed to remove the element
|
||||||
_index = floor random count AllowedVehiclesList;
|
_index = floor random count AllowedVehiclesList;
|
||||||
_random = AllowedVehiclesList select _index;
|
_random = AllowedVehiclesList select _index;
|
||||||
|
|
||||||
_vehicle = _random select 0;
|
_vehicle = _random select 0;
|
||||||
_velimit = _random select 1;
|
_velimit = _random select 1;
|
||||||
|
|
||||||
_qty = {_x == _vehicle} count serverVehicleCounter;
|
_qty = {_x == _vehicle} count serverVehicleCounter;
|
||||||
|
if (_qty <= _velimit) exitWith {}; // If under limit allow to proceed
|
||||||
// If under limit allow to proceed
|
|
||||||
if (_qty <= _velimit) exitWith {};
|
|
||||||
|
|
||||||
// vehicle limit reached, remove vehicle from list
|
// vehicle limit reached, remove vehicle from list
|
||||||
// since elements cannot be removed from an array, overwrite it with the last element and cut the last element of (as long as order is not important)
|
// since elements cannot be removed from an array, overwrite it with the last element and cut the last element of (as long as order is not important)
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ server_hiveReadWrite = {
|
|||||||
//diag_log ("ATTEMPT READ/WRITE: " + _key);
|
//diag_log ("ATTEMPT READ/WRITE: " + _key);
|
||||||
_data = "HiveExt" callExtension _key;
|
_data = "HiveExt" callExtension _key;
|
||||||
//diag_log ("READ/WRITE: " +str(_data));
|
//diag_log ("READ/WRITE: " +str(_data));
|
||||||
_resultArray = call compile format ["%1",_data];
|
_resultArray = call compile (str _data);
|
||||||
_resultArray
|
_resultArray
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -208,9 +208,9 @@ dayz_reseed = {
|
|||||||
|
|
||||||
dze_diag_fps = {
|
dze_diag_fps = {
|
||||||
if (DZE_DiagVerbose) then {
|
if (DZE_DiagVerbose) then {
|
||||||
diag_log format["SERVER FPS : %1 OBJECTS: %2 : PLAYERS: %3",diag_fps,count (allMissionObjects ""),playersNumber west];
|
diag_log format["SERVER FPS: %1 PLAYERS: %2 OBJECTS: %3",diag_fps,playersNumber west,count (allMissionObjects "")];
|
||||||
} else {
|
} else {
|
||||||
diag_log format["SERVER FPS : %1",diag_fps];
|
diag_log format["SERVER FPS: %1 PLAYERS: %2",diag_fps,playersNumber west];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -220,12 +220,4 @@ generate_new_damage = {
|
|||||||
_damage
|
_damage
|
||||||
};
|
};
|
||||||
|
|
||||||
server_hiveReadWriteLarge = {
|
|
||||||
private ["_key","_resultArray","_data"];
|
|
||||||
_key = _this;
|
|
||||||
_data = "HiveExt" callExtension _key;
|
|
||||||
_resultArray = call compile _data;
|
|
||||||
_resultArray
|
|
||||||
};
|
|
||||||
|
|
||||||
call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fa_hiveMaintenance.sqf";
|
call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fa_hiveMaintenance.sqf";
|
||||||
@@ -54,7 +54,7 @@ _adjustedPos = [(_position select 0), (_position select 1), _newHeight];
|
|||||||
_crash setPos _adjustedPos;
|
_crash setPos _adjustedPos;
|
||||||
|
|
||||||
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_crash];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_crash];
|
||||||
|
|
||||||
_crash setVariable ["ObjectID","1",true];
|
_crash setVariable ["ObjectID","1",true];
|
||||||
_pos = getPos _crash;
|
_pos = getPos _crash;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ _crash setDir round(random 360);
|
|||||||
_crash setPos _position;
|
_crash setPos _position;
|
||||||
|
|
||||||
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
// I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic
|
||||||
//PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_crash];
|
//dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_crash];
|
||||||
|
|
||||||
//_crash setVariable ["ObjectID","1",true];
|
//_crash setVariable ["ObjectID","1",true];
|
||||||
_pos = getPos _crash;
|
_pos = getPos _crash;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
_flame inflame true;
|
_flame inflame true;
|
||||||
_flame setVariable ["permaLoot",true]; // = won't be removed by the cleaner, cf. sched_lootpiles.sqf
|
_flame setVariable ["permaLoot",true]; // = won't be removed by the cleaner, cf. sched_lootpiles.sqf
|
||||||
};
|
};
|
||||||
sleep 0.001;
|
uiSleep 0.001;
|
||||||
} count [
|
} count [
|
||||||
[11580.2,3391.72,-1.20629], [11604.4,3389.41,0.0161071], [11664.6,3415.82,-0.524297], [11678.4,3421.32,-0.526046], [11681.4,3409.25,0.028707],
|
[11580.2,3391.72,-1.20629], [11604.4,3389.41,0.0161071], [11664.6,3415.82,-0.524297], [11678.4,3421.32,-0.526046], [11681.4,3409.25,0.028707],
|
||||||
[11700.9,3416.6,-0.433657], [11707.7,3431.61,0.597957], [11817.8,12693.7,-0.131821], [11844.7,12749.8,-0.109467], [11845.2,12747.7,-0.119843],
|
[11700.9,3416.6,-0.433657], [11707.7,3431.61,0.597957], [11817.8,12693.7,-0.131821], [11844.7,12749.8,-0.109467], [11845.2,12747.7,-0.119843],
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
|
// replaced with dze_diag_fps
|
||||||
|
|
||||||
|
/*
|
||||||
while {isServer} do {
|
while {isServer} do {
|
||||||
diag_log ("DEBUG FPS : " + str(diag_fps) );
|
diag_log ("DEBUG FPS : " + str(diag_fps) );
|
||||||
sleep 360;
|
sleep 360;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
@@ -27,6 +27,7 @@ sched_co_deleteVehicle = {
|
|||||||
sched_corpses = {
|
sched_corpses = {
|
||||||
private ["_delQtyZ","_delQtyP","_addFlies","_x","_deathTime","_onoff","_delQtyAnimal", "_sound", "_deathPos", "_cpos"];
|
private ["_delQtyZ","_delQtyP","_addFlies","_x","_deathTime","_onoff","_delQtyAnimal", "_sound", "_deathPos", "_cpos"];
|
||||||
// EVERY 2 MINUTE
|
// EVERY 2 MINUTE
|
||||||
|
if (DZE_DiagFpsFast) then {call dze_diag_fps;};
|
||||||
// DELETE UNCONTROLLED ZOMBIES --- PUT FLIES ON FRESH PLAYER CORPSES --- REMOVE OLD FLIES & CORPSES
|
// DELETE UNCONTROLLED ZOMBIES --- PUT FLIES ON FRESH PLAYER CORPSES --- REMOVE OLD FLIES & CORPSES
|
||||||
_delQtyZ = 0;
|
_delQtyZ = 0;
|
||||||
_delQtyP = 0;
|
_delQtyP = 0;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ sched_lootpiles_5m = {
|
|||||||
sched_lootpiles = {
|
sched_lootpiles = {
|
||||||
private ["_plrBatch","_chunkSize","_imax","_plr","_i","_x", "_changed"];
|
private ["_plrBatch","_chunkSize","_imax","_plr","_i","_x", "_changed"];
|
||||||
// EVERY 5 MINUTES, ONE OF THESE TASKS SPACED BY 5 SECONDS:
|
// EVERY 5 MINUTES, ONE OF THESE TASKS SPACED BY 5 SECONDS:
|
||||||
|
if (DZE_DiagFpsSlow) then {call dze_diag_fps;};
|
||||||
// LOOK FOR OLD LOOTPILES -OR- IGNORE LOOTPILES NEAR _plrBatch PLAYERS -OR- REMOVE REMAINING _chunkSize LOOTPILES
|
// LOOK FOR OLD LOOTPILES -OR- IGNORE LOOTPILES NEAR _plrBatch PLAYERS -OR- REMOVE REMAINING _chunkSize LOOTPILES
|
||||||
_chunkSize = 50;
|
_chunkSize = 50;
|
||||||
_plrBatch = 10;
|
_plrBatch = 10;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
sched_safetyVehicle = {
|
sched_safetyVehicle = {
|
||||||
{
|
{
|
||||||
if (vehicle _x != _x && !(vehicle _x in dayz_serverObjectMonitor) && !(vehicle _x in PVDZE_serverObjectMonitor) && !((typeOf vehicle _x) in DZE_safeVehicle)) then {
|
if (vehicle _x != _x && !(vehicle _x in dayz_serverObjectMonitor) && !((typeOf vehicle _x) in DZE_safeVehicle)) then {
|
||||||
diag_log [ __FILE__, "KILLING A HACKER", name _x, " IN ", typeOf vehicle _x ];
|
diag_log [ __FILE__, "KILLING A HACKER", name _x, " IN ", typeOf vehicle _x ];
|
||||||
(vehicle _x) setDamage 1;
|
(vehicle _x) setDamage 1;
|
||||||
_x setDamage 1;
|
_x setDamage 1;
|
||||||
|
|||||||
@@ -1,494 +1,374 @@
|
|||||||
private ["_date","_year","_month","_day","_hour","_minute","_date1","_hiveResponse","_key","_objectCount","_dir","_point","_i","_action","_dam","_selection","_wantExplosiveParts","_entity","_worldspace","_damage","_booleans","_rawData","_ObjectID","_class","_CharacterID","_inventory","_hitpoints","_fuel","_id","_objectArray","_script","_result","_outcome"];
|
private ["_date","_year","_month","_day","_hour","_minute","_date1","_hiveResponse","_key","_objectCount","_dir","_point","_i","_action","_dam","_selection","_wantExplosiveParts","_entity","_worldspace","_damage","_booleans","_rawData","_ObjectID","_class","_CharacterID","_inventory","_hitpoints","_fuel","_id","_objectArray","_script","_result","_outcome"];
|
||||||
[]execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*)
|
//[]execVM "\z\addons\dayz_server\system\s_fps.sqf"; //server monitor FPS (writes each ~181s diag_fps+181s diag_fpsmin*)
|
||||||
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
|
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
|
||||||
|
|
||||||
waitUntil{!isNil "BIS_MPF_InitDone"};
|
waitUntil {!isNil "BIS_MPF_InitDone"};
|
||||||
waitUntil{initialized}; //means all the functions are now defined
|
waitUntil {initialized}; //means all the functions are now defined
|
||||||
if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player)
|
if (!isNil "sm_done") exitWith {}; // prevent server_monitor be called twice (bug during login of the first player)
|
||||||
sm_done = false;
|
sm_done = false;
|
||||||
|
|
||||||
dayz_serverIDMonitor = [];
|
dayz_serverIDMonitor = [];
|
||||||
|
dayz_versionNo = getText (configFile >> "CfgMods" >> "DayZ" >> "version");
|
||||||
dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version");
|
dayz_hiveVersionNo = getNumber (configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
|
||||||
dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion");
|
|
||||||
|
|
||||||
_hiveLoaded = false;
|
_hiveLoaded = false;
|
||||||
|
|
||||||
diag_log "HIVE: Starting";
|
diag_log "HIVE: Starting";
|
||||||
|
|
||||||
//Set the Time
|
//Set the Time
|
||||||
_key = "CHILD:307:";
|
_key = "CHILD:307:";
|
||||||
_result = _key call server_hiveReadWrite;
|
_result = _key call server_hiveReadWrite;
|
||||||
_outcome = _result select 0;
|
_outcome = _result select 0;
|
||||||
if(_outcome == "PASS") then {
|
if (_outcome == "PASS") then {
|
||||||
_date = _result select 1;
|
_date = _result select 1;
|
||||||
|
|
||||||
//date setup
|
|
||||||
_year = _date select 0;
|
_year = _date select 0;
|
||||||
_month = _date select 1;
|
_month = _date select 1;
|
||||||
_day = _date select 2;
|
_day = _date select 2;
|
||||||
_hour = _date select 3;
|
_hour = _date select 3;
|
||||||
_minute = _date select 4;
|
_minute = _date select 4;
|
||||||
|
|
||||||
if(dayz_ForcefullmoonNights) then {
|
if (dayz_ForcefullmoonNights) then {_date = [2012,8,2,_hour,_minute];};
|
||||||
_date = [2012,8,2,_hour,_minute];
|
diag_log ["TIME SYNC: Local Time set to:", _date, "Fullmoon:",dayz_ForcefullmoonNights,"Date given by HiveExt.dll:",_result select 1];
|
||||||
};
|
|
||||||
diag_log [ "TIME SYNC: Local Time set to:", _date, "Fullmoon:",dayz_ForcefullmoonNights, "Date given by HiveExt.dll:", _result select 1];
|
|
||||||
setDate _date;
|
setDate _date;
|
||||||
dayzSetDate = _date;
|
dayzSetDate = _date;
|
||||||
publicVariable "dayzSetDate";
|
publicVariable "dayzSetDate";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Stream in objects
|
||||||
|
/* STREAM OBJECTS */
|
||||||
|
//Send the key
|
||||||
|
_key = format["CHILD:302:%1:",dayZ_instance];
|
||||||
|
_result = _key call server_hiveReadWrite;
|
||||||
|
|
||||||
|
diag_log "HIVE: Request sent";
|
||||||
|
_myArray = [];
|
||||||
|
_status = _result select 0; //Process result
|
||||||
|
|
||||||
|
if (_status == "ObjectStreamStart") then {
|
||||||
|
_hiveLoaded = true;
|
||||||
|
_val = _result select 1;
|
||||||
|
//Stream Objects
|
||||||
|
diag_log ("HIVE: Commence Object Streaming...");
|
||||||
|
for "_i" from 1 to _val do {
|
||||||
|
_result = _key call server_hiveReadWrite;
|
||||||
|
_status = _result select 0;
|
||||||
|
_myArray set [count _myArray,_result];
|
||||||
|
};
|
||||||
|
diag_log ("HIVE: Streamed " + str(_val) + " objects");
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
//Parse Array
|
||||||
|
_action = _x select 0;
|
||||||
|
_idKey = _x select 1;
|
||||||
|
_type = if ((typeName (_x select 2)) == "STRING") then { _x select 2 };
|
||||||
|
_ownerID = _x select 3;
|
||||||
|
_worldspace = if ((typeName (_x select 4)) == "ARRAY") then { _x select 4 } else { [] };
|
||||||
|
_inventory = if ((typeName (_x select 5)) == "ARRAY") then { _x select 5 } else { [] };
|
||||||
|
_hitPoints = if ((typeName (_x select 6)) == "ARRAY") then { _x select 6 } else { [] };
|
||||||
|
_fuel = if ((typeName (_x select 7)) == "SCALAR") then { _x select 7 } else { 0 };
|
||||||
|
_damage = if ((typeName (_x select 8)) == "SCALAR") then { _x select 8 } else { 0.9 };
|
||||||
|
_worldspace call dayz_objectUID2; // Set objectUIDs in currentObjectUIDs list to prevent duplicates
|
||||||
|
|
||||||
// Custom Configs
|
//set object to be in maintenance mode
|
||||||
if(isnil "MaxVehicleLimit") then {
|
_maintenanceMode = false;
|
||||||
MaxVehicleLimit = 50;
|
_maintenanceModeVars = [];
|
||||||
};
|
|
||||||
|
_dir = floor(random(360));
|
||||||
if(isnil "MaxDynamicDebris") then {
|
_pos = getMarkerpos "respawn_west";
|
||||||
MaxDynamicDebris = 100;
|
_wsDone = false;
|
||||||
};
|
|
||||||
if(isnil "MaxAmmoBoxes") then {
|
if (count _worldspace >= 1 && {(typeName (_worldspace select 0)) == "SCALAR"}) then {
|
||||||
MaxAmmoBoxes = 3;
|
_dir = _worldspace select 0;
|
||||||
};
|
};
|
||||||
if(isnil "MaxMineVeins") then {
|
if (count _worldspace == 2 && {(typeName (_worldspace select 1)) == "ARRAY"}) then {
|
||||||
MaxMineVeins = 50;
|
_i = _worldspace select 1;
|
||||||
};
|
if (count _i == 3 &&
|
||||||
// Custon Configs End
|
{(typeName (_i select 0)) == "SCALAR"} &&
|
||||||
|
{(typeName (_i select 1)) == "SCALAR"} &&
|
||||||
if (isServer && isNil "sm_done") then {
|
{(typeName (_i select 2)) == "SCALAR"}) then {
|
||||||
|
_pos = _i;
|
||||||
serverVehicleCounter = [];
|
_wsDone = true;
|
||||||
_hiveResponse = [];
|
|
||||||
|
|
||||||
for "_i" from 1 to 5 do {
|
|
||||||
diag_log "HIVE: trying to get objects";
|
|
||||||
_key = format["CHILD:302:%1:", dayZ_instance];
|
|
||||||
_hiveResponse = _key call server_hiveReadWrite;
|
|
||||||
if ((((isnil "_hiveResponse") || {(typeName _hiveResponse != "ARRAY")}) || {((typeName (_hiveResponse select 1)) != "SCALAR")})) then {
|
|
||||||
if ((_hiveResponse select 1) == "Instance already initialized") then {
|
|
||||||
_superkey = profileNamespace getVariable "SUPERKEY";
|
|
||||||
_shutdown = format["CHILD:400:%1:", _superkey];
|
|
||||||
_res = _shutdown call server_hiveReadWrite;
|
|
||||||
diag_log ("HIVE: attempt to kill.. HiveExt response:"+str(_res));
|
|
||||||
} else {
|
|
||||||
diag_log ("HIVE: connection problem... HiveExt response:"+str(_hiveResponse));
|
|
||||||
|
|
||||||
};
|
|
||||||
_hiveResponse = ["",0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
diag_log ("HIVE: found "+str(_hiveResponse select 1)+" objects" );
|
|
||||||
_i = 99; // break
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
if (!_wsDone) then {
|
||||||
_BuildingQueue = [];
|
//_pos = [,0,30,10,0,2000,0] call BIS_fnc_findSafePos;
|
||||||
_objectQueue = [];
|
if (count _pos < 3) then { _pos = [_worldspace select 0,_worldspace select 1,0]; };
|
||||||
|
diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
|
||||||
if ((_hiveResponse select 0) == "ObjectStreamStart") then {
|
|
||||||
|
|
||||||
// save superkey
|
|
||||||
profileNamespace setVariable ["SUPERKEY",(_hiveResponse select 2)];
|
|
||||||
|
|
||||||
_hiveLoaded = true;
|
|
||||||
|
|
||||||
diag_log ("HIVE: Commence Object Streaming...");
|
|
||||||
_key = format["CHILD:302:%1:", dayZ_instance];
|
|
||||||
_objectCount = _hiveResponse select 1;
|
|
||||||
_bQty = 0;
|
|
||||||
_vQty = 0;
|
|
||||||
for "_i" from 1 to _objectCount do {
|
|
||||||
_hiveResponse = _key call server_hiveReadWriteLarge;
|
|
||||||
//diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]);
|
|
||||||
if ((_hiveResponse select 2) isKindOf "ModularItems") then {
|
|
||||||
_BuildingQueue set [_bQty,_hiveResponse];
|
|
||||||
_bQty = _bQty + 1;
|
|
||||||
} else {
|
|
||||||
_objectQueue set [_vQty,_hiveResponse];
|
|
||||||
_vQty = _vQty + 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
diag_log ("HIVE: got " + str(_bQty) + " Epoch Objects and " + str(_vQty) + " Vehicles");
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// # NOW SPAWN OBJECTS #
|
if (_damage < 1) then {
|
||||||
_totalvehicles = 0;
|
//diag_log format["OBJ: %1 - %2,%3,%4,%5,%6,%7,%8", _idKey,_type,_ownerID,_worldspace,_inventory,_hitPoints,_fuel,_damage];
|
||||||
{
|
|
||||||
_idKey = _x select 1;
|
|
||||||
_type = _x select 2;
|
|
||||||
_ownerID = _x select 3;
|
|
||||||
_worldspace = _x select 4;
|
|
||||||
_inventory = _x select 5;
|
|
||||||
_hitPoints = _x select 6;
|
|
||||||
_fuel = _x select 7;
|
|
||||||
_damage = _x select 8;
|
|
||||||
_worldspace call dayz_objectUID2; // Set objectUIDs in currentObjectUIDs list to prevent duplicates
|
|
||||||
|
|
||||||
_dir = 0;
|
if (_type in DayZ_WoodenFence or _type in DayZ_WoodenGates) then {
|
||||||
_pos = [0,0,0];
|
//Use hitpoints for Maintenance system and other systems later.
|
||||||
_wsDone = false;
|
{
|
||||||
if (count _worldspace >= 2) then
|
if (_x == "Maintenance") then {_maintenanceMode = true;};
|
||||||
{
|
} forEach _hitPoints;
|
||||||
_dir = _worldspace select 0;
|
|
||||||
if (count (_worldspace select 1) == 3) then {
|
//Enable model swap for a damaged model.
|
||||||
_pos = _worldspace select 1;
|
if (_maintenanceMode) then {
|
||||||
_wsDone = true;
|
_maintenanceModeVars = [_type,_pos];
|
||||||
}
|
_type = _type + "_Damaged";
|
||||||
};
|
};
|
||||||
|
//TODO add remove object and readd old fence (hideobject would be nice to use here :-( )
|
||||||
if (!_wsDone) then {
|
//Pending change to new fence models\Layout
|
||||||
if (count _worldspace >= 1) then { _dir = _worldspace select 0; };
|
|
||||||
_pos = [dayz_centerMarker,0,4000,10,0,2000,0] call BIS_fnc_findSafePos;
|
|
||||||
if (count _pos < 3) then { _pos = [_pos select 0,_pos select 1,0]; };
|
|
||||||
diag_log ("MOVED OBJ: " + str(_idKey) + " of class " + _type + " to pos: " + str(_pos));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Create it
|
||||||
if (_damage < 1) then {
|
_object = createVehicle [_type, _pos, [], 0, if (_type in DayZ_nonCollide) then {"NONE"} else {"CAN_COLLIDE"}];
|
||||||
//diag_log format["OBJ: %1 - %2", _idKey,_type];
|
|
||||||
|
// prevent immediate hive write when vehicle parts are set up
|
||||||
//Create it
|
_object setVariable ["lastUpdate",diag_ticktime];
|
||||||
_object = createVehicle [_type, _pos, [], 0, "CAN_COLLIDE"];
|
_object setVariable ["ObjectID", _idKey, true];
|
||||||
_object setVariable ["lastUpdate",time];
|
dayz_serverIDMonitor set [count dayz_serverIDMonitor,_idKey];
|
||||||
_object setVariable ["ObjectID", _idKey, true];
|
// Fix for leading zero issues on safe codes after restart
|
||||||
|
_lockable = if (isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {getNumber (configFile >> "CfgVehicles" >> _type >> "lockable");} else {0};
|
||||||
_lockable = 0;
|
if (_lockable == 4) then {
|
||||||
if(isNumber (configFile >> "CfgVehicles" >> _type >> "lockable")) then {
|
_codeCount = count (toArray _ownerID);
|
||||||
_lockable = getNumber(configFile >> "CfgVehicles" >> _type >> "lockable");
|
if (_codeCount == 3) then {_ownerID = format["0%1",_ownerID];};
|
||||||
};
|
if (_codeCount == 2) then {_ownerID = format["00%1",_ownerID];};
|
||||||
|
if (_codeCount == 1) then {_ownerID = format["000%1",_ownerID];};
|
||||||
// fix for leading zero issues on safe codes after restart
|
};
|
||||||
if (_lockable == 4) then {
|
if (_lockable == 3) then {
|
||||||
_codeCount = (count (toArray _ownerID));
|
_codeCount = count (toArray _ownerID);
|
||||||
if(_codeCount == 3) then {
|
if (_codeCount == 2) then {_ownerID = format["0%1",_ownerID];};
|
||||||
_ownerID = format["0%1", _ownerID];
|
if (_codeCount == 1) then {_ownerID = format["00%1",_ownerID];};
|
||||||
};
|
};
|
||||||
if(_codeCount == 2) then {
|
_object setVariable ["CharacterID", _ownerID, true];
|
||||||
_ownerID = format["00%1", _ownerID];
|
_object setDir _dir;
|
||||||
};
|
_object setDamage _damage;
|
||||||
if(_codeCount == 1) then {
|
|
||||||
_ownerID = format["000%1", _ownerID];
|
if (!_wsDone) then {[_object,"position",true] call server_updateObject;};
|
||||||
};
|
if (_type == "Base_Fire_DZ") then {_object spawn base_fireMonitor;};
|
||||||
};
|
|
||||||
|
//Dont add inventory for traps.
|
||||||
if (_lockable == 3) then {
|
if (!(_object isKindOf "TrapItems") && !(_object isKindOf "DZ_buildables")) then {
|
||||||
_codeCount = (count (toArray _ownerID));
|
clearWeaponCargoGlobal _object;
|
||||||
if(_codeCount == 2) then {
|
clearMagazineCargoGlobal _object;
|
||||||
_ownerID = format["0%1", _ownerID];
|
clearBackpackCargoGlobal _object;
|
||||||
};
|
|
||||||
if(_codeCount == 1) then {
|
|
||||||
_ownerID = format["00%1", _ownerID];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
_object setVariable ["CharacterID", _ownerID, true];
|
|
||||||
|
|
||||||
clearWeaponCargoGlobal _object;
|
|
||||||
clearMagazineCargoGlobal _object;
|
|
||||||
// _object setVehicleAmmo DZE_vehicleAmmo;
|
|
||||||
|
|
||||||
_object setdir _dir;
|
|
||||||
_object setposATL _pos;
|
|
||||||
_object setDamage _damage;
|
|
||||||
|
|
||||||
if ((typeOf _object) in dayz_allowedObjects) then {
|
|
||||||
if (DZE_GodModeBase) then {
|
|
||||||
_object addEventHandler ["HandleDamage", {false}];
|
|
||||||
} else {
|
|
||||||
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
|
|
||||||
};
|
|
||||||
// Test disabling simulation server side on buildables only.
|
|
||||||
_object enableSimulation false;
|
|
||||||
// used for inplace upgrades && lock/unlock of safe
|
|
||||||
_object setVariable ["OEMPos", _pos, true];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
if (count _inventory > 0) then {
|
if (count _inventory > 0) then {
|
||||||
if (_type in DZE_LockedStorage) then {
|
if (_type in DZE_LockedStorage) then {
|
||||||
// Fill variables with loot
|
_object setVariable ["WeaponCargo",(_inventory select 0),true];
|
||||||
_object setVariable ["WeaponCargo", (_inventory select 0),true];
|
_object setVariable ["MagazineCargo",(_inventory select 1),true];
|
||||||
_object setVariable ["MagazineCargo", (_inventory select 1),true];
|
_object setVariable ["BackpackCargo",(_inventory select 2),true];
|
||||||
_object setVariable ["BackpackCargo", (_inventory select 2),true];
|
|
||||||
} else {
|
} else {
|
||||||
|
_cargo = _inventory;
|
||||||
//Add weapons
|
_config = ["CfgWeapons","CfgMagazines","CfgVehicles"];
|
||||||
_objWpnTypes = (_inventory select 0) select 0;
|
|
||||||
_objWpnQty = (_inventory select 0) select 1;
|
|
||||||
_countr = 0;
|
|
||||||
{
|
{
|
||||||
if(_x in (DZE_REPLACE_WEAPONS select 0)) then {
|
_magItemTypes = _x select 0;
|
||||||
_x = (DZE_REPLACE_WEAPONS select 1) select ((DZE_REPLACE_WEAPONS select 0) find _x);
|
_magItemQtys = _x select 1;
|
||||||
};
|
_i = _forEachIndex;
|
||||||
_isOK = isClass(configFile >> "CfgWeapons" >> _x);
|
{
|
||||||
if (_isOK) then {
|
if ((isClass (configFile >> (_config select _i) >> _x)) &&
|
||||||
_object addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
|
{(getNumber (configFile >> (_config select _i) >> _x >> "stopThis") != 1)}) then {
|
||||||
};
|
if (_forEachIndex < count _magItemQtys) then {
|
||||||
_countr = _countr + 1;
|
switch (_i) do {
|
||||||
} count _objWpnTypes;
|
case 0: {_object addWeaponCargoGlobal [_x,(_magItemQtys select _forEachIndex)];};
|
||||||
|
case 1: {_object addMagazineCargoGlobal [_x,(_magItemQtys select _forEachIndex)];};
|
||||||
//Add Magazines
|
case 2: {_object addBackpackCargoGlobal [_x,(_magItemQtys select _forEachIndex)];};
|
||||||
_objWpnTypes = (_inventory select 1) select 0;
|
};
|
||||||
_objWpnQty = (_inventory select 1) select 1;
|
};
|
||||||
_countr = 0;
|
};
|
||||||
{
|
} forEach _magItemTypes;
|
||||||
if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow
|
} forEach _cargo;
|
||||||
if (_x == "ItemTent") then { _x = "ItemTentOld" };
|
|
||||||
_isOK = isClass(configFile >> "CfgMagazines" >> _x);
|
|
||||||
if (_isOK) then {
|
|
||||||
_object addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
|
|
||||||
};
|
|
||||||
_countr = _countr + 1;
|
|
||||||
} count _objWpnTypes;
|
|
||||||
|
|
||||||
//Add Backpacks
|
|
||||||
_objWpnTypes = (_inventory select 2) select 0;
|
|
||||||
_objWpnQty = (_inventory select 2) select 1;
|
|
||||||
_countr = 0;
|
|
||||||
{
|
|
||||||
_isOK = isClass(configFile >> "CfgVehicles" >> _x);
|
|
||||||
if (_isOK) then {
|
|
||||||
_object addBackpackCargoGlobal [_x,(_objWpnQty select _countr)];
|
|
||||||
};
|
|
||||||
_countr = _countr + 1;
|
|
||||||
} count _objWpnTypes;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_object isKindOf "AllVehicles") then {
|
|
||||||
{
|
|
||||||
_selection = _x select 0;
|
|
||||||
_dam = _x select 1;
|
|
||||||
if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
|
|
||||||
[_object,_selection,_dam] call fnc_veh_setFixServer;
|
|
||||||
} count _hitpoints;
|
|
||||||
|
|
||||||
_object setFuel _fuel;
|
|
||||||
|
|
||||||
if (!((typeOf _object) in dayz_allowedObjects)) then {
|
|
||||||
|
|
||||||
//_object setvelocity [0,0,1];
|
|
||||||
_object call fnc_veh_ResetEH;
|
|
||||||
|
|
||||||
if(_ownerID != "0" && !(_object isKindOf "Bicycle")) then {
|
|
||||||
_object setVehicleLock "locked";
|
|
||||||
};
|
|
||||||
|
|
||||||
_totalvehicles = _totalvehicles + 1;
|
|
||||||
|
|
||||||
// total each vehicle
|
|
||||||
serverVehicleCounter set [count serverVehicleCounter,_type];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//Monitor the object
|
|
||||||
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_object];
|
|
||||||
};
|
};
|
||||||
} forEach (_BuildingQueue + _objectQueue);
|
|
||||||
// # END SPAWN OBJECTS #
|
if (_object isKindOf "AllVehicles") then {
|
||||||
|
|
||||||
// Draw the pseudo random seeds
|
|
||||||
call server_plantSpawner;
|
|
||||||
|
|
||||||
// launch the legacy task scheduler
|
|
||||||
[] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm";
|
|
||||||
|
|
||||||
// launch the new task scheduler
|
|
||||||
[] execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf";
|
|
||||||
|
|
||||||
createCenter civilian;
|
|
||||||
if (isDedicated) then {
|
|
||||||
endLoadingScreen;
|
|
||||||
};
|
|
||||||
allowConnection = true;
|
|
||||||
sm_done = true;
|
|
||||||
publicVariable "sm_done";
|
|
||||||
|
|
||||||
// Trap loop
|
|
||||||
[] spawn {
|
|
||||||
private ["_array","_array2","_array3","_script","_armed"];
|
|
||||||
_array = str dayz_traps;
|
|
||||||
_array2 = str dayz_traps_active;
|
|
||||||
_array3 = str dayz_traps_trigger;
|
|
||||||
|
|
||||||
while {1 == 1} do {
|
|
||||||
if ((str dayz_traps != _array) || (str dayz_traps_active != _array2) || (str dayz_traps_trigger != _array3)) then {
|
|
||||||
_array = str dayz_traps;
|
|
||||||
_array2 = str dayz_traps_active;
|
|
||||||
_array3 = str dayz_traps_trigger;
|
|
||||||
|
|
||||||
//diag_log "DEBUG: traps";
|
|
||||||
//diag_log format["dayz_traps (%2) -> %1", dayz_traps, count dayz_traps];
|
|
||||||
//diag_log format["dayz_traps_active (%2) -> %1", dayz_traps_active, count dayz_traps_active];
|
|
||||||
//diag_log format["dayz_traps_trigger (%2) -> %1", dayz_traps_trigger, count dayz_traps_trigger];
|
|
||||||
//diag_log "DEBUG: end traps";
|
|
||||||
};
|
|
||||||
|
|
||||||
{
|
{
|
||||||
if (isNull _x) then {
|
_selection = _x select 0;
|
||||||
dayz_traps = dayz_traps - [_x];
|
_dam = _x select 1;
|
||||||
};
|
if ((_selection in dayZ_explosiveParts && _dam > 0.8) && !(_object isKindOf "Air")) then {_dam = 0.8};
|
||||||
|
[_object,_selection,_dam] call fnc_veh_setFixServer;
|
||||||
|
} forEach _hitpoints;
|
||||||
|
|
||||||
_script = call compile getText (configFile >> "CfgVehicles" >> typeOf _x >> "script");
|
_object setFuel _fuel;
|
||||||
_armed = _x getVariable ["armed", false];
|
if !(_type in DayZ_SafeObjects) then {
|
||||||
|
_object setVelocity [0,0,1];
|
||||||
if (_armed) then {
|
_object call fnc_veh_ResetEH;
|
||||||
if !(_x in dayz_traps_active) then {
|
if (_ownerID != "0" && !(_object isKindOf "Bicycle")) then {_object setVehicleLock "locked";};
|
||||||
["arm", _x] call _script;
|
serverVehicleCounter set [count serverVehicleCounter,_type]; // total each vehicle
|
||||||
};
|
|
||||||
} else {
|
|
||||||
if (_x in dayz_traps_active) then {
|
|
||||||
["disarm", _x] call _script;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sleep 0.01;
|
|
||||||
} forEach dayz_traps;
|
|
||||||
sleep 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//Points of interest
|
|
||||||
[] execVM "\z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf";
|
|
||||||
[] execVM "\z\addons\dayz_server\compile\server_spawnCarePackages.sqf";
|
|
||||||
[] execVM "\z\addons\dayz_server\compile\server_spawnCrashSites.sqf";
|
|
||||||
|
|
||||||
|
|
||||||
[] execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf";
|
|
||||||
|
|
||||||
|
|
||||||
"PVDZ_sec_atp" addPublicVariableEventHandler {
|
|
||||||
_x = _this select 1;
|
|
||||||
switch (1==1) do {
|
|
||||||
case (typeName _x == "STRING") : { // just some logs from the client
|
|
||||||
diag_log _x;
|
|
||||||
};
|
|
||||||
case (count _x == 2) : { // wrong side
|
|
||||||
diag_log Format [ "P1ayer %1 reports possible 'side' hack... Server may be comprised!", (_x select 1) call fa_plr2Str ];
|
|
||||||
};
|
|
||||||
default { // player hit
|
|
||||||
_unit = _x select 0;
|
|
||||||
_source = _x select 1;
|
|
||||||
if (((!(isNil {_source})) AND {(!(isNull _source))}) AND {((_source isKindOf "CAManBase") AND {(owner _unit != owner _source)})}) then {
|
|
||||||
diag_log format ["P1ayer %1 hit by %2 %3 from %4 meters",
|
|
||||||
_unit call fa_plr2Str, _source call fa_plr2Str, _x select 2, _x select 3];
|
|
||||||
if (_unit getVariable["processedDeath", 0] == 0) then {
|
|
||||||
_unit setVariable [ "attacker", name _source ];
|
|
||||||
_unit setVariable [ "noatlf4", diag_ticktime ]; // server-side "not in combat" test, if player is not already dead
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// preload server traders menu data into cache
|
|
||||||
if !(DZE_ConfigTrader) then {
|
|
||||||
{
|
|
||||||
// get tids
|
|
||||||
_traderData = call compile format["menu_%1;",_x];
|
|
||||||
if(!isNil "_traderData") then {
|
|
||||||
{
|
|
||||||
_traderid = _x select 1;
|
|
||||||
|
|
||||||
_retrader = [];
|
|
||||||
|
|
||||||
_key = format["CHILD:399:%1:",_traderid];
|
|
||||||
_data = "HiveEXT" callExtension _key;
|
|
||||||
|
|
||||||
//diag_log "HIVE: Request sent";
|
|
||||||
|
|
||||||
//Process result
|
|
||||||
_result = call compile format ["%1",_data];
|
|
||||||
_status = _result select 0;
|
|
||||||
|
|
||||||
if (_status == "ObjectStreamStart") then {
|
|
||||||
_val = _result select 1;
|
|
||||||
//Stream Objects
|
|
||||||
//diag_log ("HIVE: Commence Menu Streaming...");
|
|
||||||
call compile format["ServerTcache_%1 = [];",_traderid];
|
|
||||||
for "_i" from 1 to _val do {
|
|
||||||
_data = "HiveEXT" callExtension _key;
|
|
||||||
_result = call compile format ["%1",_data];
|
|
||||||
call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
|
|
||||||
_retrader set [count _retrader,_result];
|
|
||||||
};
|
|
||||||
//diag_log ("HIVE: Streamed " + str(_val) + " objects");
|
|
||||||
};
|
|
||||||
|
|
||||||
} forEach (_traderData select 0);
|
|
||||||
};
|
|
||||||
} forEach serverTraders;
|
|
||||||
};
|
|
||||||
|
|
||||||
if (_hiveLoaded) then {
|
|
||||||
// spawn_vehicles
|
|
||||||
_vehLimit = MaxVehicleLimit - _totalvehicles;
|
|
||||||
if(_vehLimit > 0) then {
|
|
||||||
diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
|
|
||||||
for "_x" from 1 to _vehLimit do {
|
|
||||||
[] spawn spawn_vehicles;
|
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
diag_log "HIVE: Vehicle Spawn limit reached!";
|
if (_type in DayZ_nonCollide) then {
|
||||||
};
|
_pos set [2,0];
|
||||||
};
|
};
|
||||||
|
if (_pos select 2 == 0 or 0 == getNumber (configFile >> "CfgVehicles" >> _type >> "canbevertical")) then {
|
||||||
// spawn_roadblocks
|
_object setVectorUp surfaceNormal _pos;
|
||||||
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
|
} else {
|
||||||
for "_x" from 1 to MaxDynamicDebris do {
|
_object setVectorUp [0,0,1];
|
||||||
[] spawn spawn_roadblocks;
|
};
|
||||||
};
|
_object setPosATL _pos;
|
||||||
// spawn_ammosupply at server start 1% of roadblocks
|
if ((_object isKindOf "DZ_buildables") or ((_type in DayZ_SafeObjects) && !(_object isKindOf "TrapItems"))) then {
|
||||||
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
|
if (DZE_GodModeBase) then {_object addEventHandler ["HandleDamage",{false}];} else {_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];};
|
||||||
for "_x" from 1 to MaxAmmoBoxes do {
|
_object enableSimulation false; // Test disabling simulation server side on buildables only.
|
||||||
[] spawn spawn_ammosupply;
|
_object setVariable ["OEMPos",_pos,true]; // used for inplace upgrades and lock/unlock of safe
|
||||||
};
|
};
|
||||||
// call spawning mining veins
|
if (_object isKindOf "TrapItems" or _object isKindOf "DZ_buildables") then {
|
||||||
diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
|
//Use inventory for owner/clan info and traps armed state
|
||||||
for "_x" from 1 to MaxMineVeins do {
|
{
|
||||||
[] spawn spawn_mineveins;
|
if (typeName _x != "ARRAY") then {
|
||||||
};
|
// old method
|
||||||
|
if (typeName _x == "STRING") then { _object setVariable ["ownerArray", [_x], true]; };
|
||||||
// All done spawning stuff, can clear these now
|
if (typeName _x == "BOOLEAN") then { _object setVariable ["armed", _x, true]; };
|
||||||
buildingList = [];
|
} else { // new method: array of variables to set
|
||||||
roadList = [];
|
switch (_x select 0) do {
|
||||||
|
case "ownerArray" : { _object setVariable ["ownerArray", _x select 1, true]; };
|
||||||
// [_guaranteedLoot, _randomizedLoot, _frequency, _variance, _spawnChance, _spawnMarker, _spawnRadius, _spawnFire, _fadeFire]
|
case "clanArray" : { _object setVariable ["clanArray", _x select 1, true]; };
|
||||||
if(OldHeliCrash) then {
|
case "armed" : { _object setVariable ["armed", _x select 1, true]; };
|
||||||
_nul = [3, 4, (50 * 60), (15 * 60), 0.75, 'center', HeliCrashArea, true, false] spawn server_spawnCrashSite;
|
case "padlockCombination" : { _object setVariable ["dayz_padlockCombination",_x select 1,false]; };
|
||||||
};
|
case "BuildLock" : { _object setVariable ["BuildLock",_x select 1,true]; };
|
||||||
if (isDedicated) then {
|
};
|
||||||
// Epoch Events
|
};
|
||||||
_id = [] spawn server_spawnEvents;
|
} forEach _inventory;
|
||||||
|
|
||||||
// spawn debug box
|
if (_maintenanceMode) then { _object setVariable ["Maintenance", true, true]; _object setVariable ["MaintenanceVars", _maintenanceModeVars]; };
|
||||||
_debugMarkerPosition = getMarkerPos "respawn_west";
|
|
||||||
_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
|
|
||||||
_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
|
|
||||||
_vehicle_0 setPos _debugMarkerPosition;
|
|
||||||
_vehicle_0 setVariable ["ObjectID","1",true];
|
|
||||||
|
|
||||||
// max number of spawn markers
|
|
||||||
if(isnil "spawnMarkerCount") then {
|
|
||||||
spawnMarkerCount = 10;
|
|
||||||
};
|
|
||||||
actualSpawnMarkerCount = 0;
|
|
||||||
// count valid spawn marker positions
|
|
||||||
for "_i" from 0 to spawnMarkerCount do {
|
|
||||||
if (!([(getMarkerPos format["spawn%1", _i]), [0,0,0]] call BIS_fnc_areEqual)) then {
|
|
||||||
actualSpawnMarkerCount = actualSpawnMarkerCount + 1;
|
|
||||||
} else {
|
|
||||||
// exit since we did not find any further markers
|
|
||||||
_i = spawnMarkerCount + 99;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
diag_log format["Total Number of spawn locations %1", actualSpawnMarkerCount];
|
dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_object]; //Monitor the object
|
||||||
|
|
||||||
endLoadingScreen;
|
|
||||||
};
|
};
|
||||||
|
} forEach _myArray;
|
||||||
|
|
||||||
allowConnection = true;
|
// # END OF STREAMING #
|
||||||
sm_done = true;
|
|
||||||
publicVariable "sm_done";
|
call server_plantSpawner; // Draw the pseudo random seeds
|
||||||
|
[] execFSM "\z\addons\dayz_server\system\server_cleanup.fsm"; // launch the legacy task scheduler
|
||||||
|
[] execVM "\z\addons\dayz_server\system\scheduler\sched_init.sqf"; // launch the new task scheduler
|
||||||
|
|
||||||
|
createCenter civilian;
|
||||||
|
if (isDedicated) then {endLoadingScreen;};
|
||||||
|
allowConnection = true;
|
||||||
|
sm_done = true;
|
||||||
|
publicVariable "sm_done";
|
||||||
|
|
||||||
|
// Trap loop
|
||||||
|
[] spawn {
|
||||||
|
private ["_array","_array2","_array3","_script","_armed"];
|
||||||
|
_array = str dayz_traps;
|
||||||
|
_array2 = str dayz_traps_active;
|
||||||
|
_array3 = str dayz_traps_trigger;
|
||||||
|
|
||||||
|
while {1 == 1} do {
|
||||||
|
if ((str dayz_traps != _array) || (str dayz_traps_active != _array2) || (str dayz_traps_trigger != _array3)) then {
|
||||||
|
_array = str dayz_traps;
|
||||||
|
_array2 = str dayz_traps_active;
|
||||||
|
_array3 = str dayz_traps_trigger;
|
||||||
|
//diag_log "DEBUG: traps";
|
||||||
|
//diag_log format["dayz_traps (%2) -> %1", dayz_traps, count dayz_traps];
|
||||||
|
//diag_log format["dayz_traps_active (%2) -> %1", dayz_traps_active, count dayz_traps_active];
|
||||||
|
//diag_log format["dayz_traps_trigger (%2) -> %1", dayz_traps_trigger, count dayz_traps_trigger];
|
||||||
|
//diag_log "DEBUG: end traps";
|
||||||
|
};
|
||||||
|
|
||||||
|
{
|
||||||
|
if (isNull _x) then {dayz_traps = dayz_traps - [_x];};
|
||||||
|
|
||||||
|
_script = call compile getText (configFile >> "CfgVehicles" >> typeOf _x >> "script");
|
||||||
|
_armed = _x getVariable ["armed", false];
|
||||||
|
|
||||||
|
if (_armed) then {
|
||||||
|
if !(_x in dayz_traps_active) then {["arm", _x] call _script;};
|
||||||
|
} else {
|
||||||
|
if (_x in dayz_traps_active) then {["disarm", _x] call _script;};
|
||||||
|
};
|
||||||
|
uiSleep 0.01;
|
||||||
|
} forEach dayz_traps;
|
||||||
|
uiSleep 1;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//Points of interest
|
||||||
|
[] execVM "\z\addons\dayz_server\compile\server_spawnInfectedCamps.sqf";
|
||||||
|
[] execVM "\z\addons\dayz_server\compile\server_spawnCarePackages.sqf";
|
||||||
|
[] execVM "\z\addons\dayz_server\compile\server_spawnCrashSites.sqf";
|
||||||
|
|
||||||
|
if ((toLower worldName) == "chernarus") then {execVM "\z\addons\dayz_server\system\lit_fireplaces.sqf";};
|
||||||
|
|
||||||
|
"PVDZ_sec_atp" addPublicVariableEventHandler {
|
||||||
|
_x = _this select 1;
|
||||||
|
switch (1==1) do {
|
||||||
|
case (typeName _x == "STRING") : { // just some logs from the client
|
||||||
|
diag_log _x;
|
||||||
|
};
|
||||||
|
case (count _x == 2) : { // wrong side
|
||||||
|
diag_log format["P1ayer %1 reports possible 'side' hack. Server may be compromised!",(_x select 1) call fa_plr2Str];
|
||||||
|
};
|
||||||
|
default { // player hit
|
||||||
|
_unit = _x select 0;
|
||||||
|
_source = _x select 1;
|
||||||
|
if (((!(isNil {_source})) && {!(isNull _source)}) && {((_source isKindOf "CAManBase") && {owner _unit != owner _source})}) then {
|
||||||
|
diag_log format ["P1ayer %1 hit by %2 %3 from %4 meters",
|
||||||
|
_unit call fa_plr2Str, _source call fa_plr2Str, _x select 2, _x select 3];
|
||||||
|
if (_unit getVariable ["processedDeath",0] == 0) then {
|
||||||
|
_unit setVariable ["attacker", name _source];
|
||||||
|
_unit setVariable ["noatlf4", diag_ticktime]; // server-side "not in combat" test, if player is not already dead
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// preload server traders menu data into cache
|
||||||
|
if !(DZE_ConfigTrader) then {
|
||||||
|
{
|
||||||
|
// get tids
|
||||||
|
_traderData = call compile format["menu_%1;",_x];
|
||||||
|
if (!isNil "_traderData") then {
|
||||||
|
{
|
||||||
|
_traderid = _x select 1;
|
||||||
|
_retrader = [];
|
||||||
|
|
||||||
|
_key = format["CHILD:399:%1:",_traderid];
|
||||||
|
_data = "HiveEXT" callExtension _key;
|
||||||
|
_result = call compile format["%1",_data];
|
||||||
|
_status = _result select 0;
|
||||||
|
|
||||||
|
if (_status == "ObjectStreamStart") then {
|
||||||
|
_val = _result select 1;
|
||||||
|
call compile format["ServerTcache_%1 = [];",_traderid];
|
||||||
|
for "_i" from 1 to _val do {
|
||||||
|
_data = "HiveEXT" callExtension _key;
|
||||||
|
_result = call compile format ["%1",_data];
|
||||||
|
call compile format["ServerTcache_%1 set [count ServerTcache_%1,%2]",_traderid,_result];
|
||||||
|
_retrader set [count _retrader,_result];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} forEach (_traderData select 0);
|
||||||
|
};
|
||||||
|
} forEach serverTraders;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (_hiveLoaded) then {
|
||||||
|
// spawn_vehicles
|
||||||
|
_vehLimit = MaxVehicleLimit - (count serverVehicleCounter);
|
||||||
|
if (_vehLimit > 0) then {
|
||||||
|
diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit));
|
||||||
|
for "_x" from 1 to _vehLimit do {[] spawn spawn_vehicles;};
|
||||||
|
} else {
|
||||||
|
diag_log "HIVE: Vehicle Spawn limit reached!";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
diag_log ("HIVE: Spawning # of Debris: " + str(MaxDynamicDebris));
|
||||||
|
for "_x" from 1 to MaxDynamicDebris do {[] spawn spawn_roadblocks;};
|
||||||
|
|
||||||
|
diag_log ("HIVE: Spawning # of Ammo Boxes: " + str(MaxAmmoBoxes));
|
||||||
|
for "_x" from 1 to MaxAmmoBoxes do {[] spawn spawn_ammosupply;};
|
||||||
|
|
||||||
|
diag_log ("HIVE: Spawning # of Veins: " + str(MaxMineVeins));
|
||||||
|
for "_x" from 1 to MaxMineVeins do {[] spawn spawn_mineveins;};
|
||||||
|
|
||||||
|
// All done spawning stuff, can clear these now
|
||||||
|
buildingList = []; roadList = [];
|
||||||
|
|
||||||
|
// [_guaranteedLoot,_randomizedLoot,_frequency,_variance,_spawnChance,_spawnMarker,_spawnRadius,_spawnFire,_fadeFire]
|
||||||
|
if (OldHeliCrash) then {
|
||||||
|
_nul = [3,4,(50 * 60),(15 * 60),0.75,'center',HeliCrashArea,true,false] spawn server_spawnCrashSite;
|
||||||
|
};
|
||||||
|
|
||||||
|
[] spawn server_spawnEvents;
|
||||||
|
_debugMarkerPosition = getMarkerPos "respawn_west";
|
||||||
|
_debugMarkerPosition = [(_debugMarkerPosition select 0),(_debugMarkerPosition select 1),1];
|
||||||
|
_vehicle_0 = createVehicle ["DebugBox_DZ", _debugMarkerPosition, [], 0, "CAN_COLLIDE"];
|
||||||
|
_vehicle_0 setPos _debugMarkerPosition;
|
||||||
|
_vehicle_0 setVariable ["ObjectID","1",true];
|
||||||
Reference in New Issue
Block a user