mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
992ab5fda9974ef6394d8c15655fce46b244fe55
BIS_MPF_remoteExecutionServer = {
if ((_this select 1) select 2 == "JIPrequest") then {
[
};
};
BIS_E
server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSetup.sqf";
server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf";
server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB
server_deleteObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_deleteObj.sqf"; //Removes the object from the DB
server_swapObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_swapObject.sqf";
server_publishVeh = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle.sqf"; // Custom to add vehicles
server_publishVeh2 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle2.sqf"; // Custom to add vehicles
server_publishVeh3 = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishVehicle3.sqf"; // Custom to add vehicles
server_tradeObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_tradeObject.sqf";
server_traders = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_traders.sqf";
server_playerSync = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSync.sqf";
zombie_findOwner = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\zombie_findOwner.sqf";
server_updateNearbyObjects = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateNearbyObjects.sqf";
server_spawnCrashSite = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnCrashSite.sqf";
server_handleZedSpawn = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_handleZedSpawn.sqf";
server_spawnEvents = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_spawnEvent.sqf";
//server_weather = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_weather.sqf";
fnc_plyrHit = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\fnc_plyrHit.sqf";
server_deaths = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDeaths.sqf";
vehicle_handleInteract = {
private["_object"];
_object = _this select 0;
needUpdate_objects = needUpdate_objects - [_object];
[_object, "all"] call server_updateObject;
};
array_reduceSizeReverse = {
private["_array","_count","_num","_newarray","_startnum","_index"];
_array = _this select 0;
_newarray = [];
_count = _this select 1;
_num = count _array;
if (_num > _count) then {
_startnum = _num - 1;
_index = _count - 1;
for "_i" from 0 to _index do {
_newarray set [(_index-_i),_array select (_startnum - _i)];
};
_array = _newarray;
};
_array
};
array_reduceSize = {
private ["_array1","_array","_count","_num"];
_array1 = _this select 0;
_array = _array1 - ["Hatchet_Swing","Machete_Swing","Fishing_Swing","sledge_swing","crowbar_swing","CSGAS"];
_count = _this select 1;
_num = count _array;
if (_num > _count) then {
_array resize _count;
};
_array
};
vehicle_handleServerKilled = {
private["_unit","_killer"];
_unit = _this select 0;
_killer = _this select 1;
[_unit, "killed"] call server_updateObject;
_unit removeAllMPEventHandlers "MPKilled";
_unit removeAllEventHandlers "Killed";
_unit removeAllEventHandlers "HandleDamage";
_unit removeAllEventHandlers "GetIn";
_unit removeAllEventHandlers "GetOut";
};
object_handleServerKilled = {
private["_unit","_objectID","_objectUID","_killer"];
_unit = _this select 0;
_killer = _this select 1;
_objectID = _unit getVariable ["ObjectID","0"];
_objectUID = _unit getVariable ["ObjectUID","0"];
[_objectID,_objectUID,_killer] call server_deleteObj;
_unit removeAllMPEventHandlers "MPKilled";
_unit removeAllEventHandlers "Killed";
_unit removeAllEventHandlers "HandleDamage";
_unit removeAllEventHandlers "GetIn";
_unit removeAllEventHandlers "GetOut";
};
check_publishobject = {
private["_allowed","_object","_playername"];
_object = _this select 0;
_playername = _this select 1;
_allowed = false;
//diag_log format ["DEBUG: Checking if Object: %1 is allowed published by %2", _object, _playername];
if ((typeOf _object) in dayz_allowedObjects) then {
//diag_log format ["DEBUG: Object: %1 published by %2 is Safe",_object, _playername];
_allowed = true;
};
_allowed
};
//event Handlers
eh_localCleanup = {
private ["_object"];
_object = _this select 0;
_object addEventHandler ["local", {
if(_this select 1) then {
private["_type","_unit"];
_unit = _this select 0;
_type = typeOf _unit;
_myGroupUnit = group _unit;
_unit removeAllMPEventHandlers "mpkilled";
_unit removeAllMPEventHandlers "mphit";
_unit removeAllMPEventHandlers "mprespawn";
_unit removeAllEventHandlers "FiredNear";
_unit removeAllEventHandlers "HandleDamage";
_unit removeAllEventHandlers "Killed";
_unit removeAllEventHandlers "Fired";
_unit removeAllEventHandlers "GetOut";
_unit removeAllEventHandlers "GetIn";
_unit removeAllEventHandlers "Local";
clearVehicleInit _unit;
deleteVehicle _unit;
deleteGroup _myGroupUnit;
//_unit = nil;
diag_log ("CLEANUP: DELETED A " + str(_type) );
};
}];
};
server_hiveWrite = {
private["_data"];
//diag_log ("ATTEMPT WRITE: " + _this);
_data = "HiveExt" callExtension _this;
//diag_log ("WRITE: " +str(_data));
};
server_hiveReadWrite = {
private["_key","_resultArray","_data"];
_key = _this;
//diag_log ("ATTEMPT READ/WRITE: " + _key);
_data = "HiveExt" callExtension _key;
// diag_log ("READ/WRITE: " +str(_data));
_resultArray = call compile format ["%1",_data];
_resultArray
};
server_hiveReadWriteLarge = {
private["_key","_resultArray","_data"];
_key = _this;
//diag_log ("ATTEMPT READ/WRITE: " + _key);
_data = "HiveExt" callExtension _key;
// diag_log ("READ/WRITE: " +str(_data));
_resultArray = call compile _data;
_resultArray
};
server_characterSync = {
private ["_characterID","_playerPos","_playerGear","_playerBackp","_medical","_currentState","_currentModel","_key"];
_characterID = _this select 0;
_playerPos = _this select 1;
_playerGear = _this select 2;
_playerBackp = _this select 3;
_medical = _this select 4;
_currentState = _this select 5;
_currentModel = _this select 6;
_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];
//diag_log ("HIVE: WRITE: "+ str(_key) + " / " + _characterID);
_key call server_hiveWrite;
};
//onPlayerConnected "[_uid,_name] spawn server_onPlayerConnect;";
onPlayerDisconnected "[_uid,_name] call server_onPlayerDisconnect;";
// Setup globals allow overwrite from init.sqf
if(isnil "dayz_MapArea") then {
dayz_MapArea = 10000;
};
if(isnil "DynamicVehicleArea") then {
DynamicVehicleArea = dayz_MapArea / 2;
};
// Get all buildings and roads only once TODO: set variables to nil after done if nessicary
MarkerPosition = getMarkerPos "center";
RoadList = MarkerPosition nearRoads DynamicVehicleArea;
// Very taxing !!! but only on first startup
BuildingList = [];
{
if (isClass (configFile >> "CfgBuildingLoot" >> (typeOf _x))) then
{
BuildingList set [count BuildingList,_x];
};
} forEach (MarkerPosition nearObjects ["building",DynamicVehicleArea]);
spawn_vehicles = {
private ["_random","_lastIndex","_weights","_index","_vehicle","_velimit","_qty","_isAir","_isShip","_position","_dir","_istoomany","_veh","_objPosition","_marker","_iClass","_itemTypes","_cntWeights","_itemType","_num","_allCfgLoots"];
if (isDedicated) then {
while {count AllowedVehiclesList > 0} do {
// BIS_fnc_selectRandom replaced because the index may be needed to remove the element
_index = floor random count AllowedVehiclesList;
_random = AllowedVehiclesList select _index;
_vehicle = _random select 0;
_velimit = _random select 1;
_qty = {_x == _vehicle} count serverVehicleCounter;
// If under limit allow to proceed
if (_qty <= _velimit) exitWith {};
// 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)
_lastIndex = (count AllowedVehiclesList) - 1;
if (_lastIndex != _index) then {
AllowedVehiclesList set [_index, AllowedVehiclesList select _lastIndex];
};
AllowedVehiclesList resize _lastIndex;
};
if (count AllowedVehiclesList == 0) then {
diag_log("DEBUG: unable to find suitable vehicle to spawn");
} else {
// add vehicle to counter for next pass
serverVehicleCounter set [count serverVehicleCounter,_vehicle];
// Find Vehicle Type to better control spawns
_isAir = _vehicle isKindOf "Air";
_isShip = _vehicle isKindOf "Ship";
if(_isShip || _isAir) then {
if(_isShip) then {
// Spawn anywhere on coast on water
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [MarkerPosition,0,DynamicVehicleArea,10,1,2000,1] call BIS_fnc_findSafePos;
//diag_log("DEBUG: spawning boat near coast " + str(_position));
} else {
// Spawn air anywhere that is flat
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [MarkerPosition,0,DynamicVehicleArea,10,0,2000,0] call BIS_fnc_findSafePos;
//diag_log("DEBUG: spawning air anywhere flat " + str(_position));
};
} else {
// Spawn around buildings and 50% near roads
if((random 1) > 0.5) then {
waitUntil{!isNil "BIS_fnc_selectRandom"};
_position = RoadList call BIS_fnc_selectRandom;
_position = _position modelToWorld [0,0,0];
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [_position,0,10,10,0,2000,0] call BIS_fnc_findSafePos;
//diag_log("DEBUG: spawning near road " + str(_position));
} else {
waitUntil{!isNil "BIS_fnc_selectRandom"};
_position = BuildingList call BIS_fnc_selectRandom;
_position = _position modelToWorld [0,0,0];
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [_position,0,40,5,0,2000,0] call BIS_fnc_findSafePos;
//diag_log("DEBUG: spawning around buildings " + str(_position));
};
};
// only proceed if two params otherwise BIS_fnc_findSafePos failed and may spawn in air
if ((count _position) == 2) then {
_dir = round(random 180);
_istoomany = _position nearObjects ["AllVehicles",50];
if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many vehicles at " + str(_position)); };
//place vehicle
_veh = createVehicle [_vehicle, _position, [], 0, "CAN_COLLIDE"];
_veh setdir _dir;
_veh setpos _position;
if(DZEdebug) then {
_marker = createMarker [str(_position) , _position];
_marker setMarkerShape "ICON";
_marker setMarkerType "DOT";
_marker setMarkerText _vehicle;
};
// Get position with ground
_objPosition = getPosATL _veh;
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;
// _veh setVehicleAmmo DZE_vehicleAmmo;
// Add 0-3 loots to vehicle using random cfgloots
_num = floor(random 4);
_allCfgLoots = ["trash","civilian","food","generic","medical","military","policeman","hunter","worker","clothes","militaryclothes","specialclothes","trash"];
for "_x" from 1 to _num do {
_iClass = _allCfgLoots call BIS_fnc_selectRandom;
_itemTypes = [] + ((getArray (configFile >> "cfgLoot" >> _iClass)) select 0);
_index = dayz_CLBase find _iClass;
_weights = dayz_CLChances select _index;
_cntWeights = count _weights;
_index = floor(random _cntWeights);
_index = _weights select _index;
_itemType = _itemTypes select _index;
_veh addMagazineCargoGlobal [_itemType,1];
//diag_log("DEBUG: spawed loot inside vehicle " + str(_itemType));
};
[_veh,[_dir,_objPosition],_vehicle,true,"0"] call server_publishVeh;
};
};
};
};
spawn_ammosupply = {
private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
if (isDedicated) then {
_WreckList = ["Supply_Crate_DZE"];
waitUntil{!isNil "BIS_fnc_selectRandom"};
_position = RoadList call BIS_fnc_selectRandom;
_position = _position modelToWorld [0,0,0];
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [_position,5,20,5,0,2000,0] call BIS_fnc_findSafePos;
if ((count _position) == 2) then {
_istoomany = _position nearObjects ["All",5];
if((count _istoomany) > 0) exitWith { diag_log("DEBUG VEIN: Too many at " + str(_position)); };
_spawnveh = _WreckList call BIS_fnc_selectRandom;
if(DZEdebug) then {
_marker = createMarker [str(_position) , _position];
_marker setMarkerShape "ICON";
_marker setMarkerType "DOT";
_marker setMarkerText str(_spawnveh);
};
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
_veh enableSimulation false;
_veh setDir round(random 360);
_veh setpos _position;
_veh setVariable ["ObjectID","1",true];
};
};
};
DZE_LocalRoadBlocks = [];
spawn_roadblocks = {
private ["_position","_veh","_istoomany","_marker","_spawnveh","_WreckList"];
_WreckList = ["SKODAWreck","HMMWVWreck","UralWreck","datsun01Wreck","hiluxWreck","datsun02Wreck","UAZWreck","Land_Misc_Garb_Heap_EP1","Fort_Barricade_EP1","Rubbish2"];
waitUntil{!isNil "BIS_fnc_selectRandom"};
if (isDedicated) then {
_position = RoadList call BIS_fnc_selectRandom;
_position = _position modelToWorld [0,0,0];
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [_position,0,10,5,0,2000,0] call BIS_fnc_findSafePos;
if ((count _position) == 2) then {
// Get position with ground
_istoomany = _position nearObjects ["All",5];
if((count _istoomany) > 0) exitWith { diag_log("DEBUG: Too many at " + str(_position)); };
waitUntil{!isNil "BIS_fnc_selectRandom"};
_spawnveh = _WreckList call BIS_fnc_selectRandom;
if(DZEdebug) then {
_marker = createMarker [str(_position) , _position];
_marker setMarkerShape "ICON";
_marker setMarkerType "DOT";
_marker setMarkerText str(_spawnveh);
};
// fill array with classes and positions [class,pos,dir]
// DZE_LocalRoadBlocks set [count DZE_LocalRoadBlocks,[_spawnveh,_position,round(random 360)]];
//diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
_veh enableSimulation false;
// Randomize placement a bit
_veh setDir round(random 360);
_veh setpos _position;
_veh setVariable ["ObjectID","1",true];
};
};
};
spawn_mineveins = {
private ["_position","_veh","_istoomany","_marker","_spawnveh","_positions"];
if (isDedicated) then {
_position = [getMarkerPos "center",0,(HeliCrashArea*0.75),10,0,2000,0] call BIS_fnc_findSafePos;
if ((count _position) == 2) then {
_positions = selectBestPlaces [_position, 500, "(1 + forest) * (1 + hills) * (1 - houses) * (1 - sea)", 10, 5];
_position = (_positions call BIS_fnc_selectRandom) select 0;
// Get position with ground
_istoomany = _position nearObjects ["All",10];
if((count _istoomany) > 0) exitWith { diag_log("DEBUG VEIN: Too many objects at " + str(_position)); };
if(isOnRoad _position) exitWith { diag_log("DEBUG VEIN: on road " + str(_position)); };
_spawnveh = ["Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Iron_Vein_DZE","Silver_Vein_DZE","Silver_Vein_DZE","Gold_Vein_DZE"] call BIS_fnc_selectRandom;
if(DZEdebug) then {
_marker = createMarker [str(_position) , _position];
_marker setMarkerShape "ICON";
_marker setMarkerType "DOT";
_marker setMarkerText str(_spawnveh);
};
//diag_log("DEBUG: Spawning a crashed " + _spawnveh + " with " + _spawnloot + " at " + str(_position));
_veh = createVehicle [_spawnveh,_position, [], 0, "CAN_COLLIDE"];
_veh enableSimulation false;
// Randomize placement a bit
_veh setDir round(random 360);
_veh setpos _position;
_veh setVariable ["ObjectID","1",true];
};
};
};
if(isnil "DynamicVehicleDamageLow") then {
DynamicVehicleDamageLow = 0;
};
if(isnil "DynamicVehicleDamageHigh") then {
DynamicVehicleDamageHigh = 100;
};
if(isnil "DynamicVehicleFuelLow") then {
DynamicVehicleFuelLow = 0;
};
if(isnil "DynamicVehicleFuelHigh") then {
DynamicVehicleFuelHigh = 100;
};
if(isnil "DZE_DiagFpsSlow") then {
DZE_DiagFpsSlow = false;
};
if(isnil "DZE_DiagFpsFast") then {
DZE_DiagFpsFast = false;
};
if(isnil "DZE_DiagVerbose") then {
DZE_DiagVerbose = false;
};
dze_diag_fps = {
if(DZE_DiagVerbose) then {
diag_log format["DEBUG FPS : %1 OBJECTS: %2 : PLAYERS: %3", diag_fps,(count (allMissionObjects "")),(playersNumber west)];
} else {
diag_log format["DEBUG FPS : %1", diag_fps];
};
};
// Damage generator function
generate_new_damage = {
private ["_damage"];
_damage = ((random(DynamicVehicleDamageHigh-DynamicVehicleDamageLow))+DynamicVehicleDamageLow) / 100;
_damage;
};
// Damage generator fuction
generate_exp_damage = {
private ["_damage"];
_damage = ((random(DynamicVehicleDamageHigh-DynamicVehicleDamageLow))+DynamicVehicleDamageLow) / 100;
// limit this to 85% since vehicle would blow up otherwise.
//if(_damage >= 0.85) then {
// _damage = 0.85;
//};
_damage;
};
server_getDiff = {
private["_variable","_object","_vNew","_vOld","_result"];
_variable = _this select 0;
_object = _this select 1;
_vNew = _object getVariable[_variable,0];
_vOld = _object getVariable[(_variable + "_CHK"),_vNew];
_result = 0;
if (_vNew < _vOld) then {
//JIP issues
_vNew = _vNew + _vOld;
_object getVariable[(_variable + "_CHK"),_vNew];
} else {
_result = _vNew - _vOld;
_object setVariable[(_variable + "_CHK"),_vNew];
};
_result
};
server_getDiff2 = {
private["_variable","_object","_vNew","_vOld","_result"];
_variable = _this select 0;
_object = _this select 1;
_vNew = _object getVariable[_variable,0];
_vOld = _object getVariable[(_variable + "_CHK"),_vNew];
_result = _vNew - _vOld;
_object setVariable[(_variable + "_CHK"),_vNew];
_result
};
dayz_objectUID = {
private["_position","_dir","_key","_object"];
_object = _this;
_position = getPosATL _object;
_dir = direction _object;
_key = [_dir,_position] call dayz_objectUID2;
_key
};
dayz_objectUID2 = {
private["_position","_dir","_key"];
_dir = _this select 0;
_key = "";
_position = _this select 1;
{
_x = _x * 10;
if ( _x < 0 ) then { _x = _x * -10 };
_key = _key + str(round(_x));
} forEach _position;
_key = _key + str(round(_dir));
_key
};
dayz_objectUID3 = {
private["_position","_dir","_key"];
_dir = _this select 0;
_key = "";
_position = _this select 1;
{
_x = _x * 10;
if ( _x < 0 ) then { _x = _x * -10 };
_key = _key + str(round(_x));
} forEach _position;
_key = _key + str(round(_dir + time));
_key
};
dayz_recordLogin = {
private["_key"];
_key = format["CHILD:103:%1:%2:%3:",_this select 0,_this select 1,_this select 2];
_key call server_hiveWrite;
};
dayz_perform_purge = {
if(!isNull(_this)) then {
_this removeAllMPEventHandlers "mpkilled";
_this removeAllMPEventHandlers "mphit";
_this removeAllMPEventHandlers "mprespawn";
_this removeAllEventHandlers "FiredNear";
_this removeAllEventHandlers "HandleDamage";
_this removeAllEventHandlers "Killed";
_this removeAllEventHandlers "Fired";
_this removeAllEventHandlers "GetOut";
_this removeAllEventHandlers "GetIn";
_this removeAllEventHandlers "Local";
clearVehicleInit _this;
deleteVehicle _this;
deleteGroup (group _this);
};
};
dayz_perform_purge_player = {
private ["_countr","_backpack","_backpackType","_backpackWpn","_backpackMag","_objWpnTypes","_objWpnQty","_location","_dir","_holder","_weapons","_magazines"];
diag_log ("Purging player: " + str(_this));
if(!isNull(_this)) then {
_location = getPosATL _this;
_dir = getDir _this;
_holder = createVehicle ["GraveDZE", _location, [], 0, "CAN_COLLIDE"];
_holder setDir _dir;
_holder setPosATL _location;
_holder enableSimulation false;
_weapons = weapons _this;
_magazines = magazines _this;
// find backpack
if(!(isNull unitBackpack _this)) then {
_backpack = unitBackpack _this;
_backpackType = typeOf _backpack;
_backpackWpn = getWeaponCargo _backpack;
_backpackMag = getMagazineCargo _backpack;
_holder addBackpackCargoGlobal [_backpackType,1];
// add items from backpack
_objWpnTypes = _backpackWpn select 0;
_objWpnQty = _backpackWpn select 1;
_countr = 0;
{
_holder addWeaponCargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
// add backpack magazine items
_objWpnTypes = _backpackMag select 0;
_objWpnQty = _backpackMag select 1;
_countr = 0;
{
_holder addMagazineCargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
};
};
// add weapons
{
_holder addWeaponCargoGlobal [_x, 1];
} forEach _weapons;
// add mags
{
_holder addMagazineCargoGlobal [_x, 1];
} forEach _magazines;
_this removeAllMPEventHandlers "mpkilled";
_this removeAllMPEventHandlers "mphit";
_this removeAllMPEventHandlers "mprespawn";
_this removeAllEventHandlers "FiredNear";
_this removeAllEventHandlers "HandleDamage";
_this removeAllEventHandlers "Killed";
_this removeAllEventHandlers "Fired";
_this removeAllEventHandlers "GetOut";
_this removeAllEventHandlers "GetIn";
_this removeAllEventHandlers "Local";
clearVehicleInit _this;
deleteVehicle _this;
deleteGroup (group _this);
// _this = nil;
};
dayz_removePlayerOnDisconnect = {
if(!isNull(_this)) then {
_this removeAllMPEventHandlers "mphit";
deleteVehicle _this;
deleteGroup (group _this);
};
};
server_timeSync = {
//Send request
private ["_year","_month","_day","_hour","_minute","_date","_key","_result","_outcome"];
_key = "CHILD:307:";
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
if(_outcome == "PASS") then {
_date = _result select 1;
if(dayz_fullMoonNights) then {
//date setup
//_year = _date select 0;
//_month = _date select 1;
//_day = _date select 2;
_hour = _date select 3;
_minute = _date select 4;
//Force full moon nights
_date = [2013,8,3,_hour,_minute];
};
setDate _date;
PVDZE_plr_SetDate = _date;
publicVariable "PVDZE_plr_SetDate";
diag_log ("TIME SYNC: Local Time set to " + str(_date));
};
};
// must spawn these
server_spawncleanDead = {
private ["_deathTime","_delQtyZ","_delQtyP","_qty","_allDead"];
if(!isNil "DZE_DYN_cleandead") exitWith { };
DZE_DYN_cleandead = true;
_allDead = allDead;
_delQtyZ = 0;
_delQtyP = 0;
{
if (local _x) then {
if (_x isKindOf "zZombie_Base") then
{
_x call dayz_perform_purge;
sleep 0.025;
_delQtyZ = _delQtyZ + 1;
} else {
if (_x isKindOf "CAManBase") then {
_deathTime = _x getVariable ["processedDeath", diag_tickTime];
if (diag_tickTime - _deathTime > 1800) then {
_x call dayz_perform_purge_player;
sleep 0.025;
_delQtyP = _delQtyP + 1;
};
};
};
};
sleep 0.001;
} forEach _allDead;
if (_delQtyZ > 0 or _delQtyP > 0) then {
_qty = count _allDead;
diag_log (format["CLEANUP: Deleted %1 players and %2 zombies out of %3 dead",_delQtyP,_delQtyZ,_qty]);
};
DZE_DYN_cleandead = nil;
};
server_spawnCleanNull = {
private ["_delQtyNull"];
_delQtyNull = 0;
{
if (isNull _x) then {
//diag_log (format["CLEANUP: Purge performed on null OBJ: %1",_x]);
_x call dayz_perform_purge;
sleep 1;
_delQtyNull = _delQtyNull + 1;
};
sleep 0.001;
} forEach (allMissionObjects "");
if (_delQtyNull > 0) then {
diag_log (format["CLEANUP: Deleted %1 null objects",_delQtyNull]);
};
};
server_spawnCleanFire = {
private ["_delQtyFP","_qty","_delQtyNull","_missionFires"];
_missionFires = allMissionObjects "Land_Fire_DZ";
_delQtyFP = 0;
{
if (local _x) then {
deleteVehicle _x;
sleep 0.025;
_delQtyFP = _delQtyFP + 1;
};
sleep 0.001;
} forEach _missionFires;
if (_delQtyFP > 0) then {
_qty = count _missionFires;
diag_log (format["CLEANUP: Deleted %1 fireplaces out of %2",_delQtyNull,_qty]);
};
};
server_spawnCleanLoot = {
private ["_created","_delQty","_nearby","_age","_keep","_qty","_missionObjs","_dateNow"];
if(!isNil "DZE_DYN_cleanLoot") exitWith { };
DZE_DYN_cleanLoot = true;
_missionObjs = allMissionObjects "ReammoBox";
_delQty = 0;
_dateNow = (DateToNumber date);
{
_keep = _x getVariable ["permaLoot",false];
if (!_keep) then {
_created = _x getVariable ["created",-0.1];
if (_created == -0.1) then {
_x setVariable ["created",_dateNow,false];
_created = _dateNow;
} else {
_age = (_dateNow - _created) * 525948;
if (_age > 20) then {
_nearby = {(isPlayer _x) and (alive _x)} count (_x nearEntities [["CAManBase","AllVehicles"], 130]);
if (_nearby==0) then {
deleteVehicle _x;
sleep 0.025;
_delQty = _delQty + 1;
};
};
};
};
sleep 0.001;
} forEach _missionObjs;
if (_delQty > 0) then {
_qty = count _missionObjs;
diag_log (format["CLEANUP: Deleted %1 Loot Piles out of %2",_delQty,_qty]);
};
DZE_DYN_cleanLoot = nil;
};
server_spawnCleanAnimals = {
private ["_pos","_delQtyAnimal","_qty","_missonAnimals","_nearby"];
if(!isNil "DZE_DYN_cleanAnimals") exitWith { };
DZE_DYN_cleanAnimals = true;
_missonAnimals = entities "CAAnimalBase";
_delQtyAnimal = 0;
{
if (local _x) then {
_x call dayz_perform_purge;
sleep 0.025;
_delQtyAnimal = _delQtyAnimal + 1;
} else {
if (!alive _x) then {
_pos = getPosATL _x;
if (count _pos > 0) then {
_nearby = {(isPlayer _x) and (alive _x)} count (_pos nearEntities [["CAManBase","AllVehicles"], 130]);
if (_nearby==0) then {
_x call dayz_perform_purge;
sleep 0.025;
_delQtyAnimal = _delQtyAnimal + 1;
};
};
};
};
sleep 0.001;
} forEach _missonAnimals;
if (_delQtyAnimal > 0) then {
_qty = count _missonAnimals;
diag_log (format["CLEANUP: Deleted %1 Animals out of %2",_delQtyAnimal,_qty]);
};
<<<<<<< HEAD
DZE_DYN_cleanAnimals = nil;
};
=======
DZE_DYN_cleanLoot = nil;
};
>>>>>>> dcc8fb0478
DayZ Epoch
Experimental DayZ mod
Based on DayZ Mod Community edition
https://github.com/DayZMod/DayZ/blob/Release_1.8/Documentation/Credits.md http://dayzmod.com
Included Custom Addons
- AutoGyro - by CSJ http://www.armaholic.com/page.php?id=2359
- Taxi by [GLT]Myke http://www.armaholic.com/page.php?id=12289
- SUV Colors by Python.au http://www.armaholic.com/page.php?id=17176
- R3F Realism by http://www.team-r3f.org/
- ASC EU Lights Mod http://www.armaholic.com/page.php?id=12076
- MAP Editorupgrade (EU) http://www.armaholic.com/page.php?id=6194
- st_movement by ShackTac https://dev-heaven.net/projects/shacktac/files
- st_bunnyhop by ShackTac https://dev-heaven.net/projects/shacktac/files
- Jetski Yanahui by Kol9yN, Zakat, Gerasimow9, YuraPetrov, zGuba, A.Karagod, IceBreakr and Sahbazz http://www.armaholic.com/page.php?id=13053
- gdtmod_grass 1.00 by HeinBloed http://www.gdt-server.net/
Developers
- [VB]AWOL - Lead Developer - http://www.twitch.tv/vbawol
- Axle - Beta Tester, Lead Trader City Designer, Ideas. - http://www.twitch.tv/axles
- Paul Tomany - Models, Textures, Ideas, Beta Tester. - ptomany@gmail.com
- Axeman - Developer - Light system - axeman@thefreezer.co.uk
- Harlan (dayz10k) - Developer - https://github.com/dayz10k
- Skaronator - Developer - Help with many things https://github.com/Skaronator
- [VB]GREEN - Graphics, Beta Tester, Ideas. http://www.twitch.tv/vbgreen
- Zabn - Locked gear on vehicles when locked, reworked loot position code to support small items. https://github.com/Zabn
Contributors
- facoptere - Extra Security - https://github.com/facoptere
- Torndeco - Fixes - https://github.com/Torndeco
- Armifer - Humanity changes. - https://github.com/Armifer
- AVendettaForYou - Trader City Tavi - https://github.com/AVendettaForYou
- Skaronator, krazey - German localization - https://github.com/Skaronator https://github.com/krazey
- VeryBigBro - Russian localization - https://github.com/VeryBigBro
- th4z - French localization - https://github.com/th4z
- JoSchaap - Dutch localization and some typo's - https://github.com/JoSchaap
- Maca134 - Improved Trader Menus, Death Message menu, Experimental hive 999 support - maca134@gmail.com
- aeinstein - Crafting now supports all can types. - https://github.com/aeinstein
- vos / Axe Cop - Area Maintenance and ideas - https://github.com/vos
Special thanks
- BIS for a incredible and versatile game and engine. http://www.bistudio.com/
- Rocket - DAYZ! http://dayzmod.com | http://dayzgame.com
- DayZ Community Developers - https://github.com/DayZMod
- ziellos2k - Tag Friendly code. https://github.com/ziellos2k
- Dayz Hive DLL - https://github.com/rajkosto/hive
- Munchiefest - Beta Tester, Wiki Editor, Ideas - http://www.twitch.tv/munchiefest
- Chelsey - Beta Tester, New female textures.
- OrangeSherbet - Beta Tester - http://www.twitch.tv/orangesherbet
- QMGSaint - Beta Tester - http://www.twitch.tv/qmgsaint
- Twitch.tv Streamers - http://www.twitch.tv/directory/game/DayZ
- Thanks to all the other beta testers, you know who you are!
Languages
C++
50.6%
SQF
48.9%
PHP
0.3%
Batchfile
0.1%