mirror of
https://github.com/IT07/a3_vemf_reloaded.git
synced 2024-08-30 16:52:11 +00:00
improved overall code
This commit is contained in:
parent
142c438a20
commit
34e6c0c752
@ -13,71 +13,77 @@
|
||||
|
||||
_maxGlobalMissions = "maxGlobalMissions" call VEMFr_fnc_getSetting;
|
||||
if (_maxGlobalMissions > 0) then
|
||||
{
|
||||
_minNew = "minNew" call VEMFr_fnc_getSetting;
|
||||
if (_minNew > -1) then
|
||||
{
|
||||
_maxNew = "maxNew" call VEMFr_fnc_getSetting;
|
||||
if (_maxNew > 0) then
|
||||
{
|
||||
_missionList = "missionList" call VEMFr_fnc_getSetting;
|
||||
if (count _missionList > 0) then
|
||||
{
|
||||
[_maxGlobalMissions, _minNew, _maxNew, _missionList] spawn
|
||||
{
|
||||
_minNew = "minNew" call VEMFr_fnc_getSetting;
|
||||
if (_minNew > -1) then
|
||||
{
|
||||
_maxNew = "maxNew" call VEMFr_fnc_getSetting;
|
||||
if (_maxNew > 0) then
|
||||
{
|
||||
_maxGlobalMissions = _this select 0;
|
||||
_minNew = _this select 1;
|
||||
_maxNew = _this select 2;
|
||||
_missionList = _this select 3;
|
||||
_minFps = "minServerFPS" call VEMFr_fnc_getSetting;
|
||||
_minPlayers = "minPlayers" call VEMFr_fnc_getSetting;
|
||||
waitUntil { uiSleep 5; (if (([_minPlayers] call VEMFr_fnc_playerCount) AND (diag_fps > _minFps)) then { true } else { false }) };
|
||||
["missionTimer", 1, format["Enough players online (%1) and server FPS (%2) is above %3. Starting missionTimer...", count allPlayers, diag_fps, _minFps]] spawn VEMFr_fnc_log;
|
||||
|
||||
VEMFrMissionCount = 0;
|
||||
private ["_ignoreLimit"];
|
||||
_ignoreLimit = false;
|
||||
if (_maxGlobalMissions isEqualTo 0) then
|
||||
{
|
||||
_ignoreLimit = true;
|
||||
};
|
||||
|
||||
_sleep = {
|
||||
// Wait random amount
|
||||
uiSleep ((_minNew*60)+ floor random ((_maxNew*60)-(_minNew*60)));
|
||||
};
|
||||
call _sleep;
|
||||
while {true} do
|
||||
{
|
||||
// Pick A Mission if enough players online
|
||||
if ([_minPlayers] call VEMFr_fnc_playerCount) then
|
||||
{
|
||||
scopeName "pick";
|
||||
if (VEMFrMissionCount <= _maxGlobalMissions OR _ignoreLimit) then
|
||||
{
|
||||
_missionName = selectRandom _missionList;
|
||||
_mission = [_missionName] execVM format["exile_vemf_reloaded\missions\%1.sqf", _missionName];
|
||||
uiSleep 5;
|
||||
if (scriptDone _mission) then
|
||||
{
|
||||
// Mission sqf file finished executing within 5 seconds. Assume it did not meet requirements to spawn.
|
||||
breakOut "pick"; // break the current scope and redo the loop (a.k.a. pick a new mission and launch it right away instead of the failed one)
|
||||
} else
|
||||
{
|
||||
// Mission sqf file did not finish within 5 seconds. Assume it is running successfully.
|
||||
call _sleep;
|
||||
};
|
||||
};
|
||||
} else
|
||||
_missionList = "missionList" call VEMFr_fnc_getSetting;
|
||||
if (count _missionList > 0) then
|
||||
{
|
||||
uiSleep 60; // If no players online, check again in 60 seconds
|
||||
[_maxGlobalMissions, _minNew, _maxNew, _missionList] spawn
|
||||
{
|
||||
_maxGlobalMissions = _this select 0;
|
||||
_minNew = _this select 1;
|
||||
_maxNew = _this select 2;
|
||||
_missionList = _this select 3;
|
||||
_minFps = "minServerFPS" call VEMFr_fnc_getSetting;
|
||||
_minPlayers = "minPlayers" call VEMFr_fnc_getSetting;
|
||||
if isNil"VEMFrForceStart" then { VEMFrForceStart = false };
|
||||
waitUntil { if ([_minPlayers] call VEMFr_fnc_playerCount AND diag_fps > _minFps OR VEMFrForceStart) then { true } else { uiSleep 5; false } };
|
||||
if VEMFrForceStart then
|
||||
{
|
||||
["missionTimer", 1, format["VEMFr has been forced to start. Server FPS: %1", diag_fps]] spawn VEMFr_fnc_log;
|
||||
} else
|
||||
{
|
||||
["missionTimer", 1, format["Enough players online (%1) and server FPS (%2) is above %3. Starting missionTimer...", count allPlayers, diag_fps, _minFps]] spawn VEMFr_fnc_log;
|
||||
};
|
||||
VEMFrMissionCount = 0;
|
||||
private ["_ignoreLimit"];
|
||||
_ignoreLimit = false;
|
||||
if (_maxGlobalMissions isEqualTo 0) then
|
||||
{
|
||||
_ignoreLimit = true;
|
||||
};
|
||||
_sleep =
|
||||
{
|
||||
// Wait random amount
|
||||
uiSleep ((_minNew*60)+ floor random ((_maxNew*60)-(_minNew*60)));
|
||||
};
|
||||
call _sleep;
|
||||
while {true} do
|
||||
{
|
||||
// Pick A Mission if enough players online
|
||||
if ([_minPlayers] call VEMFr_fnc_playerCount) then
|
||||
{
|
||||
scopeName "pick";
|
||||
if (VEMFrMissionCount <= _maxGlobalMissions OR _ignoreLimit) then
|
||||
{
|
||||
_missionName = selectRandom _missionList;
|
||||
_mission = [_missionName] execVM format["exile_vemf_reloaded\missions\%1.sqf", _missionName];
|
||||
uiSleep 5;
|
||||
if (scriptDone _mission) then
|
||||
{
|
||||
// Mission sqf file finished executing within 5 seconds. Assume it did not meet requirements to spawn.
|
||||
breakOut "pick"; // break the current scope and redo the loop (a.k.a. pick a new mission and launch it right away instead of the failed one)
|
||||
} else
|
||||
{
|
||||
// Mission sqf file did not finish within 5 seconds. Assume it is running successfully.
|
||||
call _sleep;
|
||||
};
|
||||
};
|
||||
} else
|
||||
{
|
||||
uiSleep 60; // If no players online, check again in 60 seconds
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
} else
|
||||
{
|
||||
["missionTimer", 0, format["Invalid maximum global missions number! it is: %1", _maxGlobalMissions]] spawn VEMFr_fnc_log;
|
||||
};
|
||||
};
|
||||
} else
|
||||
{
|
||||
["missionTimer", 0, format["Invalid maximum global missions number! it is: %1", _maxGlobalMissions]] spawn VEMFr_fnc_log;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user