From d60854c586a53877dc0cf791a31103e1ff6c9d3d Mon Sep 17 00:00:00 2001 From: worldwidesorrow Date: Mon, 31 May 2021 13:09:51 -0500 Subject: [PATCH] Update sched_event.sqf Optimizations. --- .../system/scheduler/sched_event.sqf | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/SQF/dayz_server/system/scheduler/sched_event.sqf b/SQF/dayz_server/system/scheduler/sched_event.sqf index 5b50dffdb..e8b87272e 100644 --- a/SQF/dayz_server/system/scheduler/sched_event.sqf +++ b/SQF/dayz_server/system/scheduler/sched_event.sqf @@ -4,15 +4,11 @@ */ epoch_eventIsAny = { - private ["_boolReturn","_event","_date","_bool","_index"]; - _event = _this select 0; - _date = _this select 1; - - _boolReturn = false; - - _index = 0; + local _event = _this select 0; + local _date = _this select 1; + local _boolReturn = false; + local _index = 0; { - _bool = false; if (typeName _x == "STRING") then { _boolReturn = true; } else { @@ -21,50 +17,41 @@ epoch_eventIsAny = { if (!_boolReturn) exitWith {}; _index = _index + 1; } count _event; - _boolReturn }; sched_event_init = { - diag_log("EPOCH EVENTS INIT"); + diag_log formatText ["EPOCH EVENTS: %1 Events Scheduled",(count EpochEvents)]; "" }; sched_event = { - private ["_date","_key","_result","_outcome","_handle","_datestr","_lastTime"]; // Find current time from server - _lastTime = _this; - _key = "CHILD:307:"; - _result = _key call server_hiveReadWrite; - _outcome = _result select 0; - if(_outcome == "PASS") then { - _date = _result select 1; - _datestr = str(_date); + local _lastTime = _this; + local _key = "CHILD:307:"; + local _result = _key call server_hiveReadWrite; + local _outcome = _result select 0; + if (_outcome == "PASS") then { + local _date = _result select 1; + local _datestr = str(_date); if (_lastTime != _datestr) then { // internal timestamp ServerCurrentTime = _date; - - // Once a minute. _lastTime = _datestr; - - //diag_log ("EVENTS: Local Time is: " + _datestr); - if (count EpochEvents == 0) exitWith {}; { // Run event at server start when minutes are set to -1 if ((_x select 4) == -1) then { diag_log ("RUNNING EVENT: " + (_x select 5) + " on " + _datestr); - _handle = [] execVM "\z\addons\dayz_server\modules\" + (_x select 5) + ".sqf"; + local _handle = [] execVM "\z\addons\dayz_server\modules\" + (_x select 5) + ".sqf"; // Remove event from array so it doesn't run again. - _lastIndex = (count EpochEvents) - 1; - if (_lastIndex != _forEachIndex) then {EpochEvents set [_forEachIndex, EpochEvents select _lastIndex];}; - EpochEvents resize _lastIndex; + EpochEvents = [EpochEvents,_forEachIndex] call fnc_deleteAt; } else { if([[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4)],_date] call epoch_eventIsAny) then { diag_log ("RUNNING EVENT: " + (_x select 5) + " on " + _datestr); - _handle = [] execVM "\z\addons\dayz_server\modules\" + (_x select 5) + ".sqf"; + local _handle = [] execVM "\z\addons\dayz_server\modules\" + (_x select 5) + ".sqf"; }; }; } forEach EpochEvents;