Allow Epoch Events to execute at startup

Also changed restart function to shutdown as soon as no players are left
and server locked
This commit is contained in:
vbawol 2016-05-01 14:21:40 -05:00
parent 0e21b77f5d
commit 83a53a5f5b

View File

@ -9,10 +9,10 @@ item4[] = {"Simulate_Vehicle",4,218,750.000000,-300.000000,850.000000,-250.00000
item5[] = {"CMD_queue",4,218,450.000000,-450.000000,550.000000,-400.000000,10.000000,"CMD queue"}; item5[] = {"CMD_queue",4,218,450.000000,-450.000000,550.000000,-400.000000,10.000000,"CMD queue"};
item6[] = {"Save_Players",4,218,450.000000,-375.000000,550.000000,-325.000000,3.000000,"Save" \n "Players"}; item6[] = {"Save_Players",4,218,450.000000,-375.000000,550.000000,-325.000000,3.000000,"Save" \n "Players"};
item7[] = {"Cleanup",4,218,750.000000,-375.000000,850.000000,-325.000000,8.000000,"Cleanup"}; item7[] = {"Cleanup",4,218,750.000000,-375.000000,850.000000,-325.000000,8.000000,"Cleanup"};
item8[] = {"Events",4,218,450.000000,-225.000000,550.000000,-175.000000,0.000000,"Events"}; item8[] = {"Events",4,4314,450.000000,-225.000000,550.000000,-175.000000,0.000000,"Events"};
item9[] = {"Save_Vehicles",4,218,450.000000,-300.000000,550.000000,-250.000000,4.000000,"Save" \n "Vehicles"}; item9[] = {"Save_Vehicles",4,218,450.000000,-300.000000,550.000000,-250.000000,4.000000,"Save" \n "Vehicles"};
item10[] = {"Cleanup_Handler",4,218,750.000000,-450.000000,850.000000,-400.000000,8.000000,"Cleanup" \n "Handler"}; item10[] = {"Cleanup_Handler",4,218,750.000000,-450.000000,850.000000,-400.000000,8.000000,"Cleanup" \n "Handler"};
item11[] = {"Server_FPS",4,4314,600.000000,-225.000000,700.000000,-175.000000,0.000000,"Server FPS"}; item11[] = {"Server_FPS",4,218,600.000000,-225.000000,700.000000,-175.000000,0.000000,"Server FPS"};
link0[] = {0,1}; link0[] = {0,1};
link1[] = {1,2}; link1[] = {1,2};
link2[] = {2,3}; link2[] = {2,3};
@ -33,8 +33,8 @@ link16[] = {8,2};
link17[] = {9,2}; link17[] = {9,2};
link18[] = {10,2}; link18[] = {10,2};
link19[] = {11,2}; link19[] = {11,2};
globals[] = {25.000000,1,0,0,0,640,480,1,3,6316128,1,415.627258,1020.872498,-143.100464,-688.331299,948,880,1}; globals[] = {25.000000,1,0,0,0,640,480,1,3,6316128,1,415.627258,1020.872498,-120.027557,-522.247498,677,880,1};
window[] = {2,-1,-1,-1,-1,786,-1654,-362,26,3,966}; window[] = {2,-1,-1,-1,-1,864,104,1396,104,3,695};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@ -49,7 +49,7 @@ class FSM
"" \n "" \n
"_serverSettingsConfig = configFile >> ""CfgEpochServer"";" \n "_serverSettingsConfig = configFile >> ""CfgEpochServer"";" \n
"_ahInitAuthCfg = [_serverSettingsConfig, ""antihack_ahInitAuthCfg"", [0,180]] call EPOCH_fnc_returnConfigEntry;" \n "_ahInitAuthCfg = [_serverSettingsConfig, ""antihack_ahInitAuthCfg"", [0,180]] call EPOCH_fnc_returnConfigEntry;" \n
"_events = [_serverSettingsConfig, ""events"", [[3600, ""CarnivalSpawner""], [2400, ""EarthQuake""], [1800, ""ChangeWeather""], [1200, ""ContainerSpawner""], [300, ""PlantSpawner""]]] call EPOCH_fnc_returnConfigEntry;" \n "_events = [_serverSettingsConfig, ""events"", []] call EPOCH_fnc_returnConfigEntry;" \n
"_simulationHandler = [_serverSettingsConfig, ""simulationHandler"", false] call EPOCH_fnc_returnConfigEntry;" \n "_simulationHandler = [_serverSettingsConfig, ""simulationHandler"", false] call EPOCH_fnc_returnConfigEntry;" \n
"" \n "" \n
"_initAhInitBanOrLog = _ahInitAuthCfg select 0;" \n "_initAhInitBanOrLog = _ahInitAuthCfg select 0;" \n
@ -382,18 +382,24 @@ class FSM
to="Process"; to="Process";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _pvehTime) > 20)"/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _pvehTime) > 20)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/"_pvehTime = diag_tickTime;" \n action=/*%FSM<ACTION""">*/"// Epoch Events" \n
"_pvehTime = diag_tickTime;" \n
"{" \n "{" \n
" _x params [""_time"", ""_scriptName"", [""_runAtStart"",false]];" \n
" _eventKey = format[""EPOCH_EVENT_%1"", _forEachIndex];" \n " _eventKey = format[""EPOCH_EVENT_%1"", _forEachIndex];" \n
" _lastTime = missionNamespace getVariable _eventKey;" \n " _lastTime = missionNamespace getVariable _eventKey;" \n
" if (isNil ""_lastTime"") then {" \n " if (isNil ""_lastTime"") then {" \n
" missionNamespace setVariable[_eventKey, diag_tickTime];" \n " _startTime = diag_tickTime;" \n
" _lastTime = diag_tickTime;" \n " if (_runAtStart) then {" \n
" _startTime = diag_tickTime - _time;" \n
" };" \n
" missionNamespace setVariable[_eventKey, _startTime];" \n
" _lastTime = _startTime;" \n
" };" \n " };" \n
" if ((diag_tickTime - _lastTime) >= (_x select 0)) then {" \n " if ((diag_tickTime - _lastTime) >= _time) then {" \n
" missionNamespace setVariable[_eventKey, diag_tickTime];" \n " missionNamespace setVariable[_eventKey, diag_tickTime];" \n
" _handle = [] execVM format[""\a3_epoch_server_settings\EpochEvents\%1.sqf"",_x select 1];" \n " _handle = [] execVM format[""\a3_epoch_server_settings\EpochEvents\%1.sqf"",_scriptName];" \n
" diag_log format[""DEBUG: _event %1"", _x select 1];" \n " diag_log format[""DEBUG: _event %1"", _scriptName];" \n
" };" \n " };" \n
"} forEach _events;" \n "} forEach _events;" \n
"" \n "" \n
@ -404,20 +410,22 @@ class FSM
" diag_log ""server shutdown: locked"";" \n " diag_log ""server shutdown: locked"";" \n
" _serverLocked = true;" \n " _serverLocked = true;" \n
" [""lock""] call EPOCH_serverCommand;" \n " [""lock""] call EPOCH_serverCommand;" \n
" } else {" \n
" if (allPlayers isEqualTo []) then {" \n
" [""shutdown""] call EPOCH_serverCommand;" \n
" diag_log ""server shutdown: now"";" \n
" };" \n
" };" \n " };" \n
" " \n
" _restartIn = round((_forceRestartTime-diag_tickTime)/60);" \n " _restartIn = round((_forceRestartTime-diag_tickTime)/60);" \n
"" \n
" if (_prevRestartIn != _restartIn) then {" \n " if (_prevRestartIn != _restartIn) then {" \n
" _prevRestartIn = _restartIn;" \n " _prevRestartIn = _restartIn;" \n
" if (_restartIn > 1) then {" \n " if (_restartIn > 1) then {" \n
" [""message"", format[""Server restart in %1 minutes"",_restartIn]] call EPOCH_serverCommand;" \n " [""message"", format[""Server restart in %1 minutes"",_restartIn]] call EPOCH_serverCommand;" \n
" } else {" \n " } else {" \n
" [""message"", format[""Server restart in %1 minute"",1]] call EPOCH_serverCommand;" \n " [""message"", format[""Server restart in %1 minute"",1]] call EPOCH_serverCommand;" \n
" };" \n " };" \n
" };" \n " };" \n
" };" \n " };" \n
"" \n
" // kick all remaining players before shutdown to force player save" \n " // kick all remaining players before shutdown to force player save" \n
" if (diag_tickTime >= _forceRestartTime) then {" \n " if (diag_tickTime >= _forceRestartTime) then {" \n
" if (_serverRestarting) then {" \n " if (_serverRestarting) then {" \n
@ -425,15 +433,14 @@ class FSM
" diag_log ""server shutdown: now"";" \n " diag_log ""server shutdown: now"";" \n
" } else {" \n " } else {" \n
" {" \n " {" \n
" if (isPlayer _x) then {" \n " [""kick"", _x , ""Server Restarting""] call EPOCH_serverCommand;" \n
" [""kick"", _x , ""Server Restarting""] call EPOCH_serverCommand;" \n " } forEach allPlayers;" \n
" };" \n
" } forEach playableUnits;" \n
" diag_log format [""server shutdown: kicking players %1"",playableUnits];" \n
" _serverRestarting = true;" \n " _serverRestarting = true;" \n
" };" \n " };" \n
" };" \n " };" \n
"};"/*%FSM</ACTION""">*/; "};" \n
"" \n
""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
}; };