a3_vemf_reloaded/exile_vemf_reloaded/sqf/missionTimer.sqf

70 lines
3.0 KiB
Plaintext
Raw Normal View History

2016-04-13 20:32:39 +00:00
/*
Author: IT07
Description:
Handles the start and timeout of missions
Params:
none
Returns:
nothing
*/
2016-05-09 13:30:27 +00:00
scopeName "outer";
2016-07-02 14:24:53 +00:00
_mgm = "maxGlobalMissions" call VEMFr_fnc_config;
["missionTimer", 1, format["Global mission-limit is set at: %1", _mgm]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
_minNew = "minNew" call VEMFr_fnc_config;
2016-05-09 13:30:27 +00:00
if (_minNew > -1) then
2016-05-06 11:09:26 +00:00
{
2016-07-02 14:24:53 +00:00
_maxNew = "maxNew" call VEMFr_fnc_config;
2016-05-09 13:30:27 +00:00
if (_maxNew > 0) then
2016-05-06 11:09:26 +00:00
{
2016-07-02 14:24:53 +00:00
_ml = "missionList" call VEMFr_fnc_config;
if (count _ml > 0) then
2016-04-13 20:32:39 +00:00
{
2016-07-02 14:24:53 +00:00
_minFps = "minServerFPS" call VEMFr_fnc_config;
_mnPlyrs = "minPlayers" call VEMFr_fnc_config;
2016-06-02 21:20:00 +00:00
if isNil "VEMFrForceStart" then { VEMFrForceStart = false };
2016-07-02 14:24:53 +00:00
waitUntil { if ((((count allPlayers) >= _mnPlyrs) AND (diag_fps > _minFps)) OR VEMFrForceStart) then { true } else { uiSleep 5; false } };
2016-05-09 13:30:27 +00:00
if VEMFrForceStart then
2016-05-06 11:09:26 +00:00
{
2016-05-10 12:18:49 +00:00
["missionTimer", 1, format["VEMFr has been forced to start. Server FPS: %1", diag_fps]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
2016-05-09 13:30:27 +00:00
} else
{
2016-05-10 12:18:49 +00:00
["missionTimer", 1, format["Enough players online (%1) and server FPS (%2) is above %3. Starting missionTimer...", count allPlayers, diag_fps, _minFps]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
2016-05-09 13:30:27 +00:00
};
2016-07-02 14:24:53 +00:00
VEMFrMissionCount = 0;
_im = false;
if (_mgm isEqualTo 0) then { _im = true };
_zz = { uiSleep ((_minNew*60)+ floor random ((_maxNew*60)-(_minNew*60))) };
call _zz;
while {true} do
{
// Pick A Mission if enough players online
if ((count allPlayers) >= _mnPlyrs) then
{
scopeName "pick";
if ((VEMFrMissionCount < _mgm) AND (VEMFrMissionCount >= 0) OR _im) then
{
_mssnNm = selectRandom _ml;
_h = [_mssnNm] execVM format["exile_vemf_reloaded\missions\%1.sqf", _mssnNm];
uiSleep 5;
if (scriptDone _h) then { breakOut "pick" } else { call _zz };
} else
{
if (VEMFrMissionCount < 0) then
{
["missionTimer", 0, format["VEMFrMissionCount (%1) is BELOW 0! Stopping missionTimer...", VEMFrMissionCount]] ExecVM "exile_vemf_reloaded\sqf\log.sqf";
breakOut "outer";
};
call _zz;
};
} else { uiSleep 60 };
};
};
};
};