diff --git a/exile_vemf_reloaded/functions/fn_REMOTEguard.sqf b/exile_vemf_reloaded/functions/fn_REMOTEguard.sqf deleted file mode 100644 index 19b03df..0000000 --- a/exile_vemf_reloaded/functions/fn_REMOTEguard.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/* - Author: IT07 - - Description: - this function makes sure that AI spawned by VEMF does NOT become local to the server. - On detection of a local group, it will reassign it to a client or Headless Client if enabled. - - Params: - none, this is a Standalone function - - Returns: - nothing -*/ - -[] spawn -{ - uiNamespace setVariable ["VEMFrHcLoad", []]; - uiNamespace setVariable ["vemfGroups", []]; - while {true} do - { - _groups = uiNamespace getVariable "vemfGroups"; - waitUntil { uiSleep 1; count _groups > 0 }; - { - if (local _x) then - { - if ((count units _x) < 1) then - { - deleteGroup _x; - }; - if (count (units _x) > 0) then - { - // Group still has units, check if there is anyone that can be the owner - [_x] call VEMFr_fnc_transferOwner; - }; - }; - } forEach _groups; - }; -}; diff --git a/exile_vemf_reloaded/functions/fn_missionTimer.sqf b/exile_vemf_reloaded/functions/fn_missionTimer.sqf deleted file mode 100644 index 803b534..0000000 --- a/exile_vemf_reloaded/functions/fn_missionTimer.sqf +++ /dev/null @@ -1,85 +0,0 @@ -/* - Author: IT07 - - Description: - Handles the start and timeout of missions - - Params: - none - - Returns: - nothing -*/ - -_minFPS = "minServerFPS" call VEMFr_fnc_getSetting; -if (_minFPS > -1) then -{ - _minPlayers = "minPlayers" call VEMFr_fnc_getSetting; - if (_minPlayers > -1) then - { - _maxGlobalMissions = "maxGlobalMissions" call VEMFr_fnc_getSetting; - if (_maxGlobalMissions > -2) 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 - { - waitUntil { uiSleep 5; (if (([_minPlayers] call VEMFr_fnc_playerCount) AND (diag_fps > _minFPS)) then { true } else { false }) }; - ["missionTimer", 1, format["Minimal player count of %1 reached! Starting timer...", _minPlayers]] spawn VEMFr_fnc_log; - - VEMFrMissionCount = 0; - private ["_ignoreLimit"]; - _ignoreLimit = false; - if (_maxGlobalMissions isEqualTo 0) then - { - _ignoreLimit = true; - }; - while {true} do - { - // Wait random amount - uiSleep ((_minNew*60)+ floor random ((_maxNew*60)-(_minNew*60))); - - // Pick A Mission if enough players online - if ([_minPlayers] call VEMFr_fnc_playerCount) then - { - if _ignoreLimit then - { - _missVar = selectRandom _missionList; - [] execVM format["exile_vemf_reloaded\missions\%1.sqf", _missVar]; - _lastMission = serverTime; - }; - if not _ignoreLimit then - { - if (VEMFrMissionCount <= _maxGlobalMissions) then - { - _missVar = selectRandom _missionList; - [] execVM format["exile_vemf_reloaded\missions\%1.sqf", _missVar]; - VEMFrMissionCount = VEMFrMissionCount +1; - _lastMission = serverTime; - }; - }; - }; - }; - }; - }; - }; - }; - if (_maxGlobalMissions < -1) then - { - ["missionTimer", 0, format["Invalid maximum global missions number! it is: %1", _maxGlobalMissions]] spawn VEMFr_fnc_log; - }; - }; - if (_minPlayers < 0) then - { - ["missionTimer", 0, format["Invalid minimum player setting of %1", _minPlayers]] spawn VEMFr_fnc_log; - }; -}; -if (_minFPS < 0) then -{ - ["missionTimer", 0, format["Invalid minimum server FPS setting of %1", _minFPS]] spawn VEMFr_fnc_log; -}; diff --git a/exile_vemf_reloaded/functions/fn_spawnAI.sqf b/exile_vemf_reloaded/functions/fn_spawnAI.sqf deleted file mode 100644 index 6b6430b..0000000 --- a/exile_vemf_reloaded/functions/fn_spawnAI.sqf +++ /dev/null @@ -1,235 +0,0 @@ -/* - Author: original by Vampire, completely rewritten by IT07 - - Description: - spawns AI using given _pos and unit/group count. - - Params: - _this select 0: POSITION - where to spawn the units around - _this select 1: SCALAR - how many groups to spawn - _this select 2: SCALAR - how many units to put in each group - _this select 3: SCALAR - AI mode - - Returns: - ARRAY of UNITS -*/ - -private // Make sure that the vars in this function do not interfere with vars in the calling script -[ - "_pos","_grpCount","_unitsPerGrp","_sldrClass","_groups","_settings","_hc","_skills","_newPos","_return","_waypoints","_wp","_cyc","_units", - "_accuracy","_aimShake","_aimSpeed","_stamina","_spotDist","_spotTime","_courage","_reloadSpd","_commanding","_general","_loadInv","_noHouses","_cal50sVehs","_mode" -]; - -_spawned = [[],[]]; -_pos = param [0, [], [[]]]; -if (count _pos isEqualTo 3) then -{ - _grpCount = param [1, 1, [0]]; - if (_grpCount > 0) then - { - _unitsPerGrp = param [2, 1, [0]]; - if (_unitsPerGrp > 0) then - { - _mode = param [3, -1, [0]]; - _sldrClass = "unitClass" call VEMFr_fnc_getSetting; - _groups = []; - _hc = "headLessClientSupport" call VEMFr_fnc_getSetting; - _aiDifficulty = [["aiSkill"],["difficulty"]] call VEMFr_fnc_getSetting param [0, "Veteran", [""]]; - _skills = [["aiSkill", _aiDifficulty],["accuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding","general"]] call VEMFr_fnc_getSetting; - _accuracy = _skills select 0; - _aimShake = _skills select 1; - _aimSpeed = _skills select 2; - _stamina = _skills select 3; - _spotDist = _skills select 4; - _spotTime = _skills select 5; - _courage = _skills select 6; - _reloadSpd = _skills select 7; - _commanding = _skills select 8; - _general = _skills select 9; - - _houses = nearestTerrainObjects [_pos, ["House"], 200]; // Find some houses to spawn in - _notTheseHouses = "housesBlackList" call VEMFr_fnc_getSetting; - _goodHouses = []; - { // Filter the houses that are too small for one group - if not(typeOf _x in _notTheseHouses) then - { - if ([_x, _unitsPerGrp] call BIS_fnc_isBuildingEnterable) then - { - _goodHouses pushBack _x; - }; - }; - } forEach _houses; - _goodHouses = _goodHouses call BIS_fnc_arrayShuffle; - _noHouses = false; - if (count _goodHouses < _grpCount) then - { - _noHouses = true; - }; - - _cal50s = [["DynamicLocationInvasion"],["cal50s"]] call VEMFr_fnc_getSetting param [0, 3, [0]]; - if (_cal50s > 0) then - { - _cal50sVehs = []; - }; - _units = []; // Define units array. the for loops below will fill it with units - for "_g" from 1 to _grpCount do // Spawn Groups near Position - { - if not _noHouses then - { - if (count _goodHouses < 1) then - { - _noHouses = true - }; - }; - private ["_unitSide","_grp","_unit"]; - _unitSide = getText (configFile >> "CfgVehicles" >> ("unitClass" call VEMFr_fnc_getSetting) >> "faction"); - switch _unitSide do - { - case "BLU_G_F": - { - _grp = createGroup WEST; - }; - case "CIV_F": - { - _grp = createGroup civilian; - }; - case "IND_F": - { - _grp = createGroup independent; - }; - case "IND_G_F": - { - _grp = createGroup resistance; - }; - case "OPF_F": - { - _grp = createGroup EAST; - }; - default - { - ["fn_spawnAI", 0, format["Unknown side %1", _unitSide]] spawn VEMFr_fnc_log; - }; - }; - if not isNil"_grp" then - { - if not _noHouses then - { - _grp enableAttack false; - }; - _grp setBehaviour "AWARE"; - _grp setCombatMode "RED"; - _grp allowFleeing 0; - private ["_house","_housePositions"]; - if not _noHouses then - { - _house = selectRandom _goodHouses; - _houseID = _goodHouses find _house; - _goodHouses deleteAt _houseID; - _housePositions = [_house] call BIS_fnc_buildingPositions; - }; - - _placed50 = false; - for "_u" from 1 to _unitsPerGrp do - { - private ["_spawnPos","_hmg"]; - if not _noHouses then - { - _spawnPos = selectRandom _housePositions; - if not _placed50 then - { - _placed50 = true; - if (_cal50s > 0) then - { - _hmg = createVehicle ["B_HMG_01_high_F", _spawnPos, [], 0, "CAN_COLLIDE"]; - _hmg setVehicleLock "LOCKEDPLAYER"; - (_spawned select 1) pushBack _hmg; - }; - }; - }; - if _noHouses then - { - _spawnPos = [_pos,20,250,1,0,200,0] call BIS_fnc_findSafePos; // Find Nearby Position - }; - - _unit = _grp createUnit [_sldrClass, _spawnPos, [], 0, "CAN_COLLIDE"]; // Create Unit There - if not _noHouses then - { - doStop _unit; - if (_cal50s > 0) then - { - if not isNil"_hmg" then - { - if not isNull _hmg then - { - _unit moveInGunner _hmg; - _hmg = nil; - _cal50s = _cal50s - 1; - }; - }; - }; - - _houseIndex = _housePositions find _spawnPos; - _housePositions deleteAt _houseIndex; - }; - - _unit addMPEventHandler ["mpkilled","if (isDedicated) then { [_this select 0, _this select 1] spawn VEMFr_fnc_aiKilled }"]; - (_spawned select 0) pushBack _unit; - // Set skills - _unit setSkill ["aimingAccuracy", _accuracy]; - _unit setSkill ["aimingShake", _aimShake]; - _unit setSkill ["aimingSpeed", _aimSpeed]; - _unit setSkill ["endurance", _stamina]; - _unit setSkill ["spotDistance", _spotDist]; - _unit setSkill ["spotTime", _spotTime]; - _unit setSkill ["courage", _courage]; - _unit setSkill ["reloadSpeed", _reloadSpd]; - _unit setSkill ["commanding", _commanding]; - _unit setSkill ["general", _general]; - _unit setRank "Private"; // Set rank - }; - _grp selectLeader _unit; // Leader Assignment - _groups pushBack _grp; // Push it into the _groups array - }; - }; - - _invLoaded = [_spawned select 0, "Invasion", _mode] call VEMFr_fnc_loadInv; // Load the AI's inventory - if isNil"_invLoaded" then - { - ["fn_spawnAI", 0, "failed to load AI's inventory..."] spawn VEMFr_fnc_log; - }; - - if (count _groups isEqualTo _grpCount) then - { - if not _noHouses then - { - { - [_x] spawn VEMFr_fnc_signAI; - } forEach _groups; - }; - if _noHouses then - { - _waypoints = - [ - [(_pos select 0), (_pos select 1)+50, 0], - [(_pos select 0)+50, (_pos select 1), 0], - [(_pos select 0), (_pos select 1)-50, 0], - [(_pos select 0)-50, (_pos select 1), 0] - ]; - { // Make them Patrol - for "_z" from 1 to (count _waypoints) do - { - _wp = _x addWaypoint [(_waypoints select (_z-1)), 10]; - _wp setWaypointType "SAD"; - _wp setWaypointCompletionRadius 20; - }; - _cyc = _x addWaypoint [_pos,10]; - _cyc setWaypointType "CYCLE"; - _cyc setWaypointCompletionRadius 20; - [_x] spawn VEMFr_fnc_signAI; - } forEach _groups; - }; - }; - }; - }; -}; -_spawned diff --git a/exile_vemf_reloaded/functions/fn_spawnStaticAI.sqf b/exile_vemf_reloaded/functions/fn_spawnStaticAI.sqf deleted file mode 100644 index 36a3c2e..0000000 --- a/exile_vemf_reloaded/functions/fn_spawnStaticAI.sqf +++ /dev/null @@ -1,28 +0,0 @@ -/* - Author: IT07 - - Description: - spawns AI at all given locations in config file - - Params: - none - - Returns: - nothing -*/ - -if ([["aiStatic"],["enabled"]] call VEMFr_fnc_getSetting isEqualTo 1) then -{ - ["spawnStaticAI", 3, "launching..."] spawn VEMFr_fnc_log; - _settings = [["aiStatic"],["positions","amount"]] call VEMFr_fnc_getSetting; - _positions = _settings select 0; - if (count _positions > 0) then - { - ["spawnStaticAI", 3, "spawning AI on positions..."] spawn VEMFr_fnc_log; - _amounts = _settings select 1; - { - _amount = _amounts select _foreachindex; - [_x, 2, _amount / 2, "aiMode" call VEMFr_fnc_getSetting] spawn VEMFr_fnc_spawnAI; - } forEach _positions; - }; -};