From 747ed55d2e8c59771cf259f5a698dd358079fdd4 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 18 Nov 2018 14:29:07 -0500 Subject: [PATCH 01/23] See below Fixed some issues with waypoint monitoring. Deleted unused code. --- .../Functions/GMS_fnc_GroupsOnAISide.sqf | 1 - .../Functions/GMS_fnc_addMoneyToObject.sqf | 2 +- .../Functions/GMS_fnc_countAliveAI.sqf | 2 +- .../Functions/GMS_fnc_deleteMarker.sqf | 4 +- .../Functions/GMS_fnc_emptyObject.sqf | 10 +- .../GMS_fnc_findPositionsAlongARadius.sqf | 4 +- .../Functions/GMS_fnc_findSafePosn.sqf | 29 - .../Compiles/Functions/GMS_fnc_mainThread.sqf | 9 +- .../GMS_fnc_markerSetAliveAICount.sqf | 3 +- .../GMS_fnc_missionCompleteMarker.sqf | 2 +- .../Functions/GMS_fnc_nearestPlayers.sqf | 13 + .../Functions/GMS_fnc_spawnMarker.sqf | 4 +- .../GMS_fnc_spawnMissionEmplacedRelative.sqf | 12 +- .../GMS_fnc_spawnMissionLandscapeRelative.sqf | 29 +- .../GMS_fnc_spawnMissionLootBoxesRelative.sqf | 38 +- .../Functions/GMS_fnc_spawnSingleObject.sqf | 25 +- .../Groups/GMS_fnc_changeToMoveWaypoint.sqf | 2 +- .../Groups/GMS_fnc_cleanEmptyGroups.sqf | 3 - .../Groups/GMS_fnc_create_AI_Group.sqf | 5 +- .../Groups/GMS_fnc_emplacedWeaponWaypoint.sqf | 3 +- .../Groups/GMS_fnc_missionGroupMonitor.sqf | 85 +- .../Groups/GMS_fnc_setupWaypoints.sqf | 4 +- .../Compiles/Groups/GMS_fnc_spawnGroup.sqf | 7 +- .../GMS_fnc_garrisonBuilding_ATLsystem.sqf | 6 +- .../GMS_fnc_garrisonBuilding_relPosSystem.sqf | 6 +- .../Missions/GMS_fnc_loadMissionCrate.sqf | 8 + .../Missions/GMS_fnc_missionSpawner.sqf | 6 +- .../GMS_fnc_spawnMissionVehiclePatrols.sqf | 9 +- .../Missions/GMS_fnc_updateMissionQue.sqf | 6 +- .../Compiles/Units/GMS_fnc_spawnParaUnits.sqf | 2 +- .../Vehicles/GMS_fnc_spawnMissionHeli.sqf | 9 +- .../Vehicles/GMS_fnc_spawnVehiclePatrol.sqf | 2 +- .../custom_server/Compiles/blck_functions.sqf | 19 +- .../custom_server/Compiles/blck_variables.sqf | 25 +- .../Configs/armed_vics_notes.txt | 91 ++ .../custom_server/Configs/blck_configs.sqf | 32 +- .../Configs/blck_configs_epoch.sqf | 9 +- .../Configs/blck_configs_epoch_mil.sqf | 4 +- .../Configs/blck_configs_exile.sqf | 2 +- .../blck_configs_exile_mil - Namalks v146.sqf | 1170 +++++++++++++++++ .../Configs/blck_configs_exile_mil.sqf | 6 +- .../Configs/blck_configs_mil.sqf | 10 +- .../Configs/blck_custom_config.sqf | 161 ++- .../custom_server/Configs/blck_defines.hpp | 4 +- .../custom_server/init/blck_defines.hpp | 37 + .../custom_server/init/blck_init_HC.sqf | 4 - .../custom_server/init/blck_init_server.sqf | 20 +- @GMS/addons/custom_server/init/build.sqf | 4 +- .../custom_server/init/testCrateLoading.sqf | 18 + 49 files changed, 1673 insertions(+), 293 deletions(-) create mode 100644 @GMS/addons/custom_server/Configs/armed_vics_notes.txt create mode 100644 @GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf create mode 100644 @GMS/addons/custom_server/init/blck_defines.hpp create mode 100644 @GMS/addons/custom_server/init/testCrateLoading.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_GroupsOnAISide.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_GroupsOnAISide.sqf index a76d91d..d67d4b0 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_GroupsOnAISide.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_GroupsOnAISide.sqf @@ -20,5 +20,4 @@ private _Groups_AI_Side = 0; }forEach allGroups; //diag_log format["_fnc_groupsOnAISide:: -- >> allGroups = %1 | _Groups_AI_Side = %2",allGroups, _Groups_AI_Side]; -// Return the number of groups used. _Groups_AI_Side diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf index 81941ad..1520261 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf @@ -13,7 +13,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_obj","_difficulty"]; private _mod = [] call blck_fnc_getModType; -//diag_log format["_fnc_addMoneyToObject: _this = %1",_this]; + #ifdef blck_debugMode { diag_log format["_fnc_addMoneyToOject: _this select %1 = %2",_foreachindex, _this select _foreachindex]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_countAliveAI.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_countAliveAI.sqf index 828532c..36c9e68 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_countAliveAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_countAliveAI.sqf @@ -21,7 +21,7 @@ switch (_returnMode) do case 0:{_return = (_alive / _total)}; case 1:{_return = [_alive,_total]}; }; -//diag_log format["_fnc_countAliveAI: _alive = %1 | _total = %2 | _return = %3",_alive,_total,_return]; + _return diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf index c6bf181..95ca522 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf @@ -9,10 +9,10 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; private["_markerName"]; _markerName = _this select 0; deleteMarker _markerName; _markerName = "label" + _markerName; deleteMarker _markerName; -//diag_log format["deleteMarker complete script for _this = %1",_this]; + diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObject.sqf index bd76001..0c29335 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObject.sqf @@ -11,8 +11,8 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - params["_veh"]; - clearWeaponCargoGlobal _veh; - clearMagazineCargoGlobal _veh; - clearBackpackCargoGlobal _veh; - clearItemCargoGlobal _veh; +params["_veh"]; +clearWeaponCargoGlobal _veh; +clearMagazineCargoGlobal _veh; +clearBackpackCargoGlobal _veh; +clearItemCargoGlobal _veh; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findPositionsAlongARadius.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findPositionsAlongARadius.sqf index f7cc272..8981a69 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findPositionsAlongARadius.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findPositionsAlongARadius.sqf @@ -24,13 +24,11 @@ _Arc = 360/_num; for "_i" from 1 to _num do { _currentDir = _currentDir + _Arc; - //diag_log format["spawnEmplaced: _currentDir is %1 for cycle %2",_currentDir,_i]; _dist = round(_minDistance + (random(_maxDistance - _minDistance))); _newpos = _center getPos [_dist, _currentDir]; - //diag_log format["findPositionAlongRadius:: distance of pos %1 from center is %2",_newpos, _newpos distance _center]; _locs pushback _newpos; }; -//diag_log format["_fnc_findPositionsAlongARadius:: _locations = %1",_locations]; + _locs diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 191865a..7d75384 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -132,33 +132,4 @@ if ((count _coords) > 2) then }; _coords; -/* -while {_findNew} do { - - - - // test for water nearby - _dist = 100; - for [{_i=0}, {_i<360}, {_i=_i+20}] do - { - _xpos = (_coords select 0) + sin (_i) * _dist; - _ypos = (_coords select 1) + cos (_i) * _dist; - _newPos = [_xpos,_ypos,0]; - if (surfaceIsWater _newPos) then - { - _findNew = true; - _i = 361; - }; - }; - - if (toLower(worldName) isEqualTo "taviana") then - { - _tavTest = createVehicle ["SmokeShell",_coords,[], 0, "CAN_COLLIDE"]; - _tavHeight = (getPosASL _tavTest) select 2; - deleteVehicle _tavTest; - if (_tavHeight > 100) then {_FindNew = true;}; - }; - _tries = _tries + 1; -}; - diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 3f54f6d..a3e2fcc 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -12,10 +12,6 @@ //diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime]; -#ifdef GRGserver -diag_log "running GRGserver version of _fnc_mainThread"; -#endif - private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"]; _timer1sec = diag_tickTime; _timer5sec = diag_tickTime; @@ -30,9 +26,6 @@ while {true} do if (diag_tickTime > _timer1sec) then { [] call blck_fnc_vehicleMonitor; - #ifdef GRGserver - [] call blck_fnc_broadcastServerFPS; - #endif _timer1sec = diag_tickTime + 1; //diag_log format["[blckeagls] _fnc_mainThread 1 Second Timer Handled | Timstamp %1",diag_tickTime]; }; @@ -41,7 +34,6 @@ while {true} do _timer5sec = diag_tickTime + 5; [] call blck_fnc_missionGroupMonitor; [] call blck_fnc_sm_missionPatrolMonitor; - //diag_log format["[blckeagls] _fnc_mainThread 5 Second Timer Handled | Timstamp %1",diag_tickTime]; }; if (diag_tickTime > _timer20sec) then @@ -76,6 +68,7 @@ while {true} do { [] call blck_fnc_timeAcceleration; }; + #ifdef blck_debugMode //diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts]; diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_markerSetAliveAICount.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_markerSetAliveAICount.sqf index 5204919..75d9ae8 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_markerSetAliveAICount.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_markerSetAliveAICount.sqf @@ -9,13 +9,12 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_mArray","_count"]; _mArray params["_missionType","_markerPos","_markerLabel","_markerLabelType","_markerColor","_markerType"]; -//diag_log "++++++++++++++--- marker label arrow detected"; _name = "ai_count" + _name; _textPos = [(_pos select 0) + (count toArray (_text) * 12), (_pos select 1) + (_size select 0), 0]; _MainMarker = createMarker [_name, _textPos]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_missionCompleteMarker.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_missionCompleteMarker.sqf index f572e9b..bc67f31 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_missionCompleteMarker.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_missionCompleteMarker.sqf @@ -9,7 +9,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; private["_location","_MainMarker","_name"]; //diag_log format["blck_fnc_missionCompleteMarker:: _this = %1",_this]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_nearestPlayers.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_nearestPlayers.sqf index 363fa50..6ec7509 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_nearestPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_nearestPlayers.sqf @@ -1,4 +1,17 @@ +/* + for ghostridergaming + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; //diag_log format["_fnc_nearestPlayers: _this = %1",_this]; params["_coords","_range"]; private["_return","_playerClassNames","_epochClasses","_exileClasses"]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMarker.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMarker.sqf index 0bc98cc..b6dc6a8 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMarker.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMarker.sqf @@ -14,9 +14,7 @@ private["_blck_fn_configureRoundMarker"]; _blck_fn_configureRoundMarker = { //diag_log format["_blck_fn_configureRoundMarker: _this = %1",_this]; - // [[""OrangeMarker1"",[11736.1,9272.76,0],""Soylent Green"",""center"",""ColorPink"",[""ellipse"",[250,250],""Cross""]]]" private["_name","_pos","_color","_size","_MainMarker","_arrowMarker","_labelMarker","_labelType"]; - // [_missionType,_markerPos,_markerColor,_markerLabel, _mSize,_markerLabelType,_mShape,_mBrush] params["_name","_pos","_color","_text","_size","_labelType","_mShape","_mBrush"]; if ((_pos distance [0,0,0]) < 10) exitWith {}; @@ -74,7 +72,7 @@ _blck_fn_configureIconMarker = { params["_mArray"]; private["_marker"]; _mArray params["_missionMarkerName","_markerPos","_markerLabel","_markerLabelType","_markerColor","_markerTypeInfo"]; -// add defaults to provide backward compatibility for older missions that do not specify a brush. + _markerTypeInfo params["_mShape",["_mSize",[0,0]],["_mBrush","GRID"]]; //diag_log format["spawnMarker.sqf:: -- >> _missionMarkerName %1 | _markerPos %2 | _markerLabel %3 | _markerLabelType %4 | _markerColor %5 | _markerTypeInfo %6 | _mShape %7",_missionMarkerName,_markerPos,_markerLabel,_markerLabelType,_markerColor,_markerTypeInfo,_mShape]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf index 009e76b..d1f3ef8 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf @@ -1,4 +1,14 @@ +/* + By Ghostrider [GRG] + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_center","_emplaced","_garrisonGroup"]; private["_obj","_objects"]; @@ -13,8 +23,6 @@ _unit = [_group] call blck_fnc_spawnUnit; _unit moveInGunner _unit; _wep addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}]; - //_empGroup setVariable["groupVehicle",_wep]; - //_wep setVariable["vehicleGroup",_empGroup]; _wep setVariable["GRG_vehType","emplaced"]; [_wep,false] call blck_fnc_configureMissionVehicle; }forEach _emplaced; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLandscapeRelative.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLandscapeRelative.sqf index 93fafbc..7e43012 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLandscapeRelative.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLandscapeRelative.sqf @@ -1,12 +1,21 @@ +/* + By Ghostrider [GRG] + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - params["_center","_landscape"]; - // diag_log format["fnc_spawnMissionLandscapeRelative: _center = %1",_center]; - private["_obj","_objects"]; - _objects = []; - { - _x params["_objClassName","_objRelPos","_objDir"]; - _obj = [_objClassName, _objRelPos vectorAdd _center, _objDir,enableSimulationForObject,enableDamageForObject,enableRopesforObject,"CAN_COLLIDE"] call blck_fnc_spawnSingleObject; - _objects pushBack _obj; - }forEach _landscape; - _landscape \ No newline at end of file + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +params["_center","_landscape"]; +// diag_log format["fnc_spawnMissionLandscapeRelative: _center = %1",_center]; +private["_obj","_objects"]; +_objects = []; +{ + _x params["_objClassName","_objRelPos","_objDir"]; + _obj = [_objClassName, _objRelPos vectorAdd _center, _objDir,enableSimulationForObject,enableDamageForObject,enableRopesforObject,"CAN_COLLIDE"] call blck_fnc_spawnSingleObject; + _objects pushBack _obj; +}forEach _landscape; +_landscape \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLootBoxesRelative.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLootBoxesRelative.sqf index 7ce5abe..c69ef52 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLootBoxesRelative.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionLootBoxesRelative.sqf @@ -1,17 +1,27 @@ +/* + By Ghostrider [GRG] + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - params["_center","_crates"]; - private["_crate","_cratesSpawned"]; + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +params["_center","_crates"]; +private["_crate","_cratesSpawned"]; - _cratesSpawned = []; - { - _x params["_objClassName","_objRelPos","_crateLoot","_lootCounts","_objDir"]; - _crate = [_objClassName, _objRelPos vectorAdd _center, _objDir] call blck_fnc_spawn_lootCrate; - //_crate setPosATL _objRelPos vectorAdd _center; - _cratesSpawned pushBack _crate; - //_crate setVariable ["LAST_CHECK", 100000]; - _crate allowDamage false; - _crate enableRopeAttach false; - _crate - }forEach _crates; - _cratesSpawned \ No newline at end of file +_cratesSpawned = []; +{ + _x params["_objClassName","_objRelPos","_crateLoot","_lootCounts","_objDir"]; + _crate = [_objClassName, _objRelPos vectorAdd _center, _objDir] call blck_fnc_spawn_lootCrate; + //_crate setPosATL _objRelPos vectorAdd _center; + _cratesSpawned pushBack _crate; + //_crate setVariable ["LAST_CHECK", 100000]; + _crate allowDamage false; + _crate enableRopeAttach false; + _crate +}forEach _crates; +_cratesSpawned \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnSingleObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnSingleObject.sqf index 1099947..201ef11 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnSingleObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnSingleObject.sqf @@ -1,10 +1,19 @@ +/* + By Ghostrider [GRG] + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - params["_objClassName","_objPosn",["_objDir",0],["_enableSimulation",true],["_enableDamage",true],["_enableRopes",true],["_mode","NONE"]]; - //diag_log format["_fnc_spawnSingleObject: _objClassName = %1 | _objPosn = %2 | _objPosn = %3",_objClassName,_objPosn,_objDir]; - private _obj = createVehicle[_objClassName,_objPosn,[],0,_mode]; - _obj setDir _objDir; - _obj allowDamage _enableDamage; - _obj enableDynamicSimulation _enableSimulation; - //diag_log format["created object %1 at %2 heading %3",_obj,getPosATL _obj, getDir _obj]; - _obj \ No newline at end of file +params["_objClassName","_objPosn",["_objDir",0],["_enableSimulation",true],["_enableDamage",true],["_enableRopes",true],["_mode","NONE"]]; +//diag_log format["_fnc_spawnSingleObject: _objClassName = %1 | _objPosn = %2 | _objPosn = %3",_objClassName,_objPosn,_objDir]; +private _obj = createVehicle[_objClassName,_objPosn,[],0,_mode]; +_obj setDir _objDir; +_obj allowDamage _enableDamage; +_obj enableDynamicSimulation _enableSimulation; +//diag_log format["created object %1 at %2 heading %3",_obj,getPosATL _obj, getDir _obj]; +_obj \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf index 5621221..b46f2df 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf @@ -14,7 +14,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #ifdef blck_debugMode -//diag_log "_fnc_changeToMoveWaypoint: blck_debugMode enabled"; +diag_log "_fnc_changeToMoveWaypoint: blck_debugMode enabled"; #endif private["_group","_wp","_wpPos","_dis","_arc","_dir","_newPos","_marker","_center","_minDis","_maxDis"]; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf index 13702e1..c2691c6 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf @@ -1,8 +1,5 @@ /* - call as [] call blck_fnc_cleanEmptyGroups; - Deletes any empty groups and thereby prevents errors resulting from createGroup returning nullGroup. By Ghostrider [GRG] - 3/18/17 -------------------------- License -------------------------- diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf index ac7b3d4..b2d35da 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf @@ -1,8 +1,6 @@ /* By Ghostrider [GRG] Copyright 2016 - - -------------------------- License -------------------------- @@ -15,7 +13,6 @@ private["_groupSpawned"]; _groupSpawned = createGroup [blck_AI_Side, true]; -//_groupSpawned setVariable["groupVehicle",objNull]; if (blck_simulationManager == blck_useDynamicSimulationManagement) then { _groupSpawned enableDynamicSimulation true; @@ -32,4 +29,4 @@ _groupSpawned setVariable ["blck_group",true,true]; if (blck_debugLevel >= 2) then {diag_log format["_fnc_create_AI_Group: _groupSpawned = %1",_groupSpawned]}; #endif -_groupSpawned \ No newline at end of file +_groupSpawned diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_emplacedWeaponWaypoint.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_emplacedWeaponWaypoint.sqf index 2123ad7..882748a 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_emplacedWeaponWaypoint.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_emplacedWeaponWaypoint.sqf @@ -1,9 +1,8 @@ -// Sets the WP type for WP for the specified group and updates other atributes accordingly. + /* for ghostridergaming By Ghostrider [GRG] Copyright 2016 - Last modified 4/23/17 -------------------------- License diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf index d5f7ecc..35d171a 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf @@ -17,9 +17,9 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_missionGroupMonitor (4/29:4:09 PM)::-->> running function at diag_tickTime = %1 with blck_fnc_missionGroupMonitor = %2",diag_tickTime,blck_monitoredMissionAIGroups]; #ifdef blck_debugMode - //diag_log format["_fnc_missionGroupMonitor:: blck_debugMode defined"]; +diag_log format["_fnc_missionGroupMonitor (4/29:4:09 PM)::-->> running function at diag_tickTime = %1 with blck_fnc_missionGroupMonitor = %2",diag_tickTime,blck_monitoredMissionAIGroups]; +//diag_log format["_fnc_missionGroupMonitor:: blck_debugMode defined"]; #endif _fn_allPlayers = { private ["_players"]; @@ -31,29 +31,10 @@ _fn_allPlayers = { _players }; -_fn_aliveGroupUnits = { - private["_grp","_aliveUnits"]; - _grp = _this select 0; - _aliveUnits = []; - { - if ( alive _x) then {_aliveUnits pushback _x}; - } forEach (units _grp); - _aliveUnits -}; +//////////////// +// local functions +//////////////// -_fn_inCombat = { - private["_grp","_targets","_players","_aliveUnits"]; - _grp = _this select 0; - _players = [] call _fn_allPlayers; - _aliveUnits = [_grp] call _fn_aliveGroupUnits; - _inCombat = false; - { - _targets = _x findNearestEnemy (position _x); - if !(isNull _targets) exitWith {_inCombat = true}; - } forEach _aliveUnits; - //diag_log format["_fn_inCombat::-->> _grp to test is %1 and result is %2",_grp,_inCombat]; - _inCombat; -}; _fn_removeEmptyOrNullGroups = { //diag_log format["_fn_removeEmptyOrNullGroups::-->> excuting function at %1",diag_tickTime]; @@ -75,10 +56,20 @@ _fn_removeEmptyOrNullGroups = { }; }; +_fn_centerGroup = { + +}; + _fn_monitorGroupWaypoints = { { private["_timeStamp","_index","_unit","_soldierType"]; - + /* + #define blck_turnBackRadiusInfantry 800 + #define blck_turnBackRadiusVehicles 1000 + #define blck_turnBackRadiusHelis 1000 + #define blck_turnBackRadiusJets 1500 + */ + diag_log format["_fn_monitorGroupWaypoints - radii: on foot %1 | vehicle %2 | heli %3 | jet %4",blck_turnBackRadiusInfantry,blck_turnBackRadiusVehicles,blck_turnBackRadiusHelis,blck_turnBackRadiusJets]; _timeStamp = _x getVariable ["timeStamp",0]; if (_timeStamp isEqualTo 0) then { _x setVariable["timeStamp",diag_tickTime]; @@ -118,9 +109,9 @@ _fn_monitorGroupWaypoints = { { private _leader = leader _x; (_leader) call blck_fnc_changeToMoveWaypoint; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];}; - #endif + //#ifdef blck_debugMode + if (true /*blck_debugLevel > 2*/) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];}; + //#endif /* if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then { @@ -130,28 +121,28 @@ _fn_monitorGroupWaypoints = { }; }; + /* if (_soldierType isEqualTo "helicopter") then { - if (diag_tickTime > (_x getVariable "timeStamp") + 60) then + if ((diag_tickTime > (_x getVariable "timeStamp")) then { - _units = [_x] call _fn_aliveGroupUnits; + private _units = [_x] call _fn_aliveGroupUnits; if (count _units > 0) then { private _leader = leader _x; - (_leader) call blck_fnc_changeToMoveWaypoint; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];}; - #endif - /* - if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then + if (_leader distance (_group getVariable "patrolCenter") > blck_turnBackRadiusHelis) then { - - }; - */ + _leader call blck_fnc_changeToMoveWaypoint; + //#ifdef blck_debugMode + if (true ) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];}; + //#endif + //diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x]; + }; }; }; - }; + }; + */ } forEach blck_monitoredMissionAIGroups; }; @@ -165,22 +156,18 @@ _fn_simulationMonitor = { _playerType = ["Epoch_Male_F","Epoch_Female_F"]; }; { - _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]; + private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]; if (count _players > 0) then { - if !(simulationEnabled _x) then + private _group = _x; { { _x enableSimulationGlobal true; (_players select 0) reveal _x; // Force simulation on - }forEach (units _x); + }forEach (units _group); }; }else{ - // Be sure simulation is off for all units in the group. - if (simulationEnabled _x) then - { - {_x enableSimulationGlobal false}forEach (units _x); - }; + {_x enableSimulationGlobal false}forEach (units _x); }; } forEach blck_monitoredMissionAIGroups; }; @@ -192,7 +179,7 @@ if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: execut #endif [] call _fn_removeEmptyOrNullGroups; uiSleep 0.1; -[] call _fn_monitorGroupWaypoints; +//[] call _fn_monitorGroupWaypoints; if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {[] call _fn_simulationMonitor}; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setupWaypoints.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setupWaypoints.sqf index d4c5ad5..bf10458 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setupWaypoints.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setupWaypoints.sqf @@ -80,7 +80,7 @@ if !(_soldierType isEqualTo "emplaced") then _wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint;"]; #endif #ifdef blck_debugMode - if (blck_debugLevel >= 2) then + if (blck_debugLevel >= 3) then { _marker = createMarker [format["GroupMarker%1",_group],_newPos]; _group setVariable["wpMarker",_marker,true]; @@ -90,7 +90,7 @@ if !(_soldierType isEqualTo "emplaced") then //diag_log format["_fnc_setupWaypoints: configuring weapoints for group %2 mobile patrol with _soldierType = %1",_solderType,_group]; diag_log format["_fnc_setupWaypoints: soldier type for mobile _group %1 set to %2",_group, (_group getVariable["soldierType","null"])]; diag_log format["_fnc_setupWaypoints: all variables for the group have been set for group %1",_group]; - diag_log format["_fnc_setupWaypoints:: -- >> wpMode %1 _dir %2 _dis 3",_group getVariable["wpMode","random"], _dir, _dis]; + diag_log format["_fnc_setupWaypoints:: -- >> wpMode %1 _dir %2 _dis %3",_group getVariable["wpMode","random"], _dir, _dis]; diag_log format["_fnc_setupWaypoints:: -- >> group to update is %1 and new position is %2",_group, _newPos]; diag_log format["_fnc_setupWaypoints:: -- >> Waypoint statements for group %1 have been configured as %2",_group, waypointStatements _wp]; diag_log format["_fnc_setupWaypoints:: -- >> Waypoint marker for group %1 have been configured as %2 with text set to %3",_group, _group getVariable "wpMarker", markerText (_group getVariable "wpMarker")]; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf index f98f1ff..3ab14e4 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf @@ -12,9 +12,9 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_numbertospawn","_groupSpawned","_safepos","_useLauncher","_launcherType"]; +private["_numbertospawn","_groupSpawned","_safepos","_useLauncher","_launcherType","_infantryType"]; // _newGroup = [_groupSpawnPos,_minAI,_maxAI,_skillLevel,_coords,_minPatrolRadius,_maxPatrolRadius,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,true,_isScubaGroup] -params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false]]; +params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false]]; if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms}; if (_uniforms isEqualTo []) then {_uniforms = [_skillLevel] call blck_fnc_selectAIUniforms}; @@ -96,9 +96,8 @@ if !(isNull _groupSpawned) then if (_configureWaypoints) then { if (_scuba) then {_infantryType = "scuba"} else {_infantryType = "infantry"}; - [_pos,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints; + [_pos,_minDist,_maxDist,_groupSpawned,"random","SAD",_infantryType] spawn blck_fnc_setupWaypoints; }; - //[_pos,_minDist,_maxDist,_groupSpawned,"random","SENTRY"] spawn blck_fnc_setupWaypoints; //diag_log format["_fnc_spawnGroup: blck_fnc_setupWaypoints called for group %1",_groupSpawned]; #ifdef blck_debugMode if (blck_debugLevel >= 1) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf index bf8f77c..788c5fd 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf @@ -1,8 +1,4 @@ -////////////////////////////////////////////////////// -// Attach a marker of type _marker to an object _crate -// by Ghostrider [GRG] based on code from Wicked AI for Arma 2 Dayz Epoch -// Last modified 8/2/15 -///////////////////////////////////////////////////// + /* -------------------------- License diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf index a6801e0..363b0b0 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf @@ -1,8 +1,4 @@ -////////////////////////////////////////////////////// -// Attach a marker of type _marker to an object _crate -// by Ghostrider [GRG] based on code from Wicked AI for Arma 2 Dayz Epoch -// Last modified 8/2/15 -///////////////////////////////////////////////////// + /* -------------------------- License diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf index 4855358..2a32c4e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf @@ -1,3 +1,11 @@ +/* + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private _crate = _this select 0; #ifdef blck_debugMode diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index bdf2de6..f425656 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -306,7 +306,7 @@ uisleep 3; if (count _garrisonedBuilding_ATLsystem > 0) then { _temp = [_coords, _garrisonedBuilding_ATLsystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_ATLsystem; - diag_log format["_missionspawner: garrisoned a building using ATL format, function returned %1",_temp]; + //diag_log format["_missionspawner: garrisoned a building using ATL format, function returned %1",_temp]; // _return = [_group,_buildingsSpawned,_staticsSpawned]; _objects append (_temp select 1); blck_monitoredVehicles append (_temp select 2); @@ -314,7 +314,7 @@ if (count _garrisonedBuilding_ATLsystem > 0) then }; uiSleep 3; -diag_log format["_missionSpawner: _garrisonedBuildings_BuildingPosnSystem = %1",_garrisonedBuildings_BuildingPosnSystem]; +//diag_log format["_missionSpawner: _garrisonedBuildings_BuildingPosnSystem = %1",_garrisonedBuildings_BuildingPosnSystem]; if (count _garrisonedBuildings_BuildingPosnSystem > 0) then { // params["_center","_garrison","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks","_weaponList","_sideArms"]; @@ -456,7 +456,7 @@ if (_secureAsset) then while {_missionComplete isEqualTo -1} do { #ifdef blck_debugMode - if (blck_debugLevel > 2) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";}; + if (blck_debugLevel > 3) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";}; #endif if (_endIfPlayerNear) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf index 954d3ff..e92033e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf @@ -74,12 +74,9 @@ if (_missionPatrolVehicles isEqualTo []) then { _abort = true; }; - //if !(isNull _vehGroup) then - //{ - //blck_monitoredMissionAIGroups pushBack _vehGroup; - //}; - + blck_monitoredMissionAIGroups pushBack _vehGroup; + #ifdef blck_debugMode if (blck_debugLevel > 1) then { @@ -96,7 +93,7 @@ if (_missionPatrolVehicles isEqualTo []) then #endif //params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; - _patrolVehicle = [_coords,_spawnPos,_vehicle,30,45,_vehGroup,true] call blck_fnc_spawnVehiclePatrol; + _patrolVehicle = [_coords,_spawnPos,_vehicle,40,60,_vehGroup,true] call blck_fnc_spawnVehiclePatrol; //_vehGroup setVariable["groupVehicle",_vehicle]; #ifdef blck_debugMode if (blck_debugLevel > 1) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf index d1035fc..792764f 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf @@ -31,13 +31,13 @@ private["_index","_element","_waitTime"]; if (_index > -1) then { #ifdef blck_debugMode - if (blck_debuglevel > 2) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions began as %1",blck_pendingMissions];}; + if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions began as %1",blck_pendingMissions];}; #endif _element = blck_pendingMissions select _index; #ifdef blck_debugMode - if (blck_debuglevel > 2) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];}; + if (blck_debuglevel > 3) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];}; #endif // 0 1 2 3 4 5 6 //_mission = [_missionList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]]; @@ -59,7 +59,7 @@ if (_index > -1) then blck_pendingMissions set [_index, _element]; #ifdef blck_debugMode - if (blck_debuglevel > 2) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions after update = %1",blck_pendingMissions];}; + if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions after update = %1",blck_pendingMissions];}; #endif }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf index 588dca8..1db1cb8 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf @@ -67,6 +67,6 @@ for "_i" from 1 to _numAI do }; -//blck_monitoredMissionAIGroups pushback _paraGroup; +blck_monitoredMissionAIGroups pushback _paraGroup; _paraGroup diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf index 1cb1b2b..6ef61f1 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf @@ -55,7 +55,7 @@ if !(isNull _grpPilot) then _grpPilot setVariable["arc",0]; _grpPilot setVariable["wpRadius",30]; _grpPilot setVariable["wpMode","SAD"]; - // [_pos,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints; + //[_coords,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints; diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; switch (toLower(_skillAI)) do { @@ -65,8 +65,8 @@ if !(isNull _grpPilot) then case "orange" : {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisOrange}; default {_minDist = 150; _maxDist = 500}; }; - diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; - [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; + + [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","helicopter"] call blck_fnc_setupWaypoints; blck_monitoredMissionAIGroups pushBack _grpPilot; //create helicopter and spawn it if (( typeName _helis) isEqualTo "ARRAY") then @@ -79,7 +79,8 @@ if !(isNull _grpPilot) then #ifdef blck_debugMode if (blck_debugLevel > 1) then { - diag_log format["_fnc_spawnMissionHeli (78):: _chopperType selected = %1",_chopperType]; + diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; + diag_log format["_fnc_spawnMissionHeli (78):: _chopperType selected = %1",_chopperType]; }; #endif diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf index aa3219d..937c362 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf @@ -15,7 +15,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private["_vehType","_safepos","_veh","_unitNumber"]; -params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull],["_setWaypoints",true]]; +params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true]]; #ifdef blck_debugMode if (blck_debugLevel > 1) then { diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index eeadfbe..6d3ecdf 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -39,16 +39,9 @@ blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\cu blck_fnc_spawnMissionEmplacedRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"; blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"; blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"; -blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"; +blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"; blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"; -//blck_fnc_getTraderCitiesEpoch = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf"; -//blck_fnc_getTraderCitesExile = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf"; - -#ifdef GRGserver -blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; -diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; -#endif // Player-related functions blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"; @@ -94,14 +87,12 @@ blck_fnc_garrisonBuilding_RelPosSystem = compileFinal preprocessFileLineNumbers blck_fnc_garrisonBuilding_ATLsystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"; blck_fnc_spawnGarrisonInsideBuilding_ATL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"; blck_fnc_spawnGarrisonInsideBuilding_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"; + // Group-related functions blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units] blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"; // Set default waypoints for a group blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat -blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"; blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"; -blck_fnc_changeToSentryWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"; // -//blck_fnc_setNextWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"; blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"; blck_fnc_create_AI_Group = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"; // create a group for which other functions spawn AI. @@ -155,17 +146,13 @@ blck_fnc_placeCharacterInBuilding = compileFinal preprocessFileLineNumbers "\q\ // HC support functions blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"; -//blck_fnc_HC_XferVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf"; blck_fnc_onPlayerDisconnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"; -//blck_fnc_HC_groupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf"; blck_fnc_HC_monitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"; -//blck_fnc_HC_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf"; -//blck_fnc_HC_monitorHC = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf"; blck_fnc_HC_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"; blck_fnc_HC_getListConnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"; blck_fnc_HC_leastBurdened = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"; blck_fnc_HC_countGroupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"; onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; -diag_log "[blckeagls] Functions Loaded"; +//diag_log "[blckeagls] Functions Loaded"; blck_functionsCompiled = true; diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index eb96142..1637c0f 100644 --- a/@GMS/addons/custom_server/Compiles/blck_variables.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_variables.sqf @@ -12,12 +12,17 @@ */ #include"\q\addons\custom_server\Configs\blck_defines.hpp"; -diag_log "[blckeagls] loading variables"; +//diag_log "[blckeagls] loading variables"; -// blck_debugON = false; Moved to blck_configs.sqf because of script loading order issues. -// blck_debugLevel = 0; Moved to blck_configs.sqf because of script loading order issues. blck_minFPS = 8; +// radius within whih missions are triggered. The trigger causes the crate and AI to spawn. +#ifdef blck_milServer +blck_TriggerDistance = 1500; +#else +blck_TriggerDistance = 1500; +#endif + //////////////////////////////////////////////// // Do Not Touch Anything Below This Line /////////////////////////////////////////////// @@ -35,10 +40,7 @@ blck_activeMissions = []; blck_deadAI = []; blck_connectedHCs = []; blck_missionMarkers = []; -//blck_groupsOnHC = []; -//blck_vehiclesOnHC = []; -//blck_HC_monitoredVehicles = []; -//blck_HC_monitoredGroups = []; + if (blck_simulationManager == 2) then { "Group" setDynamicSimulationDistance 1800; @@ -47,14 +49,9 @@ if (blck_simulationManager == 2) then blck_heliCrashSites = []; -// radius within whih missions are triggered. The trigger causes the crate and AI to spawn. -#ifdef blck_milServer -blck_TriggerDistance = 1500; -#else -blck_TriggerDistance = 1500; -#endif + blck_mainThreadUpdateInterval = 60; blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/"; -diag_log "[blckeagls] Variables Loaded"; +//diag_log "[blckeagls] Variables Loaded"; blck_variablesLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/armed_vics_notes.txt b/@GMS/addons/custom_server/Configs/armed_vics_notes.txt new file mode 100644 index 0000000..199a327 --- /dev/null +++ b/@GMS/addons/custom_server/Configs/armed_vics_notes.txt @@ -0,0 +1,91 @@ + +_blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F", + "I_MRAP_03_gmg_F", + "B_APC_Wheeled_01_cannon_F", + "I_APC_Wheeled_03_cannon_F" +]; + + +_blck_tracked_APC_ARMA3 = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_tracked_03_cannon_F" +]; + +_blck_Tanks_ARMA3 = [ + //"B_MBT_01_arty_F", + "B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "O_MBT_02_cannon_F", + //"O_MBT_02_arty_F", + "I_MBT_03_cannon_F" +]; +_blck_APC_CUP = [ + "CUP_B_Mastiff_GMG_GB_D", + "CUP_B_Mastiff_HMG_GB_D", + "CUP_B_Ridgback_HMG_GB_D", + "CUP_B_Ridgback_GMG_GB_D", + "CUP_B_M1128_MGS_Desert", + "CUP_B_M1135_ATGMV_Desert_Slat", + "CUP_B_M1133_MEV_Desert_Slat", + "CUP_B_LAV25M240_desert_USMC", + "CUP_B_M1129_MC_MK19_Desert_Slat", + "CUP_B_LAV25_HQ_desert_USMC", + "CUP_B_BRDM2_ATGM_CDF", + "CUP_B_BTR60_CDF", + "CUP_B_M1130_CV_M2_Desert_Slat", + "CUP_B_M1126_ICV_MK19_Desert_Slat", + "CUP_O_BTR90_RU", + "CUP_O_GAZ_Vodnik_BPPU_RU", + "CUP_B_M1126_ICV_M2_Desert", + "CUP_B_M1126_ICV_MK19_Desert", + "CUP_B_M1130_CV_M2_Desert", + "CUP_B_M1126_ICV_M2_Desert_Slat", + "CUP_B_M1133_MEV_Desert", + "CUP_O_GAZ_Vodnik_AGS_RU", + "CUP_O_GAZ_Vodnik_PK_RU" +]; + +_blck_Tanks_CUP = [ + "CUP_B_M2A3Bradley_USA_D", + "CUP_B_M113_desert_USA", + "CUP_B_M163_USA", + "CUP_B_M6LineBacker_USA_D", + "CUP_B_M1A1_DES_US_Army", + "CUP_B_M1A2_TUSK_MG_DES_US_Army", + "CUP_B_AAV_USMC", + "CUP_B_M270_DPICM_USA", + "CUP_B_ZSU23_CDF", + "CUP_B_BMP2_CDF", + "CUP_B_T72_CDF", + "CUP_I_T34_NAPA", + "CUP_B_Challenger2_NATO", + "CUP_B_FV432_Bulldog_GB_D_RWS", + "CUP_B_FV432_Bulldog_GB_D", + "CUP_B_FV510_GB_D_SLAT", + "CUP_B_MCV80_GB_D_SLAT", + "CUP_O_2S6_RU", + "CUP_O_BMP3_RU", + "CUP_O_T90_RU", + "CUP_O_T55_SLA", + "CUP_O_BMP1P_TKA", + "CUP_B_M270_DPICM_USA", + "CUP_B_M2Bradley_USA_W", + "CUP_B_FV510_GB_D", + "CUP_B_MCV80_GB_D", + "CUP_B_M7Bradley_USA_D", + "CUP_O_2S6_RU", + "CUP_O_BMP1_TKA" +]; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 0abfbe1..3e3dd19 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -17,8 +17,8 @@ changing any of these variables may break the mission systemChat */ blck_locationBlackList = []; // Do not touch ... - blck_debugON = false; // Do not touch ... - blck_debugLevel = 0; // Do not touch ... + blck_debugON = true; // Do not touch ... + blck_debugLevel = 3; // Do not touch ... #ifdef blck_milServer execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf"; if (true) exitWith {}; @@ -51,7 +51,7 @@ */ // Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf - blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. + blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. blck_timeAccelerationDay = 0.25; // Daytime time accelearation blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation blck_timeAccelerationNight = 12; // Nighttim time acceleration @@ -71,7 +71,7 @@ ***********************************************************/ //////// // Headless Client Configurations - blck_useHC = false; // Experimental (do not use if you allow players to claim mission vehicles). + blck_useHC = true; // Experimental (death messages and rewards not yet working). /////////////////////////////// // Kill message configurations @@ -211,19 +211,17 @@ // Enable / Disable Missions //////////////////// - + // Maximum number of missions shown on the map at any one time. + // Change this value to reduce the number of spawned missions at any one time. + blck_maxSpawnedMissions = 4; + //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; blck_enableGreenMissions = 1; blck_enableRedMissions = 2; - blck_enableBlueMissions = 2; + blck_enableBlueMissions = 1; blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. - // Maximum number of missions shown on the map at any one time. - // Change this value to reduce the number of spawned missions at any one time. - //blck_maxSpawnedMissions = 9; // Set this to a value lower than the total number of missions if you want only some of the types of missions running at any one time. - blck_maxSpawnedMissions = blck_enableOrangeMissions + blck_enableGreenMissions + blck_enableRedMissions + blck_enableBlueMissions + blck_numberUnderwaterDynamicMissions; - //////////////////// // MISSION TIMERS //////////////////// @@ -240,7 +238,7 @@ blck_TMax_Green = 300; blck_TMax_Blue = 200; blck_TMax_Red = 250; - blck_TMax_UMS = 200; + blck_TMax_UMS = 400; /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -298,8 +296,7 @@ blck_launcherCleanup = true;// When true, launchers and launcher ammo are removed from dead AI. blck_minimumPatrolRadius = 22; // AI will patrol within a circle with radius of approximately min-max meters. note that because of the way waypoints are completed they may more more or less than this distance. blck_maximumPatrolRadius = 35; - - + //This defines how long after an AI dies that it's body disappears. blck_bodyCleanUpTimer = 60*40; // time in seconds after which dead AI bodies are deleted // Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable @@ -360,7 +357,7 @@ blck_maxMoneyRed = 15; blck_maxMoneyBlue = 10; - private["_modType"]; + private["_modType"]; _modType = [] call blck_fnc_getModType; if (_modType isEqualTo "Epoch") then { @@ -369,8 +366,6 @@ waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; waitUntil{blck_configsEpochLoaded}; blck_configsEpochLoaded = nil; - //diag_log "[blckeagles] Running getTraderCitiesEpoch to get location of trader cities"; - execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf"; }; if (_modType isEqualTo "Exile") then { @@ -378,8 +373,6 @@ execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;}; waitUntil{blck_configsExileLoaded}; - blck_configsExileLoaded = nil; - if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";}; }; if (blck_useConfigsGeneratedLoadouts) then { @@ -389,4 +382,5 @@ //waitUntil{blck_dynamicConfigsLoaded}; //blck_dynamicConfigsLoaded = nil; }; + uisleep 3; blck_configsLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index f04f016..bdfa5c6 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -48,7 +48,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = false; + blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 100; _blck_lightlyArmed_ARMA3 = [ @@ -517,7 +517,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_green = blck_vests; blck_vests_orange = blck_vests; - //CraftingFood + //CraftingFood blck_Meats=[ "SnakeCarcass_EPOCH","RabbitCarcass_EPOCH","ChickenCarcass_EPOCH","GoatCarcass_EPOCH","SheepCarcass_EPOCH","DogCarcass_EPOCH","ItemTrout","ItemSeaBass","ItemTuna" ]; @@ -525,7 +525,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "WhiskeyNoodle","ItemSodaAlpineDude","ItemSodaOrangeSherbet","ItemSodaPurple","ItemSodaMocha","ItemSodaBurst","ItemSodaRbull","FoodWalkNSons" ]; blck_Food = [ - "HotAxeSauce_epoch","gyro_wrap_epoch","icecream_epoch","redburger_epoch","bluburger_epoch","krypto_candy_epoch","ItemBakedBeans","ItemRiceBox","ItemPowderMilk","ItemCereals","FoodBioMeat","FoodMeeps","FoodSnooter","sardines_epoch","meatballs_epoch","scam_epoch","sweetcorn_epoch","honey_epoch","CookedSheep_EPOCH","CookedGoat_EPOCH","SnakeMeat_EPOCH", + "HotAxeSauce_epoch","gyro_wrap_epoch","icecream_epoch","redburger_epoch","bluburger_epoch","krypto_candy_epoch","ItemBakedBeans","ItemRiceBox","ItemPowderMilk","ItemCereals", + "FoodBioMeat","FoodMeeps","FoodSnooter","sardines_epoch","meatballs_epoch","scam_epoch","sweetcorn_epoch","honey_epoch","CookedSheep_EPOCH","CookedGoat_EPOCH","SnakeMeat_EPOCH", "CookedRabbit_EPOCH","CookedChicken_EPOCH","CookedDog_EPOCH","ItemTroutCooked","ItemSeaBassCooked","ItemTunaCooked","TacticalBacon" ]; blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; @@ -1080,7 +1081,7 @@ for examples of how you can do this see \Major\Compositions.sqf "FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch", "caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty", "ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator", - "ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch" + "ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_pills_epoch" ], [ // Backpacks ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index c0220c3..2ee2612 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -49,7 +49,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = false; + blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 100; _blck_lightlyArmed_ARMA3 = [ @@ -533,7 +533,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_green = blck_vests; blck_vests_orange = blck_vests; - //CraftingFood + //CraftingFood blck_Meats=[ "SnakeCarcass_EPOCH","RabbitCarcass_EPOCH","ChickenCarcass_EPOCH","GoatCarcass_EPOCH","SheepCarcass_EPOCH","DogCarcass_EPOCH","ItemTrout","ItemSeaBass","ItemTuna" ]; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index e51b1a2..47af76e 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -56,7 +56,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyOrange = [500, 750]; // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = false; + blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf new file mode 100644 index 0000000..f8fbea7 --- /dev/null +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf @@ -0,0 +1,1170 @@ +/* + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +//////////// +// Exile-specific settings +//////////// + +// list of locations that are protected against mission spawns + +switch (toLower(worldName)) do +{ + case "altis": { + blck_locationBlackList append [ + //Add location as [[xpos,ypos,0],minimumDistance], + // Note that there should not be a comma after the last item in this table + [[10800,10641,0],1000] // isthmus - missions that spawn here often are glitched. + ]; + }; + case "tanoa": { + blck_locationBlackList append [ ]; + }; +}; + +/********************************************************************************* + +AI WEAPONS, UNIFORMS, VESTS AND GEAR + +**********************************************************************************/ + + blck_blacklistSpawns = false; + blck_listConcreteMixerZones = false; + blck_AI_Side = EAST; + + blck_crateMoneyBlue = [100,250]; + blck_crateMoneyRed = [175, 300]; + blck_crateMoneyGreen = [300, 500]; + blck_crateMoneyOrange = [500, 750]; + + // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files + blck_useConfigsGeneratedLoadouts = true; + blck_maximumItemPriceInAI_Loadouts = 1000; + + _blck_armed_vehicles_Exile = [ + "Exile_Car_BTR40_MG_Green", + "Exile_Car_HMMWV_M134_Green", + "Exile_Car_HMMWV_M2_Green", + "B_LSV_01_armed_F", + "Exile_Car_Offroad_Armed_Guerilla01" + ]; + + _blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F", + "I_MRAP_03_gmg_F", + "B_APC_Wheeled_01_cannon_F", + "I_APC_Wheeled_03_cannon_F" + ]; + + _blck_tracked_APC_ARMA3 = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_tracked_03_cannon_F" + ]; + + _blck_Tanks_ARMA3 = [ + //"B_MBT_01_arty_F", + //"B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "O_MBT_02_cannon_F", + //"O_MBT_02_arty_F", + "I_MBT_03_cannon_F" + ]; + + _blck_APC_CUP = [ + "CUP_B_Mastiff_GMG_GB_D", + "CUP_B_Mastiff_HMG_GB_D", + "CUP_B_Ridgback_HMG_GB_D", + "CUP_B_Ridgback_GMG_GB_D", + "CUP_B_M1128_MGS_Desert", + "CUP_B_M1135_ATGMV_Desert_Slat", + "CUP_B_M1133_MEV_Desert_Slat", + "CUP_B_LAV25M240_desert_USMC", + "CUP_B_M1129_MC_MK19_Desert_Slat", + "CUP_B_LAV25_HQ_desert_USMC", + "CUP_B_BRDM2_ATGM_CDF", + "CUP_B_BTR60_CDF", + "CUP_B_M1130_CV_M2_Desert_Slat", + "CUP_B_M1126_ICV_MK19_Desert_Slat", + "CUP_O_BTR90_RU", + "CUP_O_GAZ_Vodnik_BPPU_RU", + "CUP_B_M1126_ICV_M2_Desert", + "CUP_B_M1126_ICV_MK19_Desert", + "CUP_B_M1130_CV_M2_Desert", + "CUP_B_M1126_ICV_M2_Desert_Slat", + "CUP_B_M1133_MEV_Desert", + "CUP_O_GAZ_Vodnik_AGS_RU", + "CUP_O_GAZ_Vodnik_PK_RU" + ]; + + _blck_Tanks_CUP = [ + "CUP_B_M2A3Bradley_USA_D", + //"CUP_B_M113_desert_USA", + //"CUP_B_M163_USA", + "CUP_B_M6LineBacker_USA_D", + "CUP_B_M1A1_DES_US_Army", + "CUP_B_M1A2_TUSK_MG_DES_US_Army", + //"CUP_B_AAV_USMC", + //"CUP_B_M270_DPICM_USA", + "CUP_B_ZSU23_CDF", + //"CUP_B_BMP2_CDF", + "CUP_B_T72_CDF", + //"CUP_I_T34_NAPA", + "CUP_B_Challenger2_NATO", + //"CUP_B_FV432_Bulldog_GB_D_RWS", + //"CUP_B_FV432_Bulldog_GB_D", + "CUP_B_FV510_GB_D_SLAT", + //"CUP_B_MCV80_GB_D_SLAT", + //"CUP_O_2S6_RU", + "CUP_O_BMP3_RU", + "CUP_O_T90_RU", + "CUP_O_T55_SLA" //, + //"CUP_O_BMP1P_TKA", + //"CUP_B_M270_DPICM_USA", + //"CUP_B_M2Bradley_USA_W", + //"CUP_B_FV510_GB_D", + //"CUP_B_MCV80_GB_D", + //"CUP_B_M7Bradley_USA_D", + //"CUP_O_2S6_RU", + //"CUP_O_BMP1_TKA"" + ]; + + blck_AIPatrolVehicles = + [ + //"Exile_Car_Offroad_Armed_Guerilla01", + //"Exile_Car_Offroad_Armed_Guerilla02", + //"Exile_Car_BTR40_MG_Green", + //"Exile_Car_BTR40_MG_Camo", + //"Exile_Car_HMMWV_M134_Green", + //"Exile_Car_HMMWV_M134_Desert", + //"Exile_Car_HMMWV_M134_Desert", + "Exile_Car_HMMWV_M2_Desert", + "B_LSV_01_armed_F", + //"_MRAP_02_gmg_ghex_F", + //"O_MRAP_02_hmg_ghex_F", + //"O_MRAP_03_gmg_ghex_F", + //"O_MRAP_03_hmg_ghex_F", + "B_MBT_01_cannon_F", + "B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others + //"B_MBT_01_mlrs_base_F", + //"B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others + "B_APC_Tracked_01_AA_F", + "B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others + "B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_rcws_F" + ]; // Type of vehicle spawned to defend AI bases + + blck_AIPatrolVehiclesBlue = [ + "Exile_Car_Offroad_Armed_Guerilla01", + "Exile_Car_Offroad_Armed_Guerilla02", + "Exile_Car_BTR40_MG_Green", + "Exile_Car_BTR40_MG_Camo", + "Exile_Car_HMMWV_M134_Green", + "Exile_Car_HMMWV_M134_Desert", + "Exile_Car_HMMWV_M134_Desert", + "Exile_Car_HMMWV_M2_Desert", + "B_LSV_01_armed_F" + ]; + + blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP; + blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP; + blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP; + + if (toLower(worldName) isEqualTo "namalsk") then + { + _blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + //"B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + //"O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F" + //"I_MRAP_03_gmg_F", + //"B_APC_Wheeled_01_cannon_F", + //"I_APC_Wheeled_03_cannon_F" + ]; + diag_log "blck)configs_exile_mil.sqf:: - > Using special settings for namalsk"; + blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + blck_AIPatrolVehiclesBlue; + blck_AIPatrolVehiclesGreen = blck_AIPatrolVehiclesRed; + blck_AIPatrolVehiclesOrange = blck_AIPatrolVehiclesRed; + }; + + // Blacklisted itesm + blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; + + // AI Weapons and Attachments + blck_bipods = ["bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli"]; + + blck_Optics_Holo = ["optic_Hamr","optic_MRD","optic_Holosight","optic_Holosight_smg","optic_Aco","optic_ACO_grn","optic_ACO_grn_smg","optic_Aco_smg","optic_Yorris"]; + blck_Optics_Reticule = ["optic_Arco","optic_MRCO"]; + blck_Optics_Scopes = [ + "optic_AMS","optic_AMS_khk","optic_AMS_snd", + "optic_DMS", + "optic_KHS_blk","optic_KHS_hex","optic_KHS_old","optic_KHS_tan", + "optic_LRPS", + "optic_Nightstalker", + "optic_NVS", + "optic_SOS", + "optic_tws", + "optic_tws_mg" + ]; + + #ifdef useAPEX + blck_Optics_Apex = [ + //Apex + "optic_Arco_blk_F", "optic_Arco_ghex_F", + "optic_DMS_ghex_F", + "optic_Hamr_khk_F", + "optic_ERCO_blk_F","optic_ERCO_khk_F","optic_ERCO_snd_F", + "optic_SOS_khk_F", + "optic_LRPS_tna_F","optic_LRPS_ghex_F", + "optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F" + ]; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif + + blck_bipods = [ + "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", + //Apex + "bipod_01_F_khk" + ]; + + blck_silencers = [ + "muzzle_snds_338_black","muzzle_snds_338_green","muzzle_snds_338_sand","muzzle_snds_93mmg","muzzle_snds_93mmg_tan","muzzle_snds_acp","muzzle_snds_B", + "muzzle_snds_H","muzzle_snds_H_MG","muzzle_snds_H_SW","muzzle_snds_L","muzzle_snds_M", + //Apex + "muzzle_snds_H_khk_F","muzzle_snds_H_snd_F","muzzle_snds_58_blk_F","muzzle_snds_m_khk_F","muzzle_snds_m_snd_F","muzzle_snds_B_khk_F","muzzle_snds_B_snd_F", + "muzzle_snds_58_wdm_F","muzzle_snds_65_TI_blk_F","muzzle_snds_65_TI_hex_F","muzzle_snds_65_TI_ghex_F","muzzle_snds_H_MG_blk_F","muzzle_snds_H_MG_khk_F" + ]; + + blck_RifleSniper = [ + "srifle_EBR_F","srifle_GM6_F","srifle_LRR_F","srifle_DMR_01_F" + ]; + + blck_RifleAsault_556 = [ + "arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","arifle_SDAR_F" + ]; + + blck_RifleAsault_650 = [ + "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F" + ]; + + blck_RifleAsault = [ + "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F", + "arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F" + ]; + + blck_RifleLMG = [ + "LMG_Mk200_F","LMG_Zafir_F" + ]; + + blck_RifleOther = [ + "SMG_01_F","SMG_02_F" + ]; + + blck_Pistols = [ + "hgun_PDW2000_F","hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","hgun_Pistol_Signal_F" + ]; + blck_Pistols_blue = blck_Pistols; + blck_Pistols_red = blck_Pistols; + blck_Pistols_green = blck_Pistols; + blck_Pistols_orange = blck_Pistols; + + blck_DLC_MMG = [ + "MMG_01_hex_F","MMG_02_sand_F","MMG_01_tan_F","MMG_02_black_F","MMG_02_camo_F" + ]; + + blck_DLC_Sniper = [ + "srifle_DMR_02_camo_F","srifle_DMR_02_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_tan_F","srifle_DMR_04_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_F","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F" + ]; + + //This defines the random weapon to spawn on the AI + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons + blck_WeaponList_Orange = blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG + blck_DLC_Sniper + blck_DLC_MMG; + blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG; + blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650; + blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG; + + #ifdef useAPEX + blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"]; + + blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + + + + blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; + + #ifdef useAPEX + blck_ApexBackpacks = [ + "B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F", + "B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F", + "B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F" + ]; + blck_backpacks = blck_backpacks + blck_ApexBackpacks; + #endif + blck_backpacks_blue = blck_backpacks; + blck_backpacks_red = blck_backpacks; + blck_backpacks_green = blck_backpacks; + blck_backpacks_orange = blck_backpacks; + + blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_headgear = [ + "H_Cap_blk", + "H_Cap_blk_Raven", + "H_Cap_blu", + "H_Cap_brn_SPECOPS", + "H_Cap_grn", + "H_Cap_headphones", + "H_Cap_khaki_specops_UK", + "H_Cap_oli", + "H_Cap_press", + "H_Cap_red", + "H_Cap_tan", + "H_Cap_tan_specops_US", + "H_Watchcap_blk", + "H_Watchcap_camo", + "H_Watchcap_khk", + "H_Watchcap_sgg", + "H_MilCap_blue", + "H_MilCap_dgtl", + "H_MilCap_mcamo", + "H_MilCap_ocamo", + "H_MilCap_oucamo", + "H_MilCap_rucamo", + "H_Bandanna_camo", + "H_Bandanna_cbr", + "H_Bandanna_gry", + "H_Bandanna_khk", + "H_Bandanna_khk_hs", + "H_Bandanna_mcamo", + "H_Bandanna_sgg", + "H_Bandanna_surfer", + "H_Booniehat_dgtl", + "H_Booniehat_dirty", + "H_Booniehat_grn", + "H_Booniehat_indp", + "H_Booniehat_khk", + "H_Booniehat_khk_hs", + "H_Booniehat_mcamo", + "H_Booniehat_tan", + "H_Hat_blue", + "H_Hat_brown", + "H_Hat_camo", + "H_Hat_checker", + "H_Hat_grey", + "H_Hat_tan", + "H_StrawHat", + "H_StrawHat_dark", + "H_Beret_02", + "H_Beret_blk", + "H_Beret_blk_POLICE", + "H_Beret_brn_SF", + "H_Beret_Colonel", + "H_Beret_grn", + "H_Beret_grn_SF", + "H_Beret_ocamo", + "H_Beret_red", + "H_Shemag_khk", + "H_Shemag_olive", + "H_Shemag_olive_hs", + "H_Shemag_tan", + "H_ShemagOpen_khk", + "H_ShemagOpen_tan", + "H_TurbanO_blk", + "H_CrewHelmetHeli_B", + "H_CrewHelmetHeli_I", + "H_CrewHelmetHeli_O", + "H_HelmetCrew_I", + "H_HelmetCrew_B", + "H_HelmetCrew_O", + "H_PilotHelmetHeli_B", + "H_PilotHelmetHeli_I", + "H_PilotHelmetHeli_O", + //Apex + + "H_MilCap_tna_F", + "H_MilCap_ghex_F", + "H_Booniehat_tna_F", + "H_Beret_gen_F", + "H_MilCap_gen_F", + "H_Cap_oli_Syndikat_F", + "H_Cap_tan_Syndikat_F", + "H_Cap_blk_Syndikat_F", + "H_Cap_grn_Syndikat_F" + ]; + blck_helmets = [ + "H_HelmetB", + "H_HelmetB_black", + "H_HelmetB_camo", + "H_HelmetB_desert", + "H_HelmetB_grass", + "H_HelmetB_light", + "H_HelmetB_light_black", + "H_HelmetB_light_desert", + "H_HelmetB_light_grass", + "H_HelmetB_light_sand", + "H_HelmetB_light_snakeskin", + "H_HelmetB_paint", + "H_HelmetB_plain_blk", + "H_HelmetB_sand", + "H_HelmetB_snakeskin", + "H_HelmetCrew_B", + "H_HelmetCrew_I", + "H_HelmetCrew_O", + "H_HelmetIA", + "H_HelmetIA_camo", + "H_HelmetIA_net", + "H_HelmetLeaderO_ocamo", + "H_HelmetLeaderO_oucamo", + "H_HelmetO_ocamo", + "H_HelmetO_oucamo", + "H_HelmetSpecB", + "H_HelmetSpecB_blk", + "H_HelmetSpecB_paint1", + "H_HelmetSpecB_paint2", + "H_HelmetSpecO_blk", + "H_HelmetSpecO_ocamo", + "H_CrewHelmetHeli_B", + "H_CrewHelmetHeli_I", + "H_CrewHelmetHeli_O", + "H_HelmetCrew_I", + "H_HelmetCrew_B", + "H_HelmetCrew_O", + "H_PilotHelmetHeli_B", + "H_PilotHelmetHeli_I", + "H_PilotHelmetHeli_O", + "H_Helmet_Skate", + "H_HelmetB_TI_tna_F", + // Apex + //"H_HelmetO_ViperSP_hex_F", + //"H_HelmetO_ViperSP_ghex_F", + "H_HelmetB_tna_F", + "H_HelmetB_Enh_tna_F", + "H_HelmetB_Light_tna_F", + "H_HelmetSpecO_ghex_F", + "H_HelmetLeaderO_ghex_F", + "H_HelmetO_ghex_F", + "H_HelmetCrew_O_ghex_F" + ]; + blck_headgearList = blck_headgear + blck_helmets; + blck_headgear_blue = blck_headgearList; + blck_headgear_red = blck_headgearList; + blck_headgear_green = blck_headgearList; + blck_headgear_orange = blck_headgearList; + + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_SkinList = [ + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment + // I have commented out some high visibility uniforms that can be reserved for players or special missions. + // for example, you could have a uniform list specified in a mission template. + "U_AntigonaBody", + "U_AttisBody", + "U_B_CombatUniform_mcam","U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_worn","U_B_CombatUniform_sgg","U_B_CombatUniform_sgg_tshirt","U_B_CombatUniform_sgg_vest","U_B_CombatUniform_wdl","U_B_CombatUniform_wdl_tshirt","U_B_CombatUniform_wdl_vest", + "U_B_CTRG_1","U_B_CTRG_2","U_B_CTRG_3", + "U_B_GhillieSuit", + "U_B_HeliPilotCoveralls","U_B_PilotCoveralls", + "U_B_SpecopsUniform_sgg", + "U_B_survival_uniform", + "U_B_Wetsuit", + //"U_BasicBody", + "U_BG_Guerilla1_1","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_BG_Guerilla2_3","U_BG_Guerilla3_1","U_BG_Guerilla3_2", + "U_BG_leader", + "U_C_Commoner_shorts","U_C_Commoner1_1","U_C_Commoner1_2","U_C_Commoner1_3","U_C_Commoner2_1","U_C_Commoner2_2","U_C_Commoner2_3", + "U_C_Farmer","U_C_Fisherman","U_C_FishermanOveralls","U_C_HunterBody_brn","U_C_HunterBody_grn", + //"U_C_Journalist", + "U_C_Novak", + //"U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_redwhite","U_C_Poloshirt_salmon","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour", + "U_C_Poor_1","U_C_Poor_2","U_C_Poor_shorts_1","U_C_Poor_shorts_2","U_C_PriestBody","U_C_Scavenger_1","U_C_Scavenger_2", + //"U_C_Scientist","U_C_ShirtSurfer_shorts","U_C_TeeSurfer_shorts_1","U_C_TeeSurfer_shorts_2", + "U_C_WorkerCoveralls","U_C_WorkerOveralls","U_Competitor", + "U_I_CombatUniform","U_I_CombatUniform_shortsleeve","U_I_CombatUniform_tshirt","U_I_G_resistanceLeader_F", + "U_I_G_Story_Protagonist_F", + "U_I_GhillieSuit", + "U_I_HeliPilotCoveralls", + "U_I_OfficerUniform", + "U_I_pilotCoveralls", + "U_I_Wetsuit", + "U_IG_Guerilla1_1","U_IG_Guerilla2_1","U_IG_Guerilla2_2","U_IG_Guerilla2_3","U_IG_Guerilla3_1","U_IG_Guerilla3_2", + "U_IG_leader", + "U_IG_Menelaos", + //"U_KerryBody", + //"U_MillerBody", + //"U_NikosAgedBody", + //"U_NikosBody", + "U_O_CombatUniform_ocamo","U_O_CombatUniform_oucamo", + "U_O_GhillieSuit", + "U_O_OfficerUniform_ocamo", + "U_O_PilotCoveralls", + "U_O_SpecopsUniform_blk", + "U_O_SpecopsUniform_ocamo", + "U_O_Wetsuit", + "U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_2","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader", + //"U_OI_Scientist", + //"U_OrestesBody", + "U_Rangemaster", + // DLC + "U_B_FullGhillie_ard","U_I_FullGhillie_ard","U_O_FullGhillie_ard","U_B_FullGhillie_sard","U_O_FullGhillie_sard","U_I_FullGhillie_sard","U_B_FullGhillie_lsh","U_O_FullGhillie_lsh","U_I_FullGhillie_lsh", + //Apex + "U_B_T_Soldier_F", + "U_B_T_Soldier_AR_F", + "U_B_T_Soldier_SL_F", + //"U_B_T_Sniper_F", + //"U_B_T_FullGhillie_tna_F", + "U_B_CTRG_Soldier_F", + "U_B_CTRG_Soldier_2_F", + "U_B_CTRG_Soldier_3_F", + "U_B_GEN_Soldier_F", + "U_B_GEN_Commander_F", + "U_O_T_Soldier_F", + "U_O_T_Officer_F", + //"U_O_T_Sniper_F", + //"U_O_T_FullGhillie_tna_F", + "U_O_V_Soldier_Viper_F", + "U_O_V_Soldier_Viper_hex_F", + "U_I_C_Soldier_Para_1_F", + "U_I_C_Soldier_Para_2_F", + "U_I_C_Soldier_Para_3_F", + "U_I_C_Soldier_Para_4_F", + "U_I_C_Soldier_Para_5_F", + "U_I_C_Soldier_Bandit_1_F", + "U_I_C_Soldier_Bandit_2_F", + "U_I_C_Soldier_Bandit_3_F", + "U_I_C_Soldier_Bandit_4_F", + "U_I_C_Soldier_Bandit_5_F", + "U_I_C_Soldier_Camo_F", + "U_C_man_sport_1_F", + "U_C_man_sport_2_F", + "U_C_man_sport_3_F", + "U_C_Man_casual_1_F", + "U_C_Man_casual_2_F", + "U_C_Man_casual_3_F", + "U_C_Man_casual_4_F", + "U_C_Man_casual_5_F", + "U_C_Man_casual_6_F", + "U_B_CTRG_Soldier_urb_1_F", + "U_B_CTRG_Soldier_urb_2_F", + "U_B_CTRG_Soldier_urb_3_F" + ]; + blck_SkinList_blue = blck_SkinList; + blck_SkinList_red = blck_SkinList; + blck_SkinList_green = blck_SkinList; + blck_SkinList_orange = blck_SkinList; + + blck_vests = [ + "V_Press_F", + "V_Rangemaster_belt", + "V_TacVest_blk", + "V_TacVest_blk_POLICE", + "V_TacVest_brn", + "V_TacVest_camo", + "V_TacVest_khk", + "V_TacVest_oli", + "V_TacVestCamo_khk", + "V_TacVestIR_blk", + "V_I_G_resistanceLeader_F", + "V_BandollierB_blk", + "V_BandollierB_cbr", + "V_BandollierB_khk", + "V_BandollierB_oli", + "V_BandollierB_rgr", + "V_Chestrig_blk", + "V_Chestrig_khk", + "V_Chestrig_oli", + "V_Chestrig_rgr", + "V_HarnessO_brn", + "V_HarnessO_gry", + "V_HarnessOGL_brn", + "V_HarnessOGL_gry", + "V_HarnessOSpec_brn", + "V_HarnessOSpec_gry", + "V_PlateCarrier1_blk", + "V_PlateCarrier1_rgr", + "V_PlateCarrier2_rgr", + "V_PlateCarrier3_rgr", + "V_PlateCarrierGL_blk", + "V_PlateCarrierGL_mtp", + "V_PlateCarrierGL_rgr", + "V_PlateCarrierH_CTRG", + "V_PlateCarrierIA1_dgtl", + "V_PlateCarrierIA2_dgtl", + "V_PlateCarrierIAGL_dgtl", + "V_PlateCarrierIAGL_oli", + "V_PlateCarrierL_CTRG", + "V_PlateCarrierSpec_blk", + "V_PlateCarrierSpec_mtp", + #ifdef useAPEX + //Apex + "V_TacChestrig_grn_F", + "V_TacChestrig_oli_F", + "V_TacChestrig_cbr_F", + "V_PlateCarrier1_tna_F", + "V_PlateCarrier2_tna_F", + "V_PlateCarrierSpec_tna_F", + "V_PlateCarrierGL_tna_F", + "V_HarnessO_ghex_F", + "V_HarnessOGL_ghex_F", + "V_BandollierB_ghex_F", + "V_TacVest_gen_F", + "V_PlateCarrier1_rgr_noflag_F", + #endif + "V_PlateCarrier2_rgr_noflag_F" + ]; + blck_vests_blue = blck_vests; + blck_vests_red = blck_vests; + blck_vests_green = blck_vests; + blck_vests_orange = blck_vests; + + //CraftingFood + blck_Meats=[ + + ]; + blck_Drink = [ + "Exile_Item_PlasticBottleCoffee", + "Exile_Item_PowerDrink", + "Exile_Item_PlasticBottleFreshWater", + "Exile_Item_Beer", + "Exile_Item_EnergyDrink", + "Exile_Item_MountainDupe" + ]; + blck_Food = [ + "Exile_Item_EMRE", + "Exile_Item_GloriousKnakworst", + "Exile_Item_Surstromming", + "Exile_Item_SausageGravy", + "Exile_Item_Catfood", + "Exile_Item_ChristmasTinner", + "Exile_Item_BBQSandwich", + "Exile_Item_Dogfood", + "Exile_Item_BeefParts", + "Exile_Item_Cheathas", + "Exile_Item_Noodles", + "Exile_Item_SeedAstics", + "Exile_Item_Raisins", + "Exile_Item_Moobar", + "Exile_Item_InstantCoffee" + ]; + + #ifdef useCUP + + #endif + + #ifdef useRHS + + #endif + blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; + blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; + blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; + blck_explosives = blck_throwableExplosives + blck_otherExplosives; + blck_medicalItems = ["Exile_Item_InstaDoc","Exile_Item_Bandage","Exile_Item_Vishpirin"]; + blck_specialItems = blck_throwableExplosives + blck_medicalItems; + + blck_NVG = ["NVGoggles","NVGoggles_INDEP","NVGoggles_OPFOR","Exile_Item_XM8"]; + blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard", + "Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand","Exile_Item_MetalWire","Exile_Item_ExtensionCord","Exile_Item_JunkMetal"]; + blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_CanOpener","Exile_Item_Shovel"]; + +/*************************************************************************************** +DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION +Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays +for examples of how you can do this see \Major\Compositions.sqf +***************************************************************************************/ + + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + blck_lootCountsOrange = [8,32,8,35,16,2]; // Orange + blck_lootCountsGreen = [7,24,6,25,18,2]; // Green + blck_lootCountsRed = [5,16,4,10,6,1]; // Red + blck_lootCountsBlue = [4,12,3,6,6,1]; // Blue + + blck_BoxLoot_Orange = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","150Rnd_93x64_Mag"], + ["MMG_02_camo_F","150Rnd_93x64_Mag"], + ["MMG_02_sand_F","150Rnd_93x64_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",3,6], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",7,14], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,5], + // Marksman Pack Ammo + ["10Rnd_338_Mag",3,5], + ["10Rnd_338_Mag",3,5], + ["10Rnd_127x54_Mag" ,3,5], + ["10Rnd_127x54_Mag",3,5], + ["10Rnd_93x64_DMR_05_Mag" ,3,5], + ["10Rnd_93x64_DMR_05_Mag" ,3,5], + ["150Rnd_93x64_Mag",3,5], + ["130Rnd_338_Mag",3,5] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2], + ["optic_Arco",1,3], + ["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], + ["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10], + ["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10], + ["Exile_Item_MetalBoard",1,10],["Exile_Item_ExtensionCord",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10], + ["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10] + // + ], + [//Items + ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], + ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], + ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], + ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], + ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], + ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], + ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], + ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], + ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], + ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] + ] + ]; + + blck_BoxLoot_Green = + [ + [// Weapons + // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], + [//Magazines + // Format is ["Magazine name, Minimum number to add, Maximum number to add], + ["3rnd_HE_Grenade_Shell",2,4], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",6,12], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,3], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["130Rnd_338_Mag",3,5] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], + ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], + ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5], + ["Exile_Item_Cement",2,8],["Exile_Item_Sand",2,8],["Exile_Item_Cement",2,8] + ], + [//Items + ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,6],["Exile_Item_Vishpirin",1,6], + ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], + ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], + ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], + ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], + ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], + ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], + ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], + ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], + ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] + ] + ]; + + blck_BoxLoot_Blue = + [ + [// Weapons + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"] + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",1,2], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",3,10], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,4], + ["HandGrenade",1,3], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2], + ["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4] + ], + [//Items + ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], + ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], + ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], + ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], + ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], + ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], + ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], + ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], + ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], + ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] + ] + ]; + + blck_BoxLoot_Red = + [ + [// Weapons + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + //["arifle_MX_SW_Black_Hamr_pointer_F","100Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], + [//Magazines + + ["3rnd_HE_Grenade_Shell",1,5],["30Rnd_65x39_caseless_green",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_45ACP_Mag_SMG_01",3,6],["20Rnd_556x45_UW_mag",3,6], + ["10Rnd_762x51_Mag",3,6],["20Rnd_762x51_Mag",3,7],["200Rnd_65x39_cased_Box",3,6],["100Rnd_65x39_caseless_mag_Tracer",3,6], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], + ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], + ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5], + ["Exile_Item_Cement",2,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5] + ], + [//Items + ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Exile_Item_Energydrink",1,4],["Exile_Item_Beer",1,3],["Rangefinder",1,2], + ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3] + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], + ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], + ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], + ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], + ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], + ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], + ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] + ] + ]; + + + +blck_contructionLootExile = [ + [// Weapons + + ], + [//Magazines + + ], + [ // Optics + + ], + [// Materials and supplies + + // + ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], + ["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_MetalScrews",3,10], + ["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",2,10],["Exile_Item_Cement",2,10] + ], + [//Items + "Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer", + "Exile_Item_CordlessScrewdriver","Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_Shovel","Exile_Item_Wrench","Exile_Item_CordlessScrewdriver", + "Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_DuctTape","Binocular","Rangefinder","ItemGPS","ItemMap","ItemCompass","ItemRadio","ItemWatch", + "Exile_Item_XM8" + ], + [ // Backpacks + + ] +]; +blck_contructionLoot = blck_contructionLootExile; +blck_supportLootExile = [ + [// Weapons + + ], + [//Magazines + + ], + [ // Optics + + ], + [// Materials and supplies + + ], + [//Items + ["Exile_Item_Matches",2,4],["Exile_Item_CookingPot",2,4],["Exile_Item_CanOpener",2,4], + ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], + ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], + ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], + ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + + ] +]; + +blck_supportLoot = blck_supportLootExile; + +blck_highPoweredLoot = [ + [// Weapons + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","150Rnd_93x64_Mag"], + ["MMG_02_camo_F","150Rnd_93x64_Mag"], + ["MMG_02_sand_F","150Rnd_93x64_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"], + ["launch_NLAW_F","NLAW_F"], + ["launch_RPG32_F","RPG7_F"], + ["launch_B_Titan_F","Titan_AT"], + ["launch_I_Titan_F","Titan_AT"], + ["launch_O_Titan_F","Titan_AP"], + ["launch_B_Titan_short_F","Titan_AA"], + ["launch_I_Titan_short_F","Titan_AA"], + ["launch_O_Titan_short_F","Titan_AA"], + ["launch_RPG7_F","RPG32_F"], + ["launch_O_Vorona_brown_F","vorona_HEAT"], + ["launch_O_Vorona_green_F","Vorona_HE"] + ], + [//Magazines + ["NLAW_F",1,3], + ["RPG32_F",1,3], + ["RPG32_HE_F",1,3], + ["Titan_AA",1,3], + ["Titan_AT",1,3], + ["Titan_AP",1,3], + ["RPG7_F",1,3], + ["vorona_HEAT",1,3], + ["Vorona_HE",1,3], + //["10Rnd_338_Mag",1,5], + ["10Rnd_338_Mag",3,5], + //["10Rnd_127x54_Mag" ,1,5], + ["10Rnd_127x54_Mag",3,5], + ["10Rnd_93x64_DMR_05_Mag" ,3,5], + //["10Rnd_93x64_DMR_05_Mag" ,1,5], + ["150Rnd_93x64_Mag",2,5], + ["130Rnd_338_Mag",3,5] + ], + [ // Optics + + ], + [// Materials and supplies + + ], + [//Items + ], + [ // Backpacks + + ] +]; + // Time the marker remains after completing the mission in seconds - experimental not yet implemented + + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + + diag_log format["[blckeagls] Configurations for Exile Loaded"]; + + blck_configsExileLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index 95cb473..504fdcc 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -48,7 +48,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyOrange = [500, 750]; // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = false; + blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ @@ -160,9 +160,9 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR //"Exile_Car_HMMWV_M134_Desert", "Exile_Car_HMMWV_M2_Desert", "B_LSV_01_armed_F", - //"_MRAP_02_gmg_ghex_F", + "_MRAP_02_gmg_ghex_F", //"O_MRAP_02_hmg_ghex_F", - //"O_MRAP_03_gmg_ghex_F", + "O_MRAP_03_gmg_ghex_F", //"O_MRAP_03_hmg_ghex_F", "B_MBT_01_cannon_F", "B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index b002760..a4b3d78 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -49,7 +49,7 @@ ***********************************************************/ //////// // Headless Client Configurations - blck_useHC = false; // Experimental (do not use if you allow players to claim mission vehicles). + blck_useHC = true; // /////////////////////////////// // Kill message configurations @@ -202,6 +202,9 @@ // Enable / Disable Missions //////////////////// + // Maximum number of missions shown on the map at any one time. + blck_maxSpawnedMissions = 4; + //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; blck_enableGreenMissions = 1; @@ -209,11 +212,6 @@ blck_enableBlueMissions = 2; blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. - // Maximum number of missions shown on the map at any one time. - // Change this value to reduce the number of spawned missions at any one time. - //blck_maxSpawnedMissions = 9; // Set this to a value lower than the total number of missions if you want only some of the types of missions running at any one time. - blck_maxSpawnedMissions = blck_enableOrangeMissions + blck_enableGreenMissions + blck_enableRedMissions + blck_enableBlueMissions + blck_numberUnderwaterDynamicMissions; - //////////////////// // MISSION TIMERS //////////////////// diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index f1540cb..36d8dfd 100644 --- a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf +++ b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf @@ -3,6 +3,7 @@ for ghostridergaming By Ghostrider [GRG] Copyright 2016 + Last Modified 3-14-17 -------------------------- License @@ -16,21 +17,6 @@ diag_log "[blckeagls] Loading Configuration Overides"; -/* - See the examples below as a guide for adding configs that are unique for each of several servers. -*/ -/* -private["_startTime"]; -_startTime = diag_tickTime; -_world = toLower format ["%1", worldName]; -private["_nightAccel","_dayAccel","_duskAccel"]; -switch (_world) do { - case "altis":{_nightAccel = 3;_dayAccel=0.5; _duskAccel = 3;}; - case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;}; -}; - switch (toLower (worldName)) do { case "altis": @@ -82,9 +68,9 @@ switch (toLower (worldName)) do blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = ((_serverUpTime + 2)/_daylight); // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration + blck_timeAccelerationDay = 1.5; // Daytime time accelearation + blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation + blck_timeAccelerationNight = (12); // Nighttim time acceleration }; case "esseker": { @@ -116,28 +102,133 @@ switch (toLower (worldName)) do _sunset = _arr select 1; _time = dayTime; _daylight = _sunset - _sunrise; - + systemChat format["%1",_daylight]; + systemChat format["TimeAcelDay = %1", _daylight / 2.5]; blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. blck_timeAccelerationDay = (_daylight / 2.5); // Daytime time accelearation blck_timeAccelerationDusk = 8; // Dawn/dusk time accelearation blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration - blck_enableOrangeMissions = -1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = -2; - blck_enableBlueMissions = -1; - blck_numberUnderwaterDynamicMissions = -3; - blck_enableHunterMissions = -1; - blck_enableScoutsMissions = -1; + blck_enableOrangeMissions = 1; + blck_enableGreenMissions = 1; + blck_enableRedMissions = 1; + blck_enableBlueMissions = 1; + blck_numberUnderwaterDynamicMissions = 3; + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 1; blck_maxCrashSites = 3; - }; + }; + case "lythium": + { + blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. + blck_timeAccelerationDay = 5.5; // Daytime time accelearation + blck_timeAccelerationDusk = 7; // Dawn/dusk time accelearation + blck_timeAccelerationNight = 8; // Nighttim time acceleration + blck_enableOrangeMissions = 1; + blck_enableGreenMissions = 1; + blck_enableRedMissions = 1; + blck_enableBlueMissions = 1; + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 1; + blck_maxCrashSites = 3; + blck_numberUnderwaterDynamicMissions = -3; + }; }; -*/ +if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in \custom_server\compiles\blck_variables.sqf +{ + // Used primarily for debugging. + diag_log "[blckeagls] Debug seting is ON, Custom configurations used"; -/* - You can define configs for additional mods or loadouts here -*/ -/* + //blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. + //blck_timeAccelerationDay = 1; // Daytime time accelearation + //blck_timeAccelerationDusk = 18; // Dawn/dusk time accelearation + //blck_timeAccelerationNight = 24; // Nighttim time acceleration + + blck_useHC = true; + + blck_maxSpawnedMissions = 15; + blck_mainThreadUpdateInterval = 10; + blck_enableOrangeMissions = 1; + blck_enableGreenMissions = -1; + blck_enableRedMissions = -1; + blck_enableBlueMissions = -1; + blck_numberUnderwaterDynamicMissions = -3; + blck_enableHunterMissions = -1; + blck_enableScoutsMissions = -1; + blck_maxCrashSites = -3; + + //blck_killEmptyStaticWeapons = false; + //blck_killEmptyAIVehicles = true; + blck_cleanupCompositionTimer = 20; // Time after mission completion at which items in the composition are deleted. + blck_AliveAICleanUpTimer = 20; // Time after mission completion at which any remaining live AI are deleted. + blck_bodyCleanUpTimer = 20; + blck_vehicleDeleteTimer = 20; + blck_MissionTimeout = 30; + + blck_noPatrolHelisOrange = 1; + //blck_chanceHeliPatrolOrange = 1; + //blck_chanceParaOrange = 1; + //blck_chanceHeliPatrolBlue = -1; + //blck_noPatrolHelisBlue = -1; + //blck_chanceParaBlue = -1; // [0 - 1] set to 0 to deactivate and 1 to always have paratroops spawn over the center of the mission. This value can be a range as well [0.1,0.3] + //blck_noParaBlue = -3; // [1-N] + //blck_paraTriggerDistanceBlue = 400; + + //blck_chanceHeliPatrolBlue = 1; + blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions + //blck_SpawnEmplaced_Green = 1; // Number of static weapons at Green Missions + //blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions + //blck_SpawnEmplaced_Red = 1; + + blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions + //blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions + //blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions + //blck_SpawnVeh_Red = 1; + + blck_TMin_Blue = 7; + blck_TMin_Red = 10; + blck_TMin_Green = 13; + blck_TMin_Orange = 16; + blck_TMin_Hunter = 20; + blck_TMin_Scouts = 20; + blck_TMin_Crashes = 5; + blck_TMin_UMS = 20; + //Maximum Spawn time between missions in seconds + blck_TMax_Blue = 12; + blck_TMax_Red = 15; + blck_TMax_Green = 17; + blck_TMax_Orange = 21; + blck_TMax_Hunter = 22; + blck_TMax_Scouts = 22; + blck_TMax_Crashes = 15; + blck_TMax_UMS = 25; + + blck_MinAI_Orange = 1; + blck_MaxAI_Orange = 2; + blck_AIGrps_Orange = 0; + + //blck_MinAI_Blue = 1; + //blck_MaxAI_Blue = 2; + //blck_AIGrps_Blue = 1; + + //blck_AIPatrolVehicles = ["Exile_Car_MB4WDOpen"]; + /* + blck_SkillsBlue = [ + ["aimingAccuracy",0.01], + ["aimingShake",0.01], + ["aimingSpeed",0.01], + ["endurance",0.01], + ["spotDistance",0.01], + ["spotTime",0.01], + ["courage",0.01], + ["reloadSpeed",0.80], + ["commanding",0.8], + ["general",1.00] + ]; + */ +}; + +#ifdef blck_useCUP blck_CUPWeapons = [ "CUP_lmg_L7A2", "CUP_lmg_L110A1", @@ -626,6 +717,9 @@ blck_CUPHeadgear = [ "CUP_H_USMC_Helmet_Pilot", "CUP_H_USMC_Officer_Cap" ]; +#endif + +#ifdef blck_useRHS blck_RHS_Weapons = [ "rhs_weap_hk416d10", "rhs_weap_hk416d10_LMT", @@ -1083,6 +1177,8 @@ blck_RHS_WeaponsSAF = [ "rhs_weap_g36kv_ag36", "rhs_weap_m84" ]; +#endif + blck_NIA_WeaponsLMG = [ "hlc_lmg_M249E2", @@ -1266,4 +1362,3 @@ blck_NIA_WeaponsSniper = [ "hlc_rifle_psg1", "hlc_rifle_psg1A1" ]; -*/ \ No newline at end of file diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 24af3a0..4be3792 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -12,7 +12,7 @@ */ -#define useAPEX +//#define useAPEX //#define blck_milServer //#define blck_useCUP //#define blck_useRHS @@ -21,7 +21,9 @@ // Do not touch anything below this line /////////////////////////// +//#define useDynamicSimulation //#define blck_debugMode +//#define GRG_TestServer #define blck_triggerLoopCompleteTime 40*60 diff --git a/@GMS/addons/custom_server/init/blck_defines.hpp b/@GMS/addons/custom_server/init/blck_defines.hpp new file mode 100644 index 0000000..80dae03 --- /dev/null +++ b/@GMS/addons/custom_server/init/blck_defines.hpp @@ -0,0 +1,37 @@ +/* + for ghostridergaming + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#define useAPEX +//#define useDynamicSimulation +//#define blck_debugMode +#define blck_triggerLoopCompleteTime 40*60 +#define blck_milServer +//#define GRG_TestServer +#define blck_useCUP +#define blck_useRHS + +//////////////////////////// +// Do not touch anything below this line +/////////////////////////// +#define onFoot 1 +#define inVehicle 2 + +// defines for static group spawners +#define staticPatrolTriggerRange 2000 +#define groupParameters 0 +#define patrolGroup 1 +#define groupSpawned 2 +#define timesSpawned 3 +#define respawnAt 4 + + diff --git a/@GMS/addons/custom_server/init/blck_init_HC.sqf b/@GMS/addons/custom_server/init/blck_init_HC.sqf index ad678eb..ba18f38 100644 --- a/@GMS/addons/custom_server/init/blck_init_HC.sqf +++ b/@GMS/addons/custom_server/init/blck_init_HC.sqf @@ -46,10 +46,6 @@ blck_configsLoaded = nil; // Load any user-defined specifications or overrides call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; -#ifdef GRGserver -diag_log "[blckeagls] Running GRG Version"; -#endif - switch (blck_simulationManager) do case 1: {diag_log "[blckeagls] dynamic simulation manager enabled"}; case 2: {diag_log "[blckeagls] blckeagls simulation manager enabled"}; diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index 10061b0..333d131 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -11,8 +11,7 @@ if ( !(isServer) || hasInterface) exitWith{}; -//#include "blck_defines.hpp"; -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "blck_defines.hpp"; if !(isNil "blck_Initialized") exitWith{}; private _blck_loadingStartTime = diag_tickTime; @@ -62,6 +61,10 @@ waitUntil {(isNil "blck_worldSet") isEqualTo false;}; waitUntil{blck_worldSet}; blck_worldSet = nil; +#ifdef GRG_TestServer +//[] execVM "\q\addons\custom_server\init\testCrateLoading.sqf"; +#endif + // set up the lists of available missions for each mission category diag_log "[blckeagls] Loading Mission Lists"; #include "\q\addons\custom_server\Missions\GMS_missionLists.sqf"; @@ -78,8 +81,8 @@ switch (blck_simulationManager) do case 0: {diag_log "[blckeagls] simulation management disabled"}; }; -diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; -diag_log format["blckeagls] waiting for players to join ---- >>>>"]; +diag_log "[blckeagls] Running GhostriderGaming Version"; +#endif if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then { @@ -89,6 +92,7 @@ if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then diag_log "[blckeagls] spawning Missions"; }; + if (blck_spawnStaticLootCrates) then { // Start the static loot crate spawner @@ -106,23 +110,29 @@ if (true /*blck_blacklistTraderCities*/) then { execVM "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf"; }; - +diag_log format["[blckeagls] _init_server: blck_enableOrangeMissions = %1",blck_enableOrangeMissions]; //Start the mission timers if (blck_enableOrangeMissions > 0) then { //[_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange] spawn blck_fnc_missionTimer;//Starts major mission system (Orange Map Markers) [_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange,blck_enableOrangeMissions] call blck_fnc_addMissionToQue; }; + +diag_log format["[blckeagls] _init_server: blck_enableGreenMissions = %1",blck_enableGreenMissions]; if (blck_enableGreenMissions > 0) then { //[_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green] spawn blck_fnc_missionTimer;//Starts major mission system 2 (Green Map Markers) [_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green,blck_enableGreenMissions] call blck_fnc_addMissionToQue; }; + +diag_log format["[blckeagls] _init_server: blck_enableRedMissions = %1",blck_enableRedMissions]; if (blck_enableRedMissions > 0) then { //[_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red] spawn blck_fnc_missionTimer;//Starts minor mission system (Red Map Markers)//Starts minor mission system 2 (Red Map Markers) [_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red,blck_enableRedMissions] call blck_fnc_addMissionToQue; }; + +diag_log format["[blckeagls] _init_server: blck_enableBlueMissions = %1",blck_enableBlueMissions]; if (blck_enableBlueMissions > 0) then { //[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue] spawn blck_fnc_missionTimer;//Starts minor mission system (Blue Map Markers) diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 8949d0d..03c8d35 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,6 +1,6 @@ private ["_version","_versionDate"]; -blck_version = "6.86 Build 156"; +blck_version = "6.88 Build 160"; _blck_version = blck_version; -_blck_versionDate = "10-22-18 1:30 AM"; +_blck_versionDate = "11-19-18 1:30 AM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version; diff --git a/@GMS/addons/custom_server/init/testCrateLoading.sqf b/@GMS/addons/custom_server/init/testCrateLoading.sqf new file mode 100644 index 0000000..df3e845 --- /dev/null +++ b/@GMS/addons/custom_server/init/testCrateLoading.sqf @@ -0,0 +1,18 @@ + +uiSleep 5; +diag_log format["<< ---- START TEST Crate Loading ---- >>"]; +_coords = [12000,12000,0]; +//_loot = blck_supportLoot; //[causes problems] blck_highPoweredLoot; // [causes problems] blck_contructionLoot ; //blck_BoxLoot_Orange; +_loot = blck_supportLoot; +_lootCounts = [100,100,100,100,100,100]; +_aiDifficultyLevel = "Orange"; +for "_i" from 1 to 100 do +{ + diag_log format["testCrateLoading: pass %1",_i]; + _crateType = selectRandom blck_crateTypes; + _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + [_crate,_loot,_lootCounts] call blck_fnc_fillBoxes; + uiSleep 5; + diag_log format["testCrateLoading: crate inventory = %1",getItemCargo _crate]; +}; + From b7c9bf3b470bcdbd44a5bcdca008410f5cd9b74a Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 18 Nov 2018 14:31:27 -0500 Subject: [PATCH 02/23] streamlined compile of functions (credit: HeMan) --- .../custom_server/Compiles/blck_functions.sqf | 294 ++++++++++-------- 1 file changed, 160 insertions(+), 134 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 6d3ecdf..11d4b05 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -13,145 +13,171 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// General functions -blck_fnc_waitTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"; -blck_fnc_timedOut = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"; -blck_fnc_FindSafePosn = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"; -blck_fnc_randomPosition = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf";// find a randomPosn. see script for details. -blck_fnc_findPositionsAlongARadius = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"; -blck_fnc_giveTakeCrypto = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"; -blck_fnc_timeAcceleration = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"; -blck_fnc_getModType = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"; // Test if Epoch or Exile is loaded -blck_fnc_groupsOnAISide = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"; // Returns the number of groups on the side used by AI -blck_fnc_emptyObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; -blck_fnc_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"; -blck_fnc_playerInRangeArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"; // GMS_fnc_playerInRangeArray -blck_fnc_mainThread = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"; -blck_fnc_allPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"; -blck_fnc_addItemToCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"; -blck_fnc_loadLootItemsFromArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"; -blck_fnc_getNumberFromRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"; -blck_fnc_spawnMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"; -blck_fnc_missionCompleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"; -blck_fnc_deleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"; -blck_fnc_updateMarkerAliveCount = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"; -blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"; -blck_fnc_spawnMissionEmplacedRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"; -blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"; -blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"; -blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; -blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"; -blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"; +private _functions = [ + // General functions + ["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"], + ["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], + ["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"], + ["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details. + ["blck_fnc_findPositionsAlongARadius","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"], + ["blck_fnc_giveTakeCrypto","\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"], + ["blck_fnc_timeAcceleration","\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"], + ["blck_fnc_getModType","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"], // Test if Epoch or Exile is loaded + ["blck_fnc_groupsOnAISide","\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"], // Returns the number of groups on the side used by AI + ["blck_fnc_emptyObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"], + ["blck_fnc_playerInRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"], + ["blck_fnc_playerInRangeArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"], + ["blck_fnc_mainThread","\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"], + ["blck_fnc_allPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"], + ["blck_fnc_addItemToCrate","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"], + ["blck_fnc_loadLootItemsFromArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"], + ["blck_fnc_getNumberFromRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"], + ["blck_fnc_spawnMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"], + ["blck_fnc_missionCompleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"], + ["blck_fnc_deleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"], + ["blck_fnc_updateMarkerAliveCount","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"], + ["blck_fnc_addMoneyToObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"], + ["blck_fnc_spawnMissionEmplacedRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"], + ["blck_fnc_spawnMissionLootBoxesRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"], + ["blck_fnc_spawnSingleObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"], + //["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"], + ["blck_fnc_spawnMissionLandscapeRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"], + ["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"], +// ["blck_fnc_getTraderCitiesEpoch","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf"], +// ["blck_fnc_getTraderCitesExile","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf"], -// Player-related functions -blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"; -blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"; // Send messages to players regarding Missions + // Player-related functions + ["blck_fnc_rewardKiller","\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"], + ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions -// Mission-related functions -blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"; -blck_fnc_selectAISidearms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"; -blck_fnc_selectAIUniforms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"; -blck_fnc_selectAIHeadgear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"; -blck_fnc_selectAIVests = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"; -blck_fnc_selectAIBackpacks = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"; -blck_fnc_selectChanceHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"; -blck_fnc_selectMissionHelis = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"; -blck_fnc_selectNumberAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"; -blck_fnc_selectNumberParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"; -blck_fnc_selectChanceParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"; -blck_fnc_addMissionToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"; // -blck_fnc_updateMissionQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"; // -blck_fnc_spawnPendingMissions = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"; // -blck_fnc_addLiveAItoQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"; -blck_fnc_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; // -blck_fnc_spawnCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"; // Simply spawns a crate of a specified type at a specific position. -blck_fnc_spawnMissionCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"; -blck_fnc_cleanupObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"; -blck_fnc_spawnCompositionObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"; -blck_fnc_spawnRandomLandscape = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"; -blck_fnc_spawnMissionVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"; -blck_fnc_spawnEmplacedWeaponArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"; -blck_fnc_spawnMissionAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"; -blck_fnc_spawnMissionLootVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"; -blck_fnc_fillBoxes = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"; // Adds items to an object according to passed parameters. See the script for details. -blck_fnc_smokeAtCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"; // Spawns a wreck and adds smoke to it -blck_fnc_spawnMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"; // Deploys mines at random locations around the mission center -blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"; // clears mines in an array passed as a parameter -blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission. -blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"; -blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"; -blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"; -blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"; -blck_fnc_crateMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"; -blck_fnc_garrisonBuilding_RelPosSystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"; -blck_fnc_garrisonBuilding_ATLsystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"; -blck_fnc_spawnGarrisonInsideBuilding_ATL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"; -blck_fnc_spawnGarrisonInsideBuilding_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"; + // Mission-related functions + ["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"], + ["blck_fnc_selectAISidearms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"], + ["blck_fnc_selectAIUniforms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"], + ["blck_fnc_selectAIHeadgear","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"], + ["blck_fnc_selectAIVests","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"], + ["blck_fnc_selectAIBackpacks","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"], + ["blck_fnc_selectChanceHeliPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"], + ["blck_fnc_selectMissionHelis","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"], + ["blck_fnc_selectNumberAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"], + ["blck_fnc_selectNumberParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"], + ["blck_fnc_selectChanceParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"], + ["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"], + ["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"], + ["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"], + ["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"], + ["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"], + ["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position. + ["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"], + ["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"], + ["blck_fnc_spawnCompositionObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"], + ["blck_fnc_spawnRandomLandscape","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"], + ["blck_fnc_spawnMissionVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"], + ["blck_fnc_spawnEmplacedWeaponArray","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"], + ["blck_fnc_spawnMissionAI","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"], + ["blck_fnc_spawnMissionLootVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"], + ["blck_fnc_fillBoxes","\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"], // Adds items to an object according to passed parameters. See the script for details. + ["blck_fnc_smokeAtCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"], // Spawns a wreck and adds smoke to it + ["blck_fnc_spawnMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"], // Deploys mines at random locations around the mission center + ["blck_fnc_clearMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"], // clears mines in an array passed as a parameter + ["blck_fnc_signalEnd","\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"], // deploy smoke grenades at loot crates at the end of the mission. + ["blck_fnc_endMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"], + ["blck_fnc_paraDropObject","\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"], + ["blck_fnc_loadMissionCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"], + ["blck_fnc_crateMoved","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"], + ["blck_fnc_crateMarker","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"], + ["blck_fnc_garrisonBuilding_RelPosSystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"], + ["blck_fnc_garrisonBuilding_ATLsystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"], + ["blck_fnc_spawnGarrisonInsideBuilding_ATL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"], + ["blck_fnc_spawnGarrisonInsideBuilding_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"], + + // Group-related functions + ["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units] + ["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group + ["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat + //["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"], + ["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"], + //["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"], +// ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"], + ["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups + ["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"], + ["blck_fnc_create_AI_Group","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI. + + // Functions specific to vehicles, whether wheeled, aircraft or static + ["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"], + ["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"], + ["blck_fnc_protectVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"], + ["blck_fnc_configureMissionVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"], + ["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"], + ["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"], + ["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"], + ["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"], + ["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"], + ["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"], + ["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"], + ["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"], + ["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"], + ["blck_fnc_deleteAIVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"], + ["blck_fnc_destroyVehicleAndCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"], + ["blck_fnc_reloadVehicleAmmo","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"], + ["blck_fnc_scanForPlayersNearVehicles","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"], + ["blck_fnc_revealNearbyPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"], -// Group-related functions -blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units] -blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"; // Set default waypoints for a group -blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat -blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"; -blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups -blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"; -blck_fnc_create_AI_Group = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"; // create a group for which other functions spawn AI. - -// Functions specific to vehicles, whether wheeled, aircraft or static -blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"; -blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"; -blck_fnc_protectVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"; -blck_fnc_configureMissionVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"; -blck_fnc_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"; -blck_fnc_spawnMissionReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"; -blck_fnc_spawnMissionHeli = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"; -blck_EH_AIVehicle_HandleHit = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"; -blck_fnc_HandleAIVehicleHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"; -blck_EH_VehicleKilled = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"; -blck_fnc_processAIVehicleKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"; -blck_fnc_selectPatrolVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"; -blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"; -blck_fnc_deleteAIVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"; -blck_fnc_destroyVehicleAndCrew = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"; -blck_fnc_reloadVehicleAmmo = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"; -blck_fnc_scanForPlayersNearVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"; -blck_fnc_revealNearbyPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"; + // functions to support Units + ["blck_fnc_removeGear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"], // Strip an AI unit of all gear. + ["blck_fnc_spawnUnit","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"], // spawn individual AI + ["blck_EH_AIKilled","\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"], // Event handler to process AI deaths + ["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"], + //["blck_EH_AIFiredNear","\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf"], + ["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"], + ["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"], + ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"], + ["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"], + ["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"], + ["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"], + ["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"], + ["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"], + ["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"], + ["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time. + ["blck_fnc_setSkill","\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"], + ["blck_fnc_cleanupAliveAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"], + ["blck_fnc_deleteAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"], + ["blck_fnc_processAIHit","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"], + ["blck_fnc_spawnHostage","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"], + ["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"], + ["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"], + ["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"], + ["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"], + ["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"], -// functions to support Units -blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear. -blck_fnc_spawnUnit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"; // spawn individual AI -blck_EH_AIKilled = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"; // Event handler to process AI deaths -blck_EH_AIHit = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"; -blck_EH_AIFiredNear = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf"; -blck_EH_unitWeaponReloaded = "\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"; -blck_EH_animDone = "\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"; -blck_fnc_processAIKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"; -blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"; -blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"; -blck_fnc_alertNearbyUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"; -blck_fnc_alertGroupUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"; -blck_fnc_alertNearbyVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"; -blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"; -blck_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"; // handles deletion of AI bodies and gear when it is time. -blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"; -blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"; -blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"; -blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"; -blck_fnc_spawnHostage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"; -blck_fnc_spawnLeader = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"; -blck_fnc_spawnCharacter = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"; -blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"; -blck_fnc_nextAnim = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"; -blck_fnc_placeCharacterInBuilding = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"; + // HC support functions + ["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"], +// ["blck_fnc_HC_XferVehicle","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf"], + ["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"], +// ["blck_fnc_HC_groupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf"], + ["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"], +// ["blck_fnc_HC_vehicleMonitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf"], +// ["blck_fnc_HC_monitorHC","\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf"], + ["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"], + ["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"], + ["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"], + ["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"] +]; -// HC support functions -blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"; -blck_fnc_onPlayerDisconnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"; -blck_fnc_HC_monitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"; -blck_fnc_HC_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"; -blck_fnc_HC_getListConnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"; -blck_fnc_HC_leastBurdened = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"; -blck_fnc_HC_countGroupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"; +{ + _x params ["_name","_path"]; + missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; +} foreach _functions; + + +#ifdef blck_debugMode +if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_HC_monitoredVehicles %3",diag_tickTime,_vehList,blck_HC_monitoredVehicles];}; +#endif + +#ifdef GRGserver +blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; +diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; +#endif onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; //diag_log "[blckeagls] Functions Loaded"; From a5b40c08c35cc206225d4ac8ca75cdaa55247470 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 18 Nov 2018 15:47:32 -0500 Subject: [PATCH 03/23] Removed some unnecessary code or commented out code. Thanks to HeMan for working on this. --- .../UMS/GMS_UMS_StaticMissions_Lists.sqf | 1 - .../UMS/GMS_UMS_StaticMissions_init.sqf | 23 +++++-------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf index 9b444bb..a023c0a 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf @@ -20,4 +20,3 @@ _staticMissions = [ //["Exile","Altis","staticMissionExample2_Exile.sqf"] ]; -//diag_log "[blckeagls] GMS_UMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf index 5ed803e..3e6853c 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf @@ -9,28 +9,19 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//if (!isServer) exitWith{}; - -//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf "; //static mission descriptor for code: [position,level, numAI or [min,maxAI],patrolRadius, respawn, group[groupNull],spawnedAt[0],respawn[0]] #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\Missions\UMS\GMS_UMS_StaticMissions_Lists.sqf"; -//while{ (isNil "blck_sm_functionsLoaded"; uiSleep 0.1]; -uiSleep 3; + + private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"]; -//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf "; -_mod = toLower(call blck_fnc_getModType); -//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",_mod]; -//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init <_staticMissions> = %1",_staticMissions]; -//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf "; -_map = toLower worldName; -//diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",_map]; +_mod = toLower(toLower blck_modType); + + { - diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",_x]; - diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",_map,_mod]; - if ((_map) isEqualTo toLower(_x select 1)) then + if ((toLower worldName) isEqualTo toLower(_x select 1)) then { if ((_mod isEqualTo "epoch") && (toLower(_x select 0) isEqualTo "epoch")) then { @@ -43,8 +34,6 @@ _map = toLower worldName; call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\UMS\staticMissions\%1",(_x select 2)]; }; }; - uiSleep 1; }forEach _staticMissions; -//diag_log "[blckeagls] GMS__UMS_StaticMissions_init.sqf "; From 782bba997ea775361073d2d5fb2b094201bb7813 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 18 Nov 2018 16:08:53 -0500 Subject: [PATCH 04/23] More code optimization from HeMan --- .../Static/Code/GMS_fnc_sm_init_functions.sqf | 60 ++++++++++--------- .../Static/GMS_StaticMissions_Lists.sqf | 4 +- .../Static/GMS_StaticMissions_init.sqf | 6 +- .../UMS/GMS_UMS_StaticMissions_Lists.sqf | 4 +- .../Missions/UMS/GMS_UMS_configurations.sqf | 5 +- 5 files changed, 38 insertions(+), 41 deletions(-) diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_init_functions.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_init_functions.sqf index 34f4f98..60187ea 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_init_functions.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_init_functions.sqf @@ -30,34 +30,36 @@ blck_fnc_sm_AddVehicle = compileFinal preprocessFileLineNumbers "\q\addons\cust blck_fnc_sm_AddAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddAircraft.sqf"; blck_fnc_sm_AddEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddEmplaced.sqf"; */ - -blck_fnc_sm_monitorStaticUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"; -blck_fnc_sm_monitorInfantry = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf"; -blck_fnc_sm_monitorScuba = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf"; -blck_fnc_sm_monitorVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf"; -blck_fnc_sm_monitorAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf"; -blck_fnc_sm_monitorShips = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf"; -blck_fnc_sm_monitorSubs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf"; -blck_fnc_sm_monitorEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf"; -blck_fnc_sm_monitorGarrisonsASL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf"; -blck_fnc_sm_monitorGarrisons_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf"; - -blck_fnc_sm_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf"; -blck_fnc_sm_spawnAirPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf"; -blck_fnc_sm_spawnEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"; -//blck_fnc_sm_spawnInfantryPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf"; -blck_fnc_sm_missionPatrolMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"; -//blck_fnc_sm_checkForPlayerNearMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf"; -blck_fnc_sm_spawnAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf"; -blck_fnc_sm_spawnEmplaceds = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"; -blck_fnc_sm_spawnInfantryPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf"; -blck_fnc_sm_spawnLootContainers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf"; -blck_fnc_sm_spawnObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf"; -blck_fnc_sm_spawnVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf"; -blck_fnc_sm_spawnBuildingGarrison_ASL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"; -blck_fnc_sm_spawnBuildingGarrison_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"; -blck_fnc_sm_spawnObjectASLVectorDirUp = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"; +private _functions = [ + ["blck_fnc_sm_monitorStaticUnits","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"], + ["blck_fnc_sm_monitorInfantry","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf"], + ["blck_fnc_sm_monitorScuba","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf"], + ["blck_fnc_sm_monitorVehicles","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf"], + ["blck_fnc_sm_monitorAircraft","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf"], + ["blck_fnc_sm_monitorShips","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf"], + ["blck_fnc_sm_monitorSubs","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf"], + ["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf"], + ["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf"], + ["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf"], + ["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf"], + ["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf"], + ["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], +// ["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf"], + ["blck_fnc_sm_missionPatrolMonitor","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"], +// ["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf"], + ["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf"], + ["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], + ["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf"], + ["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf"], + ["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf"], + ["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf"], + ["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"], + ["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"], + ["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"] +]; +{ + _x params ["_name","_path"]; + missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; +} foreach _functions; diag_log "[blckeagls] GMS_sm_init_functions.sqf "; - -blck_sm_functionsLoaded = true; diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf index 7ba591f..267856d 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -16,10 +16,10 @@ private ["_staticMissions"]; _staticMissions = [ // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; //["Epoch","Altis","template.sqf"], - //["Epoch","Altis","staticMissionExample2_Epoch.sqf"], + ["Epoch","Altis","staticMissionExample2_Epoch.sqf"], //["Epoch","Altis","destroyer.sqf"], //["Exile","Altis","template.sqf"], - //["Exile","Altis","staticMissionExample2_Exile.sqf"] + ["Exile","Altis","staticMissionExample2_Exile.sqf"] ]; diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf index bd94caf..b21812a 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -17,14 +17,11 @@ #include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_init_functions.sqf"; #include "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf"; -private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"]; blck_sm_monitoring = 0; blck_sm_groupDespawnTime = 30; blck_sm_patrolRespawnInterval = 30; -uiSleep 10; -_map = toLower worldName; { - if ((_map) isEqualTo toLower(_x select 1)) then + if ((toLower worldName) isEqualTo toLower(_x select 1)) then { if ((blck_ModType isEqualTo "Epoch") && (toLower(_x select 0) isEqualTo "epoch")) then { @@ -36,7 +33,6 @@ _map = toLower worldName; call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)]; }; }; - uiSleep 1; }forEach _staticMissions; diag_log "[blckeagls] GMS_StaticMissions Initialized.sqf "; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf index a023c0a..33662d8 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf @@ -16,7 +16,7 @@ private ["_staticMissions"]; _staticMissions = [ // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; - //["Epoch","Altis","staticMissionExample2_Epoch.sqf"], - //["Exile","Altis","staticMissionExample2_Exile.sqf"] + ["Epoch","Altis","staticMissionExample2_Epoch.sqf"], + ["Exile","Altis","staticMissionExample2_Exile.sqf"] ]; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf index 6ac7d6b..ff9bba0 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf @@ -9,7 +9,6 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private _modType = call blck_fnc_getModType; blck_UMS_uniforms = [ "U_I_Wetsuit", @@ -37,7 +36,7 @@ blck_UMS_weapons = "arifle_SDAR_F" ]; -if (_modType isEqualTo "Exile") then +if ((tolower blck_modType) isEqualTo "exile") then { blck_UMS_submarines = [ @@ -52,7 +51,7 @@ if (_modType isEqualTo "Exile") then "Exile_Container_SupplyBox" ]; }; -if (_modType isEqualTo "Epoch") then +if ((tolower blck_modType) isEqualTo "epoch") then { blck_UMS_submarines = [ From 6891c96136d5078eb8b9140cd04b261d9b986a08 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 18 Nov 2018 16:11:08 -0500 Subject: [PATCH 05/23] Inactivate default static land and UMS missions) --- .../Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf index 33662d8..a023c0a 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_Lists.sqf @@ -16,7 +16,7 @@ private ["_staticMissions"]; _staticMissions = [ // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; - ["Epoch","Altis","staticMissionExample2_Epoch.sqf"], - ["Exile","Altis","staticMissionExample2_Exile.sqf"] + //["Epoch","Altis","staticMissionExample2_Epoch.sqf"], + //["Exile","Altis","staticMissionExample2_Exile.sqf"] ]; From cff1ca109d5d6cbbbe492ad6b6e7a60afb31ee3f Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 10:02:30 -0500 Subject: [PATCH 06/23] Final updates to \Compiles\Functions These include HeMan's code tweaks and changes for V 6.88 --- .../Functions/GMS_fnc_addMoneyToObject.sqf | 6 +++--- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 18 ++++-------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf index 1520261..5848ad7 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf @@ -12,14 +12,14 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_obj","_difficulty"]; -private _mod = [] call blck_fnc_getModType; + #ifdef blck_debugMode { diag_log format["_fnc_addMoneyToOject: _this select %1 = %2",_foreachindex, _this select _foreachindex]; }forEach _this; #endif -if (_mod isEqualTo "Exile") then +if ((tolower blck_modType) isEqualTo "exile") then { switch (_difficulty) do { @@ -33,7 +33,7 @@ if (_mod isEqualTo "Exile") then }; }; -if (_mod isEqualTo "Epoch") then +if ((tolower blck_modType) isEqualTo "epoch") then { switch (_difficulty) do { diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index a3e2fcc..e8bf667 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -10,8 +10,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime]; - private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"]; _timer1sec = diag_tickTime; _timer5sec = diag_tickTime; @@ -22,19 +20,19 @@ _timer5min = diag_tickTime; while {true} do { uiSleep 1; - //diag_log format["mainThread:: -- > time = %1",diag_tickTime]; if (diag_tickTime > _timer1sec) then { [] call blck_fnc_vehicleMonitor; + #ifdef GRGserver + [] call blck_fnc_broadcastServerFPS; + #endif _timer1sec = diag_tickTime + 1; - //diag_log format["[blckeagls] _fnc_mainThread 1 Second Timer Handled | Timstamp %1",diag_tickTime]; }; if (diag_tickTime > _timer5sec) then { _timer5sec = diag_tickTime + 5; [] call blck_fnc_missionGroupMonitor; [] call blck_fnc_sm_missionPatrolMonitor; - //diag_log format["[blckeagls] _fnc_mainThread 5 Second Timer Handled | Timstamp %1",diag_tickTime]; }; if (diag_tickTime > _timer20sec) then { @@ -42,26 +40,19 @@ while {true} do [] call blck_fnc_cleanupObjects; [] call blck_fnc_cleanupDeadAI; [] call blck_fnc_scanForPlayersNearVehicles; - //[] call blck_fnc_cleanEmptyGroups; + [] call blck_fnc_cleanEmptyGroups; _timer20sec = diag_tickTime + 20; - //diag_log format["[blckeagls] _fnc_mainThread 20 Second Timer Handled | Timstamp %1",diag_tickTime]; }; if ((diag_tickTime > _timer1min)) then { - //diag_log format["_fnc_mainThread: 60 second events run at %1",diag_tickTime]; _timer1min = diag_tickTime + 60; - //diag_log format["_fnc_mainThread: blck_missionsRunning = %1 | blck_maxSpawnedMissions = %2", blck_missionsRunning,blck_maxSpawnedMissions]; [] call blck_fnc_spawnPendingMissions; - //diag_log format["_fnc_mainThread: blck_numberUnderwaterDynamicMissions = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_numberUnderwaterDynamicMissions,blck_dynamicUMS_MissionsRuning]; if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then { - //diag_log "Adding dynamic UMS Mission"; [] spawn blck_fnc_addDyanamicUMS_Mission; }; - //diag_log format["_fnc_mainThread: control returned to _fnc_mainThread from _fnc_addDynamicUMS_Mission at %1",diag_tickTime]; if (blck_useHC) then { - //diag_log format["_mainThread:: calling blck_fnc_passToHCs at diag_tickTime = %1",diag_tickTime]; [] call blck_fnc_HC_passToHCs; }; if (blck_useTimeAcceleration) then @@ -73,7 +64,6 @@ while {true} do //diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts]; diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts]; #endif - //diag_log format["[blckeagls] _fnc_mainThread 60 Second Timer Handled | Timstamp %1",diag_tickTime]; }; if (diag_tickTime > _timer5min) then { From ea9d6f122e8d05eceec1a561a6340efa5748cff5 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 10:04:28 -0500 Subject: [PATCH 07/23] Final Changes for V 6.88 Includes optimizations from HeMan --- .../Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf index b46f2df..5621221 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf @@ -14,7 +14,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #ifdef blck_debugMode -diag_log "_fnc_changeToMoveWaypoint: blck_debugMode enabled"; +//diag_log "_fnc_changeToMoveWaypoint: blck_debugMode enabled"; #endif private["_group","_wp","_wpPos","_dis","_arc","_dir","_newPos","_marker","_center","_minDis","_maxDis"]; From ce84757476067c9d5b63451f575ec147016f1dbd Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 10:08:01 -0500 Subject: [PATCH 08/23] Minor Code Tweaks Still have to consider HeMan's optimization for cleanupAliveAI --- .../custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf index c10490a..eab24c7 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf @@ -18,7 +18,7 @@ if (blck_debugLevel > 2) then {diag_log format["fnc_cleanupDeadAI called at time private["_aiList","_ai"]; _aiList = +blck_deadAI; { - if ( diag_tickTime > _x getVariable ["blck_cleanupAt",0] ) then // DBD_DeleteAITimer + if (diag_tickTime > _x getVariable ["blck_cleanupAt",0]) then { _ai = _x; { From 5fbc1d1505b5842fe508602daefde7dbb4a749cd Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 10:11:06 -0500 Subject: [PATCH 09/23] Build 162 --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 2 + .../Compiles/Units/GMS_fnc_cleanupDeadAI.sqf | 2 +- .../Vehicles/GMS_fnc_decomissionAIVehicle.sqf | 64 ---- .../custom_server/Compiles/blck_functions.sqf | 311 +++++++++--------- 4 files changed, 153 insertions(+), 226 deletions(-) delete mode 100644 @GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_decomissionAIVehicle.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index e8bf667..152885c 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -10,6 +10,8 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; +//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime]; + private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"]; _timer1sec = diag_tickTime; _timer5sec = diag_tickTime; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf index eab24c7..c10490a 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf @@ -18,7 +18,7 @@ if (blck_debugLevel > 2) then {diag_log format["fnc_cleanupDeadAI called at time private["_aiList","_ai"]; _aiList = +blck_deadAI; { - if (diag_tickTime > _x getVariable ["blck_cleanupAt",0]) then + if ( diag_tickTime > _x getVariable ["blck_cleanupAt",0] ) then // DBD_DeleteAITimer { _ai = _x; { diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_decomissionAIVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_decomissionAIVehicle.sqf deleted file mode 100644 index 890b1e0..0000000 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_decomissionAIVehicle.sqf +++ /dev/null @@ -1,64 +0,0 @@ -/* - By Ghostrider [GRG] - Copyright 2016 - Last updated 3-14-17 - - spawns a vehicle of _vehType and mans it with units in _group. - returns _veh, the vehicle spawned. - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -diag_log "Vehicle Decommisioning handler activated"; -params["_veh"]; - -if (_veh getVariable["GRG_vehType","none"] isEqualTo "emplaced") then // Deal with a static weapon -{ - if (blck_killEmptyStaticWeapons) then - { - if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];}; - _veh setDamage 1; - _veh setVariable["blck_DeleteAt",diag_tickTime + 60]; - } else { - [_veh] call blck_fnc_releaseVehicleToPlayers; - }; -}else { // Deal with vehicles - if (blck_killEmptyAIVehicles) then - { - if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle destroyed where vehicle = %1",_veh];}; - { - _veh setHitPointDamage [_x, 1]; - - } forEach ["HitLFWheel","HitLF2Wheel","HitRFWheel","HitRF2Wheel","HitEngine","HitLBWheel","HitLMWheel","HitRBWheel","HitRMWheel","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun","HitTurret","HitGun"]; - _veh setVariable["blck_DeleteAt",diag_tickTime + 60]; - } else { - if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: case of release vehicle = %1 to player with blck_monitoredVehicles = %2",_veh, blck_monitoredVehicles];}; - blck_monitoredVehicles = blck_monitoredVehicles - [_veh]; - if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: blck_monitoredVehicles updated to %1", blck_monitoredVehicles];}; - [_veh] call blck_fnc_releaseVehicleToPlayers; - }; -}; - -/* - -_ai_veh = _this select 0; - -_if (_ai_veh getVariable["disabled",false]) exitWith {}; - -_ai_veh setVariable["disabled",true]; -//_ai_veh_type = typeof _ai_veh; -//_ai_veh_name = name _ai_veh; - -_ai_veh setFuel 0; -_ai_veh setVehicleAmmo 0; -_ai_veh setAmmoCargo 0; - -_s = ["MOTOR", - "wheel_1_1_steering","wheel_2_1_steering","wheel_1_2_steering","wheel_2_2_steering", - "wheel_1_3_steering","wheel_2_3_steering","wheel_1_4_steering","wheel_2_4_steering"]; -{_ai_veh setHit [_x,1]} forEach _s; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 11d4b05..5a7f9bc 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -13,172 +13,161 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private _functions = [ - // General functions - ["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"], - ["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], - ["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"], - ["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details. - ["blck_fnc_findPositionsAlongARadius","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"], - ["blck_fnc_giveTakeCrypto","\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"], - ["blck_fnc_timeAcceleration","\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"], - ["blck_fnc_getModType","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"], // Test if Epoch or Exile is loaded - ["blck_fnc_groupsOnAISide","\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"], // Returns the number of groups on the side used by AI - ["blck_fnc_emptyObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"], - ["blck_fnc_playerInRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"], - ["blck_fnc_playerInRangeArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"], - ["blck_fnc_mainThread","\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"], - ["blck_fnc_allPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"], - ["blck_fnc_addItemToCrate","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"], - ["blck_fnc_loadLootItemsFromArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"], - ["blck_fnc_getNumberFromRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"], - ["blck_fnc_spawnMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"], - ["blck_fnc_missionCompleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"], - ["blck_fnc_deleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"], - ["blck_fnc_updateMarkerAliveCount","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"], - ["blck_fnc_addMoneyToObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"], - ["blck_fnc_spawnMissionEmplacedRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"], - ["blck_fnc_spawnMissionLootBoxesRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"], - ["blck_fnc_spawnSingleObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"], - //["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"], - ["blck_fnc_spawnMissionLandscapeRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"], - ["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"], -// ["blck_fnc_getTraderCitiesEpoch","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf"], -// ["blck_fnc_getTraderCitesExile","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf"], - - // Player-related functions - ["blck_fnc_rewardKiller","\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"], - ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions - - // Mission-related functions - ["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"], - ["blck_fnc_selectAISidearms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"], - ["blck_fnc_selectAIUniforms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"], - ["blck_fnc_selectAIHeadgear","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"], - ["blck_fnc_selectAIVests","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"], - ["blck_fnc_selectAIBackpacks","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"], - ["blck_fnc_selectChanceHeliPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"], - ["blck_fnc_selectMissionHelis","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"], - ["blck_fnc_selectNumberAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"], - ["blck_fnc_selectNumberParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"], - ["blck_fnc_selectChanceParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"], - ["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"], - ["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"], - ["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"], - ["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"], - ["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"], - ["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position. - ["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"], - ["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"], - ["blck_fnc_spawnCompositionObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"], - ["blck_fnc_spawnRandomLandscape","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"], - ["blck_fnc_spawnMissionVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"], - ["blck_fnc_spawnEmplacedWeaponArray","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"], - ["blck_fnc_spawnMissionAI","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"], - ["blck_fnc_spawnMissionLootVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"], - ["blck_fnc_fillBoxes","\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"], // Adds items to an object according to passed parameters. See the script for details. - ["blck_fnc_smokeAtCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"], // Spawns a wreck and adds smoke to it - ["blck_fnc_spawnMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"], // Deploys mines at random locations around the mission center - ["blck_fnc_clearMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"], // clears mines in an array passed as a parameter - ["blck_fnc_signalEnd","\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"], // deploy smoke grenades at loot crates at the end of the mission. - ["blck_fnc_endMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"], - ["blck_fnc_paraDropObject","\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"], - ["blck_fnc_loadMissionCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"], - ["blck_fnc_crateMoved","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"], - ["blck_fnc_crateMarker","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"], - ["blck_fnc_garrisonBuilding_RelPosSystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"], - ["blck_fnc_garrisonBuilding_ATLsystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"], - ["blck_fnc_spawnGarrisonInsideBuilding_ATL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"], - ["blck_fnc_spawnGarrisonInsideBuilding_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"], - - // Group-related functions - ["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units] - ["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group - ["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat - //["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"], - ["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"], - //["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"], -// ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"], - ["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups - ["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"], - ["blck_fnc_create_AI_Group","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI. - - // Functions specific to vehicles, whether wheeled, aircraft or static - ["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"], - ["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"], - ["blck_fnc_protectVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"], - ["blck_fnc_configureMissionVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"], - ["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"], - ["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"], - ["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"], - ["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"], - ["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"], - ["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"], - ["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"], - ["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"], - ["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"], - ["blck_fnc_deleteAIVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"], - ["blck_fnc_destroyVehicleAndCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"], - ["blck_fnc_reloadVehicleAmmo","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"], - ["blck_fnc_scanForPlayersNearVehicles","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"], - ["blck_fnc_revealNearbyPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"], - - // functions to support Units - ["blck_fnc_removeGear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"], // Strip an AI unit of all gear. - ["blck_fnc_spawnUnit","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"], // spawn individual AI - ["blck_EH_AIKilled","\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"], // Event handler to process AI deaths - ["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"], - //["blck_EH_AIFiredNear","\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf"], - ["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"], - ["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"], - ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"], - ["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"], - ["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"], - ["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"], - ["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"], - ["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"], - ["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"], - ["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time. - ["blck_fnc_setSkill","\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"], - ["blck_fnc_cleanupAliveAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"], - ["blck_fnc_deleteAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"], - ["blck_fnc_processAIHit","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"], - ["blck_fnc_spawnHostage","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"], - ["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"], - ["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"], - ["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"], - ["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"], - ["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"], - - // HC support functions - ["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"], -// ["blck_fnc_HC_XferVehicle","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf"], - ["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"], -// ["blck_fnc_HC_groupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf"], - ["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"], -// ["blck_fnc_HC_vehicleMonitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf"], -// ["blck_fnc_HC_monitorHC","\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf"], - ["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"], - ["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"], - ["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"], - ["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"] -]; - -{ - _x params ["_name","_path"]; - missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; -} foreach _functions; - - -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_HC_monitoredVehicles %3",diag_tickTime,_vehList,blck_HC_monitoredVehicles];}; -#endif +// General functions +blck_fnc_waitTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"; +blck_fnc_timedOut = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"; +blck_fnc_FindSafePosn = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"; +blck_fnc_randomPosition = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf";// find a randomPosn. see script for details. +blck_fnc_findPositionsAlongARadius = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"; +blck_fnc_giveTakeCrypto = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"; +blck_fnc_timeAcceleration = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"; +blck_fnc_getModType = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"; // Test if Epoch or Exile is loaded +blck_fnc_groupsOnAISide = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"; // Returns the number of groups on the side used by AI +blck_fnc_emptyObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; +blck_fnc_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"; +blck_fnc_playerInRangeArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"; // GMS_fnc_playerInRangeArray +blck_fnc_mainThread = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"; +blck_fnc_allPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"; +blck_fnc_addItemToCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"; +blck_fnc_loadLootItemsFromArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"; +blck_fnc_getNumberFromRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"; +blck_fnc_spawnMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"; +blck_fnc_missionCompleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"; +blck_fnc_deleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"; +blck_fnc_updateMarkerAliveCount = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"; +blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"; +blck_fnc_spawnMissionEmplacedRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"; +blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"; +blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"; +blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"; +blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"; +blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"; +//blck_fnc_getTraderCitiesEpoch = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf"; +//blck_fnc_getTraderCitesExile = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf"; #ifdef GRGserver blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; #endif +// Player-related functions +blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"; +blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"; // Send messages to players regarding Missions + +// Mission-related functions +blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"; +blck_fnc_selectAISidearms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"; +blck_fnc_selectAIUniforms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"; +blck_fnc_selectAIHeadgear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"; +blck_fnc_selectAIVests = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"; +blck_fnc_selectAIBackpacks = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"; +blck_fnc_selectChanceHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"; +blck_fnc_selectMissionHelis = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"; +blck_fnc_selectNumberAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"; +blck_fnc_selectNumberParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"; +blck_fnc_selectChanceParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"; +blck_fnc_addMissionToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"; // +blck_fnc_updateMissionQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"; // +blck_fnc_spawnPendingMissions = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"; // +blck_fnc_addLiveAItoQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"; +blck_fnc_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; // +blck_fnc_spawnCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"; // Simply spawns a crate of a specified type at a specific position. +blck_fnc_spawnMissionCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"; +blck_fnc_cleanupObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"; +blck_fnc_spawnCompositionObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"; +blck_fnc_spawnRandomLandscape = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"; +blck_fnc_spawnMissionVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"; +blck_fnc_spawnEmplacedWeaponArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"; +blck_fnc_spawnMissionAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"; +blck_fnc_spawnMissionLootVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"; +blck_fnc_fillBoxes = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"; // Adds items to an object according to passed parameters. See the script for details. +blck_fnc_smokeAtCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"; // Spawns a wreck and adds smoke to it +blck_fnc_spawnMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"; // Deploys mines at random locations around the mission center +blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"; // clears mines in an array passed as a parameter +blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission. +blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"; +blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"; +blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"; +blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"; +blck_fnc_crateMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"; +blck_fnc_garrisonBuilding_RelPosSystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"; +blck_fnc_garrisonBuilding_ATLsystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"; +blck_fnc_spawnGarrisonInsideBuilding_ATL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"; +blck_fnc_spawnGarrisonInsideBuilding_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"; + +// Group-related functions +blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units] +blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"; // Set default waypoints for a group +blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat +//blck_fnc_monitorWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_monitorWaypoints.sqf"; // periodically check for groups that have been led far from the mission +//blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"; +blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"; +//blck_fnc_changeToSentryWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"; // +//blck_fnc_setNextWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"; +blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups +blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"; +blck_fnc_create_AI_Group = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"; // create a group for which other functions spawn AI. + +// Functions specific to vehicles, whether wheeled, aircraft or static +blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"; +blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"; +blck_fnc_protectVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"; +blck_fnc_configureMissionVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"; +blck_fnc_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"; +blck_fnc_spawnMissionReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"; +blck_fnc_spawnMissionHeli = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"; +blck_EH_AIVehicle_HandleHit = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"; +blck_fnc_HandleAIVehicleHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"; +blck_EH_VehicleKilled = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"; +blck_fnc_processAIVehicleKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"; +blck_fnc_selectPatrolVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"; +blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"; +blck_fnc_deleteAIVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"; +blck_fnc_destroyVehicleAndCrew = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"; +blck_fnc_reloadVehicleAmmo = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"; +blck_fnc_scanForPlayersNearVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"; +blck_fnc_revealNearbyPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"; + +// functions to support Units +blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear. +blck_fnc_spawnUnit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"; // spawn individual AI +blck_EH_AIKilled = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"; // Event handler to process AI deaths +blck_EH_AIHit = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"; +blck_EH_AIFiredNear = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf"; +blck_EH_unitWeaponReloaded = "\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"; +blck_EH_animDone = "\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"; +blck_fnc_processAIKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"; +blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"; +blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"; +blck_fnc_alertNearbyUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"; +blck_fnc_alertGroupUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"; +blck_fnc_alertNearbyVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"; +blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"; +blck_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"; // handles deletion of AI bodies and gear when it is time. +blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"; +blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"; +blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"; +blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"; +blck_fnc_spawnHostage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"; +blck_fnc_spawnLeader = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"; +blck_fnc_spawnCharacter = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"; +blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"; +blck_fnc_nextAnim = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"; +blck_fnc_placeCharacterInBuilding = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"; + +// HC support functions +blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"; +//blck_fnc_HC_XferVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf"; +blck_fnc_onPlayerDisconnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"; +//blck_fnc_HC_groupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf"; +blck_fnc_HC_monitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"; +//blck_fnc_HC_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf"; +//blck_fnc_HC_monitorHC = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf"; +blck_fnc_HC_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"; +blck_fnc_HC_getListConnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"; +blck_fnc_HC_leastBurdened = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"; +blck_fnc_HC_countGroupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"; + onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; -//diag_log "[blckeagls] Functions Loaded"; +diag_log "[blckeagls] Functions Loaded"; blck_functionsCompiled = true; From 471079d365ef0e5799f79b76f848949c869a7d2d Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 10:40:57 -0500 Subject: [PATCH 10/23] Updates to _signalEnd from HeMan OK! --- .../Compiles/Missions/GMS_fnc_signalEnd.sqf | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf index 8a0a154..015c08c 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf @@ -13,37 +13,29 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - private ["_start","_bbr","_p1","_p2","_maxHeight","_signalCrate","_smokeShell","_light","_lightSource"]; - params["_crate",["_time",60]]; - _start = diag_tickTime; - //diag_log format["signalEnd.sqf: _this = %1, _crate = %2",_this, _crate]; - _smokeShell = selectRandom ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"]; - _lightSource = selectRandom ["Chemlight_green","Chemlight_red","Chemlight_yellow","Chemlight_blue"]; - //diag_log format["signalEnd.sqf: _smokeShell = %1",_smokeShell]; - // Determine crate height. Method is from: - // https://community.bistudio.com/wiki/boundingBoxReal - _bbr = boundingBoxReal _crate; - _p1 = _bbr select 0; - _p2 = _bbr select 1; - _maxHeight = abs ((_p2 select 2) - (_p1 select 2)); - - while {diag_tickTime - _start < (_time)} do // loop for 5 min accounting for the fact that smoke grenades do not last very long +private ["_start","_maxHeight","_smokeShell","_light","_lightSource"]; +params["_crate",["_time",60]]; +_start = diag_tickTime; +//diag_log format["signalEnd.sqf: _this = %1, _crate = %2",_this, _crate]; +_smokeShell = selectRandom ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"]; +_lightSource = selectRandom ["Chemlight_green","Chemlight_red","Chemlight_yellow","Chemlight_blue"]; +while {diag_tickTime - _start < (_time)} do // loop for 5 min accounting for the fact that smoke grenades do not last very long +{ + _smoke = _smokeShell createVehicle getPosATL _crate; + _smoke setPosATL (getPosATL _crate); + _smoke attachTo [_crate,[0,0,(0.5)]]; // put the smoke a fixed distance above the top of any object to make it as visible as possible + if(sunOrMoon < 0.2) then { - _smoke = _smokeShell createVehicle getPosATL _crate; - _smoke setPosATL (getPosATL _crate); - _smoke attachTo [_crate,[0,0,(_maxHeight + 0.35)]]; // put the smoke a fixed distance above the top of any object to make it as visible as possible - if(sunOrMoon < 0.2) then - { - _light = _lightSource createVehicle getPosATL _crate; - _light setPosATL (getPosATL _crate); - _light attachTo [_crate,[0,0,(_maxHeight + 0.35)]]; - }; - uiSleep 120; - detach _smoke; - deleteVehicle _smoke; - if(sunOrMoon < 0.2) then - { - detach _light; - deleteVehicle _light; - }; + _light = _lightSource createVehicle getPosATL _crate; + _light setPosATL (getPosATL _crate); + _light attachTo [_crate,[0,0,(_maxHeight + 0.35)]]; }; + uiSleep 120; + detach _smoke; + deleteVehicle _smoke; + if(sunOrMoon < 0.2) then + { + detach _light; + deleteVehicle _light; + }; +}; \ No newline at end of file From 9d91cba88f791f2a8f1e5208bcf909015f4b8b0d Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 11:15:55 -0500 Subject: [PATCH 11/23] HeMan's tweaks to SLS, Static and Static underwater missions. --- .../Static/GMS_StaticMissions_Lists.sqf | 4 +- .../Static/GMS_StaticMissions_init.sqf | 7 +- .../UMS/GMS_UMS_StaticMissions_init.sqf | 20 +- .../Missions/pullDynamicMission.sqf | 495 ------------------ .../custom_server/SLS/SLS_defines_exile.sqf | 278 +++++++++- .../custom_server/SLS/SLS_functions.sqf | 51 +- @GMS/addons/custom_server/SLS/SLS_init.sqf | 11 +- 7 files changed, 287 insertions(+), 579 deletions(-) delete mode 100644 @GMS/addons/custom_server/Missions/pullDynamicMission.sqf diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf index 267856d..7ba591f 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -16,10 +16,10 @@ private ["_staticMissions"]; _staticMissions = [ // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; //["Epoch","Altis","template.sqf"], - ["Epoch","Altis","staticMissionExample2_Epoch.sqf"], + //["Epoch","Altis","staticMissionExample2_Epoch.sqf"], //["Epoch","Altis","destroyer.sqf"], //["Exile","Altis","template.sqf"], - ["Exile","Altis","staticMissionExample2_Exile.sqf"] + //["Exile","Altis","staticMissionExample2_Exile.sqf"] ]; diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf index b21812a..65f829c 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -23,12 +23,7 @@ blck_sm_patrolRespawnInterval = 30; { if ((toLower worldName) isEqualTo toLower(_x select 1)) then { - if ((blck_ModType isEqualTo "Epoch") && (toLower(_x select 0) isEqualTo "epoch")) then - { - call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)]; - }; - - if ((blck_ModType isEqualTo "Exile") && (toLower(_x select 0) isEqualTo "exile")) then + if ((toLower blck_modType) isEqualTo (toLower(_x select 0))) then { call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)]; }; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf index 3e6853c..23703e8 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_StaticMissions_init.sqf @@ -14,26 +14,14 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\Missions\UMS\GMS_UMS_StaticMissions_Lists.sqf"; - - -private["_mod","_map","_missionMod","_missionMap","_missionLocation","_missionDataFile"]; -_mod = toLower(toLower blck_modType); - - { + diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",_x]; + diag_log format["[blckeagls] GMS__UMS_StaticMissions_init.sqf ",toLower worldName,(toLower blck_modType)]; if ((toLower worldName) isEqualTo toLower(_x select 1)) then { - if ((_mod isEqualTo "epoch") && (toLower(_x select 0) isEqualTo "epoch")) then - { - - call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\UMS\staticMissions\%1",(_x select 2)]; - }; - - if ((_mod isEqualTo "exile") && (toLower(_x select 0) isEqualTo "exile")) then + if ((toLower blck_modType) isEqualTo (toLower(_x select 0))) then { call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\UMS\staticMissions\%1",(_x select 2)]; }; }; -}forEach _staticMissions; - - +}forEach _staticMissions; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/pullDynamicMission.sqf b/@GMS/addons/custom_server/Missions/pullDynamicMission.sqf deleted file mode 100644 index 98f15e8..0000000 --- a/@GMS/addons/custom_server/Missions/pullDynamicMission.sqf +++ /dev/null @@ -1,495 +0,0 @@ - - -_fn_isInside = { // returns true if an object is inside, underneath or on top of a building otherwise returns false. - ////////////////////// - // Determin if a unit is inside a building using two separate checkVisibility - ////////////////////// - // lineIntersects [ eyePos player, aimPos chopper, player, chopper] - params["_u",["_category","House"]]; - private ["_u","_pos","_above","_below"]; - _pos = getPosASL _u; - _above = lineIntersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u]; - _below = lineintersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 2],_u]; - diag_log format["_fn_isInside: _u %1 | _category = %5 | typeOf _u %4 | _above %2 | _below %3 ",_u,_above,_below,typeOf _u, _category]; - // If there is something above or below the object do a quick double-check to make sure there is a building there and not something else. - if (_above) then // test if any surfaces above are from buildingPos - { - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf _category) then {_above = true}; - }forEach _surfacesAbove; - }; - if (_below) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf _category) then {_above = true}; - }forEach _surfacesBelow; - }; - - _isInside = if (_above || _below) then {true} else {false}; - //diag_log format["_fn_isInside: _isInside = %1",_isInside]; - _isInside -}; - -_fn_buildingContainer = { // returns the builing containing an object or objNull - private["_u","_pos","_building","_surfacesAbove","_surfacesBelow"]; - params["_u",["_category","House"]]; - _pos = getPosASL _u; - private _building = objNull; - // lineIntersectsSurfaces [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique] - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; - diag_log format["_surfacesAbove = %1",_surfacesAbove]; - { - if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesAbove; - if (_building isEqualTo objNull) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - diag_log format["_surfacesBelow = %1",_surfacesBelow]; - { - if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesBelow; - }; - diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; - _building -}; - -_fn_isInfantry = { // returns true if a unit is on foot otherwise returns false. - ////////////////////// - // Determine if a unit isinfantry rather than a unit manning a turret or vehicle - ////////////////////// - _u = _this select 0; - private _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u) then {true} else {false}; - //diag_log format["_fn_isInfantry: _isInfantry = %1",_isInfantry]; - _isInfantry -}; - -diag_log "========== =========================="; - -/////////////////// -// Define some values for our AI -// Change values of these variables to suit your needs -/////////////////// -#define aiDifficulty "Red" -#define minAI 3 -#define maxAI 6 -#define minPatrolRadius 30 -#define maxPatrolRadius 45 -#define AI_respawnTime 600 -#define aiVehiclePatrolRadius 75 -#define vehiclePatrolRespawnTime 600 -#define staticWeaponRespawnTime 600 -#define aiAircraftPatrolRespawnTime 600 -#define aiAircraftPatrolRadius 1700 -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. -#define objectAtMissionCenter "RoadCone_L_F" -#define lootVehicleMarker "Sign_Arrow_F" -#define landVehicles "LandVehicle" - -/////////////////// -// Define the coordinates of the center of the mission. -/////////////////// - -CENTER = [0,0,0]; - -if (isNil "CENTER" || CENTER isEqualTo [0,0,0]) then -{ - hint "Please define a center point for your mission"; - _obj = allMissionObjects objectAtMissionCenter; - _obj1 = _obj select 0; - diag_log format["Determining position of first roadcone found which is located at %1 with player found at %2",getPos _obj1,position Player]; - if (count _obj > 0) then - { - CENTER = [3,3,0] vectorAdd (getPosATL _obj1); - }; - hint format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Player located at position %1",position player]; -}; - -/////////////////// -// Identify any buildings in which a garrison should be spawned using the Arma building positions. -// Tell the script which buildings to garrison by placing an object inside that designates them as such. -// I use a large yellow sphere for this purpose. -// The function below assembles a list of such buildings for use in defining the data for mission buildings. -/////////////////// - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// -/* - _markerType = ["ELIPSE",[175,175],"GRID"]; - _markerType = ["mil_triangle",[0,0]]; -*/ -_allmkr = allMapMarkers; -diag_log format["_allmkr = %1",_allmkr]; -if (count _allmkr == 0) then -//if !(typeName _mk isEqualTo "STRING") then -{ - hint "No Marker Found, no Marker Definitions Will Be generated"; - uiSleep 5; -} else { - _mk = _allmkr select 0; - diag_log format["_mk = %1",_mk]; - - if ((getMarkerType _mk) in ["ELIPSE","RECTANGLE"]) then - { - _cb = _cb + format['_markerType = ["%1",%2,%3];%4',getMarkerType _mk,getMarkerSize _mk,markerBrush _mk,endl]; - } else { - _cb = _cb + format['_markerType = ["%1",[0,0]];%2',getMarkerType _mk,endl]; - }; - _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; - _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; - _cb = _cb + format["%1%1",endl]; -}; - -//////////////////////// -// Begin pulling data here -/////////////////////// - -_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl]; -private _garrisonedBuildings = []; -private _allStatics = []; -_helpers = allMissionObjects garrisonMarkerObject; -//diag_log format["_helpers = %1",_helpers]; -{ - if ( (typeOf _x) isEqualTo garrisonMarkerObject) then - { - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - _building = [_x] call _fn_buildingContainer; - _garrisonedBuildings pushbackunique _building; - _garrisonedBuildings pushbackunique _x; - // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], - // 1 2 3 4 5 6 7 8 9 - _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; - systemChat _line; - //diag_log _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -} forEach _helpers; -_cb = _cb + format["%1];%1%1",endl]; - -_logging = format["_garrisonedBuildings = %1",_garrisonedBuildings]; -//diag_log _logging; -systemChat _logging; -//diag_log format["_cb = %1%2",endl,_cb]; - -_configuredStatics = []; -_configuredUnits = []; -/* - This bit will set up the garrison for each building having units and / or statics inside it or on top. - Coding must ensure that nothing is repeated but everything is captured. -*/ - -_fn_configureGarrisonForBuildingATL = { - private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; - _b = _this select 0; - _count = 0; - if (_b in _garrisonedBuildings) exitWith {""}; - _staticsText = ""; - _unitsText = ""; - _buildingGarrisonATL = ""; - _staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; - { - if !(_x in _configuredStatics) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredStatics pushBackUnique _x; - - if (_staticsText isEqualTo "") then - { - _staticsText = format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - } else { - _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - }; - }; - } forEach _staticsInBuilding; - _unitsInBuilding = nearestObjects[getPosATL _building,[unitMarkerObject],sizeOf (typeOf _building)]; - - { - if !(_x in _configuredUnits) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredUnits pushBackUnique _x; - - if (_unitsText isEqualTo "") then - { - _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - } else { - _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - _count = _count + 1; - }; - }; - } forEach _unitsInBuilding; - if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then - { - _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; - _garrisonedBuildings pushBackUnique _b; - }; - _buildingGarrisonATL -}; - -private _count = 0; -_cb = _cb + "_garrisonedBuilding_ATLsystem = ["; -{ - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - private _building = [_x] call _fn_buildingContainer; - private _include = if ( !(_building in _garrisonedBuildings) && !((typeOf _building) isEqualTo unitMarkerObject) && !((typeOf _building) isEqualTo garrisonMarkerObject)) then {true} else {false}; - if (_include) then - { - //diag_log format["_x = %1 | _building = %1",_x,_building]; - private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL; - //diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation]; - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; - } else { - _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; - }; - - _count = _count + 1; - }; - }; - -} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects unitMarkerObject)); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure info remaining mission landscape -/////////////////// -_land = allMissionObjects "Static"; - -_cb = _cb + format["_missionLandscape = [",endl]; -{ - diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; - //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; - if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then - { - _line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach allMissionObjects "Static"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure loot boxes -/////////////////// -_cb = _cb + "_missionLootBoxes = ["; -{ - _line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for loot vehicles -/////////////////// -_missionLootVehicles = []; -_missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_lootVehicleMarkers = allMissionObjects lootVehicleMarker; -diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers]; -_cb = _cb + format["_missionLootVehicles = ["]; -{ - _kindOf = "nothing"; - _isInside = [_x,"Car"] call _fn_isInside; - if (_isInside) then {_kindOf = "Car"}; - if !(_isInside) then {_isInside = [_x,"Ship"] call _fn_isInside}; - if (_isInside) then {_kindOf = "Ship"}; - if (_isInside) then - { - - _object = [_x,_kindOf] call _fn_buildingContainer; - diag_log format["object %1 is inside object %2",_x,_object]; - _missionLootVehicles pushBack _object; - _line = format[' ["%1",%2,%3,%4,%5]',typeOf _object,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -} forEach allMissionObjects lootVehicleMarker; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for vehicle patrols -/////////////////// -_cb = _cb + format["_missionPatrolVehicles = ["]; -{ - if ( !((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles) ) then - { - _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_submarinePatrolParameters = ["; -{ - if ((typeOf _x) isKindOf "SDV_01_base_F") then - { - _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach allMissionObjects "Ship"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configs for Air Patrols -/////////////////// -_cb = _cb + "_airPatrols = ["; - //[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60] -{ - _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach allMissionObjects "Air"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup info for remaining static/emplaced weapons -/////////////////// -_cb = _cb + format["_missionEmplacedWeapons = ["]; -{ - - if !(_x in _configuredStatics) then - { - // ["B_HMG_01_high_F",[22883.5,16757.6,6.31652],"blue",0,10] - _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - -}forEach allMissionObjects "StaticWeapon"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup information for infantry groups spawning outside buildings -/////////////////// -_cb = _cb + format["_missionGroups = ["]; -{ - //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], - _isInside = [_x] call _fn_isInside; - _isInfantry = [_x] call _fn_isInfantry; - //diag_log format["_missionGroups: _unit %1 | _isInside %2 _isInfantry %3",_x,_isInside,_isInfantry]; - if (_isInfantry) then - { - if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_scubaGroupParameters = ["; -{ - //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], - _isInside = [_x] call _fn_isInside; - _isInfantry = [_x] call _fn_isInfantry; - //diag_log format["_missionGroups: _unit %1 | _isInside %2 _isInfantry %3",_x,_isInside,_isInfantry]; - if (_isInfantry) then - { - if ((surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "All Objects organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/@GMS/addons/custom_server/SLS/SLS_defines_exile.sqf b/@GMS/addons/custom_server/SLS/SLS_defines_exile.sqf index 98d4dea..b703633 100644 --- a/@GMS/addons/custom_server/SLS/SLS_defines_exile.sqf +++ b/@GMS/addons/custom_server/SLS/SLS_defines_exile.sqf @@ -3,7 +3,7 @@ By Ghostrider [GRG] Copyright 2016 - + -------------------------- License -------------------------- @@ -14,29 +14,259 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; _lootBoxes = [ - /*[ - - "altis", // map name - "Camp1", // a name for this region for logging and debuging purpses and to help identify the definition down the road when changing things on the server - 2, // number of locations specified from the list below at which to spawn crates - [ // format here is [[position x, y, z], direction, exact / loose placement (true/false), smoke near crate (true/false] - [[23555.9,18422.7,0.730287],0,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position - [[23542.1,18435.9,0.00143886],0,true, false], - [[23514,18452.5,0.00143886],0,true, false], - [[23534.2,18418.8,0.00143886],0,false, true] - ] - - ], - [ "altis", - "refuel", - 2, - [ // format here is [[position x, y, z], direction, exact / loose placement (true/false), smoke near crate (true/false] - [[22963.8,17041.3,0.00143886],0,false, false], - [[22942.8,17038,0.00143886],0,false, false], - [[22948.7,17054,0.00143886],0,false, false] - ] // No comma after this last one - ] // No comma after this last one - */ + #ifdef GRG_TestServer + ["altis","APTrader",10, + [ + [[14658.1, 16790.9, 18.3795],0,false,false], + [[14660, 16788.5, 18.3795],0,false,false], + [[17518.4,13260.7,12.7337],0,false,false], + [[17528.1,13270.2,12.725],0,false,false], + [[17537.4,13278.2,12.706],0,false,false], + [[17547.9,13286,12.6121],0,false,false], + [[17599.5,13240.5,13.327],0,false,false], + [[17593.1,13231.9,13.4375],0,false,false], + [[17586.5,13224.6,13.5832],0,false,false], + [[17580.5,13217.8,13.6708],0,false,false] + ] + ], + #endif + + // Ferres + /* + ["altis","Ferres", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[21693.887,7731.0264,13.955027],0,true, true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[21850.063,7504.3203,14.677059],0,true, true], + [[21693.674,7431.4141,15.578629],0,true, true], + [[21631.227,7773.9927,14.149431],0,true, true], + [[21572.559,7462.2661,17.827536],0,true, true], + [[21801.348,7631.4448,13.80711],0,true, true], + [[21508.932,7585.6309,15.844649],0,true, true], + [[21547.027,7695.6738,15.754698],0,true, true] + ] + ],*/ + #ifndef blck_milServer + // Dump + ["altis","Dump", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[5791,20314.5,0],0,false,true], // crate position 1, loadout (0-4), false=random placement near position, true = show smoke at position + [[5902.33,20272.7,0],0,false,true], + [[5955.21,20136.2,0],0,false,true], + [[5908.32,20088.3,0],0,false,true], + [[55843.54,20171.6,0],0,false,true], + [[5775.42,20163.3,0],0,false,true], + [[5979.18,20206.5,0],0,false,true], + [[5943.89,20076.7,0],0,false,true] + ] + ], + // Beach #1 + ["altis","Beach", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[22769.8,7051.28,0],0,false,true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[22934.3,6990.53,0],0,false,true], + [[22831.7,7003.24,0],0,false,true], + [[22666.6,7009.22,0],0,false,true], + [[22634.6,6985.3,0],0,false,true], + [[22583.4,6935.63,0],0,false,true], + [[22651.1,7060.75,0],0,false,true] + ] + ], + ["altis","Pack-1", 1, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[14269.6,13016.2,0],0,false,false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[14359.9,13047.7,0],0,false,false], + [[14293.5,12956.9,0],0,false,false] + ] + ], + ["altis","Pack-2", 4, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[26810,24557.2,0.00140762],0,false,false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[26746,24652.6,0.520973],0,false,false], + [[26798.1,24668.3,0.001297],0,false,false], + [[26873,24635.1,17.4495],0,false,false], + [[26940.7,24642.2,0.732187],0,false,false], + [[26955.5,24658.4,0.739138],0,false,false], + [[26943.8,24666.2,0.722866],0,false,false], + [[26930.2,24651.9,0.727114],0,false,false], + [[26965.5,24684.1,7.63653],0,false,false], + [[26928.3,24714.8,7.63206],0,false,false], + [[26940.7,24730.5,7.76619],0,false,false], + [[26952,24750.5,0.602812],0,false,false], + [[26932.7,24730.8,0.635454],0,false,false], + [[26931.2,24739,0.724504],0,false,false], + [[26968.1,24700.1,0.599913],0,false,false], + [[26847.9,24821.4,0.340788],0,false,false], + [[26783.4,24788.2,12.5849],0,false,false], + [[26729.8,24759.1,0.296225],0,false,false] + ] + ], + #endif + ["taviana","Zoo", 3, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[18614.1,3029.22,0],0,false, true], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[19215.7,2260.17,0],0,false, true], + [[19073.2,2775.83,0],0,false, true], + [[18632.1,2967.54,0],0,false, true], + [[18671.2,2869.73,0],0,false, true] + ] + ], + // Power Plant + ["taviana","NPP", 3, // Number of crates to select from the array of possible possitions below. Note that there can be multiple arrays of this type. + [ + [[9478.98,4481.12,0],0,false, false], // crate position 1, loadout (0-4), true=random placement near position, true = show smoke at position + [[9584.39,4474.86,0],0,false, false], + [[9485.74,4303.65,0],0,false, false], + [[9549.64,4236.95,0],0,false, false], + [[9347.52,4656.96,0],0,false, false], + [[9427.53,4585.94,0],0,false, false], + [[9542.42,4603.89,0],0,false, false] + ] + ], + ["bornholm","Stronghold1",4, + // Stronghold 1 + [ + [[16776.3,2841.59,0.115455],2,true, false], + [[16885.1,2763.64,0.0635304],4,true, false], + [[16953.7,2588.12,0.0866053],2,true, false], + [[17028.5,2645.56,0.0632489],4,true, false], + [[16818.7,2627.68,0.0635295],2,true, false], + [[16828.1,2794.94,0.086482],4,true, false], + [[16776.8,2842.19,0.115454],2,true, false] + ] + ], + ["bornholm","Stronghold2", 4, + // Stronghold 2 + [ + [[4342.52,19974.5,1.5059],2,false, false], + [[4364.01,19957.2,1.7643],4,false, false], + [[4337.55,19886.1,0.923979],2,false, false], + [[4317.76,19915.3,0.336912],4,false, false], + [[4261.73,19957,0.0783005],2,false, false], + [[4280.66,19961.2,0.180275],4,false, false], + [[4318.1,19916.5,0.514435],2,false, false] + ] + ], + ["bornholm","Object99",4,// ** Note that there is no comma after the last entry. + // Object 99 blah blah + [ + /* + // Darthrogues Obj 99 + [[7231.91,11975.8,0.836342],2,false, false], + [[7266.08,11981.6,1.0471],4,false, false], + [[7337.64,12011.6,12.7679],2,false, false], + [[7264.35,12020.1,0.661186],4,false, false], + [[7204.27,12058.5,0.632904],2,false, false], + [[7265.46,12128.6,0.00143433],4,false, false], + [[7250.85,12142.9,3.16084],2,false, false], + [[7215.93,12121.1,0.224915],4,false, false], + [[7207.59,12159.8,0.73732],2,false, false], + [[7184.07,12231.1,8.72117],4,false, false], + [[7172.28,12021.2,0.664284],2,false, false], + [[7147.93,12056.5,0.848099],4,false, false], + [[7137.67,12110.8,4.0068],2,false, false], + [[7166,12138,3.86438],4,false, false], + [[7130.52,12207.9,0.56971],4,false, false] + */ + // Mr. Squirrel's Obj 69 + [[7253.48,12101.4,0],2,false, false], + [[7276.15,12118.1,0],4,false, false], + [[7158.4,12068.5,0],2,false, false], + [[7128.27,12206.9,0],4,false, false], + [[7167.57,12218.9,0],2,false, false], + [[7218.71,12188.5,0],4,false, false], + [[7209.02,12166.9,0],2,false, false], + [[7233.2,12067.5,0],4,false, false], + [[7167.75,12038.4,0],2,false, false], + [[7106.96,12119.2,0],4,false, false], + [[7161.82,12126.7,0],2,false, false], + [[7096.61,12195.9,0],4,false, false], + [[7083.88,12141.1,0],2,false, false], + [[7060.33,12146.2,0],4,false, false], + [[7135.81,12168.1,0],2,false, false], + [[7055.72,12159.2,0.38678],4,false, false], + [[7119.19,12100.2,0.801155],2,false, false], + [[7124.51,12095.7,1.16968],4,false, false] + ] + ], + ["bornholm","Mafia Island", 4, + [// Mafia Island + [[19296.5, 22308.8, 0],2,false, false], + [[19279, 22352.2, 0],4,false, false], + [[19213.8, 22358.6, 0],2,false, false], + [[19190.4, 22367.4, 0],4,false, false], + [[19204.3, 22314.9, 0],2,false, false], + [[19368.7, 22347.3, 0],4,false, false], + [[19462.8, 22306.1, 0],2,false, false], + [[19321.4, 22240.1, 3.46751],4,false, false] + ] + ], + ["bornholm","Science Compound", 4, + [// Science Compound + [[7922.43,7347, 0],2,false, false], + [[7926.59,7427.49, 0],4,false, false], + [[7929.08,7421.45, 0],2,false, false], + [[7984.89,7474.71, 0],4,false, false], + [[7974.01,7472.63, 0],2,false, false], + [[7934.56,7572.23, 0],4,false, false], + [[7945.09,7587.68, 0],2,false, false], + [[7949.19,7567.18,0],4,false, false] + ] + ], + //[[21572.559,7462.2661,17.827536],4,true, true] + //[[21801.348,7631.4448,13.80711],1,true, true], + //[[21508.932,7585.6309,15.844649],2,true, true], + //[[21547.027,7695.6738,15.754698],3,true, true] + + [ "lythium", "RaiderBase", 3, + [ + [[18950.6,13115.8,233.078],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position + [[18958,13095.9,231.687],2,true, false], + [[19048.7,13134,229.004],2,true, false], + [[19062.3,13126.6,229.646],1,true, false], + [[19032.2,13087.3,227.428],3,true, false], + [[18988,13192.7,223.058],1,true, false], + [[19076.2,13105.2,231.051],3,true, false] + ] + ], + [ "lythium","chemical", 4, + [ + [[9081.29,19774.8,704.102],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position + [[9081.29,19774.8,704.102],2,true, false], + [[8926.25,19856.5,728.456],2,true, false], + [[8999.95,19917.9,714.447],1,true, false], + [[9391.22,19888,713.624],3,true, false], + [[9026.12,20360,687.103],1,true, false], + [[8972.81,20222.4,714.263],3,true, false], + [[9406.59,19506.8,635.903],3,true, false], + [[7715.5,20352.6,822.616],3,true, false] + ] + ], + [ "lythium","nwaste", 4, + [ + [[19123.5,1726.78,77.169],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position + [[19000.5,1657.84,79.3068],2,true, false], + [[19028.6,1525.28,80.0602],2,true, false], + [[19076.7,1536.15,78.7828],1,true, false], + [[19393.5,1784.66,32.3623],3,true, false], + [[19391,1783.63,32.5241],1,true, false], + [[19255.1,2204.95,46.3486],3,true, false], + [[19398.7,2323,42.8409],3,true, false] + + ] + ], + [ "lythium","mine", 4, + [ + [[4114.84,905.004,357.621],1,true, false], // loadout (0-4), false=random placement near position, true = show smoke at position + [[3714.22,760.414,383.659],2,true, false], + [[3774.63,684.883,384.924],2,true, false], + [[3747.2,777.427,384.203],1,true, false], + [[3761.07,611.827,383.125],3,true, false], + [[3709.12,780.889,383.27],1,true, false], + [[3712.96,805.05,382.848],3,true, false], + [[3688.47,713.877,382.692],3,true, false], + [[4373.19,607.184,370.77],3,true, false] + ] + ] ]; diff --git a/@GMS/addons/custom_server/SLS/SLS_functions.sqf b/@GMS/addons/custom_server/SLS/SLS_functions.sqf index 72fa9ab..d1816aa 100644 --- a/@GMS/addons/custom_server/SLS/SLS_functions.sqf +++ b/@GMS/addons/custom_server/SLS/SLS_functions.sqf @@ -1,8 +1,6 @@ /* - for ghostridergaming By Ghostrider [GRG] Copyright 2016 - Last Modified 8-23-17 -------------------------- License @@ -71,7 +69,6 @@ _fn_spawnCrate = { _crate = [[0,0,0],_selectedCrateType] call blck_fnc_spawnCrate; _crate setPosATL _pos; _crate setDir round(random(360)); - //uiSleep 1; _crate setVectorUp surfaceNormal _pos; _crate }; @@ -81,7 +78,7 @@ _fn_setupCrates = { private["_crate"]; _crate = [_location,_randomPos] call _fn_SpawnCrate; - while {_lootType == 0} do {_lootType = round(random(3));}; + _lootType = selectrandom [1,2,3]; switch(_lootType) do { // format here is [_arrayOfLoot, crateToLoad, magazinesToAddForEachWeaponLoaded] @@ -102,37 +99,31 @@ _fn_setupCrates = { _crate }; //diag_log "[blckeagls] SLS System: Functions Initialized!"; -private["_cratePosnList","_no","_ar","_x","_cratePos","_lootType","_randomPos","_useSmoke"]; - +private["_cratePos","_lootType","_randomPos","_useSmoke"]; { - _map = _x select 0; - _name = _x select 1; - _no = _x select 2; - _ar = _x select 3; - private["_index"]; - _index = 1; - if (blck_debugON) then + _x params ["_map","_name","_no","_ar"]; + private["_index"]; + _index = 1; + if (blck_debugON) then + { + diag_log format["[blckeagls] SLS :: main function: Location name = %3 |count _ar = %1 | _index = %2", count _ar, _index, _name]; + diag_log format["[blckeagls] SLS :: main function: count _ar = %1", _ar]; + }; + if ((tolower _map) isEqualto (toLower(worldName))) then + { + for "_i" from 1 to _no do { - diag_log format["[blckeagls] SLS :: main function: Location name = %3 |count _ar = %1 | _index = %2", count _ar, _index, _name]; - diag_log format["[blckeagls] SLS :: main function: count _ar = %1", _ar]; - }; - if (_map isEqualto (toLower(worldName))) then - { - _usedLocations = []; - for "_i" from 1 to _no do + // Pick a random element and be sure it has not already been selected + _ar = _ar call Bis_fnc_arrayshuffle; + _crateParams = _ar deleteat 0; + if (blck_debugON) then { - // Pick a random element and be sure it has not already been selected_crateParams - _crateParams = selectRandom _ar; - while {_crateParams in _usedLocations} do {_crateParams = selectRandom _ar;}; // selectRandom is about 5X faster than BIS_fnc_selectRandom in my testing. - if (blck_debugON) then - { - diag_log format["[blckeagls] SLS:: spawning crate spawning crate at location name %1 with parameters of %2 --->>> %1",_name,_crateParams]; - }; - _usedLocations pushback _crateParams; - _crateParams params["_cratePos","_lootType","_randomPos","_useSmoke"]; // params is about 5x faster in my testing over _this select 0 where many local variables are defined by parsing _this. - [_cratePos,_lootType,_randomPos,_useSmoke] call _fn_setupCrates; + diag_log format["[blckeagls] SLS:: spawning crate spawning crate at location name %1 with parameters of %2 --->>> %1",_name,_crateParams]; }; +// _crateParams params["_cratePos","_lootType","_randomPos","_useSmoke"]; + _crateParams call _fn_setupCrates; }; + }; } forEach _lootBoxes; diff --git a/@GMS/addons/custom_server/SLS/SLS_init.sqf b/@GMS/addons/custom_server/SLS/SLS_init.sqf index 54a84ff..8907920 100644 --- a/@GMS/addons/custom_server/SLS/SLS_init.sqf +++ b/@GMS/addons/custom_server/SLS/SLS_init.sqf @@ -15,14 +15,13 @@ #endif #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -if not (isNull( configFile >> "CfgPatches" >> "a3_epoch_server" )) then +if ((tolower blck_modType) isEqualto "epoch") then { - [] execVM "\q\addons\custom_server\SLS\SLS_init_epoch.sqf"; + call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init_epoch.sqf"; }; - -if not (isNull ( configFile >> "CfgPatches" >> "exile_server" ) ) then +if ((tolower blck_modType) isEqualto "exile") then { - [] execVM "\q\addons\custom_server\SLS\SLS_init_exile.sqf"; + call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init_exile.sqf"; }; diag_log "[blckeagls] SLS System: Static loot crates ran successfully!"; -blck_SLSComplete = true; \ No newline at end of file +blck_SLSComplete = true; From 1d42585fe51aa35f929b4b6502fd00a03b20759d Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 15:33:20 -0500 Subject: [PATCH 12/23] Build 163 Many code optimizations and a few bug fixes, all courtesy of HeMan. --- .../Functions/GMS_fnc_addMoneyToObject.sqf | 4 +- .../GMS_fnc_emptyObjectInventory.sqf | 9 - .../Compiles/Functions/GMS_fnc_mainThread.sqf | 1 - .../GMS_fnc_spawnMissionEmplacedRelative.sqf | 2 +- .../Groups/GMS_fnc_create_AI_Group.sqf | 2 +- .../Missions/GMS_fnc_cleanUpObjects.sqf | 32 +- .../Compiles/Missions/GMS_fnc_endMission.sqf | 6 - .../GMS_fnc_spawnEmplacedWeaponArray.sqf | 5 +- .../Missions/GMS_fnc_spawnMissionAI.sqf | 7 +- .../Missions/GMS_fnc_spawnPendingMissions.sqf | 4 - .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 9 +- .../Compiles/Units/GMS_fnc_cleanupAliveAI.sqf | 54 +- .../Compiles/Units/GMS_fnc_cleanupDeadAI.sqf | 2 +- .../Units/GMS_fnc_processIlleagalAIKills.sqf | 2 +- .../Compiles/Units/GMS_fnc_spawnUnit.sqf | 6 +- .../Vehicles/GMS_fnc_revealNearbyPlayers.sqf | 71 +- .../Vehicles/GMS_fnc_spawnMissionHeli.sqf | 4 +- .../Vehicles/GMS_fnc_spawnVehiclePatrol.sqf | 7 +- .../Vehicles/GMS_fnc_vehicleMonitor.sqf | 17 +- .../custom_server/Compiles/blck_functions.sqf | 300 ++-- .../custom_server/Compiles/blck_variables.sqf | 4 +- .../custom_server/Configs/blck_configs.sqf | 79 +- .../Configs/blck_configs_epoch.sqf | 16 +- .../Configs/blck_configs_epoch_mil.sqf | 14 +- .../Configs/blck_configs_exile.sqf | 14 +- .../Configs/blck_configs_exile_mil.sqf | 14 +- .../Configs/blck_configs_mil.sqf | 83 +- .../Configs/blck_custom_config.sqf | 20 +- .../Configs/blck_custom_config_DEV.sqf | 1352 ----------------- .../Configs/blck_custom_config_RC.sqf | 1269 ---------------- .../custom_server/Configs/blck_defines.hpp | 2 +- .../Configs/blck_dynamicConfigs.sqf | 2 - .../Static/missions/staticMissionExample1.sqf | 66 - .../Static/missions/staticMissionExample2.sqf | 135 -- .../staticMissions/staticMissionExample2.sqf | 133 -- .../custom_server/init/GMS_fnc_findWorld.sqf | 16 +- .../init/GMS_fnc_getTraderCites.sqf | 9 +- .../custom_server/init/blck_defines.hpp | 37 - .../custom_server/init/blck_init_HC.sqf | 14 +- .../custom_server/init/blck_init_server.sqf | 101 +- .../custom_server/init/broadcastServerFPS.sqf | 14 - @GMS/addons/custom_server/init/build.sqf | 4 +- 42 files changed, 512 insertions(+), 3430 deletions(-) delete mode 100644 @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObjectInventory.sqf delete mode 100644 @GMS/addons/custom_server/Configs/blck_custom_config_DEV.sqf delete mode 100644 @GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf delete mode 100644 @GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2.sqf delete mode 100644 @GMS/addons/custom_server/init/blck_defines.hpp delete mode 100644 @GMS/addons/custom_server/init/broadcastServerFPS.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf index 5848ad7..39c10c6 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf @@ -19,7 +19,7 @@ params["_obj","_difficulty"]; diag_log format["_fnc_addMoneyToOject: _this select %1 = %2",_foreachindex, _this select _foreachindex]; }forEach _this; #endif -if ((tolower blck_modType) isEqualTo "exile") then +if (blck_modType isEqualTo "Exile") then { switch (_difficulty) do { @@ -33,7 +33,7 @@ if ((tolower blck_modType) isEqualTo "exile") then }; }; -if ((tolower blck_modType) isEqualTo "epoch") then +if (blck_modType isEqualTo "Epoch") then { switch (_difficulty) do { diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObjectInventory.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObjectInventory.sqf deleted file mode 100644 index 8e911cd..0000000 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_emptyObjectInventory.sqf +++ /dev/null @@ -1,9 +0,0 @@ - - - - // replaces blck_fnc_emptyObject - params["_object"]; - clearWeaponCargoGlobal _object; - clearMagazineCargoGlobal _object; - clearBackpackCargoGlobal _object; - clearItemCargoGlobal _object; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 152885c..46d1e1c 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -61,7 +61,6 @@ while {true} do { [] call blck_fnc_timeAcceleration; }; - #ifdef blck_debugMode //diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts]; diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts]; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf index d1f3ef8..a7db252 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_spawnMissionEmplacedRelative.sqf @@ -22,7 +22,7 @@ _obj setDir _objDir; _unit = [_group] call blck_fnc_spawnUnit; _unit moveInGunner _unit; - _wep addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}]; + _wep addMPEventHandler["MPHit",{[_this] call blck_EH_AIVehicle_HandleDamage}]; _wep setVariable["GRG_vehType","emplaced"]; [_wep,false] call blck_fnc_configureMissionVehicle; }forEach _emplaced; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf index b2d35da..06cf2f1 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_create_AI_Group.sqf @@ -29,4 +29,4 @@ _groupSpawned setVariable ["blck_group",true,true]; if (blck_debugLevel >= 2) then {diag_log format["_fnc_create_AI_Group: _groupSpawned = %1",_groupSpawned]}; #endif -_groupSpawned +_groupSpawned \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf index 139e192..0121f33 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf @@ -19,45 +19,33 @@ _fn_deleteObjects = { params["_objects"]; - #ifdef blck_debugMode if (blck_debugLevel > 0) then {diag_log format["_fn_deleteObjects:: -> _objects = %1",_objects];}; #endif - { #ifdef blck_debugMode if (blck_debugLevel > 1) then {diag_log format["_fnc_cleanUpObjects: -> deleting object %1",_x];}; #endif - deleteVehicle _x; } forEach _objects; }; //diag_log format["_fnc_cleanUpObjects called at %1",diag_tickTime]; private["_oldObjs"]; -for "_i" from 1 to (count blck_oldMissionObjects) do -{ - if (_i <= count blck_oldMissionObjects) then - { - _oldObjs = blck_oldMissionObjects select (_i - 1); - //diag_log format["_fnc_cleanUpObjects ::-->> evaluating missionObjects = %1 with delete time of %3 and diag_tickTime %2",_oldObjs,diag_tickTime, _oldObjs select 1]; - if (diag_tickTime > (_oldObjs select 1) ) then { - //diag_log format["_fn_deleteObjects:: (50) cleaning up mission objects %1",_oldObjs]; - [_oldObjs select 0] call _fn_deleteObjects; +for "_i" from 1 to (count blck_oldMissionObjects) do { + if (_i <= count blck_oldMissionObjects) then { + _oldObjs = blck_oldMissionObjects deleteat 0; + _oldObjs params ["_objarr","_timer"]; + if (diag_tickTime > _timer) then { + [_objarr] call _fn_deleteObjects; uiSleep 0.1; - blck_oldMissionObjects set[(_i - 1), -1]; - blck_oldMissionObjects = blck_oldMissionObjects - [-1]; - #ifdef blck_debugMode //diag_log format["_fn_deleteObjects:: blck_oldMissionObjects updated from %1",_obj]; if (blck_debugLevel > 1) then {diag_log format["_fn_deleteObjects:: (48) blck_oldMissionObjects updated to %1",blck_oldMissionObjects];}; #endif + } + else { + blck_oldMissionObjects pushback _oldObjs; }; }; -}; - - - - - - +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf index 2353ef0..f17d00b 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf @@ -62,12 +62,6 @@ _fn_missionCleanup = { diag_log format["_fnc_endMission: Mission Aborted, setting all timers to 0"]; }; #endif - /* - if (_endCondition == 2) then - { - [["warning",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers; - }; - */ [_blck_localMissionMarker select 0] call blck_fnc_deleteMarker; _cleanupCompositionTimer = 0; _cleanupAliveAITimer = 0; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf index 9aed887..9dd86ed 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf @@ -94,7 +94,7 @@ if (blck_debugLevel > 1) then _empGroup setcombatmode "RED"; _empGroup setBehaviour "COMBAT"; [(_x select 1),0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; - if (isNull _empGroup) exitWith {_abort = _true}; + if (isNull _empGroup) exitWith {_abort = true}; #ifdef blck_debugMode if (blck_debugLevel > 1) then @@ -105,8 +105,7 @@ if (blck_debugLevel > 1) then // params["_vehType","_pos",["_clearInventory",true]]; _wep = [(_x select 0),[0,0,0],false,true] call blck_fnc_spawnVehicle; - //_wep addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}]; - _wep addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}]; + _wep addMPEventHandler ["MPHit",{[_this] call blck_EH_AIVehicle_HandleDamage}]; //_empGroup setVariable["groupVehicle",_wep]; _wep setVariable["vehicleGroup",_empGroup]; #ifdef blck_debugMode diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf index 0c2b044..0349ff9 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf @@ -70,7 +70,7 @@ if ( (count _missionGroups > 0) && _noAIGroups > 0) then else { _newAI = units _newGroup; - //blck_monitoredMissionAIGroups pushback _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel >= 2) then { @@ -152,6 +152,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then { _newAI = units _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel >= 2) then { @@ -181,6 +182,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then { _newAI = units _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel >= 2) then { @@ -201,6 +203,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then { _newAI = units _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel >= 2) then { @@ -229,6 +232,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then }; _newAI = units _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel >= 2) then { @@ -247,6 +251,7 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then else { _newAI = units _newGroup; + blck_monitoredMissionAIGroups pushback _newGroup; #ifdef blck_debugMode if (blck_debugLevel > 2) then { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf index cb9bfdd..914adf7 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf @@ -68,11 +68,7 @@ if (count _readyToSpawnQue > 0) then // _mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]]; _missionMarker = _missionToSpawn select 1; _missionDifficulty = _missionToSpawn select 2; - //diag_log format["_fnc_spawnPendingMissions: _missionMarker %1",_missionMarker]; - //diag_log format["_fnc_spawnPendingMissions: _missionDifficulty %1",_missionDifficulty]; - //diag_log format["_fnc_spawnPendingMissions: _compiledMission %1",_compiledMission]; [_coords,_missionMarker,_missionDifficulty] spawn _compiledMission; - //diag_log format["_fnc_spawnPendingMissions: blck_missionsRunning = %1", blck_missionsRunning]; }; true diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf index 562d308..d0d906e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -13,7 +13,10 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]]; private["_objects","_wreck","_dir","_dirOffset"]; -#define objectSpawnRadius 15 +#define maxObjectSpawnRadius 25 +#define minObjectSpawnRadius 10 +private _objectSpawnRange = maxObjectSpawnRadius - minObjectSpawnRadius; + _objects = []; _wreck = createVehicle ["RoadCone_L_F", _coords]; // To designate the mission center _wreck allowDamage true; @@ -24,8 +27,8 @@ _objects pushBack _wreck; { //Random Position Objects based on distance in array // https://community.bistudio.com/wiki/BIS_fnc_findSafePos - private _posX = ((_coords select 0) + random(objectSpawnRadius)) * (selectRandom[1,-1]); - private _posY = ((_coords select 1) + random(objectSpawnRadius)) * (selectRandom[1,-1]); + private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])); + private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])); _pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos; _wreck = createVehicle[_x, _pos, [], 2]; //diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck]; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf index 5e841cd..c600cb4 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf @@ -13,56 +13,24 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -/* -_fn_deleteAIfromList = { - params["_aiList"]; - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log format["_fn_deleteAIfromList:: _aiList = %1",_aiList];}; - #endif - - { - #ifdef blck_debugMode - if (blck_debugLevel > 1) then {diag_log format["_fn_deleteAIfromList:: -> deleteing AI Unit %1",_x];}; - #endif - - [_x] call blck_fnc_deleteAI; - }forEach _aiList; -}; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["_fnc_cleanupAliveAI called at %1",diag_tickTime];}; -#endif -*/ -for "_i" from 1 to (count blck_liveMissionAI) do -{ - if ((_i) <= count blck_liveMissionAI) then - { - _units = blck_liveMissionAI select (_i - 1); - //diag_log format["_fnc_cleanupAliveAI:: (34) evaluating with delete time = %2 and diag_tickTime %1", diag_tickTime, _units select 1]; - if (diag_tickTime > (_units select 1) ) then - { - //diag_log format["_fnc_cleanupAliveAI:: cleaning up AI group %1",_units]; +for "_i" from 1 to (count blck_liveMissionAI) do { + if ((_i) <= count blck_liveMissionAI) then { + _units = blck_liveMissionAI deleteat 0; + _units params ["_unitsarr","_timer"]; + if (diag_tickTime > _timer) then { { - - //diag_log format["_fnc_cleanupAliveAI:: deleting unit %1",_x]; - //diag_log format["_fnc_cleanupAliveAI:: vehicle _x = %1",vehicle _x]; - //diag_log format["_fnc_cleanupAliveAI:: objectParent _x = %1",objectParent _x]; - - if ((alive _x) && !(isNull objectParent _x)) then // mark the vehicle for deletion - { - //diag_log format["_fnc_cleanupAliveAI: deleteing objectParent %1 [%3] for unit %2",objectParent _x, _x, typeName (objectParent _x), typeOf (objectParent _x)]; + if ((alive _x) && !(isNull objectParent _x)) then { [objectParent _x] call blck_fnc_deleteAIvehicle; }; [_x] call blck_fnc_deleteAI; - }forEach (_units select 0); + } forEach _unitsarr; uiSleep 0.1; - blck_liveMissionAI set[(_i - 1), -1]; - blck_liveMissionAI = blck_liveMissionAI - [-1]; // Remove that list of live AI from the list. - #ifdef blck_debugMode if (blck_debugLevel > 1) then {diag_log format["_fnc_mainTread:: blck_liveMissionAI updated to %1",blck_liveMissionAI];}; #endif + } + else { + blck_liveMissionAI pushback _units; }; }; -}; - +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf index c10490a..eab24c7 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf @@ -18,7 +18,7 @@ if (blck_debugLevel > 2) then {diag_log format["fnc_cleanupDeadAI called at time private["_aiList","_ai"]; _aiList = +blck_deadAI; { - if ( diag_tickTime > _x getVariable ["blck_cleanupAt",0] ) then // DBD_DeleteAITimer + if (diag_tickTime > _x getVariable ["blck_cleanupAt",0]) then { _ai = _x; { diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf index 0bec3ce..e54d152 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf @@ -80,9 +80,9 @@ if ( blck_VK_GunnerDamage ) then if ((currentWeapon _killer) in blck_forbidenVehicleGuns) then { _legal = false;}; }; - if (blck_VK_Gear) then {[_unit] call _fn_deleteAIGear;}; if !(_legal) then { + if (blck_VK_Gear) then {[_unit] call _fn_deleteAIGear;}; [_unit, vehicle _killer] call _fn_targetVehicle; [vehicle _killer] call _fn_applyVehicleDamage; [_killer] call _fn_msgIED; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf index 2c3c5e2..b181d8b 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf @@ -193,9 +193,9 @@ if (blck_debugLevel > 2) then }; #endif -_unit addEventHandler ["Reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}]; -_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call compile preprocessfilelinenumbers blck_EH_AIKilled;}]; // changed to reduce number of concurrent threads, but also works as spawn blck_AIKilled; }]; -_unit addMPEventHandler ["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIHit;}]; +_unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}]; +_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}]; +_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}]; switch (_skillLevel) do { diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_revealNearbyPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_revealNearbyPlayers.sqf index 84da46c..c34eedf 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_revealNearbyPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_revealNearbyPlayers.sqf @@ -8,45 +8,42 @@ params["_vehicle","_searchRadius","_detectionOdds"]; private["_player","_detectionOdds","_nearbyPlayers","_knowsAbout","_cansee","_knowledgeGained"]; _nearbyPlayers = [position _vehicle, _vehicle getVariable["blck_vehicleSearchRange",500]] call blck_fnc_nearestPlayers; -if (blck_revealMode isEqualTo "detailed") then -{ - private["_crew","_group"]; - _crew = crew _vehicle; - _group = group(_crew select 0); - { - if (random(1) < _detectionOdds) then +switch blck_revealMode do { + case "detailed": { + private["_crew"]; + _crew = crew _vehicle; + if !(_crew isequalto []) then { + { + if (random(1) < _detectionOdds) then { + _player = _x; + { + _cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, position _player]; + if (_cansee > 0) then { + _knowledgeGained = _cansee; + } + else { + _knowledgeGained = _x knowsAbout _player; + if (_knowledgeGained == 0) then {_knowledgeGained = 0.1}; + }; + _x reveal[_player,_knowledgeGained]; + }forEach _crew; + }; + }forEach _nearbyPlayers; + }; + }; + case "basic": { { _player = _x; - { - _cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, position _player]; - if (_cansee > 0) then - { - _knowledgeGained = _cansee; - } else { - _knowledgeGained = _x knowsAbout _player; - if (_knowledgeGained == 0) then {_knowledgeGained = 0.1}; + if (random(1) < _detectionOdds) then { + _knowsAbout = (_vehicle) knowsAbout _player; + if (_knowsAbout > 0) then { + _knowledgeGained = _knowsAbout; + } + else { + _knowledgeGained = (_searchRadius - (_x distance _vehicle))/_searchRadius; }; - _x reveal[_player,_knowledgeGained]; - //diag_log format["_fnc_revealNearbyPlayers: player %1 revealed to unit %2",_player,_x]; - }forEach _crew; - }; - }forEach _nearbyPlayers; -}; - -if (blck_revealMode isEqualTo "basic") then -{ - { - _player = _x; - if (random(1) < _detectionOdds) then - { - _knowsAbout = (_vehicle) knowsAbout _player; - if (_knowsAbout > 0) then - { - _knowledgeGained = _knowsAbout; - } else { - _knowledgeGained = (_searchRadius - (_x distance _vehicle))/_searchRadius; + _x reveal[_player, _knowledgeGained]; }; - _x reveal[_player, _knowledgeGained]; - }; - }forEach _nearbyPlayers; + }forEach _nearbyPlayers; + }; }; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf index 6ef61f1..5ec87e3 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf @@ -55,8 +55,9 @@ if !(isNull _grpPilot) then _grpPilot setVariable["arc",0]; _grpPilot setVariable["wpRadius",30]; _grpPilot setVariable["wpMode","SAD"]; - //[_coords,_minDist,_maxDist,_groupSpawned,"random","SAD","infantry"] spawn blck_fnc_setupWaypoints; diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; + diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; + [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; switch (toLower(_skillAI)) do { case "blue": {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisBlue}; @@ -66,7 +67,6 @@ if !(isNull _grpPilot) then default {_minDist = 150; _maxDist = 500}; }; - [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","helicopter"] call blck_fnc_setupWaypoints; blck_monitoredMissionAIGroups pushBack _grpPilot; //create helicopter and spawn it if (( typeName _helis) isEqualTo "ARRAY") then diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf index 937c362..c8d4454 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf @@ -35,11 +35,10 @@ if (blck_debugLevel > 1) then -if !(isNull _group) then -{ // exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnVehiclePatrol"; objNull;}; +if !(isNull _group) then { _veh = [_vehType,_pos] call blck_fnc_spawnVehicle; -// _veh addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}]; - _veh addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleHit}]; +// _veh addEventHandler["HandleDamage",{ [_this] call blck_EH_AIVehicle_HandleDamage}]; + _veh addMPEventHandler["MPHit",{ [_this] call blck_EH_AIVehicle_HandleHit}]; _veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeGroundVehicle]; _veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds]; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf index 4144343..be77337 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf @@ -11,7 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private ["_vehList","_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_deleteNow","_evaluate"]; +private ["_vehList"]; _vehList = +blck_monitoredVehicles; #ifdef blck_debugMode @@ -36,17 +36,18 @@ if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function c if (true) then { - private["_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_deleteNow","_evaluate"]; + private["_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_evaluate","_deleteat"]; _veh = _x; // (purely for clarity at this point, _x could be used just as well) _isEmplaced = _veh getVariable["GRG_vehType","none"] isEqualTo "emplaced"; - _ownerIsPlayer = if (owner _veh > 2 && !(owner _veh in blck_connectedHCs)) then {true} else {false}; - _allCrewDead = if (({alive _x} count (crew _veh)) == 0) then {true} else {false}; + _ownerIsPlayer = owner _veh > 2 && !(owner _veh in blck_connectedHCs); + _allCrewDead = {alive _x} count (crew _veh) == 0; _evaluate = 0; - if (_allCrewDead && _isEmplaced && (_veh getVariable["blck_deleteAt",0] == 0)) then {_evaluate = 1}; - if (_allCrewDead && !(_isEmplaced) && (_veh getVariable["blck_deleteAt",0] == 0)) then {_evaluate = 2}; - if ((_veh getVariable["blck_deleteAt",0] > 0) && (diag_tickTime > (_veh getVariable["blck_deleteAt",0]))) then {_evaluate = 3}; - if (/*_ownerIsPlayer*/ (owner _veh > 2) && !(owner _veh in blck_connectedHCs)) then {_evaluate = 4}; + _deleteat = _veh getVariable ["blck_deleteAt",0]; + if (_allCrewDead && _isEmplaced && _deleteat == 0) then {_evaluate = 1}; + if (_allCrewDead && !(_isEmplaced) && _deleteat == 0) then {_evaluate = 2}; + if (_deleteat > 0 && diag_tickTime > _deleteat) then {_evaluate = 3}; + if (_ownerIsPlayer) then {_evaluate = 4}; //diag_log format["_fnc_vehicleMonitor: vehicle = %1 | owner = %2 | crew = %2",_veh, owner _veh, {alive _x} count (crew _veh)]; switch (_evaluate) do { diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 5a7f9bc..6c45af0 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -13,161 +13,159 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// General functions -blck_fnc_waitTimer = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"; -blck_fnc_timedOut = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"; -blck_fnc_FindSafePosn = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"; -blck_fnc_randomPosition = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf";// find a randomPosn. see script for details. -blck_fnc_findPositionsAlongARadius = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"; -blck_fnc_giveTakeCrypto = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"; -blck_fnc_timeAcceleration = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"; -blck_fnc_getModType = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getModType.sqf"; // Test if Epoch or Exile is loaded -blck_fnc_groupsOnAISide = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"; // Returns the number of groups on the side used by AI -blck_fnc_emptyObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"; -blck_fnc_playerInRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"; -blck_fnc_playerInRangeArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"; // GMS_fnc_playerInRangeArray -blck_fnc_mainThread = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"; -blck_fnc_allPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"; -blck_fnc_addItemToCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"; -blck_fnc_loadLootItemsFromArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"; -blck_fnc_getNumberFromRange = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"; -blck_fnc_spawnMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"; -blck_fnc_missionCompleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"; -blck_fnc_deleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"; -blck_fnc_updateMarkerAliveCount = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"; -blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"; -blck_fnc_spawnMissionEmplacedRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"; -blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"; -blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"; -blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"; -blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"; -blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"; -//blck_fnc_getTraderCitiesEpoch = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf"; -//blck_fnc_getTraderCitesExile = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf"; +private _functions = [ + // General functions + ["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"], + ["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], + ["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"], + ["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details. + ["blck_fnc_findPositionsAlongARadius","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"], + ["blck_fnc_giveTakeCrypto","\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"], + ["blck_fnc_timeAcceleration","\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"], + ["blck_fnc_groupsOnAISide","\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"], // Returns the number of groups on the side used by AI + ["blck_fnc_emptyObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"], + ["blck_fnc_playerInRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"], + ["blck_fnc_playerInRangeArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"], + ["blck_fnc_mainThread","\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"], + ["blck_fnc_allPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"], + ["blck_fnc_addItemToCrate","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"], + ["blck_fnc_loadLootItemsFromArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"], + ["blck_fnc_getNumberFromRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"], + ["blck_fnc_spawnMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"], + ["blck_fnc_missionCompleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"], + ["blck_fnc_deleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"], + ["blck_fnc_updateMarkerAliveCount","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"], + ["blck_fnc_addMoneyToObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"], + ["blck_fnc_spawnMissionEmplacedRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"], + ["blck_fnc_spawnMissionLootBoxesRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"], + ["blck_fnc_spawnSingleObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"], + ["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"], + ["blck_fnc_spawnMissionLandscapeRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"], + ["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"], + + // Player-related functions + ["blck_fnc_rewardKiller","\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"], + ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions + + // Mission-related functions + ["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"], + ["blck_fnc_selectAISidearms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"], + ["blck_fnc_selectAIUniforms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"], + ["blck_fnc_selectAIHeadgear","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"], + ["blck_fnc_selectAIVests","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"], + ["blck_fnc_selectAIBackpacks","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"], + ["blck_fnc_selectChanceHeliPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"], + ["blck_fnc_selectMissionHelis","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"], + ["blck_fnc_selectNumberAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"], + ["blck_fnc_selectNumberParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"], + ["blck_fnc_selectChanceParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"], + ["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"], + ["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"], + ["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"], + ["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"], + ["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"], + ["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position. + ["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"], + ["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"], + ["blck_fnc_spawnCompositionObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"], + ["blck_fnc_spawnRandomLandscape","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"], + ["blck_fnc_spawnMissionVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"], + ["blck_fnc_spawnEmplacedWeaponArray","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"], + ["blck_fnc_spawnMissionAI","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"], + ["blck_fnc_spawnMissionLootVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"], + ["blck_fnc_fillBoxes","\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"], // Adds items to an object according to passed parameters. See the script for details. + ["blck_fnc_smokeAtCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"], // Spawns a wreck and adds smoke to it + ["blck_fnc_spawnMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"], // Deploys mines at random locations around the mission center + ["blck_fnc_clearMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"], // clears mines in an array passed as a parameter + ["blck_fnc_signalEnd","\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"], // deploy smoke grenades at loot crates at the end of the mission. + ["blck_fnc_endMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"], + ["blck_fnc_paraDropObject","\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"], + ["blck_fnc_loadMissionCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"], + ["blck_fnc_crateMoved","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"], + ["blck_fnc_crateMarker","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"], + ["blck_fnc_garrisonBuilding_RelPosSystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"], + ["blck_fnc_garrisonBuilding_ATLsystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"], + ["blck_fnc_spawnGarrisonInsideBuilding_ATL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"], + ["blck_fnc_spawnGarrisonInsideBuilding_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"], + + // Group-related functions + ["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units] + ["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group + ["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat + ["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"], + ["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"], + ["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"], +// ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"], + ["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups + ["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"], + ["blck_fnc_create_AI_Group","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI. + + // Functions specific to vehicles, whether wheeled, aircraft or static + ["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"], + ["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"], + ["blck_fnc_protectVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"], + ["blck_fnc_configureMissionVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"], + ["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"], + ["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"], + ["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"], + ["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"], + ["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"], + ["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"], + ["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"], + ["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"], + ["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"], + ["blck_fnc_deleteAIVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"], + ["blck_fnc_destroyVehicleAndCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"], + ["blck_fnc_reloadVehicleAmmo","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"], + ["blck_fnc_scanForPlayersNearVehicles","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"], + ["blck_fnc_revealNearbyPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"], + + // functions to support Units + ["blck_fnc_removeGear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"], // Strip an AI unit of all gear. + ["blck_fnc_spawnUnit","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"], // spawn individual AI + ["blck_EH_AIKilled","\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"], // Event handler to process AI deaths + ["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"], + ["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"], + ["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"], + ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"], + ["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"], + ["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"], + ["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"], + ["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"], + ["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"], + ["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"], + ["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time. + ["blck_fnc_setSkill","\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"], + ["blck_fnc_cleanupAliveAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"], + ["blck_fnc_deleteAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"], + ["blck_fnc_processAIHit","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"], + ["blck_fnc_spawnHostage","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"], + ["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"], + ["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"], + ["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"], + ["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"], + ["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"], + + // HC support functions + ["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"], + ["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"], + ["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"], + ["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"], + ["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"], + ["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"], + ["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"] +]; + +{ + _x params ["_name","_path"]; + missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; +} foreach _functions; #ifdef GRGserver blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; #endif -// Player-related functions -blck_fnc_rewardKiller = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_rewardKiller.sqf"; -blck_fnc_MessagePlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"; // Send messages to players regarding Missions - -// Mission-related functions -blck_fnc_selectAILoadout = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"; -blck_fnc_selectAISidearms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"; -blck_fnc_selectAIUniforms = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"; -blck_fnc_selectAIHeadgear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"; -blck_fnc_selectAIVests = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"; -blck_fnc_selectAIBackpacks = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"; -blck_fnc_selectChanceHeliPatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"; -blck_fnc_selectMissionHelis = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"; -blck_fnc_selectNumberAirPatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"; -blck_fnc_selectNumberParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"; -blck_fnc_selectChanceParatroops = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"; -blck_fnc_addMissionToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"; // -blck_fnc_updateMissionQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"; // -blck_fnc_spawnPendingMissions = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"; // -blck_fnc_addLiveAItoQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"; -blck_fnc_addObjToQue = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"; // -blck_fnc_spawnCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"; // Simply spawns a crate of a specified type at a specific position. -blck_fnc_spawnMissionCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"; -blck_fnc_cleanupObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"; -blck_fnc_spawnCompositionObjects = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"; -blck_fnc_spawnRandomLandscape = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"; -blck_fnc_spawnMissionVehiclePatrols = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"; -blck_fnc_spawnEmplacedWeaponArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"; -blck_fnc_spawnMissionAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"; -blck_fnc_spawnMissionLootVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"; -blck_fnc_fillBoxes = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"; // Adds items to an object according to passed parameters. See the script for details. -blck_fnc_smokeAtCrates = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"; // Spawns a wreck and adds smoke to it -blck_fnc_spawnMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"; // Deploys mines at random locations around the mission center -blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"; // clears mines in an array passed as a parameter -blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission. -blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"; -blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"; -blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"; -blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"; -blck_fnc_crateMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"; -blck_fnc_garrisonBuilding_RelPosSystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"; -blck_fnc_garrisonBuilding_ATLsystem = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"; -blck_fnc_spawnGarrisonInsideBuilding_ATL = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"; -blck_fnc_spawnGarrisonInsideBuilding_relPos = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"; - -// Group-related functions -blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units] -blck_fnc_setupWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"; // Set default waypoints for a group -blck_fnc_missionGroupMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"; // Monitors active groups for those that are stuck in an SAD waypoint but not in combat -//blck_fnc_monitorWaypoints = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_monitorWaypoints.sqf"; // periodically check for groups that have been led far from the mission -//blck_fnc_changeToSADWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"; -blck_fnc_changeToMoveWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"; -//blck_fnc_changeToSentryWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"; // -//blck_fnc_setNextWaypoint = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"; -blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups -blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"; -blck_fnc_create_AI_Group = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"; // create a group for which other functions spawn AI. - -// Functions specific to vehicles, whether wheeled, aircraft or static -blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"; -blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"; -blck_fnc_protectVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"; -blck_fnc_configureMissionVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"; -blck_fnc_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"; -blck_fnc_spawnMissionReinforcements = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"; -blck_fnc_spawnMissionHeli = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"; -blck_EH_AIVehicle_HandleHit = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"; -blck_fnc_HandleAIVehicleHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"; -blck_EH_VehicleKilled = "\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"; -blck_fnc_processAIVehicleKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"; -blck_fnc_selectPatrolVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"; -blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"; -blck_fnc_deleteAIVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"; -blck_fnc_destroyVehicleAndCrew = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"; -blck_fnc_reloadVehicleAmmo = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"; -blck_fnc_scanForPlayersNearVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"; -blck_fnc_revealNearbyPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"; - -// functions to support Units -blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear. -blck_fnc_spawnUnit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"; // spawn individual AI -blck_EH_AIKilled = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"; // Event handler to process AI deaths -blck_EH_AIHit = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"; -blck_EH_AIFiredNear = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf"; -blck_EH_unitWeaponReloaded = "\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"; -blck_EH_animDone = "\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"; -blck_fnc_processAIKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"; -blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"; -blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"; -blck_fnc_alertNearbyUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"; -blck_fnc_alertGroupUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"; -blck_fnc_alertNearbyVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"; -blck_fnc_processIlleagalAIKills = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"; -blck_fnc_cleanupDeadAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"; // handles deletion of AI bodies and gear when it is time. -blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"; -blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"; -blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"; -blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"; -blck_fnc_spawnHostage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"; -blck_fnc_spawnLeader = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"; -blck_fnc_spawnCharacter = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"; -blck_fnc_spawnParaUnits = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"; -blck_fnc_nextAnim = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"; -blck_fnc_placeCharacterInBuilding = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"; - -// HC support functions -blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"; -//blck_fnc_HC_XferVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferVehicle.sqf"; -blck_fnc_onPlayerDisconnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"; -//blck_fnc_HC_groupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_groupsAssigned.sqf"; -blck_fnc_HC_monitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"; -//blck_fnc_HC_vehicleMonitor = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_vehicleMonitor.sqf"; -//blck_fnc_HC_monitorHC = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_monitorHC.sqf"; -blck_fnc_HC_passToHCs = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"; -blck_fnc_HC_getListConnected = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"; -blck_fnc_HC_leastBurdened = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"; -blck_fnc_HC_countGroupsAssigned = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"; - onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; -diag_log "[blckeagls] Functions Loaded"; -blck_functionsCompiled = true; + + diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index 1637c0f..ac57890 100644 --- a/@GMS/addons/custom_server/Compiles/blck_variables.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_variables.sqf @@ -49,9 +49,7 @@ if (blck_simulationManager == 2) then blck_heliCrashSites = []; - - blck_mainThreadUpdateInterval = 60; blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/"; //diag_log "[blckeagls] Variables Loaded"; -blck_variablesLoaded = true; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 3e3dd19..e5b6db4 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -42,7 +42,7 @@ blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent). - blck_simulationManager = blck_useBlckeaglsSimulationManagement; + blck_simulationManager = blck_simulationManagementOff; diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager]; /* blck_simulationManagementOff - no simulation management occurs @@ -212,8 +212,12 @@ //////////////////// // Maximum number of missions shown on the map at any one time. + #ifdef GRGserver + blck_maxSpawnedMissions = 15; + #else // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; + #endif //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; @@ -222,6 +226,12 @@ blck_enableBlueMissions = 1; blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. + #ifdef GRGserver + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 2; + blck_maxcrashsites = 4; + #endif + //////////////////// // MISSION TIMERS //////////////////// @@ -232,6 +242,12 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; + #ifdef GRGserver + blck_TMin_Hunter = 120; + blck_TMin_Scouts = 115; + blck_TMin_Crashes = 115; + + #endif //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; @@ -239,6 +255,11 @@ blck_TMax_Blue = 200; blck_TMax_Red = 250; blck_TMax_UMS = 400; + #ifdef GRGserver + blck_TMax_Hunter = 200; + blck_TMax_Scouts = 200; + blck_TMax_Crashes = 200; + #endif /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -357,7 +378,61 @@ blck_maxMoneyRed = 15; blck_maxMoneyBlue = 10; - private["_modType"]; + #ifdef GRGserver + blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed. + //blck_AIAlertDistance = [150,225,400,500]; + // How precisely player locations will be revealed to AI after an AI kill + // values are ordered as follows [blue, red, green, orange]; + blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; + + blck_baseSkill = 0.7; // The overal skill of the AI - range 0.1 to 1.0. + + /*************************************************************** + + MISSION TYPE SPECIFIC AI SETTINGS + + **************************************************************/ + //This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type + // Orange Missions + blck_MinAI_Orange = 20; + blck_MaxAI_Orange = 25; + blck_AIGrps_Orange = 5; + blck_SkillsOrange = [ + ["aimingAccuracy",[0.25,0.36]],["aimingShake",[0.45,0.55]],["aimingSpeed",[0.65,0.75]],["endurance",1.00],["spotDistance",1.0],["spotTime",0.7],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] + ]; + + // Green Missions + blck_MinAI_Green = 16; + blck_MaxAI_Green = 21; + blck_AIGrps_Green = 4; + blck_SkillsGreen = [ + ["aimingAccuracy",[0.2,0.3]],["aimingShake",[0.4,0.5]],["aimingSpeed",[0.55,0.7]],["endurance",0.9],["spotDistance",0.9],["spotTime",0.65],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] + ]; + + // Red Missions + blck_MinAI_Red = 12; + blck_MaxAI_Red = 15; + blck_AIGrps_Red = 3; + blck_SkillsRed = [ + ["aimingAccuracy",[0.2,0.25]],["aimingShake",[0.35,0.4]],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.6],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] + ]; + + // Blue Missions + blck_MinAI_Blue = 8; + blck_MaxAI_Blue = 12; + blck_AIGrps_Blue = 2; + blck_SkillsBlue = [ + ["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] + ]; + + // Add some money to AI; only works with Exile for now. + blck_maxMoneyOrange = 25; + blck_maxMoneyGreen = 20; + blck_maxMoneyRed = 15; + blck_maxMoneyBlue = 10; + #endif + + private["_modType"]; _modType = [] call blck_fnc_getModType; if (_modType isEqualTo "Epoch") then { diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index bdfa5c6..0573079 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -589,13 +589,13 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","130Rnd_338_Mag"], @@ -727,14 +727,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","130Rnd_338_Mag"], @@ -875,7 +875,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -1001,7 +1001,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -1010,7 +1010,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] @@ -1081,7 +1081,7 @@ for examples of how you can do this see \Major\Compositions.sqf "FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch", "caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty", "ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator", - "ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_pills_epoch" + "ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch" ], [ // Backpacks ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index 2ee2612..9002f51 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -603,13 +603,13 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","150Rnd_93x64_Mag"], @@ -716,14 +716,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], ["srifle_DMR_03_F","10Rnd_338_Mag"], @@ -827,7 +827,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -926,7 +926,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["m107_EPOCH","5Rnd_127x108_Mag"], ["m107Tan_EPOCH","5Rnd_127x108_Mag"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -935,7 +935,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 47af76e..6283616 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -700,14 +700,14 @@ for examples of how you can do this see \Major\Compositions.sqf #endif ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","130Rnd_338_Mag"], @@ -799,14 +799,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","130Rnd_338_Mag"], @@ -894,7 +894,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -974,14 +974,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index 504fdcc..80d5520 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -720,14 +720,14 @@ for examples of how you can do this see \Major\Compositions.sqf #endif ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["MMG_01_tan_F","150Rnd_93x64_Mag"], ["MMG_02_black_F","150Rnd_93x64_Mag"], @@ -818,14 +818,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], ["srifle_DMR_03_F","10Rnd_338_Mag"], @@ -910,7 +910,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], @@ -990,14 +990,14 @@ for examples of how you can do this see \Major\Compositions.sqf ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], ["srifle_LRR_F","7Rnd_408_Mag"], ["srifle_EBR_F","20Rnd_762x51_Mag"], ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], ["MMG_01_hex_F","150Rnd_93x64_Mag"], ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index a4b3d78..dd114cd 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -203,7 +203,12 @@ //////////////////// // Maximum number of missions shown on the map at any one time. + #ifdef GRGserver + blck_maxSpawnedMissions = 15; + #else + // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; + #endif //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; @@ -212,6 +217,12 @@ blck_enableBlueMissions = 2; blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. + #ifdef GRGserver + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 2; + blck_maxcrashsites = 3; + #endif + //////////////////// // MISSION TIMERS //////////////////// @@ -222,6 +233,12 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; + #ifdef GRGserver + blck_TMin_Hunter = 120; + blck_TMin_Scouts = 115; + blck_TMin_Crashes = 115; + + #endif //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; @@ -229,6 +246,11 @@ blck_TMax_Blue = 200; blck_TMax_Red = 250; blck_TMax_UMS = 200; + #ifdef GRGserver + blck_TMax_Hunter = 200; + blck_TMax_Scouts = 200; + blck_TMax_Crashes = 200; + #endif /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -286,6 +308,11 @@ //This defines how long after an AI dies that it's body disappears. blck_bodyCleanUpTimer = 40*60; // time in seconds after which dead AI bodies are deleted + #ifdef GRGserver + #ifdef blck_milServer + blck_bodyCleanUpTimer = 40*60; // Trying to reduce lag with player counts > 20 + #endif + #endif // Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable // values are ordered as follows [blue, red, green, orange]; @@ -345,6 +372,60 @@ blck_maxMoneyRed = 30; blck_maxMoneyBlue = 20; + #ifdef GRGserver + blck_AIAlertDistance = [250,425,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed. + //blck_AIAlertDistance = [150,225,400,500]; + // How precisely player locations will be revealed to AI after an AI kill + // values are ordered as follows [blue, red, green, orange]; + blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; + + blck_baseSkill = 1; // The overal skill of the AI - range 0.1 to 1.0. + + /*************************************************************** + + MISSION TYPE SPECIFIC AI SETTINGS + + **************************************************************/ + //This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type + // Orange Missions + blck_MinAI_Orange = 30; + blck_MaxAI_Orange = 35; + blck_AIGrps_Orange = 5; + blck_SkillsOrange = [ + ["aimingAccuracy",0.6],["aimingShake",0.9],["aimingSpeed",0.9],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] + ]; + + // Green Missions + blck_MinAI_Green = 26; + blck_MaxAI_Green = 31; + blck_AIGrps_Green = 4; + blck_SkillsGreen = [ + ["aimingAccuracy",0.55],["aimingShake",0.75],["aimingSpeed",0.85],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] + ]; + + // Red Missions + blck_MinAI_Red = 12; + blck_MaxAI_Red = 18; + blck_AIGrps_Red = 3; + blck_SkillsRed = [ + ["aimingAccuracy",0.4],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] + ]; + + // Blue Missions + blck_MinAI_Blue = 8; + blck_MaxAI_Blue = 14; + blck_AIGrps_Blue = 2; + blck_SkillsBlue = [ + ["aimingAccuracy",0.12],["aimingShake",0.3],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] + ]; + + // Add some money to AI; only works with Exile for now. + blck_maxMoneyOrange = 25; + blck_maxMoneyGreen = 20; + blck_maxMoneyRed = 15; + blck_maxMoneyBlue = 10; + #endif + private["_modType"]; _modType = [] call blck_fnc_getModType; if (_modType isEqualTo "Epoch") then @@ -374,4 +455,4 @@ waitUntil{blck_dynamicConfigsLoaded}; blck_dynamicConfigsLoaded = nil; }; - blck_configsLoaded = true; + diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index 36d8dfd..9c98ba7 100644 --- a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf +++ b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf @@ -149,13 +149,13 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in blck_maxSpawnedMissions = 15; blck_mainThreadUpdateInterval = 10; blck_enableOrangeMissions = 1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = -1; - blck_enableBlueMissions = -1; - blck_numberUnderwaterDynamicMissions = -3; - blck_enableHunterMissions = -1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = -3; + blck_enableGreenMissions = 1; + blck_enableRedMissions = 1; + blck_enableBlueMissions = 1; + blck_numberUnderwaterDynamicMissions = 3; + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 1; + blck_maxCrashSites = 3; //blck_killEmptyStaticWeapons = false; //blck_killEmptyAIVehicles = true; @@ -165,7 +165,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in blck_vehicleDeleteTimer = 20; blck_MissionTimeout = 30; - blck_noPatrolHelisOrange = 1; + //blck_noPatrolHelisOrange = 1; //blck_chanceHeliPatrolOrange = 1; //blck_chanceParaOrange = 1; //blck_chanceHeliPatrolBlue = -1; @@ -175,12 +175,12 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in //blck_paraTriggerDistanceBlue = 400; //blck_chanceHeliPatrolBlue = 1; - blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions + //blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions //blck_SpawnEmplaced_Green = 1; // Number of static weapons at Green Missions //blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions //blck_SpawnEmplaced_Red = 1; - blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions + //blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions //blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions //blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions //blck_SpawnVeh_Red = 1; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config_DEV.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config_DEV.sqf deleted file mode 100644 index 738730f..0000000 --- a/@GMS/addons/custom_server/Configs/blck_custom_config_DEV.sqf +++ /dev/null @@ -1,1352 +0,0 @@ - -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - Last Modified 3-14-17 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -diag_log "[blckeagls] Loading Configuration Overides"; - -private["_startTime"]; -_startTime = diag_tickTime; -_world = toLower format ["%1", worldName]; -private["_nightAccel","_dayAccel","_duskAccel"]; -switch (_world) do { - case "altis":{_nightAccel = 3;_dayAccel=0.5; _duskAccel = 3;}; - case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;}; - case "namalsk":{_nightAccel = 12; _dayAccel = 2; _duskAccel = 6;}; -}; - -switch (toLower (worldName)) do -{ - case "altis": - { - private ["_arr","_sunrise","_sunset","_time"]; - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _daylight = _sunset - _sunrise; - _nightTime = abs(24 - _daylight); - _time = dayTime; - #ifdef blck_milServer - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight)/3; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = _nightTime / 6; // Nighttim time acceleration - #else - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight)/8; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = _nightTime / 8; // Nighttim time acceleration - #endif - //blck_maxCrashSites = 3; - }; - case"tanoa": - { - blck_maxCrashSites = 2; - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1.4; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 8; // Nighttim time acceleration - }; - case"namalsk": - { - private ["_arr","_sunrise","_sunset","_time"]; - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _daylight = _sunset - _sunrise; - _nightTime = abs(24 - _daylight); - _time = dayTime; - _serverUpTime = 8; - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = 1; - blck_enableBlueMissions = -1; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 2; // Daytime time accelearation - blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation - blck_timeAccelerationNight = (12); // Nighttim time acceleration - }; - case "esseker": - { - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = 1; - blck_enableBlueMissions = -1; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 1; - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1; // Daytime time accelearation - blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 6; // Nighttim time acceleration - }; - case "panthera3": - { - blck_maxCrashSites = 2; - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1.4; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 8; // Nighttim time acceleration - }; - case "malden": - { - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _time = dayTime; - _daylight = _sunset - _sunrise; - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight / 2.5); // Daytime time accelearation - blck_timeAccelerationDusk = 8; // Dawn/dusk time accelearation - blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration - blck_enableOrangeMissions = -1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = -2; - blck_enableBlueMissions = -1; - blck_numberUnderwaterDynamicMissions = -3; - blck_enableHunterMissions = -1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 3; - }; -}; - -if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in \custom_server\compiles\blck_variables.sqf -{ - // Used primarily for debugging. - diag_log "[blckeagls] Debug seting is ON, Custom configurations used"; - - //blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - //blck_timeAccelerationDay = 1; // Daytime time accelearation - //blck_timeAccelerationDusk = 18; // Dawn/dusk time accelearation - //blck_timeAccelerationNight = 24; // Nighttim time acceleration - - blck_useHC = true; - - blck_maxSpawnedMissions = 15; - blck_mainThreadUpdateInterval = 10; - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = 1; - blck_enableRedMissions = 1; - blck_enableBlueMissions = 1; - blck_numberUnderwaterDynamicMissions = 1; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = 1; - blck_maxCrashSites = 3; - - blck_cleanupCompositionTimer = 20; // Time after mission completion at which items in the composition are deleted. - blck_AliveAICleanUpTimer = 20; // Time after mission completion at which any remaining live AI are deleted. - blck_bodyCleanUpTimer = 20; - blck_vehicleDeleteTimer = 20; - //blck_MissionTimeout = 30; - - blck_noPatrolHelisOrange = 1; - blck_chanceHeliPatrolOrange = 1; - blck_chanceParaOrange = 1; - blck_chanceHeliPatrolBlue = -1; - blck_noPatrolHelisBlue = -1; - blck_chanceParaBlue = -1; // [0 - 1] set to 0 to deactivate and 1 to always have paratroops spawn over the center of the mission. This value can be a range as well [0.1,0.3] - blck_noParaBlue = 3; // [1-N] - blck_paraTriggerDistanceBlue = 400; - - //blck_chanceHeliPatrolBlue = 1; - blck_SpawnEmplaced_Orange = 1; // Number of static weapons at Orange Missions - blck_SpawnEmplaced_Green = 1; // Number of static weapons at Green Missions - blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions - blck_SpawnEmplaced_Red = 1; - - blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions - blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions - blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions - blck_SpawnVeh_Red = 1; - - blck_TMin_Blue = 7; - blck_TMin_Red = 10; - blck_TMin_Green = 13; - blck_TMin_Orange = 16; - blck_TMin_Hunter = 20; - blck_TMin_Scouts = 20; - blck_TMin_Crashes = 5; - blck_TMin_UMS = 20; - //Maximum Spawn time between missions in seconds - blck_TMax_Blue = 12; - blck_TMax_Red = 15; - blck_TMax_Green = 17; - blck_TMax_Orange = 21; - blck_TMax_Hunter = 22; - blck_TMax_Scouts = 22; - blck_TMax_Crashes = 15; - blck_TMax_UMS = 25; - - //blck_MinAI_Orange = 1; - //blck_MaxAI_Orange = 2; - //blck_AIGrps_Orange = 1; - - blck_MinAI_Blue = 1; - blck_MaxAI_Blue = 2; - blck_AIGrps_Blue = 1; - - blck_AIPatrolVehicles = ["Exile_Car_MB4WDOpen"]; - /* - blck_SkillsBlue = [ - ["aimingAccuracy",0.01], - ["aimingShake",0.01], - ["aimingSpeed",0.01], - ["endurance",0.01], - ["spotDistance",0.01], - ["spotTime",0.01], - ["courage",0.01], - ["reloadSpeed",0.80], - ["commanding",0.8], - ["general",1.00] - ]; - */ -}; - -blck_CUPWeapons = [ - "CUP_lmg_L7A2", - "CUP_lmg_L110A1", - "CUP_lmg_M240", - "CUP_lmg_M249", - "CUP_lmg_M249_ElcanM145_Laser", - "CUP_lmg_Mk48_des", - "CUP_lmg_Mk48_wdl", - "CUP_lmg_PKM", - "CUP_lmg_UK59", - "CUP_lmg_Pecheneg", - "CUP_arifle_AK74", - "CUP_arifle_AK107", - "CUP_arifle_AK107_GL", - "CUP_arifle_AKS74", - "CUP_arifle_AKS74U", - "CUP_arifle_AK74_GL", - "CUP_arifle_AKM", - "CUP_arifle_AKS", - "CUP_arifle_AKS_Gold", - "CUP_arifle_RPK74", - "CUP_arifle_CZ805_A2", - "CUP_arifle_FNFAL", - "CUP_arifle_G36A", - "CUP_arifle_G36A_camo", - "CUP_arifle_G36K", - "CUP_arifle_G36K_camo", - "CUP_arifle_G36C", - "CUP_arifle_G36C_camo", - "CUP_arifle_MG36", - "CUP_arifle_MG36_camo", - "CUP_arifle_L85A2", - "CUP_arifle_L85A2_GL", - "CUP_arifle_L86A2", - "CUP_arifle_M16A2", - "CUP_arifle_M16A2_GL", - "CUP_arifle_M4A1", - "CUP_arifle_M4A1_camo", - "CUP_arifle_M4A3_desert_Aim_Flashlight", - "CUP_arifle_M16A4_Base", - "CUP_arifle_M4A1_BUIS_GL", - "CUP_arifle_M4A1_BUIS_camo_GL", - "CUP_arifle_M4A1_BUIS_desert_GL", - "CUP_arifle_M4A1_desert", - "CUP_arifle_Sa58P", - "CUP_arifle_Sa58V", - "CUP_arifle_Mk16_CQC", - "CUP_arifle_XM8_Railed", - "CUP_arifle_XM8_Carbine", - "CUP_arifle_XM8_Carbine_FG", - "CUP_arifle_XM8_Carbine_GL", - "CUP_arifle_XM8_Compact", - "CUP_arifle_xm8_SAW", - "CUP_arifle_xm8_sharpshooter", - "CUP_arifle_CZ805_A1", - "CUP_arifle_CZ805_GL", - "CUP_arifle_CZ805_B_GL", - "CUP_arifle_CZ805_B", - "CUP_arifle_Sa58P_des", - "CUP_arifle_Sa58V_camo", - "CUP_arifle_Sa58RIS1", - "CUP_arifle_Sa58RIS2", - "CUP_arifle_Mk16_CQC_FG", - "CUP_arifle_Mk16_CQC_SFG", - "CUP_arifle_Mk16_CQC_EGLM", - "CUP_arifle_Mk16_STD", - "CUP_arifle_Mk16_STD_FG", - "CUP_arifle_Mk16_STD_SFG", - "CUP_arifle_Mk16_STD_EGLM", - "CUP_arifle_Mk16_SV", - "CUP_arifle_Mk17_CQC", - "CUP_arifle_Mk17_CQC_FG", - "CUP_arifle_Mk17_CQC_SFG", - "CUP_arifle_Mk17_CQC_EGLM", - "CUP_arifle_Mk17_STD", - "CUP_arifle_Mk17_STD_FG", - "CUP_arifle_Mk17_STD_SFG", - "CUP_arifle_Mk17_STD_EGLM", - "CUP_arifle_Mk20", - "CUP_srifle_AWM_des", - "CUP_srifle_AWM_wdl", - "CUP_srifle_CZ750", - "CUP_srifle_DMR", - "CUP_srifle_CZ550", - "CUP_srifle_LeeEnfield", - "CUP_srifle_M14", - "CUP_srifle_Mk12SPR", - "CUP_srifle_M24_des", - "CUP_srifle_M24_wdl", - "CUP_srifle_M24_ghillie", - "CUP_srifle_M40A3", - "CUP_srifle_M107_Base", - "CUP_srifle_M110", - "CUP_srifle_SVD", - "CUP_srifle_SVD_des", - "CUP_srifle_SVD_wdl_ghillie", - "CUP_srifle_SVD_NSPU", - "CUP_srifle_ksvk", - "CUP_srifle_VSSVintorez", - "CUP_srifle_AS50" -]; - -blck_CUPUniforms = [ - "CUP_U_B_CZ_WDL_TShirt", - "CUP_U_I_GUE_Anorak_01", - "CUP_U_I_GUE_Anorak_03", - "CUP_U_I_GUE_Anorak_02", - "CUP_U_B_BAF_DDPM_S2_UnRolled", - "CUP_U_B_BAF_DDPM_S1_RolledUp", - "CUP_U_B_BAF_DDPM_Tshirt", - "CUP_U_B_BAF_DPM_S2_UnRolled", - "CUP_U_B_BAF_DPM_S1_RolledUp", - "CUP_U_B_BAF_DPM_Tshirt", - "CUP_U_B_BAF_MTP_S2_UnRolled", - "CUP_U_B_BAF_MTP_S1_RolledUp", - "CUP_U_B_BAF_MTP_Tshirt", - "CUP_U_B_BAF_MTP_S4_UnRolled", - "CUP_U_B_BAF_MTP_S3_RolledUp", - "CUP_U_B_BAF_MTP_S5_UnRolled", - "CUP_U_B_BAF_MTP_S6_UnRolled", - "CUP_U_O_CHDKZ_Bardak", - "CUP_U_O_CHDKZ_Lopotev", - "CUP_U_O_CHDKZ_Kam_03", - "CUP_U_O_CHDKZ_Kam_01", - "CUP_U_O_CHDKZ_Kam_04", - "CUP_U_O_CHDKZ_Kam_02", - "CUP_U_O_CHDKZ_Commander", - "CUP_U_O_CHDKZ_Kam_08", - "CUP_U_O_CHDKZ_Kam_05", - "CUP_U_O_CHDKZ_Kam_07", - "CUP_U_O_CHDKZ_Kam_06", - "CUP_U_C_Citizen_02", - "CUP_U_C_Citizen_01", - "CUP_U_C_Citizen_04", - "CUP_U_C_Citizen_03", - "CUP_U_C_Fireman_01", - "CUP_U_B_GER_Flecktarn_2", - "CUP_U_B_GER_Tropentarn_2", - "CUP_U_B_GER_Flecktarn_1", - "CUP_U_B_GER_Tropentarn_1", - "CUP_O_TKI_Khet_Jeans_04", - "CUP_O_TKI_Khet_Jeans_02", - "CUP_O_TKI_Khet_Jeans_01", - "CUP_O_TKI_Khet_Jeans_03", - "CUP_O_TKI_Khet_Partug_04", - "CUP_O_TKI_Khet_Partug_02", - "CUP_O_TKI_Khet_Partug_01", - "CUP_O_TKI_Khet_Partug_07", - "CUP_O_TKI_Khet_Partug_08", - "CUP_O_TKI_Khet_Partug_05", - "CUP_O_TKI_Khet_Partug_06", - "CUP_O_TKI_Khet_Partug_03", - "CUP_U_C_Labcoat_02", - "CUP_U_C_Labcoat_03", - "CUP_U_C_Labcoat_01", - "CUP_U_B_USMC_Officer", - "CUP_U_B_USMC_MARPAT_WDL_RollUpKneepad", - "CUP_U_B_USMC_MARPAT_WDL_RolledUp", - "CUP_U_B_USMC_MARPAT_WDL_Kneepad", - "CUP_U_B_USMC_MARPAT_WDL_TwoKneepads", - "CUP_U_B_USMC_MARPAT_WDL_Sleeves", - "CUP_U_C_Mechanic_02", - "CUP_U_C_Mechanic_03", - "CUP_U_C_Mechanic_01", - "CUP_U_I_GUE_Flecktarn2", - "CUP_U_I_GUE_Flecktarn3", - "CUP_U_I_GUE_Flecktarn", - "CUP_U_I_GUE_Woodland1", - "CUP_B_USMC_Navy_Blue", - "CUP_B_USMC_Navy_Brown", - "CUP_B_USMC_Navy_Green", - "CUP_B_USMC_Navy_Red", - "CUP_B_USMC_Navy_Violet", - "CUP_B_USMC_Navy_White", - "CUP_B_USMC_Navy_Yellow", - "CUP_U_C_Rescuer_01", - "CUP_U_O_Partisan_TTsKO", - "CUP_U_O_Partisan_TTsKO_Mixed", - "CUP_U_O_Partisan_VSR_Mixed1", - "CUP_U_O_Partisan_VSR_Mixed2", - "CUP_U_C_Pilot_01", - "CUP_U_C_Policeman_01", - "CUP_U_C_Priest_01", - "CUP_U_C_Profiteer_02", - "CUP_U_C_Profiteer_03", - "CUP_U_C_Profiteer_01", - "CUP_U_C_Profiteer_04", - "CUP_U_I_RACS_Desert_2", - "CUP_U_I_RACS_Urban_2", - "CUP_U_I_RACS_PilotOverall", - "CUP_U_I_RACS_Desert_1", - "CUP_U_I_RACS_Urban_1", - "CUP_U_C_Rocker_01", - "CUP_U_C_Rocker_03", - "CUP_U_C_Rocker_02", - "CUP_U_C_Rocker_04", - "CUP_U_O_RUS_Gorka_Green", - "CUP_U_O_RUS_Gorka_Partizan_A", - "CUP_U_O_RUS_Gorka_Partizan", - "CUP_U_O_RUS_EMR_1_VDV", - "CUP_U_O_RUS_EMR_1", - "CUP_U_O_RUS_Flora_1_VDV", - "CUP_U_O_RUS_Flora_1", - "CUP_U_O_RUS_Commander", - "CUP_U_O_RUS_EMR_2_VDV", - "CUP_U_O_RUS_EMR_2", - "CUP_U_O_RUS_Flora_2_VDV", - "CUP_U_O_RUS_Flora_2", - "CUP_U_O_SLA_Officer_Suit", - "CUP_U_O_SLA_Overalls_Pilot", - "CUP_U_O_SLA_Overalls_Tank", - "CUP_U_O_SLA_MixedCamo", - "CUP_U_O_SLA_Desert", - "CUP_U_O_SLA_Green", - "CUP_U_O_SLA_Urban", - "CUP_U_B_FR_SpecOps", - "CUP_U_B_FR_Officer", - "CUP_U_B_FR_DirAction", - "CUP_U_B_FR_DirAction2", - "CUP_U_B_FR_Corpsman", - "CUP_U_B_FR_Light", - "CUP_U_B_FR_Scout1", - "CUP_U_B_FR_Scout2", - "CUP_U_B_FR_Scout3", - "CUP_U_B_FR_Scout", - "CUP_U_C_Suit_01", - "CUP_U_C_Suit_02", - "CUP_U_O_TK_Officer", - "CUP_U_O_SLA_Officer", - "CUP_U_O_TK_Green", - "CUP_U_O_TK_MixedCamo", - "CUP_U_B_USArmy_TwoKnee", - "CUP_U_B_USArmy_Base", - "CUP_U_B_USArmy_Soft", - "CUP_U_B_USArmy_UBACS", - "CUP_U_B_USArmy_PilotOverall", - "CUP_U_B_USMC_PilotOverall", - "CUP_U_C_Villager_01", - "CUP_U_C_Villager_04", - "CUP_U_C_Villager_02", - "CUP_U_C_Villager_03", - "CUP_U_C_Woodlander_01", - "CUP_U_C_Woodlander_02", - "CUP_U_C_Woodlander_03", - "CUP_U_C_Woodlander_04", - "CUP_U_C_Worker_03", - "CUP_U_C_Worker_04", - "CUP_U_C_Worker_02", - "CUP_U_C_Worker_01", - "CUP_U_B_BAF_DDPM_Ghillie", - "CUP_U_B_BAF_MTP_Ghillie", - "CUP_U_B_BAF_DPM_Ghillie", - "CUP_U_B_GER_Ghillie", - "CUP_U_B_GER_Fleck_Ghillie", - "CUP_U_B_USMC_Ghillie_WDL", - "CUP_U_I_Ghillie_Top", - "CUP_U_O_RUS_Ghillie", - "CUP_U_O_TK_Ghillie", - "CUP_U_O_TK_Ghillie_Top", - "CUP_U_B_USArmy_Ghillie" -]; - -blck_CUPVests = [ - "CUP_V_BAF_Osprey_Mk2_DDPM_Grenadier", - "CUP_V_BAF_Osprey_Mk2_DDPM_Medic", - "CUP_V_BAF_Osprey_Mk2_DDPM_Officer", - "CUP_V_BAF_Osprey_Mk2_DDPM_Sapper", - "CUP_V_BAF_Osprey_Mk2_DDPM_Scout", - "CUP_V_BAF_Osprey_Mk2_DDPM_Soldier1", - "CUP_V_BAF_Osprey_Mk2_DDPM_Soldier2", - "CUP_V_BAF_Osprey_Mk2_DPM_Grenadier", - "CUP_V_BAF_Osprey_Mk2_DPM_Medic", - "CUP_V_BAF_Osprey_Mk2_DPM_Officer", - "CUP_V_BAF_Osprey_Mk2_DPM_Sapper", - "CUP_V_BAF_Osprey_Mk2_DPM_Scout", - "CUP_V_BAF_Osprey_Mk2_DPM_Soldier1", - "CUP_V_BAF_Osprey_Mk2_DPM_Soldier2", - "CUP_V_BAF_Osprey_Mk4_MTP_Grenadier", - "CUP_V_BAF_Osprey_Mk4_MTP_MachineGunner", - "CUP_V_BAF_Osprey_Mk4_MTP_Rifleman", - "CUP_V_BAF_Osprey_Mk4_MTP_SquadLeader", - "CUP_V_B_GER_Carrier_Rig", - "CUP_V_B_GER_Carrier_Rig_2", - "CUP_V_B_GER_Carrier_Vest", - "CUP_V_B_GER_Carrier_Vest_2", - "CUP_V_B_GER_Carrier_Vest_3", - "CUP_V_B_GER_Vest_1", - "CUP_V_B_GER_Vest_2", - "CUP_V_B_LHDVest_Blue", - "CUP_V_B_LHDVest_Brown", - "CUP_V_B_LHDVest_Green", - "CUP_V_B_LHDVest_Red", - "CUP_V_B_LHDVest_Violet", - "CUP_V_B_LHDVest_White", - "CUP_V_B_LHDVest_Yellow", - "CUP_V_B_MTV", - "CUP_V_B_MTV_LegPouch", - "CUP_V_B_MTV_MG", - "CUP_V_B_MTV_Marksman", - "CUP_V_B_MTV_Mine", - "CUP_V_B_MTV_Patrol", - "CUP_V_B_MTV_PistolBlack", - "CUP_V_B_MTV_Pouches", - "CUP_V_B_MTV_TL", - "CUP_V_B_MTV_noCB", - "CUP_V_B_PilotVest", - "CUP_V_B_RRV_DA1", - "CUP_V_B_RRV_DA2", - "CUP_V_B_RRV_Light", - "CUP_V_B_RRV_MG", - "CUP_V_B_RRV_Medic", - "CUP_V_B_RRV_Officer", - "CUP_V_B_RRV_Scout", - "CUP_V_B_RRV_Scout2", - "CUP_V_B_RRV_Scout3", - "CUP_V_B_RRV_TL", - "CUP_V_I_Carrier_Belt", - "CUP_V_I_Guerilla_Jacket", - "CUP_V_I_RACS_Carrier_Vest", - "CUP_V_I_RACS_Carrier_Vest_2", - "CUP_V_I_RACS_Carrier_Vest_3", - "CUP_V_OI_TKI_Jacket1_01", - "CUP_V_OI_TKI_Jacket1_02", - "CUP_V_OI_TKI_Jacket1_03", - "CUP_V_OI_TKI_Jacket1_04", - "CUP_V_OI_TKI_Jacket1_05", - "CUP_V_OI_TKI_Jacket1_06", - "CUP_V_OI_TKI_Jacket2_01", - "CUP_V_OI_TKI_Jacket2_02", - "CUP_V_OI_TKI_Jacket2_03", - "CUP_V_OI_TKI_Jacket2_04", - "CUP_V_OI_TKI_Jacket2_05", - "CUP_V_OI_TKI_Jacket2_06", - "CUP_V_OI_TKI_Jacket3_01", - "CUP_V_OI_TKI_Jacket3_02", - "CUP_V_OI_TKI_Jacket3_03", - "CUP_V_OI_TKI_Jacket3_04", - "CUP_V_OI_TKI_Jacket3_05", - "CUP_V_OI_TKI_Jacket3_06", - "CUP_V_OI_TKI_Jacket4_01", - "CUP_V_OI_TKI_Jacket4_02", - "CUP_V_OI_TKI_Jacket4_03", - "CUP_V_OI_TKI_Jacket4_04", - "CUP_V_OI_TKI_Jacket4_05", - "CUP_V_OI_TKI_Jacket4_06", - "CUP_V_O_SLA_Carrier_Belt", - "CUP_V_O_SLA_Carrier_Belt02", - "CUP_V_O_SLA_Carrier_Belt03", - "CUP_V_O_SLA_Flak_Vest01", - "CUP_V_O_SLA_Flak_Vest02", - "CUP_V_O_SLA_Flak_Vest03", - "CUP_V_O_TK_CrewBelt", - "CUP_V_O_TK_OfficerBelt", - "CUP_V_O_TK_OfficerBelt2", - "CUP_V_O_TK_Vest_1", - "CUP_V_O_TK_Vest_2" -]; - -blck_CUPBackpacks = [ - "CUP_B_ACRPara_m95", - "CUP_B_AssaultPack_ACU", - "CUP_B_AssaultPack_Black", - "CUP_B_AssaultPack_Coyote", - "CUP_B_Bergen_BAF", - "CUP_B_CivPack_WDL", - "CUP_B_GER_Pack_Flecktarn", - "CUP_B_GER_Pack_Tropentarn", - "CUP_B_HikingPack_Civ", - "CUP_B_MOLLE_WDL", - "CUP_B_RUS_Backpack", - "CUP_B_USMC_AssaultPack", - "CUP_B_USMC_MOLLE", - "CUP_B_USPack_Black", - "CUP_B_USPack_Coyote" -]; - -blck_CUPHeadgear = [ - "CUP_H_BAF_Helmet_1_DDPM", - "CUP_H_BAF_Helmet_1_DPM", - "CUP_H_BAF_Helmet_1_MTP", - "CUP_H_BAF_Helmet_2_DDPM", - "CUP_H_BAF_Helmet_2_DPM", - "CUP_H_BAF_Helmet_2_MTP", - "CUP_H_BAF_Helmet_3_DDPM", - "CUP_H_BAF_Helmet_3_DPM", - "CUP_H_BAF_Helmet_3_MTP", - "CUP_H_BAF_Helmet_4_DDPM", - "CUP_H_BAF_Helmet_4_DPM", - "CUP_H_BAF_Helmet_4_MTP", - "CUP_H_BAF_Officer_Beret_PRR_O", - "CUP_H_C_Beanie_01", - "CUP_H_C_Beanie_02", - "CUP_H_C_Beanie_03", - "CUP_H_C_Beanie_04", - "CUP_H_C_Beret_01", - "CUP_H_C_Beret_02", - "CUP_H_C_Beret_03", - "CUP_H_C_Beret_04", - "CUP_H_C_Ushanka_01", - "CUP_H_C_Ushanka_02", - "CUP_H_C_Ushanka_03", - "CUP_H_C_Ushanka_04", - "CUP_H_FR_BandanaGreen", - "CUP_H_FR_BandanaWdl", - "CUP_H_FR_Bandana_Headset", - "CUP_H_FR_BeanieGreen", - "CUP_H_FR_BoonieMARPAT", - "CUP_H_FR_BoonieWDL", - "CUP_H_FR_Cap_Headset_Green", - "CUP_H_FR_Cap_Officer_Headset", - "CUP_H_FR_ECH", - "CUP_H_FR_Headband_Headset", - "CUP_H_FR_Headset", - "CUP_H_FR_PRR_BoonieWDL", - "CUP_H_GER_Boonie_Flecktarn", - "CUP_H_GER_Boonie_desert", - "CUP_H_NAPA_Fedora", - "CUP_H_Navy_CrewHelmet_Blue", - "CUP_H_Navy_CrewHelmet_Brown", - "CUP_H_Navy_CrewHelmet_Green", - "CUP_H_Navy_CrewHelmet_Red", - "CUP_H_Navy_CrewHelmet_Violet", - "CUP_H_Navy_CrewHelmet_White", - "CUP_H_Navy_CrewHelmet_Yellow", - "CUP_H_PMC_Cap_Grey", - "CUP_H_PMC_Cap_PRR_Grey", - "CUP_H_PMC_Cap_PRR_Tan", - "CUP_H_PMC_Cap_Tan", - "CUP_H_PMC_EP_Headset", - "CUP_H_PMC_PRR_Headset", - "CUP_H_RACS_Beret_Blue", - "CUP_H_RACS_Helmet_DPAT", - "CUP_H_RACS_Helmet_Des", - "CUP_H_RACS_Helmet_Goggles_DPAT", - "CUP_H_RACS_Helmet_Goggles_Des", - "CUP_H_RACS_Helmet_Headset_DPAT", - "CUP_H_RACS_Helmet_Headset_Des", - "CUP_H_SLA_BeenieGreen", - "CUP_H_SLA_Beret", - "CUP_H_SLA_Boonie", - "CUP_H_SLA_Helmet", - "CUP_H_SLA_OfficerCap", - "CUP_H_SLA_Pilot_Helmet", - "CUP_H_SLA_SLCap", - "CUP_H_SLA_TankerHelmet", - "CUP_H_TKI_Lungee_01", - "CUP_H_TKI_Lungee_02", - "CUP_H_TKI_Lungee_03", - "CUP_H_TKI_Lungee_04", - "CUP_H_TKI_Lungee_05", - "CUP_H_TKI_Lungee_06", - "CUP_H_TKI_Lungee_Open_01", - "CUP_H_TKI_Lungee_Open_02", - "CUP_H_TKI_Lungee_Open_03", - "CUP_H_TKI_Lungee_Open_04", - "CUP_H_TKI_Lungee_Open_05", - "CUP_H_TKI_Lungee_Open_06", - "CUP_H_TKI_Pakol_1_01", - "CUP_H_TKI_Pakol_1_02", - "CUP_H_TKI_Pakol_1_03", - "CUP_H_TKI_Pakol_1_04", - "CUP_H_TKI_Pakol_1_05", - "CUP_H_TKI_Pakol_1_06", - "CUP_H_TKI_Pakol_2_01", - "CUP_H_TKI_Pakol_2_02", - "CUP_H_TKI_Pakol_2_03", - "CUP_H_TKI_Pakol_2_04", - "CUP_H_TKI_Pakol_2_05", - "CUP_H_TKI_Pakol_2_06", - "CUP_H_TKI_SkullCap_01", - "CUP_H_TKI_SkullCap_02", - "CUP_H_TKI_SkullCap_03", - "CUP_H_TKI_SkullCap_04", - "CUP_H_TKI_SkullCap_05", - "CUP_H_TKI_SkullCap_06", - "CUP_H_TK_Beret", - "CUP_H_TK_Helmet", - "CUP_H_TK_Lungee", - "CUP_H_TK_PilotHelmet", - "CUP_H_TK_TankerHelmet", - "CUP_H_USMC_Crew_Helmet", - "CUP_H_USMC_Goggles_HelmetWDL", - "CUP_H_USMC_HeadSet_GoggleW_HelmetWDL", - "CUP_H_USMC_HeadSet_HelmetWDL", - "CUP_H_USMC_HelmetWDL", - "CUP_H_USMC_Helmet_Pilot", - "CUP_H_USMC_Officer_Cap" -]; -blck_RHS_Weapons = [ - "rhs_weap_hk416d10", - "rhs_weap_hk416d10_LMT", - "rhs_weap_hk416d10_m320", - "rhs_weap_hk416d145", - "rhs_weap_hk416d145_m320", - "rhs_weap_m16a4", - "rhs_weap_m16a4_carryhandle", - "rhs_weap_m16a4_carryhandle_M203", - "rhs_weap_m16a4_carryhandle_pmag", - "rhs_weap_m4_carryhandle", - "rhs_weap_m4_carryhandle_pmag", - "rhs_weap_m4_m203", - "rhs_weap_m4_m320", - "rhs_weap_m4a1", - "rhs_weap_m4a1_blockII", - "rhs_weap_m4a1_blockII_KAC", - "rhs_weap_m4a1_blockII_KAC_bk", - "rhs_weap_m4a1_blockII_KAC_d", - "rhs_weap_m4a1_blockII_KAC_wd", - "rhs_weap_m4a1_blockII_M203", - "rhs_weap_m4a1_blockII_M203_bk", - "rhs_weap_m4a1_blockII_M203_d", - "rhs_weap_m4a1_blockII_M203_wd", - "rhs_weap_m4a1_blockII_bk", - "rhs_weap_m4a1_blockII_d", - "rhs_weap_m4a1_blockII_wd", - "rhs_weap_m4a1_carryhandle", - "rhs_weap_m4a1_carryhandle_m203", - "rhs_weap_m4a1_carryhandle_pmag", - "rhs_weap_m4a1_m203", - "rhs_weap_m4a1_m320", - "rhs_weap_mk18", - "rhs_weap_mk18", - "rhs_weap_mk18_KAC", - "rhs_weap_mk18_KAC_bk", - "rhs_weap_mk18_KAC_d", - "rhs_weap_mk18_KAC_wd", - "rhs_weap_mk18_bk", - "rhs_weap_mk18_d", - "rhs_weap_mk18_m320", - "rhs_weap_mk18_wd", - "rhs_weap_m249_pip_L", - "rhs_weap_m249_pip_L_para", - "rhs_weap_m249_pip_L_vfg", - "rhs_weap_m249_pip_S", - "rhs_weap_m249_pip_S_para", - "rhs_weap_m249_pip_S_vfg", - "rhs_weap_m240B", - "rhs_weap_m240B_CAP", - "rhs_weap_m240G", - "rhs_weap_pkm", - "rhs_weap_pkp", - // Added by ElShotte - 1 Item - "rhs_weap_m27iar" -]; - -blck_RHS_UniformsUSAF = [ - "rhs_uniform_FROG01_m81", - "rhs_uniform_FROG01_d", - "rhs_uniform_FROG01_wd", - "rhs_uniform_cu_ocp", - "rhs_uniform_cu_ucp", - "rhs_uniform_cu_ocp_101st", - "rhs_uniform_cu_ocp_10th", - "rhs_uniform_cu_ocp_1stcav", - "rhs_uniform_cu_ocp_82nd", - "rhs_uniform_cu_ucp_101st", - "rhs_uniform_cu_ucp_10th", - "rhs_uniform_cu_ucp_1stcav", - "rhs_uniform_cu_ucp_82nd", - "rhs_uniform_cu_ocp_patchless", - "rhs_uniform_cu_ucp_patchless", - // Added by ElShotte - 5 Items - "rhs_uniform_g3_m81", - "rhs_uniform_g3_blk", - "rhs_uniform_g3_mc", - "rhs_uniform_g3_rgr", - "rhs_uniform_g3_tan" - -]; - -blck_RHS_VestsUSAF = [ - "rhsusf_iotv_ucp", - "rhsusf_iotv_ucp_grenadier", - "rhsusf_iotv_ucp_medic", - "rhsusf_iotv_ucp_repair", - "rhsusf_iotv_ucp_rifleman", - "rhsusf_iotv_ucp_SAW", - "rhsusf_iotv_ucp_squadleader", - "rhsusf_iotv_ucp_teamleader", - "rhsusf_iotv_ocp", - "rhsusf_iotv_ocp_grenadier", - "rhsusf_iotv_ocp_medic", - "rhsusf_iotv_ocp_repair", - "rhsusf_iotv_ocp_rifleman", - "rhsusf_iotv_ocp_SAW", - "rhsusf_iotv_ocp_squadleader", - "rhsusf_iotv_ocp_teamleader", - //added by chainsaw - 2 - "rhsusf_spc", - "rhsusf_spc_mg", - // Added by ElShotte - 12 Items - "rhsusf_spc_marksman", - "rhsusf_spc_corpsman", - "rhsusf_spc_patchless", - "rhsusf_spc_squadleader", - "rhsusf_spc_teamleader", - "rhsusf_spc_light", - "rhsusf_spc_rifleman", - "rhsusf_spc_iar", - "rhsusf_spcs_ocp_rifleman", - "rhsusf_spcs_ocp", - "rhsusf_spcs_ucp_rifleman", - "rhsusf_spcs_ucp" - -]; - -blck_RHS_BackpacksUSAF = [ - "rhsusf_assault_eagleaiii_coy", - "rhsusf_assault_eagleaiii_ocp", - "rhsusf_assault_eagleaiii_ucp", - "rhsusf_falconii_coy", - "rhsusf_falconii_mc", - "rhsusf_falconii", - "RHS_M2_Gun_Bag" - -]; - -blck_RHS_HeadgearUSAF = [ - "rhs_Booniehat_m81", - "rhs_Booniehat_marpatd", - "rhs_Booniehat_marpatwd", - "rhs_Booniehat_ocp", - "rhs_Booniehat_ucp", - "rhsusf_Bowman", - "rhsusf_ach_bare", - "rhsusf_ach_bare_des", - "rhsusf_ach_bare_des_ess", - "rhsusf_ach_bare_des_headset", - "rhsusf_ach_bare_des_headset_ess", - "rhsusf_ach_bare_ess", - "rhsusf_ach_bare_headset", - "rhsusf_ach_bare_headset_ess", - "rhsusf_ach_bare_semi", - "rhsusf_ach_bare_semi_ess", - "rhsusf_ach_bare_semi_headset", - "rhsusf_ach_bare_semi_headset_ess", - "rhsusf_ach_bare_tan", - "rhsusf_ach_bare_tan_ess", - "rhsusf_ach_bare_tan_headset", - "rhsusf_ach_bare_tan_headset_ess", - "rhsusf_ach_bare_wood", - "rhsusf_ach_bare_wood_ess", - "rhsusf_ach_bare_wood_headset", - "rhsusf_ach_bare_wood_headset_ess", - "rhsusf_ach_helmet_ESS_ocp", - "rhsusf_ach_helmet_ESS_ucp", - "rhsusf_ach_helmet_M81", - "rhsusf_ach_helmet_camo_ocp", - "rhsusf_ach_helmet_headset_ess_ocp", - "rhsusf_ach_helmet_headset_ess_ucp", - "rhsusf_ach_helmet_headset_ocp", - "rhsusf_ach_helmet_headset_ucp", - "rhsusf_ach_helmet_ocp", - "rhsusf_ach_helmet_ocp_norotos", - "rhsusf_ach_helmet_ucp", - "rhsusf_ach_helmet_ucp_norotos", - "rhsusf_bowman_cap", - "rhsusf_lwh_helmet_M1942", - "rhsusf_lwh_helmet_marpatd", - "rhsusf_lwh_helmet_marpatd_ess", - "rhsusf_lwh_helmet_marpatd_headset", - "rhsusf_lwh_helmet_marpatwd", - "rhsusf_lwh_helmet_marpatwd_ess", - "rhsusf_lwh_helmet_marpatwd_headset", - "rhsusf_mich_bare", - "rhsusf_mich_bare_alt", - "rhsusf_mich_bare_alt_semi", - "rhsusf_mich_bare_alt_tan", - "rhsusf_mich_bare_headset", - "rhsusf_mich_bare_norotos", - "rhsusf_mich_bare_norotos_alt", - "rhsusf_mich_bare_norotos_alt_headset", - "rhsusf_mich_bare_norotos_alt_semi", - "rhsusf_mich_bare_norotos_alt_semi_headset", - "rhsusf_mich_bare_norotos_alt_tan", - "rhsusf_mich_bare_norotos_alt_tan_headset", - "rhsusf_mich_bare_norotos_arc", - "rhsusf_mich_bare_norotos_arc_alt", - "rhsusf_mich_bare_norotos_arc_alt_headset", - "rhsusf_mich_bare_norotos_arc_alt_semi", - "rhsusf_mich_bare_norotos_arc_alt_semi_headset", - "rhsusf_mich_bare_norotos_arc_alt_tan", - "rhsusf_mich_bare_norotos_arc_alt_tan_headset", - "rhsusf_mich_bare_norotos_arc_headset", - "rhsusf_mich_bare_norotos_arc_semi", - "rhsusf_mich_bare_norotos_arc_semi_headset", - "rhsusf_mich_bare_norotos_arc_tan", - "rhsusf_mich_bare_norotos_headset", - "rhsusf_mich_bare_norotos_semi", - "rhsusf_mich_bare_norotos_semi_headset", - "rhsusf_mich_bare_norotos_tan", - "rhsusf_mich_bare_norotos_tan_headset", - "rhsusf_mich_bare_semi", - "rhsusf_mich_bare_semi_headset", - "rhsusf_mich_bare_tan", - "rhsusf_mich_bare_tan_headset", - "rhsusf_mich_helmet_marpatd_alt_headset", - "rhsusf_mich_helmet_marpatd_headset", - "rhsusf_mich_helmet_marpatd_norotos", - "rhsusf_mich_helmet_marpatd_norotos_arc", - "rhsusf_mich_helmet_marpatd_norotos_arc_headset", - "rhsusf_mich_helmet_marpatd_norotos_headset", - "rhsusf_mich_helmet_marpatwd", - "rhsusf_mich_helmet_marpatwd_alt", - "rhsusf_mich_helmet_marpatwd_alt_headset", - "rhsusf_mich_helmet_marpatwd_headset", - "rhsusf_mich_helmet_marpatwd_norotos", - "rhsusf_mich_helmet_marpatwd_norotos_arc", - "rhsusf_mich_helmet_marpatwd_norotos_arc_headset", - "rhsusf_mich_helmet_marpatwd_norotos_headset", - // added by chainsaw - 13 - "rhsusf_patrolcap_ocp", - "rhsusf_patrolcap_ucp", - "rhsusf_opscore_01", - "rhsusf_opscore_01_tan", - "rhsusf_opscore_02_tan", - "rhsusf_opscore_03_ocp", - "rhsusf_opscore_04_ocp", - "rhsusf_cvc_helmet", - "rhsusf_cvc_ess", - "rhsusf_hgu56p", - "rhsusf_hgu56p_mask", - "rhsusf_cvc_green_helmet", - "rhsusf_cvc_green_ess", - // Added by ElShotte - 41 Items - "rhsusf_opscore_bk_pelt", - "rhsusf_opscore_bk", - "rhsusf_opscore_coy_cover", - "rhsusf_opscore_coy_cover_pelt", - "rhsusf_opscore_fg", - "rhsusf_opscore_fg_pelt", - "rhsusf_opscore_fg_pelt_cam", - "rhsusf_opscore_fg_pelt_nsw", - "rhsusf_opscore_mc", - "rhsusf_opscore_mc_pelt", - "rhsusf_opscore_mc_pelt_nsw", - "rhsusf_opscore_mc_cover", - "rhsusf_opscore_mc_cover_pelt", - "rhsusf_opscore_mc_cover_pelt_nsw", - "rhsusf_opscore_mc_cover_pelt_cam", - "rhsusf_opscore_paint", - "rhsusf_opscore_paint_pelt", - "rhsusf_opscore_paint_pelt_nsw", - "rhsusf_opscore_paint_pelt_nsw_cam", - "rhsusf_opscore_rg_cover", - "rhsusf_opscore_rg_cover_pelt", - "rhsusf_opscore_ut", - "rhsusf_opscore_ut_pelt", - "rhsusf_opscore_ut_pelt_cam", - "rhsusf_opscore_ut_pelt_nsw", - "rhsusf_opscore_ut_pelt_nsw_cam", - "rhsusf_opscore_mar_ut_pelt", - "rhsusf_opscore_mar_ut", - "rhsusf_opscore_mar_fg_pelt", - "rhsusf_opscore_mar_fg", - "rhsusf_protech_helmet", - "rhsusf_protech_helmet_ess", - "rhsusf_protech_helmet_rhino", - "rhsusf_protech_helmet_rhino_ess" -]; - -blck_RHS_UniformsGREF = [ - "rhsgref_uniform_alpenflage", - "rhsgref_uniform_flecktarn", - "rhsgref_uniform_para_ttsko_mountain", - "rhsgref_uniform_para_ttsko_oxblood", - "rhsgref_uniform_para_ttsko_urban", - "rhsgref_uniform_reed", - "rhsgref_uniform_specter", - "rhsgref_uniform_tigerstripe", - "rhsgref_uniform_ttsko_forest", - "rhsgref_uniform_ttsko_mountain", - "rhsgref_uniform_ttsko_urban", - "rhsgref_uniform_vsr", - "rhsgref_uniform_woodland", - "rhsgref_uniform_woodland_olive" -]; - -blck_RHS_VestsGREF = [ - "rhsgref_6b23", - "rhsgref_6b23_khaki", - "rhsgref_6b23_khaki_medic", - "rhsgref_6b23_khaki_nco", - "rhsgref_6b23_khaki_officer", - "rhsgref_6b23_khaki_rifleman", - "rhsgref_6b23_khaki_sniper", - "rhsgref_6b23_ttsko_digi", - "rhsgref_6b23_ttsko_digi_medic", - "rhsgref_6b23_ttsko_digi_nco", - "rhsgref_6b23_ttsko_digi_officer", - "rhsgref_6b23_ttsko_digi_rifleman", - "rhsgref_6b23_ttsko_digi_sniper", - "rhsgref_6b23_ttsko_forest", - "rhsgref_6b23_ttsko_forest_rifleman", - "rhsgref_6b23_ttsko_mountain", - "rhsgref_6b23_ttsko_mountain_medic", - "rhsgref_6b23_ttsko_mountain_nco", - "rhsgref_6b23_ttsko_mountain_officer", - "rhsgref_6b23_ttsko_mountain_rifleman", - "rhsgref_6b23_ttsko_mountain_sniper", - "rhsgref_otv_digi", - "rhsgref_otv_khaki" -]; - -blck_RHS_HeadgearGREF = [ - "rhsgref_6b27m", - "rhsgref_6b27m_ttsko_digi", - "rhsgref_6b27m_ttsko_forest", - "rhsgref_6b27m_ttsko_mountain", - "rhsgref_6b27m_ttsko_urban", - "rhsgref_Booniehat_alpen", - "rhsgref_fieldcap", - "rhsgref_fieldcap_ttsko_digi", - "rhsgref_fieldcap_ttsko_forest", - "rhsgref_fieldcap_ttsko_mountain", - "rhsgref_fieldcap_ttsko_urban", - "rhsgref_patrolcap_specter", - "rhsgref_ssh68", - "rhsgref_ssh68_emr", - "rhsgref_ssh68_ttsko_digi", - "rhsgref_ssh68_ttsko_forest", - "rhsgref_ssh68_ttsko_mountain", - "rhsgref_ssh68_un" -]; -blck_RHS_WeaponsGREF = [ - "rhs_weap_kar98k", - "rhs_weap_m21a", - "rhs_weap_m21a_fold", - "rhs_weap_m21a_pr", - "rhs_weap_m21s", - "rhs_weap_m21s_fold", - "rhs_weap_m21s_pr", - "rhs_weap_m38", - "rhs_weap_m70ab2", - "rhs_weap_m70ab2_fold", - "rhs_weap_m70b1", - "rhs_weap_m76", - "rhs_weap_m92", - "rhs_weap_m92_fold" -]; - -blck_RHS_HeadgearSAF = [ - "rhssaf_helmet_m59_85_nocamo", - "rhssaf_helmet_m59_85_oakleaf", - "rhssaf_helmet_m97_olive_nocamo", - "rhssaf_helmet_m97_olive_nocamo_black_ess", - "rhssaf_helmet_m97_olive_nocamo_black_ess_bare", - "rhssaf_helmet_m97_black_nocamo", - "rhssaf_helmet_m97_black_nocamo_black_ess", - "rhssaf_helmet_m97_black_nocamo_black_ess_bare", - "rhssaf_Helmet_m97_woodland", - "rhssaf_Helmet_m97_digital", - "rhssaf_Helmet_m97_md2camo", - "rhssaf_Helmet_m97_oakleaf", - "rhssaf_helmet_m97_nostrap_blue", - "rhssaf_helmet_m97_nostrap_blue_tan_ess", - "rhssaf_helmet_m97_nostrap_blue_tan_ess_bare", - "rhssaf_helmet_m97_woodland_black_ess", - "rhssaf_helmet_m97_woodland_black_ess_bare", - "rhssaf_helmet_m97_digital_black_ess", - "rhssaf_helmet_m97_digital_black_ess_bare", - "rhssaf_helmet_m97_md2camo_black_ess", - "rhssaf_helmet_m97_md2camo_black_ess_bare", - "rhssaf_helmet_m97_oakleaf_black_ess", - "rhssaf_helmet_m97_oakleaf_black_ess_bare", - "rhssaf_helmet_hgu56p", - "rhssaf_beret_green", - "rhssaf_beret_red", - "rhssaf_beret_black", - "rhssaf_beret_blue_un", - "rhssaf_booniehat_digital", - "rhssaf_booniehat_md2camo", - "rhssaf_booniehat_woodland" -]; - -blck_RHS_UniformsSAF = [ - "rhssaf_uniform_m10_digital", - "rhssaf_uniform_m10_digital_summer", - "rhssaf_uniform_m10_digital_desert", - "rhssaf_uniform_m10_digital_tan_boots", - "rhssaf_uniform_m93_oakleaf", - "rhssaf_uniform_m93_oakleaf_summer", - "rhssaf_uniform_heli_pilot" -]; - -blck_RHS_VestsSAF = [ - "rhssaf_vest_md98_woodland", - "rhssaf_vest_md98_md2camo", - "rhssaf_vest_md98_digital", - "rhssaf_vest_md98_officer", - "rhssaf_vest_md98_rifleman", - "rhssaf_vest_otv_md2camo", - "rhssaf_vest_md99_md2camo_rifleman", - "rhssaf_vest_md99_digital_rifleman", - "rhssaf_vest_md99_woodland_rifleman", - "rhssaf_vest_md99_md2camo", - "rhssaf_vest_md99_digital", - "rhssaf_vest_md99_woodland" -]; - -blck_RHS_BackpacksSAF = [ - "rhssaf_30rnd_556x45_EPR_G36", - "rhssaf_30rnd_556x45_SOST_G36", - "rhssaf_100rnd_556x45_EPR_G36", - "rhssaf_30rnd_556x45_SPR_G36", - "rhssaf_30rnd_556x45_Tracers_G36", - "rhssaf_30rnd_556x45_MDIM_G36", - "rhssaf_30rnd_556x45_TDIM_G36", - "150Rnd_556x45_Drum_Mag_F", - "150Rnd_556x45_Drum_Mag_Tracer_F", - "rhs_30Rnd_762x39mm", - "rhs_30Rnd_762x39mm_tracer", - "rhs_30Rnd_762x39mm_89", - "rhs_30Rnd_762x39mm_U", - "rhsgref_30rnd_556x45_m21", - "rhsgref_30rnd_556x45_m21_t", - "rhs_100Rnd_762x54mmR", - "rhs_100Rnd_762x54mmR_green", - "rhssaf_250Rnd_762x54R" -]; - -blck_RHS_WeaponsSAF = [ - "rhs_weap_m70ab2_fold", - "rhs_weap_m70b1", - "rhs_weap_m70b1n", - "rhs_weap_m70b3n", - "rhs_weap_m70b3n_pbg40", - "rhs_weap_m92", - "rhs_weap_m92_fold", - "rhs_weap_m76", - "rhs_weap_m21a", - "rhs_weap_m21a_pr", - "rhs_weap_m21a_pr_pbg40", - "rhs_weap_m21a_fold", - "rhs_weap_m21a_pbg40", - "rhs_weap_m21s", - "rhs_weap_m21s_pr", - "rhs_weap_m21s_fold", - "rhs_weap_m82a1", - "rhs_weap_minimi_para_railed", - "rhs_weap_g36c", - "rhs_weap_g36kv", - "rhs_weap_g36kv_ag36", - "rhs_weap_m84" -]; - -blck_NIA_WeaponsLMG = [ - "hlc_lmg_M249E2", - "hlc_lmg_M249E2", - "hlc_lmg_M60E4", - "hlc_lmg_MG3KWS_b", - "hlc_lmg_MG3KWS_g", - "hlc_lmg_MG42", - "hlc_lmg_MG42KWS_t", - "hlc_lmg_m249para", - "hlc_lmg_m249para", - "hlc_lmg_m60", - "hlc_lmg_mg42kws_b", - "hlc_lmg_mg42kws_g", - "hlc_lmg_minimi", - "hlc_lmg_minimi_railed", - "hlc_lmg_minimipara", - "hlc_lmg_mk48", - "hlc_m249_pip1", - "hlc_m249_pip2", - "hlc_m249_pip3", - "hlc_m249_pip4", - "hlc_rifle_rpk", - "hlc_rifle_rpk12", - "hlc_rifle_rpk74n" -]; - -blck_NIA_WeaponsSMG = [ - "hlc_smg_9mmar", - "hlc_smg_MP5N", - "hlc_smg_mp510", - "hlc_smg_mp5a2", - "hlc_smg_mp5a3", - "hlc_smg_mp5a4", - "hlc_smg_mp5k", - "hlc_smg_mp5k_PDW", - "hlc_smg_mp5sd5", - "hlc_smg_mp5sd6" -]; - -blck_NIA_WeaponsAR = [ - "HLC_Rifle_g3ka4_GL", - "hlc_barrel_carbine", - "hlc_barrel_hbar", - "hlc_barrel_standard", - "hlc_rifle_Bushmaster300", - "hlc_rifle_Colt727", - "hlc_rifle_Colt727_GL", - "hlc_rifle_FAL5000", - "hlc_rifle_FAL5000Rail", - "hlc_rifle_FAL5000_RH", - "hlc_rifle_FAL5061", - "hlc_rifle_FAL5061Rail", - "hlc_rifle_G36A1", - "hlc_rifle_G36A1AG36", - "hlc_rifle_G36C", - "hlc_rifle_G36CMLIC", - "hlc_rifle_G36CTAC", - "hlc_rifle_G36CV", - "hlc_rifle_G36E1", - "hlc_rifle_G36E1AG36", - "hlc_rifle_G36KA1", - "hlc_rifle_G36KE1", - "hlc_rifle_G36KMLIC", - "hlc_rifle_G36KTAC", - "hlc_rifle_G36KV", - "hlc_rifle_G36MLIAG36", - "hlc_rifle_G36MLIC", - "hlc_rifle_G36TAC", - "hlc_rifle_G36V", - "hlc_rifle_G36VAG36", - "hlc_rifle_LAR", - "hlc_rifle_M14", - "hlc_rifle_M14DMR", - "hlc_rifle_M21", - "hlc_rifle_MG36", - "hlc_rifle_RK62", - "hlc_rifle_RU556", - "hlc_rifle_RU5562", - "hlc_rifle_SAMR", - "hlc_rifle_SLR", - "hlc_rifle_SLRchopmod", - "hlc_rifle_STG58F", - "hlc_rifle_STGW57", - "hlc_rifle_aek971", - "hlc_rifle_aek971_mtk", - "hlc_rifle_ak12", - "hlc_rifle_ak12gl", - "hlc_rifle_ak47", - "hlc_rifle_ak74", - "hlc_rifle_ak74_MTK", - "hlc_rifle_ak74_dirty", - "hlc_rifle_ak74_dirty2", - "hlc_rifle_ak74m", - "hlc_rifle_ak74m_MTK", - "hlc_rifle_ak74m_gl", - "hlc_rifle_akm", - "hlc_rifle_akm_MTK", - "hlc_rifle_akmgl", - "hlc_rifle_aks74", - "hlc_rifle_aks74_GL", - "hlc_rifle_aks74_MTK", - "hlc_rifle_aks74u", - "hlc_rifle_aks74u_MTK", - "hlc_rifle_aku12", - "hlc_rifle_amt", - "hlc_rifle_aug", - "hlc_rifle_auga1_B", - "hlc_rifle_auga1_t", - "hlc_rifle_auga1carb", - "hlc_rifle_auga1carb_b", - "hlc_rifle_auga1carb_t", - "hlc_rifle_auga2", - "hlc_rifle_auga2_b", - "hlc_rifle_auga2_t", - "hlc_rifle_auga2carb", - "hlc_rifle_auga2carb_b", - "hlc_rifle_auga2carb_t", - "hlc_rifle_auga2lsw", - "hlc_rifle_auga2lsw_b", - "hlc_rifle_auga2lsw_t", - "hlc_rifle_auga3", - "hlc_rifle_auga3_GL", - "hlc_rifle_auga3_GL_B", - "hlc_rifle_auga3_GL_BL", - "hlc_rifle_auga3_b", - "hlc_rifle_auga3_bl", - "hlc_rifle_aughbar", - "hlc_rifle_aughbar_b", - "hlc_rifle_aughbar_t", - "hlc_rifle_augsr", - "hlc_rifle_augsr_b", - "hlc_rifle_augsr_t", - "hlc_rifle_augsrcarb", - "hlc_rifle_augsrcarb_b", - "hlc_rifle_augsrcarb_t", - "hlc_rifle_augsrhbar", - "hlc_rifle_augsrhbar_b", - "hlc_rifle_augsrhbar_t", - "hlc_rifle_bcmblackjack", - "hlc_rifle_bcmjack", - "hlc_rifle_c1A1", - "hlc_rifle_falosw", - "hlc_rifle_g3a3", - "hlc_rifle_g3a3ris", - "hlc_rifle_g3a3v", - "hlc_rifle_g3ka4", - "hlc_rifle_g3sg1", - "hlc_rifle_hk33a2", - "hlc_rifle_hk33a2RIS", - "hlc_rifle_hk51", - "hlc_rifle_hk53", - "hlc_rifle_hk53RAS", - "hlc_rifle_honeybadger", - "hlc_rifle_l1a1slr", - "hlc_rifle_m14sopmod", - "hlc_rifle_osw_GL", - "hlc_rifle_rpk74n", - "hlc_rifle_sig5104", - "hlc_rifle_slr107u", - "hlc_rifle_slr107u_MTK", - "hlc_rifle_stgw57_RIS", - "hlc_rifle_stgw57_commando", - "hlc_rifle_vendimus" -]; - -blck_NIA_WeaponsSniper = [ - "hlc_rifle_M1903A1", - "hlc_rifle_M1903A1OMR", - "hlc_rifle_M1903A1_unertl", - "hlc_rifle_PSG1A1_RIS", - "hlc_rifle_awMagnum_BL_ghillie", - "hlc_rifle_awMagnum_FDE_ghillie", - "hlc_rifle_awMagnum_OD_ghillie", - "hlc_rifle_awcovert", - "hlc_rifle_awcovert_BL", - "hlc_rifle_awcovert_FDE", - "hlc_rifle_awmagnum", - "hlc_rifle_awmagnum_BL", - "hlc_rifle_awmagnum_FDE", - "hlc_rifle_psg1", - "hlc_rifle_psg1A1" -]; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf deleted file mode 100644 index f1540cb..0000000 --- a/@GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf +++ /dev/null @@ -1,1269 +0,0 @@ - -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -diag_log "[blckeagls] Loading Configuration Overides"; - -/* - See the examples below as a guide for adding configs that are unique for each of several servers. -*/ -/* -private["_startTime"]; -_startTime = diag_tickTime; -_world = toLower format ["%1", worldName]; -private["_nightAccel","_dayAccel","_duskAccel"]; -switch (_world) do { - case "altis":{_nightAccel = 3;_dayAccel=0.5; _duskAccel = 3;}; - case "napf":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "namalsk":{_nightAccel = 12; _dayAccel = 2;_duskAccel = 6;}; - case "tanoa":{_nightAccel = 12; _dayAccel = 3.2;_duskAccel = 6;}; -}; - -switch (toLower (worldName)) do -{ - case "altis": - { - private ["_arr","_sunrise","_sunset","_time"]; - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _daylight = _sunset - _sunrise; - _nightTime = abs(24 - _daylight); - _time = dayTime; - #ifdef blck_milServer - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight)/3; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = _nightTime / 6; // Nighttim time acceleration - #else - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight)/8; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = _nightTime / 8; // Nighttim time acceleration - #endif - //blck_maxCrashSites = 3; - }; - case"tanoa": - { - blck_maxCrashSites = 2; - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1.4; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 8; // Nighttim time acceleration - }; - case"namalsk": - { - private ["_arr","_sunrise","_sunset","_time"]; - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _daylight = _sunset - _sunrise; - _nightTime = abs(24 - _daylight); - _time = dayTime; - _serverUpTime = 8; - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = 1; - blck_enableBlueMissions = -1; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = ((_serverUpTime + 2)/_daylight); // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration - }; - case "esseker": - { - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = 1; - blck_enableBlueMissions = -1; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 1; - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1; // Daytime time accelearation - blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 6; // Nighttim time acceleration - }; - case "panthera3": - { - blck_maxCrashSites = 2; - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1.4; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 8; // Nighttim time acceleration - }; - case "malden": - { - _arr = date call BIS_fnc_sunriseSunsetTime; - _sunrise = _arr select 0; - _sunset = _arr select 1; - _time = dayTime; - _daylight = _sunset - _sunrise; - - blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = (_daylight / 2.5); // Daytime time accelearation - blck_timeAccelerationDusk = 8; // Dawn/dusk time accelearation - blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration - blck_enableOrangeMissions = -1; - blck_enableGreenMissions = -1; - blck_enableRedMissions = -2; - blck_enableBlueMissions = -1; - blck_numberUnderwaterDynamicMissions = -3; - blck_enableHunterMissions = -1; - blck_enableScoutsMissions = -1; - blck_maxCrashSites = 3; - }; -}; -*/ - - -/* - You can define configs for additional mods or loadouts here -*/ -/* -blck_CUPWeapons = [ - "CUP_lmg_L7A2", - "CUP_lmg_L110A1", - "CUP_lmg_M240", - "CUP_lmg_M249", - "CUP_lmg_M249_ElcanM145_Laser", - "CUP_lmg_Mk48_des", - "CUP_lmg_Mk48_wdl", - "CUP_lmg_PKM", - "CUP_lmg_UK59", - "CUP_lmg_Pecheneg", - "CUP_arifle_AK74", - "CUP_arifle_AK107", - "CUP_arifle_AK107_GL", - "CUP_arifle_AKS74", - "CUP_arifle_AKS74U", - "CUP_arifle_AK74_GL", - "CUP_arifle_AKM", - "CUP_arifle_AKS", - "CUP_arifle_AKS_Gold", - "CUP_arifle_RPK74", - "CUP_arifle_CZ805_A2", - "CUP_arifle_FNFAL", - "CUP_arifle_G36A", - "CUP_arifle_G36A_camo", - "CUP_arifle_G36K", - "CUP_arifle_G36K_camo", - "CUP_arifle_G36C", - "CUP_arifle_G36C_camo", - "CUP_arifle_MG36", - "CUP_arifle_MG36_camo", - "CUP_arifle_L85A2", - "CUP_arifle_L85A2_GL", - "CUP_arifle_L86A2", - "CUP_arifle_M16A2", - "CUP_arifle_M16A2_GL", - "CUP_arifle_M4A1", - "CUP_arifle_M4A1_camo", - "CUP_arifle_M4A3_desert_Aim_Flashlight", - "CUP_arifle_M16A4_Base", - "CUP_arifle_M4A1_BUIS_GL", - "CUP_arifle_M4A1_BUIS_camo_GL", - "CUP_arifle_M4A1_BUIS_desert_GL", - "CUP_arifle_M4A1_desert", - "CUP_arifle_Sa58P", - "CUP_arifle_Sa58V", - "CUP_arifle_Mk16_CQC", - "CUP_arifle_XM8_Railed", - "CUP_arifle_XM8_Carbine", - "CUP_arifle_XM8_Carbine_FG", - "CUP_arifle_XM8_Carbine_GL", - "CUP_arifle_XM8_Compact", - "CUP_arifle_xm8_SAW", - "CUP_arifle_xm8_sharpshooter", - "CUP_arifle_CZ805_A1", - "CUP_arifle_CZ805_GL", - "CUP_arifle_CZ805_B_GL", - "CUP_arifle_CZ805_B", - "CUP_arifle_Sa58P_des", - "CUP_arifle_Sa58V_camo", - "CUP_arifle_Sa58RIS1", - "CUP_arifle_Sa58RIS2", - "CUP_arifle_Mk16_CQC_FG", - "CUP_arifle_Mk16_CQC_SFG", - "CUP_arifle_Mk16_CQC_EGLM", - "CUP_arifle_Mk16_STD", - "CUP_arifle_Mk16_STD_FG", - "CUP_arifle_Mk16_STD_SFG", - "CUP_arifle_Mk16_STD_EGLM", - "CUP_arifle_Mk16_SV", - "CUP_arifle_Mk17_CQC", - "CUP_arifle_Mk17_CQC_FG", - "CUP_arifle_Mk17_CQC_SFG", - "CUP_arifle_Mk17_CQC_EGLM", - "CUP_arifle_Mk17_STD", - "CUP_arifle_Mk17_STD_FG", - "CUP_arifle_Mk17_STD_SFG", - "CUP_arifle_Mk17_STD_EGLM", - "CUP_arifle_Mk20", - "CUP_srifle_AWM_des", - "CUP_srifle_AWM_wdl", - "CUP_srifle_CZ750", - "CUP_srifle_DMR", - "CUP_srifle_CZ550", - "CUP_srifle_LeeEnfield", - "CUP_srifle_M14", - "CUP_srifle_Mk12SPR", - "CUP_srifle_M24_des", - "CUP_srifle_M24_wdl", - "CUP_srifle_M24_ghillie", - "CUP_srifle_M40A3", - "CUP_srifle_M107_Base", - "CUP_srifle_M110", - "CUP_srifle_SVD", - "CUP_srifle_SVD_des", - "CUP_srifle_SVD_wdl_ghillie", - "CUP_srifle_SVD_NSPU", - "CUP_srifle_ksvk", - "CUP_srifle_VSSVintorez", - "CUP_srifle_AS50" -]; - -blck_CUPUniforms = [ - "CUP_U_B_CZ_WDL_TShirt", - "CUP_U_I_GUE_Anorak_01", - "CUP_U_I_GUE_Anorak_03", - "CUP_U_I_GUE_Anorak_02", - "CUP_U_B_BAF_DDPM_S2_UnRolled", - "CUP_U_B_BAF_DDPM_S1_RolledUp", - "CUP_U_B_BAF_DDPM_Tshirt", - "CUP_U_B_BAF_DPM_S2_UnRolled", - "CUP_U_B_BAF_DPM_S1_RolledUp", - "CUP_U_B_BAF_DPM_Tshirt", - "CUP_U_B_BAF_MTP_S2_UnRolled", - "CUP_U_B_BAF_MTP_S1_RolledUp", - "CUP_U_B_BAF_MTP_Tshirt", - "CUP_U_B_BAF_MTP_S4_UnRolled", - "CUP_U_B_BAF_MTP_S3_RolledUp", - "CUP_U_B_BAF_MTP_S5_UnRolled", - "CUP_U_B_BAF_MTP_S6_UnRolled", - "CUP_U_O_CHDKZ_Bardak", - "CUP_U_O_CHDKZ_Lopotev", - "CUP_U_O_CHDKZ_Kam_03", - "CUP_U_O_CHDKZ_Kam_01", - "CUP_U_O_CHDKZ_Kam_04", - "CUP_U_O_CHDKZ_Kam_02", - "CUP_U_O_CHDKZ_Commander", - "CUP_U_O_CHDKZ_Kam_08", - "CUP_U_O_CHDKZ_Kam_05", - "CUP_U_O_CHDKZ_Kam_07", - "CUP_U_O_CHDKZ_Kam_06", - "CUP_U_C_Citizen_02", - "CUP_U_C_Citizen_01", - "CUP_U_C_Citizen_04", - "CUP_U_C_Citizen_03", - "CUP_U_C_Fireman_01", - "CUP_U_B_GER_Flecktarn_2", - "CUP_U_B_GER_Tropentarn_2", - "CUP_U_B_GER_Flecktarn_1", - "CUP_U_B_GER_Tropentarn_1", - "CUP_O_TKI_Khet_Jeans_04", - "CUP_O_TKI_Khet_Jeans_02", - "CUP_O_TKI_Khet_Jeans_01", - "CUP_O_TKI_Khet_Jeans_03", - "CUP_O_TKI_Khet_Partug_04", - "CUP_O_TKI_Khet_Partug_02", - "CUP_O_TKI_Khet_Partug_01", - "CUP_O_TKI_Khet_Partug_07", - "CUP_O_TKI_Khet_Partug_08", - "CUP_O_TKI_Khet_Partug_05", - "CUP_O_TKI_Khet_Partug_06", - "CUP_O_TKI_Khet_Partug_03", - "CUP_U_C_Labcoat_02", - "CUP_U_C_Labcoat_03", - "CUP_U_C_Labcoat_01", - "CUP_U_B_USMC_Officer", - "CUP_U_B_USMC_MARPAT_WDL_RollUpKneepad", - "CUP_U_B_USMC_MARPAT_WDL_RolledUp", - "CUP_U_B_USMC_MARPAT_WDL_Kneepad", - "CUP_U_B_USMC_MARPAT_WDL_TwoKneepads", - "CUP_U_B_USMC_MARPAT_WDL_Sleeves", - "CUP_U_C_Mechanic_02", - "CUP_U_C_Mechanic_03", - "CUP_U_C_Mechanic_01", - "CUP_U_I_GUE_Flecktarn2", - "CUP_U_I_GUE_Flecktarn3", - "CUP_U_I_GUE_Flecktarn", - "CUP_U_I_GUE_Woodland1", - "CUP_B_USMC_Navy_Blue", - "CUP_B_USMC_Navy_Brown", - "CUP_B_USMC_Navy_Green", - "CUP_B_USMC_Navy_Red", - "CUP_B_USMC_Navy_Violet", - "CUP_B_USMC_Navy_White", - "CUP_B_USMC_Navy_Yellow", - "CUP_U_C_Rescuer_01", - "CUP_U_O_Partisan_TTsKO", - "CUP_U_O_Partisan_TTsKO_Mixed", - "CUP_U_O_Partisan_VSR_Mixed1", - "CUP_U_O_Partisan_VSR_Mixed2", - "CUP_U_C_Pilot_01", - "CUP_U_C_Policeman_01", - "CUP_U_C_Priest_01", - "CUP_U_C_Profiteer_02", - "CUP_U_C_Profiteer_03", - "CUP_U_C_Profiteer_01", - "CUP_U_C_Profiteer_04", - "CUP_U_I_RACS_Desert_2", - "CUP_U_I_RACS_Urban_2", - "CUP_U_I_RACS_PilotOverall", - "CUP_U_I_RACS_Desert_1", - "CUP_U_I_RACS_Urban_1", - "CUP_U_C_Rocker_01", - "CUP_U_C_Rocker_03", - "CUP_U_C_Rocker_02", - "CUP_U_C_Rocker_04", - "CUP_U_O_RUS_Gorka_Green", - "CUP_U_O_RUS_Gorka_Partizan_A", - "CUP_U_O_RUS_Gorka_Partizan", - "CUP_U_O_RUS_EMR_1_VDV", - "CUP_U_O_RUS_EMR_1", - "CUP_U_O_RUS_Flora_1_VDV", - "CUP_U_O_RUS_Flora_1", - "CUP_U_O_RUS_Commander", - "CUP_U_O_RUS_EMR_2_VDV", - "CUP_U_O_RUS_EMR_2", - "CUP_U_O_RUS_Flora_2_VDV", - "CUP_U_O_RUS_Flora_2", - "CUP_U_O_SLA_Officer_Suit", - "CUP_U_O_SLA_Overalls_Pilot", - "CUP_U_O_SLA_Overalls_Tank", - "CUP_U_O_SLA_MixedCamo", - "CUP_U_O_SLA_Desert", - "CUP_U_O_SLA_Green", - "CUP_U_O_SLA_Urban", - "CUP_U_B_FR_SpecOps", - "CUP_U_B_FR_Officer", - "CUP_U_B_FR_DirAction", - "CUP_U_B_FR_DirAction2", - "CUP_U_B_FR_Corpsman", - "CUP_U_B_FR_Light", - "CUP_U_B_FR_Scout1", - "CUP_U_B_FR_Scout2", - "CUP_U_B_FR_Scout3", - "CUP_U_B_FR_Scout", - "CUP_U_C_Suit_01", - "CUP_U_C_Suit_02", - "CUP_U_O_TK_Officer", - "CUP_U_O_SLA_Officer", - "CUP_U_O_TK_Green", - "CUP_U_O_TK_MixedCamo", - "CUP_U_B_USArmy_TwoKnee", - "CUP_U_B_USArmy_Base", - "CUP_U_B_USArmy_Soft", - "CUP_U_B_USArmy_UBACS", - "CUP_U_B_USArmy_PilotOverall", - "CUP_U_B_USMC_PilotOverall", - "CUP_U_C_Villager_01", - "CUP_U_C_Villager_04", - "CUP_U_C_Villager_02", - "CUP_U_C_Villager_03", - "CUP_U_C_Woodlander_01", - "CUP_U_C_Woodlander_02", - "CUP_U_C_Woodlander_03", - "CUP_U_C_Woodlander_04", - "CUP_U_C_Worker_03", - "CUP_U_C_Worker_04", - "CUP_U_C_Worker_02", - "CUP_U_C_Worker_01", - "CUP_U_B_BAF_DDPM_Ghillie", - "CUP_U_B_BAF_MTP_Ghillie", - "CUP_U_B_BAF_DPM_Ghillie", - "CUP_U_B_GER_Ghillie", - "CUP_U_B_GER_Fleck_Ghillie", - "CUP_U_B_USMC_Ghillie_WDL", - "CUP_U_I_Ghillie_Top", - "CUP_U_O_RUS_Ghillie", - "CUP_U_O_TK_Ghillie", - "CUP_U_O_TK_Ghillie_Top", - "CUP_U_B_USArmy_Ghillie" -]; - -blck_CUPVests = [ - "CUP_V_BAF_Osprey_Mk2_DDPM_Grenadier", - "CUP_V_BAF_Osprey_Mk2_DDPM_Medic", - "CUP_V_BAF_Osprey_Mk2_DDPM_Officer", - "CUP_V_BAF_Osprey_Mk2_DDPM_Sapper", - "CUP_V_BAF_Osprey_Mk2_DDPM_Scout", - "CUP_V_BAF_Osprey_Mk2_DDPM_Soldier1", - "CUP_V_BAF_Osprey_Mk2_DDPM_Soldier2", - "CUP_V_BAF_Osprey_Mk2_DPM_Grenadier", - "CUP_V_BAF_Osprey_Mk2_DPM_Medic", - "CUP_V_BAF_Osprey_Mk2_DPM_Officer", - "CUP_V_BAF_Osprey_Mk2_DPM_Sapper", - "CUP_V_BAF_Osprey_Mk2_DPM_Scout", - "CUP_V_BAF_Osprey_Mk2_DPM_Soldier1", - "CUP_V_BAF_Osprey_Mk2_DPM_Soldier2", - "CUP_V_BAF_Osprey_Mk4_MTP_Grenadier", - "CUP_V_BAF_Osprey_Mk4_MTP_MachineGunner", - "CUP_V_BAF_Osprey_Mk4_MTP_Rifleman", - "CUP_V_BAF_Osprey_Mk4_MTP_SquadLeader", - "CUP_V_B_GER_Carrier_Rig", - "CUP_V_B_GER_Carrier_Rig_2", - "CUP_V_B_GER_Carrier_Vest", - "CUP_V_B_GER_Carrier_Vest_2", - "CUP_V_B_GER_Carrier_Vest_3", - "CUP_V_B_GER_Vest_1", - "CUP_V_B_GER_Vest_2", - "CUP_V_B_LHDVest_Blue", - "CUP_V_B_LHDVest_Brown", - "CUP_V_B_LHDVest_Green", - "CUP_V_B_LHDVest_Red", - "CUP_V_B_LHDVest_Violet", - "CUP_V_B_LHDVest_White", - "CUP_V_B_LHDVest_Yellow", - "CUP_V_B_MTV", - "CUP_V_B_MTV_LegPouch", - "CUP_V_B_MTV_MG", - "CUP_V_B_MTV_Marksman", - "CUP_V_B_MTV_Mine", - "CUP_V_B_MTV_Patrol", - "CUP_V_B_MTV_PistolBlack", - "CUP_V_B_MTV_Pouches", - "CUP_V_B_MTV_TL", - "CUP_V_B_MTV_noCB", - "CUP_V_B_PilotVest", - "CUP_V_B_RRV_DA1", - "CUP_V_B_RRV_DA2", - "CUP_V_B_RRV_Light", - "CUP_V_B_RRV_MG", - "CUP_V_B_RRV_Medic", - "CUP_V_B_RRV_Officer", - "CUP_V_B_RRV_Scout", - "CUP_V_B_RRV_Scout2", - "CUP_V_B_RRV_Scout3", - "CUP_V_B_RRV_TL", - "CUP_V_I_Carrier_Belt", - "CUP_V_I_Guerilla_Jacket", - "CUP_V_I_RACS_Carrier_Vest", - "CUP_V_I_RACS_Carrier_Vest_2", - "CUP_V_I_RACS_Carrier_Vest_3", - "CUP_V_OI_TKI_Jacket1_01", - "CUP_V_OI_TKI_Jacket1_02", - "CUP_V_OI_TKI_Jacket1_03", - "CUP_V_OI_TKI_Jacket1_04", - "CUP_V_OI_TKI_Jacket1_05", - "CUP_V_OI_TKI_Jacket1_06", - "CUP_V_OI_TKI_Jacket2_01", - "CUP_V_OI_TKI_Jacket2_02", - "CUP_V_OI_TKI_Jacket2_03", - "CUP_V_OI_TKI_Jacket2_04", - "CUP_V_OI_TKI_Jacket2_05", - "CUP_V_OI_TKI_Jacket2_06", - "CUP_V_OI_TKI_Jacket3_01", - "CUP_V_OI_TKI_Jacket3_02", - "CUP_V_OI_TKI_Jacket3_03", - "CUP_V_OI_TKI_Jacket3_04", - "CUP_V_OI_TKI_Jacket3_05", - "CUP_V_OI_TKI_Jacket3_06", - "CUP_V_OI_TKI_Jacket4_01", - "CUP_V_OI_TKI_Jacket4_02", - "CUP_V_OI_TKI_Jacket4_03", - "CUP_V_OI_TKI_Jacket4_04", - "CUP_V_OI_TKI_Jacket4_05", - "CUP_V_OI_TKI_Jacket4_06", - "CUP_V_O_SLA_Carrier_Belt", - "CUP_V_O_SLA_Carrier_Belt02", - "CUP_V_O_SLA_Carrier_Belt03", - "CUP_V_O_SLA_Flak_Vest01", - "CUP_V_O_SLA_Flak_Vest02", - "CUP_V_O_SLA_Flak_Vest03", - "CUP_V_O_TK_CrewBelt", - "CUP_V_O_TK_OfficerBelt", - "CUP_V_O_TK_OfficerBelt2", - "CUP_V_O_TK_Vest_1", - "CUP_V_O_TK_Vest_2" -]; - -blck_CUPBackpacks = [ - "CUP_B_ACRPara_m95", - "CUP_B_AssaultPack_ACU", - "CUP_B_AssaultPack_Black", - "CUP_B_AssaultPack_Coyote", - "CUP_B_Bergen_BAF", - "CUP_B_CivPack_WDL", - "CUP_B_GER_Pack_Flecktarn", - "CUP_B_GER_Pack_Tropentarn", - "CUP_B_HikingPack_Civ", - "CUP_B_MOLLE_WDL", - "CUP_B_RUS_Backpack", - "CUP_B_USMC_AssaultPack", - "CUP_B_USMC_MOLLE", - "CUP_B_USPack_Black", - "CUP_B_USPack_Coyote" -]; - -blck_CUPHeadgear = [ - "CUP_H_BAF_Helmet_1_DDPM", - "CUP_H_BAF_Helmet_1_DPM", - "CUP_H_BAF_Helmet_1_MTP", - "CUP_H_BAF_Helmet_2_DDPM", - "CUP_H_BAF_Helmet_2_DPM", - "CUP_H_BAF_Helmet_2_MTP", - "CUP_H_BAF_Helmet_3_DDPM", - "CUP_H_BAF_Helmet_3_DPM", - "CUP_H_BAF_Helmet_3_MTP", - "CUP_H_BAF_Helmet_4_DDPM", - "CUP_H_BAF_Helmet_4_DPM", - "CUP_H_BAF_Helmet_4_MTP", - "CUP_H_BAF_Officer_Beret_PRR_O", - "CUP_H_C_Beanie_01", - "CUP_H_C_Beanie_02", - "CUP_H_C_Beanie_03", - "CUP_H_C_Beanie_04", - "CUP_H_C_Beret_01", - "CUP_H_C_Beret_02", - "CUP_H_C_Beret_03", - "CUP_H_C_Beret_04", - "CUP_H_C_Ushanka_01", - "CUP_H_C_Ushanka_02", - "CUP_H_C_Ushanka_03", - "CUP_H_C_Ushanka_04", - "CUP_H_FR_BandanaGreen", - "CUP_H_FR_BandanaWdl", - "CUP_H_FR_Bandana_Headset", - "CUP_H_FR_BeanieGreen", - "CUP_H_FR_BoonieMARPAT", - "CUP_H_FR_BoonieWDL", - "CUP_H_FR_Cap_Headset_Green", - "CUP_H_FR_Cap_Officer_Headset", - "CUP_H_FR_ECH", - "CUP_H_FR_Headband_Headset", - "CUP_H_FR_Headset", - "CUP_H_FR_PRR_BoonieWDL", - "CUP_H_GER_Boonie_Flecktarn", - "CUP_H_GER_Boonie_desert", - "CUP_H_NAPA_Fedora", - "CUP_H_Navy_CrewHelmet_Blue", - "CUP_H_Navy_CrewHelmet_Brown", - "CUP_H_Navy_CrewHelmet_Green", - "CUP_H_Navy_CrewHelmet_Red", - "CUP_H_Navy_CrewHelmet_Violet", - "CUP_H_Navy_CrewHelmet_White", - "CUP_H_Navy_CrewHelmet_Yellow", - "CUP_H_PMC_Cap_Grey", - "CUP_H_PMC_Cap_PRR_Grey", - "CUP_H_PMC_Cap_PRR_Tan", - "CUP_H_PMC_Cap_Tan", - "CUP_H_PMC_EP_Headset", - "CUP_H_PMC_PRR_Headset", - "CUP_H_RACS_Beret_Blue", - "CUP_H_RACS_Helmet_DPAT", - "CUP_H_RACS_Helmet_Des", - "CUP_H_RACS_Helmet_Goggles_DPAT", - "CUP_H_RACS_Helmet_Goggles_Des", - "CUP_H_RACS_Helmet_Headset_DPAT", - "CUP_H_RACS_Helmet_Headset_Des", - "CUP_H_SLA_BeenieGreen", - "CUP_H_SLA_Beret", - "CUP_H_SLA_Boonie", - "CUP_H_SLA_Helmet", - "CUP_H_SLA_OfficerCap", - "CUP_H_SLA_Pilot_Helmet", - "CUP_H_SLA_SLCap", - "CUP_H_SLA_TankerHelmet", - "CUP_H_TKI_Lungee_01", - "CUP_H_TKI_Lungee_02", - "CUP_H_TKI_Lungee_03", - "CUP_H_TKI_Lungee_04", - "CUP_H_TKI_Lungee_05", - "CUP_H_TKI_Lungee_06", - "CUP_H_TKI_Lungee_Open_01", - "CUP_H_TKI_Lungee_Open_02", - "CUP_H_TKI_Lungee_Open_03", - "CUP_H_TKI_Lungee_Open_04", - "CUP_H_TKI_Lungee_Open_05", - "CUP_H_TKI_Lungee_Open_06", - "CUP_H_TKI_Pakol_1_01", - "CUP_H_TKI_Pakol_1_02", - "CUP_H_TKI_Pakol_1_03", - "CUP_H_TKI_Pakol_1_04", - "CUP_H_TKI_Pakol_1_05", - "CUP_H_TKI_Pakol_1_06", - "CUP_H_TKI_Pakol_2_01", - "CUP_H_TKI_Pakol_2_02", - "CUP_H_TKI_Pakol_2_03", - "CUP_H_TKI_Pakol_2_04", - "CUP_H_TKI_Pakol_2_05", - "CUP_H_TKI_Pakol_2_06", - "CUP_H_TKI_SkullCap_01", - "CUP_H_TKI_SkullCap_02", - "CUP_H_TKI_SkullCap_03", - "CUP_H_TKI_SkullCap_04", - "CUP_H_TKI_SkullCap_05", - "CUP_H_TKI_SkullCap_06", - "CUP_H_TK_Beret", - "CUP_H_TK_Helmet", - "CUP_H_TK_Lungee", - "CUP_H_TK_PilotHelmet", - "CUP_H_TK_TankerHelmet", - "CUP_H_USMC_Crew_Helmet", - "CUP_H_USMC_Goggles_HelmetWDL", - "CUP_H_USMC_HeadSet_GoggleW_HelmetWDL", - "CUP_H_USMC_HeadSet_HelmetWDL", - "CUP_H_USMC_HelmetWDL", - "CUP_H_USMC_Helmet_Pilot", - "CUP_H_USMC_Officer_Cap" -]; -blck_RHS_Weapons = [ - "rhs_weap_hk416d10", - "rhs_weap_hk416d10_LMT", - "rhs_weap_hk416d10_m320", - "rhs_weap_hk416d145", - "rhs_weap_hk416d145_m320", - "rhs_weap_m16a4", - "rhs_weap_m16a4_carryhandle", - "rhs_weap_m16a4_carryhandle_M203", - "rhs_weap_m16a4_carryhandle_pmag", - "rhs_weap_m4_carryhandle", - "rhs_weap_m4_carryhandle_pmag", - "rhs_weap_m4_m203", - "rhs_weap_m4_m320", - "rhs_weap_m4a1", - "rhs_weap_m4a1_blockII", - "rhs_weap_m4a1_blockII_KAC", - "rhs_weap_m4a1_blockII_KAC_bk", - "rhs_weap_m4a1_blockII_KAC_d", - "rhs_weap_m4a1_blockII_KAC_wd", - "rhs_weap_m4a1_blockII_M203", - "rhs_weap_m4a1_blockII_M203_bk", - "rhs_weap_m4a1_blockII_M203_d", - "rhs_weap_m4a1_blockII_M203_wd", - "rhs_weap_m4a1_blockII_bk", - "rhs_weap_m4a1_blockII_d", - "rhs_weap_m4a1_blockII_wd", - "rhs_weap_m4a1_carryhandle", - "rhs_weap_m4a1_carryhandle_m203", - "rhs_weap_m4a1_carryhandle_pmag", - "rhs_weap_m4a1_m203", - "rhs_weap_m4a1_m320", - "rhs_weap_mk18", - "rhs_weap_mk18", - "rhs_weap_mk18_KAC", - "rhs_weap_mk18_KAC_bk", - "rhs_weap_mk18_KAC_d", - "rhs_weap_mk18_KAC_wd", - "rhs_weap_mk18_bk", - "rhs_weap_mk18_d", - "rhs_weap_mk18_m320", - "rhs_weap_mk18_wd", - "rhs_weap_m249_pip_L", - "rhs_weap_m249_pip_L_para", - "rhs_weap_m249_pip_L_vfg", - "rhs_weap_m249_pip_S", - "rhs_weap_m249_pip_S_para", - "rhs_weap_m249_pip_S_vfg", - "rhs_weap_m240B", - "rhs_weap_m240B_CAP", - "rhs_weap_m240G", - "rhs_weap_pkm", - "rhs_weap_pkp", - // Added by ElShotte - 1 Item - "rhs_weap_m27iar" -]; - -blck_RHS_UniformsUSAF = [ - "rhs_uniform_FROG01_m81", - "rhs_uniform_FROG01_d", - "rhs_uniform_FROG01_wd", - "rhs_uniform_cu_ocp", - "rhs_uniform_cu_ucp", - "rhs_uniform_cu_ocp_101st", - "rhs_uniform_cu_ocp_10th", - "rhs_uniform_cu_ocp_1stcav", - "rhs_uniform_cu_ocp_82nd", - "rhs_uniform_cu_ucp_101st", - "rhs_uniform_cu_ucp_10th", - "rhs_uniform_cu_ucp_1stcav", - "rhs_uniform_cu_ucp_82nd", - "rhs_uniform_cu_ocp_patchless", - "rhs_uniform_cu_ucp_patchless", - // Added by ElShotte - 5 Items - "rhs_uniform_g3_m81", - "rhs_uniform_g3_blk", - "rhs_uniform_g3_mc", - "rhs_uniform_g3_rgr", - "rhs_uniform_g3_tan" - -]; - -blck_RHS_VestsUSAF = [ - "rhsusf_iotv_ucp", - "rhsusf_iotv_ucp_grenadier", - "rhsusf_iotv_ucp_medic", - "rhsusf_iotv_ucp_repair", - "rhsusf_iotv_ucp_rifleman", - "rhsusf_iotv_ucp_SAW", - "rhsusf_iotv_ucp_squadleader", - "rhsusf_iotv_ucp_teamleader", - "rhsusf_iotv_ocp", - "rhsusf_iotv_ocp_grenadier", - "rhsusf_iotv_ocp_medic", - "rhsusf_iotv_ocp_repair", - "rhsusf_iotv_ocp_rifleman", - "rhsusf_iotv_ocp_SAW", - "rhsusf_iotv_ocp_squadleader", - "rhsusf_iotv_ocp_teamleader", - //added by chainsaw - 2 - "rhsusf_spc", - "rhsusf_spc_mg", - // Added by ElShotte - 12 Items - "rhsusf_spc_marksman", - "rhsusf_spc_corpsman", - "rhsusf_spc_patchless", - "rhsusf_spc_squadleader", - "rhsusf_spc_teamleader", - "rhsusf_spc_light", - "rhsusf_spc_rifleman", - "rhsusf_spc_iar", - "rhsusf_spcs_ocp_rifleman", - "rhsusf_spcs_ocp", - "rhsusf_spcs_ucp_rifleman", - "rhsusf_spcs_ucp" - -]; - -blck_RHS_BackpacksUSAF = [ - "rhsusf_assault_eagleaiii_coy", - "rhsusf_assault_eagleaiii_ocp", - "rhsusf_assault_eagleaiii_ucp", - "rhsusf_falconii_coy", - "rhsusf_falconii_mc", - "rhsusf_falconii", - "RHS_M2_Gun_Bag" - -]; - -blck_RHS_HeadgearUSAF = [ - "rhs_Booniehat_m81", - "rhs_Booniehat_marpatd", - "rhs_Booniehat_marpatwd", - "rhs_Booniehat_ocp", - "rhs_Booniehat_ucp", - "rhsusf_Bowman", - "rhsusf_ach_bare", - "rhsusf_ach_bare_des", - "rhsusf_ach_bare_des_ess", - "rhsusf_ach_bare_des_headset", - "rhsusf_ach_bare_des_headset_ess", - "rhsusf_ach_bare_ess", - "rhsusf_ach_bare_headset", - "rhsusf_ach_bare_headset_ess", - "rhsusf_ach_bare_semi", - "rhsusf_ach_bare_semi_ess", - "rhsusf_ach_bare_semi_headset", - "rhsusf_ach_bare_semi_headset_ess", - "rhsusf_ach_bare_tan", - "rhsusf_ach_bare_tan_ess", - "rhsusf_ach_bare_tan_headset", - "rhsusf_ach_bare_tan_headset_ess", - "rhsusf_ach_bare_wood", - "rhsusf_ach_bare_wood_ess", - "rhsusf_ach_bare_wood_headset", - "rhsusf_ach_bare_wood_headset_ess", - "rhsusf_ach_helmet_ESS_ocp", - "rhsusf_ach_helmet_ESS_ucp", - "rhsusf_ach_helmet_M81", - "rhsusf_ach_helmet_camo_ocp", - "rhsusf_ach_helmet_headset_ess_ocp", - "rhsusf_ach_helmet_headset_ess_ucp", - "rhsusf_ach_helmet_headset_ocp", - "rhsusf_ach_helmet_headset_ucp", - "rhsusf_ach_helmet_ocp", - "rhsusf_ach_helmet_ocp_norotos", - "rhsusf_ach_helmet_ucp", - "rhsusf_ach_helmet_ucp_norotos", - "rhsusf_bowman_cap", - "rhsusf_lwh_helmet_M1942", - "rhsusf_lwh_helmet_marpatd", - "rhsusf_lwh_helmet_marpatd_ess", - "rhsusf_lwh_helmet_marpatd_headset", - "rhsusf_lwh_helmet_marpatwd", - "rhsusf_lwh_helmet_marpatwd_ess", - "rhsusf_lwh_helmet_marpatwd_headset", - "rhsusf_mich_bare", - "rhsusf_mich_bare_alt", - "rhsusf_mich_bare_alt_semi", - "rhsusf_mich_bare_alt_tan", - "rhsusf_mich_bare_headset", - "rhsusf_mich_bare_norotos", - "rhsusf_mich_bare_norotos_alt", - "rhsusf_mich_bare_norotos_alt_headset", - "rhsusf_mich_bare_norotos_alt_semi", - "rhsusf_mich_bare_norotos_alt_semi_headset", - "rhsusf_mich_bare_norotos_alt_tan", - "rhsusf_mich_bare_norotos_alt_tan_headset", - "rhsusf_mich_bare_norotos_arc", - "rhsusf_mich_bare_norotos_arc_alt", - "rhsusf_mich_bare_norotos_arc_alt_headset", - "rhsusf_mich_bare_norotos_arc_alt_semi", - "rhsusf_mich_bare_norotos_arc_alt_semi_headset", - "rhsusf_mich_bare_norotos_arc_alt_tan", - "rhsusf_mich_bare_norotos_arc_alt_tan_headset", - "rhsusf_mich_bare_norotos_arc_headset", - "rhsusf_mich_bare_norotos_arc_semi", - "rhsusf_mich_bare_norotos_arc_semi_headset", - "rhsusf_mich_bare_norotos_arc_tan", - "rhsusf_mich_bare_norotos_headset", - "rhsusf_mich_bare_norotos_semi", - "rhsusf_mich_bare_norotos_semi_headset", - "rhsusf_mich_bare_norotos_tan", - "rhsusf_mich_bare_norotos_tan_headset", - "rhsusf_mich_bare_semi", - "rhsusf_mich_bare_semi_headset", - "rhsusf_mich_bare_tan", - "rhsusf_mich_bare_tan_headset", - "rhsusf_mich_helmet_marpatd_alt_headset", - "rhsusf_mich_helmet_marpatd_headset", - "rhsusf_mich_helmet_marpatd_norotos", - "rhsusf_mich_helmet_marpatd_norotos_arc", - "rhsusf_mich_helmet_marpatd_norotos_arc_headset", - "rhsusf_mich_helmet_marpatd_norotos_headset", - "rhsusf_mich_helmet_marpatwd", - "rhsusf_mich_helmet_marpatwd_alt", - "rhsusf_mich_helmet_marpatwd_alt_headset", - "rhsusf_mich_helmet_marpatwd_headset", - "rhsusf_mich_helmet_marpatwd_norotos", - "rhsusf_mich_helmet_marpatwd_norotos_arc", - "rhsusf_mich_helmet_marpatwd_norotos_arc_headset", - "rhsusf_mich_helmet_marpatwd_norotos_headset", - // added by chainsaw - 13 - "rhsusf_patrolcap_ocp", - "rhsusf_patrolcap_ucp", - "rhsusf_opscore_01", - "rhsusf_opscore_01_tan", - "rhsusf_opscore_02_tan", - "rhsusf_opscore_03_ocp", - "rhsusf_opscore_04_ocp", - "rhsusf_cvc_helmet", - "rhsusf_cvc_ess", - "rhsusf_hgu56p", - "rhsusf_hgu56p_mask", - "rhsusf_cvc_green_helmet", - "rhsusf_cvc_green_ess", - // Added by ElShotte - 41 Items - "rhsusf_opscore_bk_pelt", - "rhsusf_opscore_bk", - "rhsusf_opscore_coy_cover", - "rhsusf_opscore_coy_cover_pelt", - "rhsusf_opscore_fg", - "rhsusf_opscore_fg_pelt", - "rhsusf_opscore_fg_pelt_cam", - "rhsusf_opscore_fg_pelt_nsw", - "rhsusf_opscore_mc", - "rhsusf_opscore_mc_pelt", - "rhsusf_opscore_mc_pelt_nsw", - "rhsusf_opscore_mc_cover", - "rhsusf_opscore_mc_cover_pelt", - "rhsusf_opscore_mc_cover_pelt_nsw", - "rhsusf_opscore_mc_cover_pelt_cam", - "rhsusf_opscore_paint", - "rhsusf_opscore_paint_pelt", - "rhsusf_opscore_paint_pelt_nsw", - "rhsusf_opscore_paint_pelt_nsw_cam", - "rhsusf_opscore_rg_cover", - "rhsusf_opscore_rg_cover_pelt", - "rhsusf_opscore_ut", - "rhsusf_opscore_ut_pelt", - "rhsusf_opscore_ut_pelt_cam", - "rhsusf_opscore_ut_pelt_nsw", - "rhsusf_opscore_ut_pelt_nsw_cam", - "rhsusf_opscore_mar_ut_pelt", - "rhsusf_opscore_mar_ut", - "rhsusf_opscore_mar_fg_pelt", - "rhsusf_opscore_mar_fg", - "rhsusf_protech_helmet", - "rhsusf_protech_helmet_ess", - "rhsusf_protech_helmet_rhino", - "rhsusf_protech_helmet_rhino_ess" -]; - -blck_RHS_UniformsGREF = [ - "rhsgref_uniform_alpenflage", - "rhsgref_uniform_flecktarn", - "rhsgref_uniform_para_ttsko_mountain", - "rhsgref_uniform_para_ttsko_oxblood", - "rhsgref_uniform_para_ttsko_urban", - "rhsgref_uniform_reed", - "rhsgref_uniform_specter", - "rhsgref_uniform_tigerstripe", - "rhsgref_uniform_ttsko_forest", - "rhsgref_uniform_ttsko_mountain", - "rhsgref_uniform_ttsko_urban", - "rhsgref_uniform_vsr", - "rhsgref_uniform_woodland", - "rhsgref_uniform_woodland_olive" -]; - -blck_RHS_VestsGREF = [ - "rhsgref_6b23", - "rhsgref_6b23_khaki", - "rhsgref_6b23_khaki_medic", - "rhsgref_6b23_khaki_nco", - "rhsgref_6b23_khaki_officer", - "rhsgref_6b23_khaki_rifleman", - "rhsgref_6b23_khaki_sniper", - "rhsgref_6b23_ttsko_digi", - "rhsgref_6b23_ttsko_digi_medic", - "rhsgref_6b23_ttsko_digi_nco", - "rhsgref_6b23_ttsko_digi_officer", - "rhsgref_6b23_ttsko_digi_rifleman", - "rhsgref_6b23_ttsko_digi_sniper", - "rhsgref_6b23_ttsko_forest", - "rhsgref_6b23_ttsko_forest_rifleman", - "rhsgref_6b23_ttsko_mountain", - "rhsgref_6b23_ttsko_mountain_medic", - "rhsgref_6b23_ttsko_mountain_nco", - "rhsgref_6b23_ttsko_mountain_officer", - "rhsgref_6b23_ttsko_mountain_rifleman", - "rhsgref_6b23_ttsko_mountain_sniper", - "rhsgref_otv_digi", - "rhsgref_otv_khaki" -]; - -blck_RHS_HeadgearGREF = [ - "rhsgref_6b27m", - "rhsgref_6b27m_ttsko_digi", - "rhsgref_6b27m_ttsko_forest", - "rhsgref_6b27m_ttsko_mountain", - "rhsgref_6b27m_ttsko_urban", - "rhsgref_Booniehat_alpen", - "rhsgref_fieldcap", - "rhsgref_fieldcap_ttsko_digi", - "rhsgref_fieldcap_ttsko_forest", - "rhsgref_fieldcap_ttsko_mountain", - "rhsgref_fieldcap_ttsko_urban", - "rhsgref_patrolcap_specter", - "rhsgref_ssh68", - "rhsgref_ssh68_emr", - "rhsgref_ssh68_ttsko_digi", - "rhsgref_ssh68_ttsko_forest", - "rhsgref_ssh68_ttsko_mountain", - "rhsgref_ssh68_un" -]; -blck_RHS_WeaponsGREF = [ - "rhs_weap_kar98k", - "rhs_weap_m21a", - "rhs_weap_m21a_fold", - "rhs_weap_m21a_pr", - "rhs_weap_m21s", - "rhs_weap_m21s_fold", - "rhs_weap_m21s_pr", - "rhs_weap_m38", - "rhs_weap_m70ab2", - "rhs_weap_m70ab2_fold", - "rhs_weap_m70b1", - "rhs_weap_m76", - "rhs_weap_m92", - "rhs_weap_m92_fold" -]; - -blck_RHS_HeadgearSAF = [ - "rhssaf_helmet_m59_85_nocamo", - "rhssaf_helmet_m59_85_oakleaf", - "rhssaf_helmet_m97_olive_nocamo", - "rhssaf_helmet_m97_olive_nocamo_black_ess", - "rhssaf_helmet_m97_olive_nocamo_black_ess_bare", - "rhssaf_helmet_m97_black_nocamo", - "rhssaf_helmet_m97_black_nocamo_black_ess", - "rhssaf_helmet_m97_black_nocamo_black_ess_bare", - "rhssaf_Helmet_m97_woodland", - "rhssaf_Helmet_m97_digital", - "rhssaf_Helmet_m97_md2camo", - "rhssaf_Helmet_m97_oakleaf", - "rhssaf_helmet_m97_nostrap_blue", - "rhssaf_helmet_m97_nostrap_blue_tan_ess", - "rhssaf_helmet_m97_nostrap_blue_tan_ess_bare", - "rhssaf_helmet_m97_woodland_black_ess", - "rhssaf_helmet_m97_woodland_black_ess_bare", - "rhssaf_helmet_m97_digital_black_ess", - "rhssaf_helmet_m97_digital_black_ess_bare", - "rhssaf_helmet_m97_md2camo_black_ess", - "rhssaf_helmet_m97_md2camo_black_ess_bare", - "rhssaf_helmet_m97_oakleaf_black_ess", - "rhssaf_helmet_m97_oakleaf_black_ess_bare", - "rhssaf_helmet_hgu56p", - "rhssaf_beret_green", - "rhssaf_beret_red", - "rhssaf_beret_black", - "rhssaf_beret_blue_un", - "rhssaf_booniehat_digital", - "rhssaf_booniehat_md2camo", - "rhssaf_booniehat_woodland" -]; - -blck_RHS_UniformsSAF = [ - "rhssaf_uniform_m10_digital", - "rhssaf_uniform_m10_digital_summer", - "rhssaf_uniform_m10_digital_desert", - "rhssaf_uniform_m10_digital_tan_boots", - "rhssaf_uniform_m93_oakleaf", - "rhssaf_uniform_m93_oakleaf_summer", - "rhssaf_uniform_heli_pilot" -]; - -blck_RHS_VestsSAF = [ - "rhssaf_vest_md98_woodland", - "rhssaf_vest_md98_md2camo", - "rhssaf_vest_md98_digital", - "rhssaf_vest_md98_officer", - "rhssaf_vest_md98_rifleman", - "rhssaf_vest_otv_md2camo", - "rhssaf_vest_md99_md2camo_rifleman", - "rhssaf_vest_md99_digital_rifleman", - "rhssaf_vest_md99_woodland_rifleman", - "rhssaf_vest_md99_md2camo", - "rhssaf_vest_md99_digital", - "rhssaf_vest_md99_woodland" -]; - -blck_RHS_BackpacksSAF = [ - "rhssaf_30rnd_556x45_EPR_G36", - "rhssaf_30rnd_556x45_SOST_G36", - "rhssaf_100rnd_556x45_EPR_G36", - "rhssaf_30rnd_556x45_SPR_G36", - "rhssaf_30rnd_556x45_Tracers_G36", - "rhssaf_30rnd_556x45_MDIM_G36", - "rhssaf_30rnd_556x45_TDIM_G36", - "150Rnd_556x45_Drum_Mag_F", - "150Rnd_556x45_Drum_Mag_Tracer_F", - "rhs_30Rnd_762x39mm", - "rhs_30Rnd_762x39mm_tracer", - "rhs_30Rnd_762x39mm_89", - "rhs_30Rnd_762x39mm_U", - "rhsgref_30rnd_556x45_m21", - "rhsgref_30rnd_556x45_m21_t", - "rhs_100Rnd_762x54mmR", - "rhs_100Rnd_762x54mmR_green", - "rhssaf_250Rnd_762x54R" -]; - -blck_RHS_WeaponsSAF = [ - "rhs_weap_m70ab2_fold", - "rhs_weap_m70b1", - "rhs_weap_m70b1n", - "rhs_weap_m70b3n", - "rhs_weap_m70b3n_pbg40", - "rhs_weap_m92", - "rhs_weap_m92_fold", - "rhs_weap_m76", - "rhs_weap_m21a", - "rhs_weap_m21a_pr", - "rhs_weap_m21a_pr_pbg40", - "rhs_weap_m21a_fold", - "rhs_weap_m21a_pbg40", - "rhs_weap_m21s", - "rhs_weap_m21s_pr", - "rhs_weap_m21s_fold", - "rhs_weap_m82a1", - "rhs_weap_minimi_para_railed", - "rhs_weap_g36c", - "rhs_weap_g36kv", - "rhs_weap_g36kv_ag36", - "rhs_weap_m84" -]; - -blck_NIA_WeaponsLMG = [ - "hlc_lmg_M249E2", - "hlc_lmg_M249E2", - "hlc_lmg_M60E4", - "hlc_lmg_MG3KWS_b", - "hlc_lmg_MG3KWS_g", - "hlc_lmg_MG42", - "hlc_lmg_MG42KWS_t", - "hlc_lmg_m249para", - "hlc_lmg_m249para", - "hlc_lmg_m60", - "hlc_lmg_mg42kws_b", - "hlc_lmg_mg42kws_g", - "hlc_lmg_minimi", - "hlc_lmg_minimi_railed", - "hlc_lmg_minimipara", - "hlc_lmg_mk48", - "hlc_m249_pip1", - "hlc_m249_pip2", - "hlc_m249_pip3", - "hlc_m249_pip4", - "hlc_rifle_rpk", - "hlc_rifle_rpk12", - "hlc_rifle_rpk74n" -]; - -blck_NIA_WeaponsSMG = [ - "hlc_smg_9mmar", - "hlc_smg_MP5N", - "hlc_smg_mp510", - "hlc_smg_mp5a2", - "hlc_smg_mp5a3", - "hlc_smg_mp5a4", - "hlc_smg_mp5k", - "hlc_smg_mp5k_PDW", - "hlc_smg_mp5sd5", - "hlc_smg_mp5sd6" -]; - -blck_NIA_WeaponsAR = [ - "HLC_Rifle_g3ka4_GL", - "hlc_barrel_carbine", - "hlc_barrel_hbar", - "hlc_barrel_standard", - "hlc_rifle_Bushmaster300", - "hlc_rifle_Colt727", - "hlc_rifle_Colt727_GL", - "hlc_rifle_FAL5000", - "hlc_rifle_FAL5000Rail", - "hlc_rifle_FAL5000_RH", - "hlc_rifle_FAL5061", - "hlc_rifle_FAL5061Rail", - "hlc_rifle_G36A1", - "hlc_rifle_G36A1AG36", - "hlc_rifle_G36C", - "hlc_rifle_G36CMLIC", - "hlc_rifle_G36CTAC", - "hlc_rifle_G36CV", - "hlc_rifle_G36E1", - "hlc_rifle_G36E1AG36", - "hlc_rifle_G36KA1", - "hlc_rifle_G36KE1", - "hlc_rifle_G36KMLIC", - "hlc_rifle_G36KTAC", - "hlc_rifle_G36KV", - "hlc_rifle_G36MLIAG36", - "hlc_rifle_G36MLIC", - "hlc_rifle_G36TAC", - "hlc_rifle_G36V", - "hlc_rifle_G36VAG36", - "hlc_rifle_LAR", - "hlc_rifle_M14", - "hlc_rifle_M14DMR", - "hlc_rifle_M21", - "hlc_rifle_MG36", - "hlc_rifle_RK62", - "hlc_rifle_RU556", - "hlc_rifle_RU5562", - "hlc_rifle_SAMR", - "hlc_rifle_SLR", - "hlc_rifle_SLRchopmod", - "hlc_rifle_STG58F", - "hlc_rifle_STGW57", - "hlc_rifle_aek971", - "hlc_rifle_aek971_mtk", - "hlc_rifle_ak12", - "hlc_rifle_ak12gl", - "hlc_rifle_ak47", - "hlc_rifle_ak74", - "hlc_rifle_ak74_MTK", - "hlc_rifle_ak74_dirty", - "hlc_rifle_ak74_dirty2", - "hlc_rifle_ak74m", - "hlc_rifle_ak74m_MTK", - "hlc_rifle_ak74m_gl", - "hlc_rifle_akm", - "hlc_rifle_akm_MTK", - "hlc_rifle_akmgl", - "hlc_rifle_aks74", - "hlc_rifle_aks74_GL", - "hlc_rifle_aks74_MTK", - "hlc_rifle_aks74u", - "hlc_rifle_aks74u_MTK", - "hlc_rifle_aku12", - "hlc_rifle_amt", - "hlc_rifle_aug", - "hlc_rifle_auga1_B", - "hlc_rifle_auga1_t", - "hlc_rifle_auga1carb", - "hlc_rifle_auga1carb_b", - "hlc_rifle_auga1carb_t", - "hlc_rifle_auga2", - "hlc_rifle_auga2_b", - "hlc_rifle_auga2_t", - "hlc_rifle_auga2carb", - "hlc_rifle_auga2carb_b", - "hlc_rifle_auga2carb_t", - "hlc_rifle_auga2lsw", - "hlc_rifle_auga2lsw_b", - "hlc_rifle_auga2lsw_t", - "hlc_rifle_auga3", - "hlc_rifle_auga3_GL", - "hlc_rifle_auga3_GL_B", - "hlc_rifle_auga3_GL_BL", - "hlc_rifle_auga3_b", - "hlc_rifle_auga3_bl", - "hlc_rifle_aughbar", - "hlc_rifle_aughbar_b", - "hlc_rifle_aughbar_t", - "hlc_rifle_augsr", - "hlc_rifle_augsr_b", - "hlc_rifle_augsr_t", - "hlc_rifle_augsrcarb", - "hlc_rifle_augsrcarb_b", - "hlc_rifle_augsrcarb_t", - "hlc_rifle_augsrhbar", - "hlc_rifle_augsrhbar_b", - "hlc_rifle_augsrhbar_t", - "hlc_rifle_bcmblackjack", - "hlc_rifle_bcmjack", - "hlc_rifle_c1A1", - "hlc_rifle_falosw", - "hlc_rifle_g3a3", - "hlc_rifle_g3a3ris", - "hlc_rifle_g3a3v", - "hlc_rifle_g3ka4", - "hlc_rifle_g3sg1", - "hlc_rifle_hk33a2", - "hlc_rifle_hk33a2RIS", - "hlc_rifle_hk51", - "hlc_rifle_hk53", - "hlc_rifle_hk53RAS", - "hlc_rifle_honeybadger", - "hlc_rifle_l1a1slr", - "hlc_rifle_m14sopmod", - "hlc_rifle_osw_GL", - "hlc_rifle_rpk74n", - "hlc_rifle_sig5104", - "hlc_rifle_slr107u", - "hlc_rifle_slr107u_MTK", - "hlc_rifle_stgw57_RIS", - "hlc_rifle_stgw57_commando", - "hlc_rifle_vendimus" -]; - -blck_NIA_WeaponsSniper = [ - "hlc_rifle_M1903A1", - "hlc_rifle_M1903A1OMR", - "hlc_rifle_M1903A1_unertl", - "hlc_rifle_PSG1A1_RIS", - "hlc_rifle_awMagnum_BL_ghillie", - "hlc_rifle_awMagnum_FDE_ghillie", - "hlc_rifle_awMagnum_OD_ghillie", - "hlc_rifle_awcovert", - "hlc_rifle_awcovert_BL", - "hlc_rifle_awcovert_FDE", - "hlc_rifle_awmagnum", - "hlc_rifle_awmagnum_BL", - "hlc_rifle_awmagnum_FDE", - "hlc_rifle_psg1", - "hlc_rifle_psg1A1" -]; -*/ \ No newline at end of file diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 4be3792..3e7d592 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -24,7 +24,7 @@ //#define useDynamicSimulation //#define blck_debugMode //#define GRG_TestServer - +#define GRGserver #define blck_triggerLoopCompleteTime 40*60 #define onFoot 1 diff --git a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf index 4ae4aff..eefa601 100644 --- a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf @@ -218,5 +218,3 @@ blck_backpacks_green = blck_backpacks; blck_backpacks_orange = blck_backpacks; blck_explosives = _wpnThrow; - -blck_configsLoaded = true; diff --git a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf b/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf deleted file mode 100644 index 0c847d2..0000000 --- a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample1.sqf +++ /dev/null @@ -1,66 +0,0 @@ -/* - This is a simple mission using randomly placed AI infantry, static weapons and vehicle patrols. - Please see staticMissionExample2.sqf for a more complete overview of how to configure static missions. -*/ -private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", - "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", - "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; - -_mission = "static mission example 1"; -_missionCenter = [24415,18909,0]; // I pulled this from the position of the marker. -_difficulty = "red"; // Skill level of AI (blue, red, green etc) -_crateLoot = blck_BoxLoot_Red; -_lootCounts = blck_lootCountsRed; - -_markerLabel = ""; -_markerType = ["ELIPSE",[200,200],"GRID"]; -// An alternative would be: -// _markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers -_markerColor = "ColorRed"; // This can be any valid Arma Marker Color -_markerMissionName = "Bad Guys Town"; -_missionLandscapeMode = "precise"; // acceptable values are "random","precise" - // In precise mode objects will be spawned at the relative positions specified. - // In the random mode, objects will be randomly spawned within the mission area. -_missionLandscape = [ - -]; // list of objects to spawn as landscape -_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. -// If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. -// -// [["box_classname1",_customLootArray1,[px,py,pz],["box_classname2",_customLootArray2,[px2,py2,pz2]] -// where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and -// where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed - -_missionLootVehicles = []; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; -// When blank nothing is spawned. -// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. - -_noEmplacedWeapons = [2,3]; -_missionEmplacedWeapons = []; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; - // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used - // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. - // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. - -_minNoAI = blck_MinAI_Red; // Modify as needed -_maxNoAI = blck_MaxAI_Red; // Modify as needed. -_noAIGroups = blck_AIGrps_Red; // Modify as needed -_aiGroupParameters = []; - -_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] -_vehiclePatrolParameters = []; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/] ] - // When empty vehicle patrols will be scattered randomely around the mission. - // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). - // If _noVehiclePatrols is less than the number of locations specified only _noVehiclePatrols patrols will be spawned. -_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] - -_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. -_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; -_airPatrols = []; - -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; -_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. -_headgear = blck_headgear; // You can replace this list with a custom list of headgear. -_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. - -#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnMission.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf b/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf deleted file mode 100644 index 58da94d..0000000 --- a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2.sqf +++ /dev/null @@ -1,135 +0,0 @@ -/* - This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. - See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. - Note that I exported the mission using the exportAll function of M3EDEN editor. -*/ -private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", - "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", - "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines"]; - -_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se. -_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker. -_difficulty = "red"; // Skill level of AI (blue, red, green etc) -diag_log format["[blckeagls static missions] STARTED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; -_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray - /* - _customLootArray = - // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. - // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. - - [ - [// Weapons - - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] - ], - [//Magazines - ["10Rnd_93x64_DMR_05_Mag" ,1,5] - ], - [ // Optics - ["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_MetalScrews",3,10] - // - ], - [//Items - ["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_OutdoorPack_tan",1,2] - ] - ]; - */ - -_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: - // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. - // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange - -_markerLabel = ""; -//_markerType = ["ELIPSE",[200,200],"GRID"]; -// An alternative would be: -_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers -_markerColor = "ColorRed"; // This can be any valid Arma Marker Color -_markerMissionName = "Bad People Live Here"; -_missionLandscapeMode = "precise"; // acceptable values are "random","precise" - // In precise mode objects will be spawned at the relative positions specified. - // In the random mode, objects will be randomly spawned within the mission area. -_missionLandscape = [ // Paste appropriate lines from M3EDEN output here. - ["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]], - ["Land_Cargo_HQ_V1_F",[22918.1,16761.9,3.18151],[[0,1,0],[0,0,1]],[true,false]], - ["Land_Cargo_HQ_V3_F",[22907.6,16740.3,3.17544],[[0,1,0],[0,0,1]],[true,false]], - ["Land_Dome_Small_F",[22908.2,16808.8,3.19],[[0,1,0],[0,0,1]],[true,false]] -]; // list of objects to spawn as landscape using output from M3EDEN editor. - -_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray - // [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2] - // where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and - // where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed - [selectRandom blck_crateTypes,[22917.4,16763,6.30803],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1] ], - [selectRandom blck_crateTypes,[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts], - // 0 1 2 3 4 5 - [selectRandom blck_crateTypes,[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] -]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. - - - -_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below. - // Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground. - //["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]], - //["Exile_Car_Van_Fuel_Guerilla02",[22919,16782.7,3.18132],[[0,1,0],[0.00129187,0,0.999999]],[true,false],_crateLoot, _lootCounts] -]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; -// When blank nothing is spawned. -// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. - -_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] -//format: _noEmplacedWeapons = [2,3]; // a range of values -// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison -// Note that this value is ignored if you define static weapon positions and types in the array below. -_missionEmplacedWeapons = [ - //["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red",0,0], - //["B_HMG_01_high_F",[22944.3,16820.5,3.14243],"green",0,0] -]; // example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; - // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used - // If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. - // If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. - -_minNoAI = blck_MinAI_Red; // Modify as needed -_maxNoAI = blck_MaxAI_Red; // Modify as needed. -_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below. -_aiGroupParameters = [ - // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/] - //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], - [[22993.3,16830.8,5.6292],"red",4, 75,9000], - [[22947.8,16717,6.80305],"red",4, 75,900], - [[22849,16720.4,7.33123],"red",4, 75,9000], - [[22832.9,16805.6,4.59315],"red",4, 75,900], - [[22909.8,16778.6,3.19144],"red",4, 75,900], - [[22819.4,16929.5,5.33892],"red",4, 75,900], - [[22819.4,16929.5,5.33892],"red",4, 75,900] -]; - -_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]; - // Note that this value is ignored if you define vehicle patrols in the array below. -_vehiclePatrolParameters = [ - ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600,900], - ["B_G_Offroad_01_repair_F",[22809.5,16699.2,8.78706],"green", 600,900] -]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ] - // When this array is empty, vehicle patrols will be scattered randomely around the mission. - // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). - -_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. -_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; - // Note: this value is ignored if you specify air patrols in the array below. -_airPatrols = [ - ["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,900]//, - //[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"green",1000,0] -]; -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. -_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. -_headgear = blck_headgear; // You can replace this list with a custom list of headgear. -_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. - -#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf"; - -diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2.sqf b/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2.sqf deleted file mode 100644 index c7ca255..0000000 --- a/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2.sqf +++ /dev/null @@ -1,133 +0,0 @@ -/* - This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. - See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. - Note that I laid out the mission in EDEN editor, exported the mission using the exportAll function of M3EDEN editor. then copied, pasted and apporpriately edidet the specific categories of items to be spawned. -*/ -private ["_markerLabel","_endMsg","_startMsg","_lootCounts","_crateLoot","_markerMissionName","_missionLandscapeMode","_missionLandscape", - "_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons", - "_uniforms","_headgear","_chanceReinforcements","_noPara","_helipatrol","_endCondition","_markerColor","_markerType","_useMines","_difficulty","_mission","_missionCenter"]; - -_mission = "UMS mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se. -_missionCenter = [22584.9,15304.8,0]; // I pulled this from the position of the marker. -_difficulty = "red"; // Skill level of AI (blue, red, green etc) -diag_log format["[blckeagls UMS missions] STARTED initializing mission %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; -_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray - /* - _customLootArray = - // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. - // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. - - [ - [// Weapons - - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] - ], - [//Magazines - ["10Rnd_93x64_DMR_05_Mag" ,1,5] - ], - [ // Optics - ["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_MetalScrews",3,10] - // - ], - [//Items - ["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_OutdoorPack_tan",1,2] - ] - ]; - */ - -_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: - // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. - // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange - -_markerLabel = ""; -//_markerType = ["ELIPSE",[200,200],"GRID"]; -// An alternative would be: -_markerType = ["mil_triangle",[0,0]]; // You can replace mil_triangle with any other valid Arma 3 marker type https://community.bistudio.com/wiki/cfgMarkers -_markerColor = "ColorRed"; // This can be any valid Arma Marker Color -_markerMissionName = "Bad Fishermen Live Here"; -_missionLandscapeMode = "precise"; // acceptable values are "random","precise" - // In precise mode objects will be spawned at the relative positions specified. - // In the random mode, objects will be randomly spawned within the mission area. -_missionLandscape = [ // Paste appropriate lines from M3EDEN output here. - // ["Land_Cargo_HQ_V2_F",[22894.7,16766,3.19],[[0,1,0],[0,0,1]],[true,false]], - ["Land_Boat_05_wreck_F",[22571.5,15278.9,0],[[0,1,0],[0,0,1]],[true,false]] -]; // list of objects to spawn as landscape using output from M3EDEN editor. - -_missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output here, then add the appropriate lootArray - // [["box_classname1",_customLootArray1,[px,py,pz],...,_customLootArray1],["box_classname2",,[px2,py2,pz2],...,_customLootArray2] - // where _customLootArray follows the same format as blck_BoxLoot_Red and the other pre-defined arrays and - // where _customlootcountsarray1 also follows the same format as the predefined arrays like blck_lootCountsRed - // ["Box_NATO_Ammo_F",[22893,16766.8,6.31652],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts], - [selectRandom blck_UMS_crates,[22584.9,15282.2,-1],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] -]; // If this array is empty a single loot chest will be added at the center. If you add items loot chest(s) will be spawned in specific positions. - - - -_missionLootVehicles = [ // Paste appropriate lines from the output of M3EDEN Editor here and add the loot crate type and loot counts at the end of each entry as shown in the example below. - // Many vehicles have less inventory capacity than crates so you may have to modify _lootcounts to avoid having stuff spawned all over the ground. - //["Exile_Car_Van_Box_Guerilla02",[22896.8,16790.1,3.18987],[[0,1,0],[0,0,1]],[true,false], _crateLoot, [[1,2],[4,6],[2,6],[5,8],6,1]], - ["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],[[0,1,0],[0,0,1]],[true,false],_crateLoot, _lootCounts] -]; // [ ["vehicleClassName", [px, py, pz] /* possition at which to spawn*/, _loot /* pointer to array of loot (see below)]; -// When blank nothing is spawned. -// You can use the same format used for _missionLootBoxes to add vehicles with/without loot. - -_noEmplacedWeapons = blck_SpawnEmplaced_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4] -//format: _noEmplacedWeapons = [2,3]; // a range of values -// or _noEmplacedWeapons = 3; // a constant number of emplaced weps per misison -// Note that this value is ignored if you define static weapon positions and types in the array below. -_missionEmplacedWeapons = [ - //["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red",0,0], - //["B_HMG_01_high_F",[22944.3,16820.5,3.14243],"green",0,0] -]; -// example [ ["emplacedClassName",[px, py, pz] /* position to spawn weapon */, difficulty /* difficulty of AI manning weapon (blue, red etc)] ]; -// can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used -// If the number of possible locations exceeds the number of emplaced weapons specified above then only some of the locations in the array will have emplaced weapons spawned. -// If you leave this array blank then emplaced weapons will be spawned at random locations around the mission using the default list of emplace weapons. - -_minNoAI = blck_MinAI_Red; // Modify as needed -_maxNoAI = blck_MaxAI_Red; // Modify as needed. -_noAIGroups = blck_AIGrps_Red; // Modify as needed; note that these values are ignored of you specify AI patrols in the array below. -_aiGroupParameters = [ - // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/] - -]; -_aiScubaGroupParameters = [ - // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/] - [[22584.9,15304.8,-4.27578],"red",4, 75,0], - [[22613.5,15269.1,-4.28332],"red",4, 75,0], - [[22549,15288.9,0],"red",4, 75,60] -]; -_noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic value (e.g. 3) or range presented as [2,4]; - // Note that this value is ignored if you define vehicle patrols in the array below. -_vehiclePatrolParameters = [ - ["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",4, 75,0], - ["B_T_Boat_Transport_01_F",[22570.1,15235.3,-4.49949],"red",4, 75,60] -]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ] - // When this array is empty, vehicle patrols will be scattered randomely around the mission. - // Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc). - -_submarinePatrolParameters = [ - ["B_SDV_01_F",[22584.9,15304.8,-1],"red",4, 75,0], - ["B_SDV_01_F",[22609.9,15299.8,-1],"red",4, 75,0] -]; - -_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. -_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; - // Note: this value is ignored if you specify air patrols in the array below. -_airPatrols = [ - //["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,0], - [selectRandom _aircraftTypes,_missionCenter,"green",1000,60] -]; - -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = false; // Set to false if you have vehicles patrolling nearby. - -#include "\q\addons\custom_server\Missions\UMS\code\GMS_fnc_sm_initializeUMSStaticMission.sqf"; - -diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; diff --git a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf index b6f1913..9c1e55e 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf @@ -12,14 +12,8 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_blck_WorldName"]; - -_blck_WorldName = toLower format ["%1", worldName]; -_blck_worldSize = worldSize; - -diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",_blck_WorldName]; - -switch (_blck_WorldName) do +diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName]; +switch (toLower worldName) do {// These may need some adjustment - including a test for shore or water should help as well to avoid missions spawning on water. case "altis":{ diag_log "[blckeagls] Altis-specific settings for Epoch loaded"; @@ -63,7 +57,5 @@ switch (_blck_WorldName) do case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000;}; case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500;}; case "malden":{blck_mapCenter = [6000,7000,0];blck_mapRange = 5500;}; - default {_blck_WorldName = "default";blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000}; -}; - -blck_worldSet = true; + default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000}; +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf index 606ae07..40d0267 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf @@ -10,26 +10,23 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -if (blck_modType isEqualTo "Epoch") then +if ((tolower blck_modType) isEqualTo "epoch") then { _blckListPrior = blck_locationBlackList; private _config = configFile >> "CfgEpoch"; private _configWorld = _config >> worldname; private _telePos = getArray(configFile >> "CfgEpoch" >> worldName >> "telePos" ); - //diag_log format["[blckeagls] _fnc_getTraderCities: _config = %1 | _configWorld = %2",_config,_configWorld]; - //diag_log format["[blckegle] _fnc_getTraderCities: count _telePos = %1 || _telepos = %2",count _telePos,_telePos]; - //if (true) exitWith {}; { blck_locationBlackList pushback [_x select 3, 1000]; #ifdef blck_debugMode if (blck_debugON) then {diag_log format["[blckeagls] _fnc_getTraderCitiesEpoch:: -- >> Added epoch trader city location at %1", (_x select 3)];}; #endif - } foreach _telePos; // (getArray(_configWorld >> "telePos")); + } foreach _telePos; diag_log format["[blckeagls] blckListPrior = %1",_blckListPrior]; diag_log format["[blckeagls] ] blck_locationBlackList = %1",blck_locationBlackList]; }; -if (blck_modType isEqualTo "Exile") then +if ((tolower blck_modType) isEqualTo "exile") then { if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then { diff --git a/@GMS/addons/custom_server/init/blck_defines.hpp b/@GMS/addons/custom_server/init/blck_defines.hpp deleted file mode 100644 index 80dae03..0000000 --- a/@GMS/addons/custom_server/init/blck_defines.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#define useAPEX -//#define useDynamicSimulation -//#define blck_debugMode -#define blck_triggerLoopCompleteTime 40*60 -#define blck_milServer -//#define GRG_TestServer -#define blck_useCUP -#define blck_useRHS - -//////////////////////////// -// Do not touch anything below this line -/////////////////////////// -#define onFoot 1 -#define inVehicle 2 - -// defines for static group spawners -#define staticPatrolTriggerRange 2000 -#define groupParameters 0 -#define patrolGroup 1 -#define groupSpawned 2 -#define timesSpawned 3 -#define respawnAt 4 - - diff --git a/@GMS/addons/custom_server/init/blck_init_HC.sqf b/@GMS/addons/custom_server/init/blck_init_HC.sqf index ba18f38..fea65a6 100644 --- a/@GMS/addons/custom_server/init/blck_init_HC.sqf +++ b/@GMS/addons/custom_server/init/blck_init_HC.sqf @@ -26,26 +26,20 @@ _blck_loadingStartTime = diag_tickTime; diag_log format["[blckeagls] Loading Headless Client Version %2 Build Date %1",_blck_versionDate,_blck_version]; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; -waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;}; -waitUntil{blck_variablesLoaded}; -blck_variablesLoaded = nil; -//if !(blck_debugON) then {uiSleep 60;}; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; -waitUntil {(isNil "blck_functionsCompiled") isEqualTo false;}; -waitUntil{blck_functionsCompiled}; -blck_functionsCompiled = nil; diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel]; execVM "\q\addons\custom_server\Configs\blck_configs.sqf"; -waitUntil {(isNil "blck_configsLoaded") isEqualTo false;}; -waitUntil{blck_configsLoaded}; -blck_configsLoaded = nil; // Load any user-defined specifications or overrides call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; +#ifdef GRGserver +diag_log "[blckeagls] Running GRG Version"; +#endif + switch (blck_simulationManager) do case 1: {diag_log "[blckeagls] dynamic simulation manager enabled"}; case 2: {diag_log "[blckeagls] blckeagls simulation manager enabled"}; diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index 333d131..37f96d5 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -10,28 +10,28 @@ */ if ( !(isServer) || hasInterface) exitWith{}; - -#include "blck_defines.hpp"; - if !(isNil "blck_Initialized") exitWith{}; +// find and set Mod +blck_modType = if (!isNull (configFile >> "CfgPatches" >> "exile_server")) then {"Exile"} else {if (!isnull (configFile >> "CfgPatches" >> "a3_epoch_server")) then {"Epoch"} else {""}}; +publicVariable "blck_modType"; +/* +if ((tolower blck_modType) isEqualto "epoch") then { + diag_log "[blckeagls] Waiting until EpochMod is ready..."; + waituntil {!isnil "EPOCH_SERVER_READY"}; +}; +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + + private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; diag_log format["[blckeagls] Loading Server Mission System Version %2 Build Date %1",_blck_versionDate,_blck_version]; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; -waitUntil {(isNil "blck_functionsCompiled") isEqualTo false;}; -waitUntil{blck_functionsCompiled}; -blck_functionsCompiled = nil; -diag_log format["[blckeagls] functions compiled at %1",diag_tickTime]; +diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime]; -blck_modType = call blck_fnc_getModType; -publicVariable "blck_modType"; - -execVM "\q\addons\custom_server\Configs\blck_configs.sqf"; -waitUntil {(isNil "blck_configsLoaded") isEqualTo false;}; -waitUntil{blck_configsLoaded}; -blck_configsLoaded = nil; +call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; diag_log format["[blckeagls] blck_useHC = %1 | blck_simulationManager = %2 ",blck_useHC,blck_simulationManager]; diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel]; @@ -41,9 +41,6 @@ diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime]; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; -waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;}; -waitUntil{blck_variablesLoaded}; -blck_variablesLoaded = nil; diag_log format["[blckeagls] blck_variables loaded at %1",diag_tickTime]; // spawn map addons to give the server time to position them before spawning in crates etc. @@ -53,25 +50,19 @@ if (blck_spawnMapAddons) then }else{ diag_log "[blckeagls] Map Addons disabled"; }; -blck_spawnMapAddons = nil; + +// find and set Mapcenter and size diag_log "[blckeagls] Loading Map-specific information"; -execVM "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf"; -waitUntil {(isNil "blck_worldSet") isEqualTo false;}; -waitUntil{blck_worldSet}; -blck_worldSet = nil; - -#ifdef GRG_TestServer -//[] execVM "\q\addons\custom_server\init\testCrateLoading.sqf"; -#endif +call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf"; // set up the lists of available missions for each mission category -diag_log "[blckeagls] Loading Mission Lists"; +//diag_log "[blckeagls] Loading Mission Lists"; #include "\q\addons\custom_server\Missions\GMS_missionLists.sqf"; diag_log "[blckeagls] Mission Lists Loaded Successfully"; -[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; -[] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions. +call compile preprocessfilelinenumbers "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; +call compile preprocessfilelinenumbers "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions. diag_log "[blckeagls] blck_init_server: ->> Static and UMS systems initialized."; switch (blck_simulationManager) do @@ -81,6 +72,15 @@ switch (blck_simulationManager) do case 0: {diag_log "[blckeagls] simulation management disabled"}; }; + +#ifdef GRGserver +// start the dynamic loot crate system +compile preprocessfilelinenumbers "\q\addons\custom_server\DLS\DLS_init.sqf"; +#endif + +diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; +diag_log format["blckeagls] waiting for players to join ---- >>>>"]; +#ifdef GRGserver diag_log "[blckeagls] Running GhostriderGaming Version"; #endif @@ -92,15 +92,11 @@ if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then diag_log "[blckeagls] spawning Missions"; }; - if (blck_spawnStaticLootCrates) then { // Start the static loot crate spawner - diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Started"; - [] execVM "\q\addons\custom_server\SLS\SLS_init.sqf"; - waitUntil {(isNil "blck_SLSComplete") isEqualTo false;}; - waitUntil {blck_SLSComplete}; - blck_SLSComplete = nil; + //diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Started"; + call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init.sqf"; diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Done"; }else{ diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled"; @@ -108,37 +104,56 @@ if (blck_spawnStaticLootCrates) then if (true /*blck_blacklistTraderCities*/) then { - execVM "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf"; + call compile preprocessfilelinenumbers "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf"; }; -diag_log format["[blckeagls] _init_server: blck_enableOrangeMissions = %1",blck_enableOrangeMissions]; + //Start the mission timers if (blck_enableOrangeMissions > 0) then { //[_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange] spawn blck_fnc_missionTimer;//Starts major mission system (Orange Map Markers) [_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange,blck_enableOrangeMissions] call blck_fnc_addMissionToQue; }; - -diag_log format["[blckeagls] _init_server: blck_enableGreenMissions = %1",blck_enableGreenMissions]; if (blck_enableGreenMissions > 0) then { //[_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green] spawn blck_fnc_missionTimer;//Starts major mission system 2 (Green Map Markers) [_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green,blck_enableGreenMissions] call blck_fnc_addMissionToQue; }; - -diag_log format["[blckeagls] _init_server: blck_enableRedMissions = %1",blck_enableRedMissions]; if (blck_enableRedMissions > 0) then { //[_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red] spawn blck_fnc_missionTimer;//Starts minor mission system (Red Map Markers)//Starts minor mission system 2 (Red Map Markers) [_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red,blck_enableRedMissions] call blck_fnc_addMissionToQue; }; - -diag_log format["[blckeagls] _init_server: blck_enableBlueMissions = %1",blck_enableBlueMissions]; if (blck_enableBlueMissions > 0) then { //[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue] spawn blck_fnc_missionTimer;//Starts minor mission system (Blue Map Markers) [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; +#ifdef GRGserver + +diag_log format["[blckeagls] _init_server: blck_enableScoutsMissions = %1",blck_enableScoutsMissions]; +if (blck_enableScoutsMissions > 0) then +{ + //[_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts] spawn blck_fnc_missionTimer; + [_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts,blck_enableScoutsMissions,false] call blck_fnc_addMissionToQue; +}; + +diag_log format["[blckeagls] _init_server: blck_enableHunterMissions = %1",blck_enableHunterMissions]; +if (blck_enableHunterMissions > 0) then +{ + //[_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter] spawn blck_fnc_missionTimer; + // params["_missionList","_path","_marker","_difficulty","_tMin","_tMax","_noMissions"]; + [_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter,blck_enableHunterMissions,false] call blck_fnc_addMissionToQue; +}; + +// Running new version of Crash sites. +diag_log format["[blckeagls] _init_server: blck_maxCrashSites = %1",blck_maxCrashSites]; +if (blck_maxCrashSites > 0) then +{ + [] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf"; +}; +#endif + // start the main thread for the mission system which monitors missions running and stuff to be cleaned up [] spawn blck_fnc_mainThread; diff --git a/@GMS/addons/custom_server/init/broadcastServerFPS.sqf b/@GMS/addons/custom_server/init/broadcastServerFPS.sqf deleted file mode 100644 index 97c60ec..0000000 --- a/@GMS/addons/custom_server/init/broadcastServerFPS.sqf +++ /dev/null @@ -1,14 +0,0 @@ - - -private["_startTime"]; -_startTime = diag_tickTime; -[] spawn { - while {true} do - { - blck_serverFPS = diag_FPS; - publicVariable "blck_serverFPS"; - uiSleep 3; - }; -}; - - diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 03c8d35..3158029 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,6 +1,6 @@ private ["_version","_versionDate"]; -blck_version = "6.88 Build 160"; +blck_version = "6.88 Build 163"; _blck_version = blck_version; -_blck_versionDate = "11-19-18 1:30 AM"; +_blck_versionDate = "11-19-18 4:00 PM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version; From f2f2c88a78bfdc6fc70a86a8b3c232e26ab70434 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 17:18:25 -0500 Subject: [PATCH 13/23] Remove _maxHeight from code for light sources --- .../custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf index 015c08c..d533951 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf @@ -28,7 +28,7 @@ while {diag_tickTime - _start < (_time)} do // loop for 5 min accounting for th { _light = _lightSource createVehicle getPosATL _crate; _light setPosATL (getPosATL _crate); - _light attachTo [_crate,[0,0,(_maxHeight + 0.35)]]; + _light attachTo [_crate,[0,0,(0.55)]]; }; uiSleep 120; detach _smoke; From a9e861493fa76dfc94a1394e884b7116ba9cf008 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 17:26:27 -0500 Subject: [PATCH 14/23] Updated Change log. --- changeLog.sqf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/changeLog.sqf b/changeLog.sqf index 60d0127..a87bef2 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -7,7 +7,11 @@ Many thanks for new Coding and ideas from Grahame. Significant Changes: ===================== -6.86 Build 155 +6.88 +This update consists primarily of a set of bug fixes and code tweaks. +Many thanks to HeMan for his time in effort spent going through the scripts to troublehsoot and improve them. + +6.86 Build 156 Added support for spawning infantry and statics inside buildings for forming a garrison using either of two methods. 1. by placing a marker object such as a sphere in the building you define it as having units/statics inside 2. by placing units or statics in it you determine the garrison to be placed at mission spawn. @@ -18,7 +22,8 @@ Added: code that forces air, land and sea vehicles to detect nearby players whic Changed: code for blckeagls simulation manager to force simulation when groups are awoken. Added: additional settings for simulation management (see blck_configs.sqf for details) Changed: Simulation management is now set using the new variable blck_simulationManager which is defined in blck_configs.sqf -Fixed: issues with AI not throwing smoke when healing themselves. +Fixed: Heli's just hovered over missions. +Fixed: GRG code that locked up the mission system was removed from the public RC. 6.84 Build 145 Added Option to load weapons, pistols, uniforms, headgear, vests and backpacks from CfgPricing (Epoch) or the Arsenal (Exile) and exclude items above a certain price From 3cf74b2a073e546e8826e573d00014aff702812d Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 19 Nov 2018 17:33:05 -0500 Subject: [PATCH 15/23] Spawn mission crates a little above the ground to try to reduce crate glitches into the ground. --- .../custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf index f458a82..6bdaf02 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf @@ -1,11 +1,6 @@ /* - spawn a crate at a specific location - returns the object (crate) that was created. - for ghostridergaming By Ghostrider [GRG] Copyright 2016 - Last updated 12-5-17 - -------------------------- License -------------------------- @@ -24,7 +19,7 @@ _crate allowDamage false; _crate enableRopeAttach false; [_crate] call blck_fnc_emptyObject; uiSleep 1; -_crate setPosATL _coords; +_crate setPosATL [_coords select 0, _coords select 1, (_coords select 2) + 0.25]; _crate setDir _crateDir; //_crate setVectorUp [0,0,1]; _crate setVectorUp surfaceNormal position _crate; From a39a7273468e4cecbcf69acebc040b1912ae83b4 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 20 Nov 2018 23:35:30 -0500 Subject: [PATCH 16/23] small updates --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 22 +-- .../Groups/GMS_fnc_blckSimulationMonitor.sqf | 38 ++++ .../Groups/GMS_fnc_cleanEmptyGroups.sqf | 24 ++- .../Groups/GMS_fnc_groupWaypointMonitor.sqf | 126 ++++++++++++++ .../Groups/GMS_fnc_missionGroupMonitor.sqf | 162 +----------------- .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 4 +- .../Compiles/Units/GMS_fnc_rewardKiller.sqf | 54 +----- .../Vehicles/GMS_fnc_HandleAIVehicleHit.sqf | 4 - .../Vehicles/GMS_fnc_deleteAIVehicle.sqf | 20 +-- .../GMS_fnc_destroyVehicleAndCrew.sqf | 6 +- .../Vehicles/GMS_fnc_processAIVehicleKill.sqf | 5 - .../GMS_fnc_releaseVehicleToPlayers.sqf | 7 +- .../Vehicles/GMS_fnc_vehicleMonitor.sqf | 2 +- .../custom_server/Compiles/blck_functions.sqf | 6 +- .../custom_server/Compiles/blck_variables.sqf | 11 +- .../custom_server/Configs/blck_configs.sqf | 23 +-- .../Configs/blck_configs_epoch_mil.sqf | 2 +- .../Configs/blck_configs_exile.sqf | 2 - .../Configs/blck_configs_exile_mil.sqf | 1 - .../Configs/blck_configs_mil.sqf | 17 +- .../custom_server/Configs/blck_defines.hpp | 4 +- .../Configs/blck_dynamicConfigs.sqf | 8 +- .../custom_server/init/blck_init_server.sqf | 20 ++- 23 files changed, 246 insertions(+), 322 deletions(-) create mode 100644 @GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf create mode 100644 @GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 46d1e1c..ce9de82 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -33,7 +33,8 @@ while {true} do if (diag_tickTime > _timer5sec) then { _timer5sec = diag_tickTime + 5; - [] call blck_fnc_missionGroupMonitor; + //[] call blck_fnc_missionGroupMonitor; + if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager}; [] call blck_fnc_sm_missionPatrolMonitor; }; if (diag_tickTime > _timer20sec) then @@ -42,25 +43,18 @@ while {true} do [] call blck_fnc_cleanupObjects; [] call blck_fnc_cleanupDeadAI; [] call blck_fnc_scanForPlayersNearVehicles; - [] call blck_fnc_cleanEmptyGroups; + //[] call blck_fnc_cleanEmptyGroups; _timer20sec = diag_tickTime + 20; }; if ((diag_tickTime > _timer1min)) then { _timer1min = diag_tickTime + 60; [] call blck_fnc_spawnPendingMissions; - if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then - { - [] spawn blck_fnc_addDyanamicUMS_Mission; - }; - if (blck_useHC) then - { - [] call blck_fnc_HC_passToHCs; - }; - if (blck_useTimeAcceleration) then - { - [] call blck_fnc_timeAcceleration; - }; + [] call blck_fnc_cleanEmptyGroups; + [] call bck_fnc_groupWaypointMonitor; + if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then {[] spawn blck_fnc_addDyanamicUMS_Mission}; + if (blck_useHC) then {[] call blck_fnc_HC_passToHCs}; + if (blck_useTimeAcceleration) then {[] call blck_fnc_timeAcceleration}; #ifdef blck_debugMode //diag_log format["_fnc_mainThread: active SQFscripts include: %1",diag_activeSQFScripts]; diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts]; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf new file mode 100644 index 0000000..7934ffe --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf @@ -0,0 +1,38 @@ +/* + Managages simulation using blckeagls logic + By Ghostrider-GRG- + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +private["_playerType","_players"]; + +switch (toLower(blck_modType)) do +{ + case "exile": {_playerType = ["Exile_Unit_Player"]}; + case "epoch": {_playerType = ["Epoch_Male_F","Epoch_Female_F"]}; +}; +{ + private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]; + if (count _players > 0) then + { + private _group = _x; + if (blck_revealMode isEqualTo "detailed") then + { + { + _x enableSimulationGlobal true; + (_players select 0) reveal _x; // Force simulation on + }forEach (units _group); + } else { + _x enableSimulationGlobal true; + (_players select 0) reveal _x; // Force simulation on + }; + }else{ + {_x enableSimulationGlobal false}forEach (units _x); + }; +} forEach blck_monitoredMissionAIGroups; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf index c2691c6..f93068c 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf @@ -1,4 +1,5 @@ /* + removes empty or null groups from blck_monitoredMissionAIGroups By Ghostrider [GRG] -------------------------- License @@ -9,19 +10,14 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then +for "_i" from 0 to ((count blck_monitoredMissionAIGroups) - 1) do { - diag_log format ["_fnc_cleanEmptyGroups:: -- >> group count = %1 ",(count allGroups)]; - diag_log format ["_fnc_cleanEmptyGroups:: -- >> Group count AI side = %1", call blck_fnc_groupsOnAISide]; -}; -#endif + if (_i >= (count blck_monitoredMissionAIGroups)) exitWith {}; + _grp = blck_monitoredMissionAIGroups deleteat 0; + + //if (!(_grp isEqualTo grpNull) then + //{ + if ({alive _x} count units _grp > 0) then { blck_monitoredMissionAIGroups pushBack _grp}; + //}; +}; -private _grp = allGroups; -{ - //diag_log format["_fnc_cleanEmptyGroups:: - >> type of object _x = %1",typeName _x]; - if ((count units _x) isEqualTo 0) then {deleteGroup _x}; -}forEach _grp; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log "_fnc_cleanEmptyGroups:: -- >> exiting function";}; -#endif diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf new file mode 100644 index 0000000..6bbad33 --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf @@ -0,0 +1,126 @@ + +/* + Checks for groups that have not reached their waypoints within a proscribed period + and redirects them. + + for ghostridergaming + By Ghostrider [GRG] + Copyright 2016 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + +_fn_waypointComplete = { + private _group = _this select 0; + private _wp = currentWaypoint _group; + private _done = if (currentWaypoint _group) > (count (waypoints _group)) then {true} else {false}; + _done +}; + +_fn_aliveGroupUnits = { + private _group = _this select 0; + private _units = {alive _x} count (units _group); + _units +}; +{ + private["_timeStamp","_index","_unit","_soldierType"]; + // check for error conditions + if ( !(_x isEqualTo grpNull) && ([_x] call _fn_aliveGroupUnits > 0) ) then + { + /* + #define blck_turnBackRadiusInfantry 800 + #define blck_turnBackRadiusVehicles 1000 + #define blck_turnBackRadiusHelis 1000 + #define blck_turnBackRadiusJets 1500 + */ + diag_log format["_fn_monitorGroupWaypoints - radii: on foot %1 | vehicle %2 | heli %3 | jet %4",blck_turnBackRadiusInfantry,blck_turnBackRadiusVehicles,blck_turnBackRadiusHelis,blck_turnBackRadiusJets]; + _timeStamp = _x getVariable ["timeStamp",0]; + if (_timeStamp isEqualTo 0) then { + _x setVariable["timeStamp",diag_tickTime]; + //diag_log format["_fn_monitorGroupWaypoints::--> updating timestamp for group %1 at time %2",_x,diag_tickTime]; + }; + _soldierType = _x getVariable["soldierType","null"]; + //diag_log format["_fn_monitorGroupWaypoints::--> soldierType for group %1 = %2 and timeStamp = %3",_x,_soldierType,_timeStamp]; + private _maxtime = 0; + switch (soldierType) do + { + case "infantry": {_maxtime = 60}; + case "vehicle": {_maxtime = 90}; + case "aircraft": {_maxtime = 90}; + }; + _private _updateNeeded = if (diag_tickTime > (_x getVariable "timeStamp") + 60) then + { + + } + if (_soldierType isEqualTo "infantry") then + { + if (diag_tickTime > (_x getVariable "timeStamp") + 60) then + { + _units = [_x] call _fn_aliveGroupUnits; + if (count _units > 0) then + { + private _leader = leader _x; + (_leader) call blck_fnc_changeToMoveWaypoint; + #ifdef blck_debugMode + if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: infantry group %1 stuck, waypoint reset",_x];}; + #endif + /* + if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then + { + + }; + */ + }; + + }; + }; + if (_soldierType isEqualTo "vehicle") then + { + if (diag_tickTime > (_x getVariable "timeStamp") + 60) then + { + _units = [_x] call _fn_aliveGroupUnits; + if (count _units > 0) then + { + private _leader = leader _x; + (_leader) call blck_fnc_changeToMoveWaypoint; + //#ifdef blck_debugMode + if (true /*blck_debugLevel > 2*/) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];}; + //#endif + /* + if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then + { + }; + */ + }; + + }; + }; + /* + if (_soldierType isEqualTo "helicopter") then + { + if ((diag_tickTime > (_x getVariable "timeStamp")) then + { + private _units = [_x] call _fn_aliveGroupUnits; + if (count _units > 0) then + { + private _leader = leader _x; + if (_leader distance (_group getVariable "patrolCenter") > blck_turnBackRadiusHelis) then + { + _leader call blck_fnc_changeToMoveWaypoint; + //#ifdef blck_debugMode + if (true ) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];}; + //#endif + //diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x]; + }; + }; + + }; + }; + */ +} forEach blck_monitoredMissionAIGroups; + diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf index 35d171a..fa467f5 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf @@ -6,8 +6,7 @@ It uses a timestamp attached to the group that is cleared upon waypoint completion. By Ghostrider-GRG- - Last modified 3/14/17 - + -------------------------- License -------------------------- @@ -19,167 +18,14 @@ #ifdef blck_debugMode diag_log format["_fnc_missionGroupMonitor (4/29:4:09 PM)::-->> running function at diag_tickTime = %1 with blck_fnc_missionGroupMonitor = %2",diag_tickTime,blck_monitoredMissionAIGroups]; -//diag_log format["_fnc_missionGroupMonitor:: blck_debugMode defined"]; #endif -_fn_allPlayers = { - private ["_players"]; - _players = []; - { - if (isPlayer _x) then {_players pushback _x}; - }forEach playableUnits; - //diag_log format["_fn_allPlayers::-->> result s %1",_players]; - _players -}; -//////////////// -// local functions -//////////////// - - -_fn_removeEmptyOrNullGroups = { - //diag_log format["_fn_removeEmptyOrNullGroups::-->> excuting function at %1",diag_tickTime]; - // Remove any null groups (which will occur if all units in the group are dead) or groups with no alive AI. - for "_i" from 0 to ((count blck_monitoredMissionAIGroups) - 1) do - { - private["_grp"]; - if (_i >= (count blck_monitoredMissionAIGroups)) exitWith {}; - _grp = blck_monitoredMissionAIGroups select _i; - if (_grp isEqualTo grpNull) then { - blck_monitoredMissionAIGroups set[_i, -1]; - blck_monitoredMissionAIGroups = blck_monitoredMissionAIGroups - [-1]; - //diag_log "_fnc_waypointMonitor::-->> deleting a NULL-GROUP"; - }; - if ({alive _x} count units _grp < 1) then { - blck_monitoredMissionAIGroups = blck_monitoredMissionAIGroups - [_grp]; - //diag_log "_fnc_waypointMonitor::-->> deleting an empty group"; - }; - }; -}; - -_fn_centerGroup = { - -}; - -_fn_monitorGroupWaypoints = { - { - private["_timeStamp","_index","_unit","_soldierType"]; - /* - #define blck_turnBackRadiusInfantry 800 - #define blck_turnBackRadiusVehicles 1000 - #define blck_turnBackRadiusHelis 1000 - #define blck_turnBackRadiusJets 1500 - */ - diag_log format["_fn_monitorGroupWaypoints - radii: on foot %1 | vehicle %2 | heli %3 | jet %4",blck_turnBackRadiusInfantry,blck_turnBackRadiusVehicles,blck_turnBackRadiusHelis,blck_turnBackRadiusJets]; - _timeStamp = _x getVariable ["timeStamp",0]; - if (_timeStamp isEqualTo 0) then { - _x setVariable["timeStamp",diag_tickTime]; - //diag_log format["_fn_monitorGroupWaypoints::--> updating timestamp for group %1 at time %2",_x,diag_tickTime]; - }; - _soldierType = _x getVariable["soldierType","null"]; - //diag_log format["_fn_monitorGroupWaypoints::--> soldierType for group %1 = %2 and timeStamp = %3",_x,_soldierType,_timeStamp]; - - if (_soldierType isEqualTo "infantry") then - { - if (diag_tickTime > (_x getVariable "timeStamp") + 60) then - { - _units = [_x] call _fn_aliveGroupUnits; - if (count _units > 0) then - { - private _leader = leader _x; - (_leader) call blck_fnc_changeToMoveWaypoint; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: infantry group %1 stuck, waypoint reset",_x];}; - #endif - /* - if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then - { - - }; - */ - }; - - }; - }; - if (_soldierType isEqualTo "vehicle") then - { - if (diag_tickTime > (_x getVariable "timeStamp") + 60) then - { - _units = [_x] call _fn_aliveGroupUnits; - if (count _units > 0) then - { - private _leader = leader _x; - (_leader) call blck_fnc_changeToMoveWaypoint; - //#ifdef blck_debugMode - if (true /*blck_debugLevel > 2*/) then {diag_log format["_fnc_missionGroupMonitor: vehicle group %1 stuck, waypoint reset",_x];}; - //#endif - /* - if ( (getPos _leader) distance2d (_group getVariable "patrolCenter") > 200) then - { - }; - */ - }; - - }; - }; - /* - if (_soldierType isEqualTo "helicopter") then - { - if ((diag_tickTime > (_x getVariable "timeStamp")) then - { - private _units = [_x] call _fn_aliveGroupUnits; - if (count _units > 0) then - { - private _leader = leader _x; - if (_leader distance (_group getVariable "patrolCenter") > blck_turnBackRadiusHelis) then - { - _leader call blck_fnc_changeToMoveWaypoint; - //#ifdef blck_debugMode - if (true ) then {diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x];}; - //#endif - //diag_log format["_fnc_missionGroupMonitor: helicopter group %1 stuck, waypoint reset",_x]; - }; - }; - - }; - }; - */ - } forEach blck_monitoredMissionAIGroups; -}; - -_fn_simulationMonitor = { - private["_playerType","_players"]; - - if (blck_modType isEqualTo "Exile") then - { - _playerType = ["Exile_Unit_Player"]; - }else{ - _playerType = ["Epoch_Male_F","Epoch_Female_F"]; - }; - { - private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]; - if (count _players > 0) then - { - private _group = _x; - { - { - _x enableSimulationGlobal true; - (_players select 0) reveal _x; // Force simulation on - }forEach (units _group); - }; - }else{ - {_x enableSimulationGlobal false}forEach (units _x); - }; - } forEach blck_monitoredMissionAIGroups; -}; -//////// -// Start of main function -//////// #ifdef blck_debugMode if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: executing function at %1",diag_tickTime];}; #endif -[] call _fn_removeEmptyOrNullGroups; +[] call blck_fnc_cleanEmptyGroups; uiSleep 0.1; -//[] call _fn_monitorGroupWaypoints; +//[] call bck_fnc_groupWaypointMonitor; -if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {[] call _fn_simulationMonitor}; +if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager}; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf index d0d906e..3b81704 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -27,8 +27,8 @@ _objects pushBack _wreck; { //Random Position Objects based on distance in array // https://community.bistudio.com/wiki/BIS_fnc_findSafePos - private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])); - private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1])); + private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); + private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); _pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos; _wreck = createVehicle[_x, _pos, [], 2]; //diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck]; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf index 778bfc0..bb9f714 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf @@ -14,24 +14,15 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_unit","_killer"]; -//diag_log format["rewardKiller:: _unit = %1 and _killer %2",_unit,_killer]; - private["_reward","_maxReward","_dist","_killstreakReward","_distanceBonus","_newKillerScore","_newKillerFrags","_money"]; - -//diag_log format["[blckeagls] rewardKiller:: - _modType = %1",_modType]; -//if (_modType isEqualTo "Epoch") exitWith {}; // Have players pull crypto from AI bodies now that this feature is available. - -if (blck_modType isEqualTo "Epoch") then +if (toLower(blck_modType) isEqualTo "Epoch") then { - //diag_log "calculating reward for Epoch"; - if ( (vehicle _killer) in blck_forbidenVehicles || (currentWeapon _killer) in blck_forbidenVehicleGuns ) then { _reward = 0; } else { - // Give the player money for killing an AI _maxReward = 50; _dist = _unit distance _killer; _reward = 0; @@ -42,7 +33,6 @@ if (blck_modType isEqualTo "Epoch") then if (_dist > 800) then { _reward = _maxReward - (_maxReward / 4); _reward }; private _killstreakReward=+(_kills*2); - //diag_log format["fnd_rewardKiller:: _bonus returned will be %1",_reward]; if (blck_addAIMoney) then { [_killer,_reward + _killstreakReward] call blck_fnc_giveTakeCrypto; @@ -54,44 +44,22 @@ if (blck_modType isEqualTo "Epoch") then }; }; -/* -_player setVariable ["ExileHunger", _data select 4]; -_player setVariable ["ExileThirst", _data select 5]; -_player setVariable ["ExileAlcohol", _data select 6]; -_player setVariable ["ExileTemperature", _data select 44]; -_player setVariable ["ExileWetness", _data select 45]; -*/ - -if (blck_modType isEqualTo "Exile") then +if (toLower(blck_modType) isEqualTo "Exile") then { private["_distanceBonus","_overallRespectChange","_newKillerScore","_newKillerFrags","_maxReward","_money","_message"]; - /* - // Temporary fix for the Loss of Respect Bug. - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer name = %2 | ExileScore = %1 | Kills %3",_killer getVariable [ "ExileScore", 0 ], name _killer, _killer getVariable["ExileKills",0]]; - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer = %1 | vehicle _killer = %2 | objectParent _killer %3",_killer, vehicle _killer, objectParent _killer]; - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer is gunner = %1 | killer is driver = %2",_killer isEqualTo gunner objectParent _killer,_killer isEqualTo driver objectParent _killer]; - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileOwnerUID = %1 ",_killer getVariable["ExileOwnerUID",0]]; // ExileOwnerUID - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileHunger = %1 ",_killer getVariable["ExileHunger",0]]; // ExileOwnerUID - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileThirst = %1 ",_killer getVariable["ExileThirst",0]]; // ExileOwnerUID - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileAlcohol = %1 ",_killer getVariable["ExileAlcohol",0]]; // ExileOwnerUID - diag_log format["GMS_fnc_rewardKiller.sqf:: _killer ExileWetness = %1 ",_killer getVariable["ExileWetness",0]]; // ExileOwnerUID - */ if ( (isPlayer _killer) && (_killer getVariable["ExileHunger",0] > 0) && (_killer getVariable["ExileThirst",0] > 0) ) then { _distanceBonus = floor((_unit distance _killer)/100); _killstreakBonus = 3 * (_killer getVariable["blck_kills",0]); _respectGained = 25 + _distanceBonus + _killstreakBonus; _score = _killer getVariable ["ExileScore", 0]; - //diag_log format["GMS_fnc_rewardKiller.sqf:: ExileScore = %1",_killer getVariable ["ExileScore", 0]]; _score = _score + (_respectGained); - //diag_log format["GMS_fnc_rewardKiller.sqf:: _new = %1",_score]; _killer setVariable ["ExileScore", _score]; format["setAccountScore:%1:%2", _score,getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget; _newKillerFrags = _killer getVariable ["ExileKills", 0]; _newKillerFrags = _newKillerFrags + 1; _killer setVariable ["ExileKills", _newKillerFrags]; format["addAccountKill:%1", getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget; - //_message = ["showFragRequest",_respectGained]; _killer call ExileServer_object_player_sendStatsUpdate; if (blck_useKillScoreMessage) then { @@ -99,21 +67,3 @@ if (blck_modType isEqualTo "Exile") then }; }; }; - - -/* - if (_overallRespectChange > 0) then { - _score = _killer getVariable ["ExileScore", 0]; - _score = _score + _overallRespectChange; - _killer setVariable ["ExileScore", _score]; - format["setAccountScore:%1:%2", _score,_killerPlayerUID] call ExileServer_system_database_query_fireAndForget; - [_killer, "showFragRequest", [_killerRespectPoints]] call A3XAI_sendExileMessage; - }; - - //["systemChatRequest", [_killMessage]] call ExileServer_system_network_send_broadcast; //To-do: Non-global version - _newKillerFrags = _killer getVariable ["ExileKills", 0]; - _killer setVariable ["ExileKills", _newKillerFrags + 1]; - format["addAccountKill:%1", _killerPlayerUID] call ExileServer_system_database_query_fireAndForget; - - _killer call ExileServer_object_player_sendStatsUpdate; -}; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf index 4eac6dc..ec8c725 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf @@ -23,15 +23,11 @@ if (blck_debugLevel > 1) then }; #endif -//if (!(alive _veh)) exitWith {}; if (!(isPlayer _instigator)) exitWith {}; _crew = crew _veh; _group = group (_crew select 0); -// Tell the vehicle crew something about the player who caused the damage [_crew select 0,_instigator] call blck_fnc_alertGroupUnits; -// Tell nearby vehicles something about the player who caused the damage [_instigator] call blck_fnc_alertNearbyVehicles; -// Ask for help from the nearest group of infantry, especially if they have launchers _nearestGroup = [getPos _veh] call blck_fnc_findNearestInfantryGroup; [(units _nearestGroup) select 0,_instigator] call blck_fnc_alertGroupUnits; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_deleteAIVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_deleteAIVehicle.sqf index c6d97d7..36aef30 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_deleteAIVehicle.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_deleteAIVehicle.sqf @@ -11,13 +11,13 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - params["_veh"]; - //diag_log format["blck_fnc_deleteAIvehicle: _veh %1 deleted",_veh]; - { - _veh removeAllEventHandlers _x; - }forEach ["Hit","HitPart","GetIn","GetOut","Fired","FiredNear","HandleDamage","Reloaded"]; - { - _veh removeAllMPEventHandlers _x; - }forEach ["MPHit","MPKilled"]; - blck_monitoredVehicles = blck_monitoredVehicles - [_veh]; - deleteVehicle _veh; +params["_veh"]; +//diag_log format["blck_fnc_deleteAIvehicle: _veh %1 deleted",_veh]; +{ + _veh removeAllEventHandlers _x; +}forEach ["Hit","HitPart","GetIn","GetOut","Fired","FiredNear","HandleDamage","Reloaded"]; +{ + _veh removeAllMPEventHandlers _x; +}forEach ["MPHit","MPKilled"]; +blck_monitoredVehicles = blck_monitoredVehicles - [_veh]; +deleteVehicle _veh; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_destroyVehicleAndCrew.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_destroyVehicleAndCrew.sqf index 6594767..c69d706 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_destroyVehicleAndCrew.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_destroyVehicleAndCrew.sqf @@ -11,6 +11,6 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - params["_veh"]; - {[_x] call blck_fnc_deleteAI;} forEach (crew _veh); - [_veh] call blck_fnc_deleteAIvehicle; +params["_veh"]; +{[_x] call blck_fnc_deleteAI;} forEach (crew _veh); +[_veh] call blck_fnc_deleteAIvehicle; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf index 82bbda4..a336c23 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf @@ -31,21 +31,16 @@ if (blck_debugLevel > 1) then }; #endif -//if (!(alive _veh)) exitWith {}; if (!(isPlayer _instigator)) exitWith {}; _crew = crew _veh; if !(count _crew == 0) then { _group = group (_crew select 0); - // Tell the vehicle crew something about the player who caused the damage }; -// Tell nearby vehicles something about the player who caused the damage [_instigator] call blck_fnc_alertNearbyVehicles; -// Ask for help from the nearest group of infantry, especially if they have launchers _nearestGroup = [getPos _veh] call blck_fnc_findNearestGroup; [(units _nearestGroup) select 0,_instigator] call blck_fnc_alertGroupUnits; - _group setBehaviour "COMBAT"; _wp = [_group, currentWaypoint _group]; _wp setWaypointBehaviour "COMBAT"; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf index bed3ea3..582afd3 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf @@ -10,6 +10,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ +// Needs optimization for headless clients #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_veh"]; @@ -30,8 +31,7 @@ diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; //if ((_veh locked) isEqualTo "UNLOCKED" || (diag_tickTime - _timeIn) > 5) then {_locked = false}; }; - // {player setAmmo [primaryWeapon player, 1];} remoteExec ["bis_fnc_call", 0]; - //{[_veh setVehicleLock "UNLOCKED"];} remoteExec ["BIS_fnc_call",(owner _veh)]; + { _veh removealleventhandlers _x; } forEach ["GetIn","GetOut","fired","hit","hitpart","reloaded","dammaged","HandleDamage"]; @@ -46,5 +46,4 @@ { diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh]; }; - #endif -//diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh]; \ No newline at end of file + #endif \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf index be77337..8980975 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf @@ -18,7 +18,7 @@ _vehList = +blck_monitoredVehicles; if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_monitoredVehicles %3",diag_tickTime,_vehList,blck_monitoredVehicles];}; #endif //diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 ",diag_tickTime,_vehList,blck_monitoredVehicles]; - +// Needs debugging for HC operation. { /* Determine state of vehicle diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 6c45af0..78c76c8 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -39,7 +39,7 @@ private _functions = [ ["blck_fnc_spawnMissionEmplacedRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionEmplacedRelative.sqf"], ["blck_fnc_spawnMissionLootBoxesRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLootBoxesRelative.sqf"], ["blck_fnc_spawnSingleObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf"], - ["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"], + //["blck_fnc_emptyObjectInventory","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf"], ["blck_fnc_spawnMissionLandscapeRelative","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf"], ["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"], @@ -99,7 +99,9 @@ private _functions = [ ["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups ["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"], ["blck_fnc_create_AI_Group","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI. - + ["blck_fnc_blckSimulationManager","\q\addons\custom_server\Compiles\Groups\GMS_fnc_blckSimulationMonitor.sqf"], + ["bck_fnc_groupWaypointMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_groupWaypointMonitor.sqf"], + // Functions specific to vehicles, whether wheeled, aircraft or static ["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"], ["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"], diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index ac57890..3a7a168 100644 --- a/@GMS/addons/custom_server/Compiles/blck_variables.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_variables.sqf @@ -12,7 +12,7 @@ */ #include"\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log "[blckeagls] loading variables"; +diag_log "[blckeagls] loading variables"; blck_minFPS = 8; @@ -40,16 +40,9 @@ blck_activeMissions = []; blck_deadAI = []; blck_connectedHCs = []; blck_missionMarkers = []; - -if (blck_simulationManager == 2) then -{ - "Group" setDynamicSimulationDistance 1800; - enableDynamicSimulationSystem true; -}; - blck_heliCrashSites = []; blck_mainThreadUpdateInterval = 60; blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/"; -//diag_log "[blckeagls] Variables Loaded"; +diag_log "[blckeagls] Variables Loaded"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index e5b6db4..3e6db71 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -17,11 +17,10 @@ changing any of these variables may break the mission systemChat */ blck_locationBlackList = []; // Do not touch ... - blck_debugON = true; // Do not touch ... - blck_debugLevel = 3; // Do not touch ... + blck_debugON = false; // Do not touch ... + blck_debugLevel = 0; // Do not touch ... #ifdef blck_milServer - execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf"; - if (true) exitWith {}; + if (true) exitWith {execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";}; #endif //diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf"; @@ -432,30 +431,20 @@ blck_maxMoneyBlue = 10; #endif - private["_modType"]; - _modType = [] call blck_fnc_getModType; - if (_modType isEqualTo "Epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; - waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; - waitUntil{blck_configsEpochLoaded}; - blck_configsEpochLoaded = nil; }; - if (_modType isEqualTo "Exile") then + if (toLower(blck_modType) isEqualTo "exile") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; - waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;}; - waitUntil{blck_configsExileLoaded}; }; if (blck_useConfigsGeneratedLoadouts) then { diag_log format["[blckeagles] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; - //waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;}; - //waitUntil{blck_dynamicConfigsLoaded}; - //blck_dynamicConfigsLoaded = nil; }; - uisleep 3; + blck_configsLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index 9002f51..b2abc31 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -995,4 +995,4 @@ for examples of how you can do this see \Major\Compositions.sqf blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. diag_log "[blckeagls] Configurations for Epoch Loaded"; - blck_configsEpochLoaded = true; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 6283616..4fa6433 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -1152,5 +1152,3 @@ blck_highPoweredLoot = [ blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. diag_log format["[blckeagls] Configurations for Exile Loaded"]; - - blck_configsExileLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index 80d5520..ac66b67 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -1166,4 +1166,3 @@ blck_highPoweredLoot = [ diag_log format["[blckeagls] Configurations for Exile Loaded"]; - blck_configsExileLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index dd114cd..1b67fe0 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -426,11 +426,9 @@ blck_maxMoneyBlue = 10; #endif - private["_modType"]; - _modType = [] call blck_fnc_getModType; - if (_modType isEqualTo "Epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf"; waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; waitUntil{blck_configsEpochLoaded}; @@ -438,21 +436,16 @@ //diag_log "[blckeagls] Running getTraderCitiesEpoch to get location of trader cities"; //execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf"; }; - if (_modType isEqualTo "Exile") then + if (toLower(blck_modType) isEqualTo "exile") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; - waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;}; - waitUntil{blck_configsExileLoaded}; - blck_configsExileLoaded = nil; //if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";}; }; if (blck_useConfigsGeneratedLoadouts) then { diag_log format["[blckeagles] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; - waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;}; - waitUntil{blck_dynamicConfigsLoaded}; - blck_dynamicConfigsLoaded = nil; }; + blck_configsLoaded = true; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 3e7d592..25b8433 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -12,8 +12,8 @@ */ -//#define useAPEX -//#define blck_milServer +#define useAPEX +#define blck_milServer //#define blck_useCUP //#define blck_useRHS diff --git a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf index eefa601..c75c9ae 100644 --- a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf @@ -95,15 +95,15 @@ _baseClasses = []; _classnameList = []; diag_log format["blck_modType = %1",blck_modType]; -if (blck_modType isEqualTo "Epoch") then +if (toLower(blck_modType) isEqualTo "epoch") then { _classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses; }; -if (blck_modType isEqualTo "Exile") then +if (toLower(blck_modType) isEqualTo "exile") then { _classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses; }; -//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList]; +diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList]; { private _temp = [_x] call bis_fnc_itemType; //diag_log _temp; @@ -218,3 +218,5 @@ blck_backpacks_green = blck_backpacks; blck_backpacks_orange = blck_backpacks; blck_explosives = _wpnThrow; + +diag_log format["Compilation of dynamic AI Loadouts complete at %1",diag_tickTime]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index 37f96d5..1e9c53d 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -14,24 +14,28 @@ if !(isNil "blck_Initialized") exitWith{}; // find and set Mod blck_modType = if (!isNull (configFile >> "CfgPatches" >> "exile_server")) then {"Exile"} else {if (!isnull (configFile >> "CfgPatches" >> "a3_epoch_server")) then {"Epoch"} else {""}}; publicVariable "blck_modType"; -/* + if ((tolower blck_modType) isEqualto "epoch") then { diag_log "[blckeagls] Waiting until EpochMod is ready..."; waituntil {!isnil "EPOCH_SERVER_READY"}; }; -*/ +if ((toLower blck_modType) isEqualTo "exile") then +{ + diag_log "[blckeagls] Waiting until ExileMod is ready ..."; + waitUntil {!isNil "PublicServerIsLoaded"}; +}; #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] Loading Server Mission System Version %2 Build Date %1",_blck_versionDate,_blck_version]; +diag_log format["[blckeagls] Loading Server Mission System Version"]; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime]; call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; +uiSleep 10; diag_log format["[blckeagls] blck_useHC = %1 | blck_simulationManager = %2 ",blck_useHC,blck_simulationManager]; diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel]; @@ -39,9 +43,13 @@ diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLev call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime]; - call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; -diag_log format["[blckeagls] blck_variables loaded at %1",diag_tickTime]; + +if (blck_simulationManager == 2) then +{ + "Group" setDynamicSimulationDistance 1800; + enableDynamicSimulationSystem true; +}; // spawn map addons to give the server time to position them before spawning in crates etc. if (blck_spawnMapAddons) then From abbd0b096c9d596d0e3e09121745e8d0fa5acc25 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 20 Nov 2018 23:39:19 -0500 Subject: [PATCH 17/23] disabled GRG-stuff --- @GMS/addons/custom_server/Configs/blck_defines.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 25b8433..099bb72 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -13,7 +13,7 @@ #define useAPEX -#define blck_milServer +//#define blck_milServer //#define blck_useCUP //#define blck_useRHS @@ -24,7 +24,7 @@ //#define useDynamicSimulation //#define blck_debugMode //#define GRG_TestServer -#define GRGserver +//#define GRGserver #define blck_triggerLoopCompleteTime 40*60 #define onFoot 1 From 4c94e9e42ce0b998650be913dbcb0b08e3841dbc Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Thu, 22 Nov 2018 04:31:36 -0500 Subject: [PATCH 18/23] Build 164 More bug fixes and code cleanup. --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 3 - .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 16 +-- .../Compiles/Units/GMS_fnc_processAIKill.sqf | 5 +- .../Compiles/Units/GMS_fnc_rewardKiller.sqf | 7 +- .../GMS_fnc_releaseVehicleToPlayers.sqf | 2 +- .../Vehicles/GMS_fnc_spawnMissionHeli.sqf | 35 +++---- .../custom_server/Compiles/blck_functions.sqf | 5 - .../custom_server/Configs/blck_configs.sqf | 27 ++--- .../Configs/blck_configs_epoch.sqf | 6 +- .../Configs/blck_configs_exile.sqf | 12 +-- .../Configs/blck_configs_exile_mil.sqf | 2 - .../Configs/blck_configs_mil.sqf | 99 ++----------------- .../custom_server/Configs/blck_defines.hpp | 5 +- .../Configs/blck_dynamicConfigs.sqf | 24 +---- .../init/GMS_fnc_getTraderCites.sqf | 2 - .../custom_server/init/blck_init_server.sqf | 48 ++------- @GMS/addons/custom_server/init/build.sqf | 5 +- 17 files changed, 75 insertions(+), 228 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index ce9de82..208a2d4 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -25,9 +25,6 @@ while {true} do if (diag_tickTime > _timer1sec) then { [] call blck_fnc_vehicleMonitor; - #ifdef GRGserver - [] call blck_fnc_broadcastServerFPS; - #endif _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf index 3b81704..c5ff54e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -14,7 +14,7 @@ params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]]; private["_objects","_wreck","_dir","_dirOffset"]; #define maxObjectSpawnRadius 25 -#define minObjectSpawnRadius 10 +#define minObjectSpawnRadius 15 private _objectSpawnRange = maxObjectSpawnRadius - minObjectSpawnRadius; _objects = []; @@ -25,21 +25,15 @@ _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; _objects pushBack _wreck; { - //Random Position Objects based on distance in array - // https://community.bistudio.com/wiki/BIS_fnc_findSafePos - private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); - private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); - _pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos; - _wreck = createVehicle[_x, _pos, [], 2]; + private _dir = random(360); + private _radius = minObjectSpawnRadius + random(maxObjectSpawnRadius); + _wreck = createVehicle[_x, _coords getPos[_radius,_dir], [], 2]; //diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck]; _wreck allowDamage true; _wreck enableSimulation false; _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; - _dirOffset = random(30) * ([1,-1] call BIS_fnc_selectRandom); - _dir = _dirOffset +([_wreck,_coords] call BIS_fnc_dirTo); - _wreck setDir _dir; - //_wreck setDir (_wreck relativeDir _coords); + _wreck setDir (_wreck getRelDir _coords); _objects pushback _wreck; sleep 0.1; } forEach _missionLandscape; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 1f6cdbc..ef8c6da 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -65,10 +65,10 @@ if (blck_useKillMessages) then _message = format["[blck] %1 killed with %2 from %3 meters",name _killer,getText(configFile >> "CfgWeapons" >> _weapon >> "DisplayName"), round(_unit distance _killer)]; }; _message =_message + _killstreakMsg; - //diag_log format["[blck] unit killed message is %1",_message,""]; + diag_log format["[blck] unit killed message is %1",_message,""]; [["aikilled",_message,"victory"],allPlayers] call blck_fnc_messageplayers; }; - +//diag_log format["calling blck_fnc_rewardKiller for death of unit %1 and killer %2",_unit,_killer]; [_unit,_killer] call blck_fnc_rewardKiller; if (blck_showCountAliveAI) then { @@ -77,6 +77,5 @@ if (blck_showCountAliveAI) then //diag_log format["_fnc_processAIKills: blck_missionMarkers itm %1 = %2",_forEachIndex,_x]; [_x select 0, _x select 1, _x select 2] call blck_fnc_updateMarkerAliveCount; } forEach blck_missionMarkers; - //call blck_fnc_updateAllMarkerAliveCounts; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf index bb9f714..0ea971a 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf @@ -15,7 +15,7 @@ params["_unit","_killer"]; private["_reward","_maxReward","_dist","_killstreakReward","_distanceBonus","_newKillerScore","_newKillerFrags","_money"]; -if (toLower(blck_modType) isEqualTo "Epoch") then +if (toLower(blck_modType) isEqualTo "epoch") then { if ( (vehicle _killer) in blck_forbidenVehicles || (currentWeapon _killer) in blck_forbidenVehicleGuns ) then { @@ -31,7 +31,8 @@ if (toLower(blck_modType) isEqualTo "Epoch") then if (_dist < 100) then { _reward = _maxReward - (_maxReward / 1.5); _reward }; if (_dist < 800) then { _reward = _maxReward - (_maxReward / 2); _reward }; if (_dist > 800) then { _reward = _maxReward - (_maxReward / 4); _reward }; - + //diag_log format["_fnc_rewardPlayer: _killer %1 | _dist %2 | _reward %3 ",_killer,_dist,_reward]; + //diag_log format["_fnc_rewardPlayer: blck_addAIMoney %1 | blck_useKillScoreMessage %2",blck_addAIMoney,blck_useKillScoreMessage]; private _killstreakReward=+(_kills*2); if (blck_addAIMoney) then { @@ -44,7 +45,7 @@ if (toLower(blck_modType) isEqualTo "Epoch") then }; }; -if (toLower(blck_modType) isEqualTo "Exile") then +if (toLower(blck_modType) isEqualTo "exile") then { private["_distanceBonus","_overallRespectChange","_newKillerScore","_newKillerFrags","_maxReward","_money","_message"]; if ( (isPlayer _killer) && (_killer getVariable["ExileHunger",0] > 0) && (_killer getVariable["ExileThirst",0] > 0) ) then diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf index 582afd3..581ab7d 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf @@ -28,7 +28,7 @@ // a bit of bandwidth seems worth ensuring that vehicles do in fact get unlocked. uiSleep 0.1; _count = _count + 1; - diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; + //diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; //if ((_veh locked) isEqualTo "UNLOCKED" || (diag_tickTime - _timeIn) > 5) then {_locked = false}; }; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf index 5ec87e3..045f918 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf @@ -21,12 +21,6 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms}; -/* -{ - diag_log format["_fnc_spawnMissionHeli: parameter %1 = %2",_foreachIndex,_x]; -}forEach [_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms]; -*/ - #ifdef blck_debugMode if (blck_debugLevel > 0) then { @@ -44,20 +38,6 @@ if (isNull _grpPilot) then if !(isNull _grpPilot) then { - _grpPilot setBehaviour "COMBAT"; - _grpPilot setCombatMode "RED"; - _grpPilot setSpeedMode "NORMAL"; - _grpPilot allowFleeing 0; - _grpPilot setVariable["patrolCenter",_coords]; - _grpPilot setVariable["minDis",15]; - _grpPilot setVariable["maxDis",30]; - _grpPilot setVariable["timeStamp",diag_tickTime]; - _grpPilot setVariable["arc",0]; - _grpPilot setVariable["wpRadius",30]; - _grpPilot setVariable["wpMode","SAD"]; - diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; - diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; - [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; switch (toLower(_skillAI)) do { case "blue": {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisBlue}; @@ -66,6 +46,21 @@ if !(isNull _grpPilot) then case "orange" : {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisOrange}; default {_minDist = 150; _maxDist = 500}; }; + _grpPilot setBehaviour "COMBAT"; + _grpPilot setCombatMode "RED"; + _grpPilot setSpeedMode "NORMAL"; + _grpPilot allowFleeing 0; + _grpPilot setVariable["patrolCenter",_coords]; + _grpPilot setVariable["minDis",_minDist]; + _grpPilot setVariable["maxDis",_maxDist]; + _grpPilot setVariable["timeStamp",diag_tickTime]; + _grpPilot setVariable["arc",0]; + _grpPilot setVariable["wpRadius",30]; + _grpPilot setVariable["wpMode","SAD"]; + //diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; + //diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; + [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; + blck_monitoredMissionAIGroups pushBack _grpPilot; //create helicopter and spawn it diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 78c76c8..ff4a433 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -163,11 +163,6 @@ private _functions = [ missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; } foreach _functions; -#ifdef GRGserver -blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; -diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; -#endif - onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 3e6db71..e68f46c 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -20,10 +20,13 @@ blck_debugON = false; // Do not touch ... blck_debugLevel = 0; // Do not touch ... #ifdef blck_milServer - if (true) exitWith {execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";}; + if (true) exitWith + { + diag_log format["[blckeagls] Running configs for militarized servers build %1",blck_buildNumber]; + execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf"; + }; #endif - - //diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf"; + diag_log format["[blckeagls] Loading configurations for Non-militarized servers build %1",blck_buildNumber]; /* ************************************** Configurations begin here @@ -104,7 +107,7 @@ blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - blck_killPercentage = 0.999999; // The mission will complete if this fraction of the total AI spawned has been killed. + blck_killPercentage = 0.999999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. @@ -173,7 +176,7 @@ _blck_armed_hurons = ["B_Heli_Transport_03_F","B_Heli_Transport_03_black_F"]; _blck_armed_attackHelis = ["B_Heli_Attack_01_F"]; _blck_armed_heavyAttackHelis = ["O_Heli_Attack_02_F","O_Heli_Attack_02_black_F"]; - _blck_fighters = [ + _blck_fighters = [ "O_Plane_CAS_02_F", // /ti-199 Neophron (CAS) "I_Plane_Fighter_03_AA_F", // A-143 Buzzard (AA) "I_Plane_Fighter_04_F", // A-149 Gryphon @@ -294,13 +297,13 @@ blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions - - /**************************************************************** GENERAL AI SETTINGS ****************************************************************/ + // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files + blck_useConfigsGeneratedLoadouts = true; blck_groupBehavior = "SENTRY"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes. @@ -318,7 +321,7 @@ blck_maximumPatrolRadius = 35; //This defines how long after an AI dies that it's body disappears. - blck_bodyCleanUpTimer = 60*40; // time in seconds after which dead AI bodies are deleted + blck_bodyCleanUpTimer = 60*60; // time in seconds after which dead AI bodies are deleted // Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable // values are ordered as follows [blue, red, green, orange]; blck_AliveAICleanUpTimer = 60*20; // Time after mission completion at which any remaining live AI are deleted. @@ -433,17 +436,19 @@ if (toLower(blck_modType) isEqualTo "epoch") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; }; + waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; + waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}; if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagles] Dynamic Configs Enabled"]; + diag_log format["[blckeagls] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; }; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index 0573079..7ba3b50 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -11,7 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - +diag_log format["[blckeagls] loading configurations for Epoch for blckeagls build %1",blck_buildNumber]; //////////// // Epoch-specific settings //////////// @@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 100; _blck_lightlyArmed_ARMA3 = [ @@ -1100,4 +1098,4 @@ blck_supportLoot = blck_BoxLoot_Orange; blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. diag_log "[blckeagls] Configurations for Epoch Loaded"; -blck_configsEpochLoaded = true; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 4fa6433..0dfe582 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -15,10 +15,12 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #ifdef blck_milServer -execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; -if (true) exitWith {}; +if (true) exitWith +{ + diag_log "[blckeagls] running blck_configs_exile_mil for militarized servers"; + execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; +}; #endif - diag_log "[blckeagls] Loading Exile-specific configs for Non-militarized servers: blck_configs_exile.sqf"; //////////// // Exile-specific settings @@ -54,9 +56,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; - - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; + blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index ac66b67..773eb0e 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index 1b67fe0..a9a8500 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -11,8 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - - diag_log "[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers"; + diag_log format["[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers for blckeagls build %1",blck_buildNumber]; /*************************************************************** BLCKEAGLS SUPPLEMENTAL MODULES @@ -83,7 +82,7 @@ blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - blck_killPercentage = 0.9; // The mission will complete if this fraction of the total AI spawned has been killed. + blck_killPercentage = 0.99999999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. blck_spawnCratesTiming = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. @@ -203,12 +202,8 @@ //////////////////// // Maximum number of missions shown on the map at any one time. - #ifdef GRGserver - blck_maxSpawnedMissions = 15; - #else // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; - #endif //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; @@ -217,12 +212,6 @@ blck_enableBlueMissions = 2; blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. - #ifdef GRGserver - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = 2; - blck_maxcrashsites = 3; - #endif - //////////////////// // MISSION TIMERS //////////////////// @@ -233,24 +222,13 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; - #ifdef GRGserver - blck_TMin_Hunter = 120; - blck_TMin_Scouts = 115; - blck_TMin_Crashes = 115; - #endif - //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; blck_TMax_Green = 300; blck_TMax_Blue = 200; blck_TMax_Red = 250; blck_TMax_UMS = 200; - #ifdef GRGserver - blck_TMax_Hunter = 200; - blck_TMax_Scouts = 200; - blck_TMax_Crashes = 200; - #endif /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -290,7 +268,8 @@ GENERAL AI SETTINGS ****************************************************************/ - + // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files + blck_useConfigsGeneratedLoadouts = true; blck_groupBehavior = "SAD"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes. blck_groupFormation = "WEDGE"; // Possibilities include "WEDGE","VEE","FILE","DIAMOND" @@ -307,12 +286,7 @@ blck_maximumPatrolRadius = 35; //This defines how long after an AI dies that it's body disappears. - blck_bodyCleanUpTimer = 40*60; // time in seconds after which dead AI bodies are deleted - #ifdef GRGserver - #ifdef blck_milServer - blck_bodyCleanUpTimer = 40*60; // Trying to reduce lag with player counts > 20 - #endif - #endif + blck_bodyCleanUpTimer = 80*60; // time in seconds after which dead AI bodies are deleted // Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable // values are ordered as follows [blue, red, green, orange]; @@ -372,79 +346,24 @@ blck_maxMoneyRed = 30; blck_maxMoneyBlue = 20; - #ifdef GRGserver - blck_AIAlertDistance = [250,425,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed. - //blck_AIAlertDistance = [150,225,400,500]; - // How precisely player locations will be revealed to AI after an AI kill - // values are ordered as follows [blue, red, green, orange]; - blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; - - blck_baseSkill = 1; // The overal skill of the AI - range 0.1 to 1.0. - - /*************************************************************** - - MISSION TYPE SPECIFIC AI SETTINGS - - **************************************************************/ - //This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type - // Orange Missions - blck_MinAI_Orange = 30; - blck_MaxAI_Orange = 35; - blck_AIGrps_Orange = 5; - blck_SkillsOrange = [ - ["aimingAccuracy",0.6],["aimingShake",0.9],["aimingSpeed",0.9],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] - ]; - - // Green Missions - blck_MinAI_Green = 26; - blck_MaxAI_Green = 31; - blck_AIGrps_Green = 4; - blck_SkillsGreen = [ - ["aimingAccuracy",0.55],["aimingShake",0.75],["aimingSpeed",0.85],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] - ]; - - // Red Missions - blck_MinAI_Red = 12; - blck_MaxAI_Red = 18; - blck_AIGrps_Red = 3; - blck_SkillsRed = [ - ["aimingAccuracy",0.4],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] - ]; - - // Blue Missions - blck_MinAI_Blue = 8; - blck_MaxAI_Blue = 14; - blck_AIGrps_Blue = 2; - blck_SkillsBlue = [ - ["aimingAccuracy",0.12],["aimingShake",0.3],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] - ]; - - // Add some money to AI; only works with Exile for now. - blck_maxMoneyOrange = 25; - blck_maxMoneyGreen = 20; - blck_maxMoneyRed = 15; - blck_maxMoneyBlue = 10; - #endif - - if (toLower(blck_modType) isEqualTo "epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf"; waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; waitUntil{blck_configsEpochLoaded}; blck_configsEpochLoaded = nil; - //diag_log "[blckeagls] Running getTraderCitiesEpoch to get location of trader cities"; - //execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; - //if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";}; }; + waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}: + waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}: if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagles] Dynamic Configs Enabled"]; + diag_log format["[blckeagls] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; }; diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 099bb72..1f4ad4f 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -11,7 +11,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ - +#define blck_buildNumber 164 #define useAPEX //#define blck_milServer //#define blck_useCUP @@ -21,10 +21,7 @@ // Do not touch anything below this line /////////////////////////// -//#define useDynamicSimulation //#define blck_debugMode -//#define GRG_TestServer -//#define GRGserver #define blck_triggerLoopCompleteTime 40*60 #define onFoot 1 diff --git a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf index c75c9ae..23a9dd3 100644 --- a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf @@ -94,7 +94,7 @@ _misc = []; _baseClasses = []; _classnameList = []; -diag_log format["blck_modType = %1",blck_modType]; +//diag_log format["blck_modType = %1",blck_modType]; if (toLower(blck_modType) isEqualTo "epoch") then { _classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses; @@ -103,25 +103,23 @@ if (toLower(blck_modType) isEqualTo "exile") then { _classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses; }; -diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList]; +//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList]; { private _temp = [_x] call bis_fnc_itemType; //diag_log _temp; _itemCategory = _temp select 0; _itemType = _temp select 1; _price = blck_maximumItemPriceInAI_Loadouts; - if (blck_modType isEqualTo "Epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { _price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price"); }; - if (blck_modType isEqualTo "Exile") then + if (toLower(blck_modType) isEqualTo "exile") then { _price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price"); }; - //diag_log format["_fnc_dynamicConfigsConfigurator: _price = %1",_price]; if (_price < blck_maximumItemPriceInAI_Loadouts) then { - //if (_itemCategory != "") then {diag_log format["_fnc_dynamicConfigsConfigurator: _itemCategory = %1 | _itemType = %2",_itemCategory,_itemType]}; if (_itemCategory isEqualTo "Weapon") then { switch (_itemType) do @@ -136,14 +134,11 @@ diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",cou case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}}; case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}}; case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; }; }; if (_itemCategory isEqualTo "Item") then { - //diag_log format["Evaluating Item class name %1",_x]; switch (_itemType) do { case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}}; @@ -153,22 +148,13 @@ diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",cou case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; - case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; + case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}}; }; }; if (_itemCategory isEqualTo "Equipment") then { - //diag_log format["Evaluating Equipment class name %1",_x]; switch (_itemType) do { case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}}; diff --git a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf index 40d0267..9d3429c 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf @@ -22,8 +22,6 @@ if ((tolower blck_modType) isEqualTo "epoch") then if (blck_debugON) then {diag_log format["[blckeagls] _fnc_getTraderCitiesEpoch:: -- >> Added epoch trader city location at %1", (_x select 3)];}; #endif } foreach _telePos; - diag_log format["[blckeagls] blckListPrior = %1",_blckListPrior]; - diag_log format["[blckeagls] ] blck_locationBlackList = %1",blck_locationBlackList]; }; if ((tolower blck_modType) isEqualTo "exile") then diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index 1e9c53d..de1317d 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -28,20 +28,20 @@ if ((toLower blck_modType) isEqualTo "exile") then private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] Loading Server Mission System Version"]; +diag_log format["[blckeagls] Loading Server Mission System Version",blck_buildNumber]; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime]; call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; -uiSleep 10; +waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn")}; diag_log format["[blckeagls] blck_useHC = %1 | blck_simulationManager = %2 ",blck_useHC,blck_simulationManager]; diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel]; // Load any user-defined specifications or overrides call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; -diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime]; +//diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime]; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; @@ -80,37 +80,26 @@ switch (blck_simulationManager) do case 0: {diag_log "[blckeagls] simulation management disabled"}; }; - -#ifdef GRGserver -// start the dynamic loot crate system -compile preprocessfilelinenumbers "\q\addons\custom_server\DLS\DLS_init.sqf"; -#endif - diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; diag_log format["blckeagls] waiting for players to join ---- >>>>"]; -#ifdef GRGserver -diag_log "[blckeagls] Running GhostriderGaming Version"; -#endif -if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then +if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then { waitUntil{{isPlayer _x}count allPlayers > 0}; diag_log "[blckeagls] Player Connected, spawning missions"; } else { - diag_log "[blckeagls] spawning Missions"; + diag_log "[blckeagls] Debug mode ON, proceding without players"; }; if (blck_spawnStaticLootCrates) then { - // Start the static loot crate spawner - //diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Started"; call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init.sqf"; diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Done"; }else{ diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled"; }; -if (true /*blck_blacklistTraderCities*/) then +if (blck_blacklistTraderCities) then { call compile preprocessfilelinenumbers "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf"; }; @@ -137,31 +126,6 @@ if (blck_enableBlueMissions > 0) then [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; -#ifdef GRGserver - -diag_log format["[blckeagls] _init_server: blck_enableScoutsMissions = %1",blck_enableScoutsMissions]; -if (blck_enableScoutsMissions > 0) then -{ - //[_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts] spawn blck_fnc_missionTimer; - [_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts,blck_enableScoutsMissions,false] call blck_fnc_addMissionToQue; -}; - -diag_log format["[blckeagls] _init_server: blck_enableHunterMissions = %1",blck_enableHunterMissions]; -if (blck_enableHunterMissions > 0) then -{ - //[_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter] spawn blck_fnc_missionTimer; - // params["_missionList","_path","_marker","_difficulty","_tMin","_tMax","_noMissions"]; - [_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter,blck_enableHunterMissions,false] call blck_fnc_addMissionToQue; -}; - -// Running new version of Crash sites. -diag_log format["[blckeagls] _init_server: blck_maxCrashSites = %1",blck_maxCrashSites]; -if (blck_maxCrashSites > 0) then -{ - [] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf"; -}; -#endif - // start the main thread for the mission system which monitors missions running and stuff to be cleaned up [] spawn blck_fnc_mainThread; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 3158029..06be3d7 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,6 +1,7 @@ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; private ["_version","_versionDate"]; -blck_version = "6.88 Build 163"; +blck_version = format["6.88 Build %1",blck_buildNumber]; _blck_version = blck_version; -_blck_versionDate = "11-19-18 4:00 PM"; +_blck_versionDate = "11-21-18 4:00 PM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version; From d52b40457d02f9c2c3fc96539dc17da96807b4b2 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 27 Nov 2018 20:45:35 -0500 Subject: [PATCH 19/23] Remove needless logging from client scripts. --- MPMissions/Exile.Altis/debug/blckClient.sqf | 22 ++++++++++----------- MPMissions/epoch.Altis/debug/blckClient.sqf | 22 ++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/MPMissions/Exile.Altis/debug/blckClient.sqf b/MPMissions/Exile.Altis/debug/blckClient.sqf index bf1d183..8cfb183 100644 --- a/MPMissions/Exile.Altis/debug/blckClient.sqf +++ b/MPMissions/Exile.Altis/debug/blckClient.sqf @@ -6,16 +6,16 @@ _hostage switchMove ""; //uisleep 0.1; _animations = _hostage getVariable["GMSAnimations",[""]]; - diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations]; + //diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations]; _hostage switchMove (selectRandom _animations); }; GMS_EH_onAnimationDone = { - diag_log format["GMS_EH_onAnimationDone: _this = %1",_this]; + //diag_log format["GMS_EH_onAnimationDone: _this = %1",_this]; private _hostage = _this select 0; if (alive _hostage) then { - diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]]; + //diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]]; _hostage call GMS_fnc_nextAnimation; } else { _hostage removeAllEventHandlers "AnimDone"; @@ -23,7 +23,7 @@ }; GMS_fnc_freeHostage = { - diag_log format["fn_freeHostage: _this = %1",_this]; + //diag_log format["fn_freeHostage: _this = %1",_this]; private _hostage = _this select 0; if (_hostage getVariable["blck_unguarded",0] isEqualTo 1) then { @@ -63,18 +63,18 @@ private _asset = _this; _asset addEventHandler ["AnimDone", {_this call GMS_EH_onAnimationDone}]; _asset call GMS_fnc_nextAnimation; - diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset]; + //diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset]; }; GMS_fnc_initHostage = { private _hostage = _this; _hostage call GMS_fnc_addHostageActions; _hostage call GMS_fnc_addAssetAnimations; - diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage]; + //diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage]; }; GMS_fnc_arrestLeader = { - diag_log format["GMS_fnc_arrestLeader: _this = %1",_this]; + //diag_log format["GMS_fnc_arrestLeader: _this = %1",_this]; private _leader = _this select 0; if (_leader getVariable["blck_unguarded",0] isEqualTo 1) then { @@ -117,7 +117,7 @@ private _leader = _this; _leader call GMS_fnc_addLeaderActions; _leader call GMS_fnc_addAssetAnimations; - diag_log format["_fnc_initLeader: Leader %1 initialized",_leader]; + //diag_log format["_fnc_initLeader: Leader %1 initialized",_leader]; }; if !(isServer) then @@ -281,7 +281,7 @@ if !(isServer) then fn_handleMessage = { //private["_event","_msg","_mission"]; - diag_log format["fn_handleMessage ====] Paremeters = _this = %1",_this]; + //diag_log format["fn_handleMessage ====] Paremeters = _this = %1",_this]; params["_event","_message",["_mission",""]]; //diag_log format["blck_Message ====] Paremeters _event %1 _message %2 paramter #3 %3",_event,_message,_mission]; @@ -335,6 +335,6 @@ if !(isServer) then }; }; - diag_log "blck client loaded ver 4/2/18 for Version 6.81 8 PM"; + diag_log "blck client loaded"; -}; +}; \ No newline at end of file diff --git a/MPMissions/epoch.Altis/debug/blckClient.sqf b/MPMissions/epoch.Altis/debug/blckClient.sqf index bf1d183..8cfb183 100644 --- a/MPMissions/epoch.Altis/debug/blckClient.sqf +++ b/MPMissions/epoch.Altis/debug/blckClient.sqf @@ -6,16 +6,16 @@ _hostage switchMove ""; //uisleep 0.1; _animations = _hostage getVariable["GMSAnimations",[""]]; - diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations]; + //diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations]; _hostage switchMove (selectRandom _animations); }; GMS_EH_onAnimationDone = { - diag_log format["GMS_EH_onAnimationDone: _this = %1",_this]; + //diag_log format["GMS_EH_onAnimationDone: _this = %1",_this]; private _hostage = _this select 0; if (alive _hostage) then { - diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]]; + //diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]]; _hostage call GMS_fnc_nextAnimation; } else { _hostage removeAllEventHandlers "AnimDone"; @@ -23,7 +23,7 @@ }; GMS_fnc_freeHostage = { - diag_log format["fn_freeHostage: _this = %1",_this]; + //diag_log format["fn_freeHostage: _this = %1",_this]; private _hostage = _this select 0; if (_hostage getVariable["blck_unguarded",0] isEqualTo 1) then { @@ -63,18 +63,18 @@ private _asset = _this; _asset addEventHandler ["AnimDone", {_this call GMS_EH_onAnimationDone}]; _asset call GMS_fnc_nextAnimation; - diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset]; + //diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset]; }; GMS_fnc_initHostage = { private _hostage = _this; _hostage call GMS_fnc_addHostageActions; _hostage call GMS_fnc_addAssetAnimations; - diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage]; + //diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage]; }; GMS_fnc_arrestLeader = { - diag_log format["GMS_fnc_arrestLeader: _this = %1",_this]; + //diag_log format["GMS_fnc_arrestLeader: _this = %1",_this]; private _leader = _this select 0; if (_leader getVariable["blck_unguarded",0] isEqualTo 1) then { @@ -117,7 +117,7 @@ private _leader = _this; _leader call GMS_fnc_addLeaderActions; _leader call GMS_fnc_addAssetAnimations; - diag_log format["_fnc_initLeader: Leader %1 initialized",_leader]; + //diag_log format["_fnc_initLeader: Leader %1 initialized",_leader]; }; if !(isServer) then @@ -281,7 +281,7 @@ if !(isServer) then fn_handleMessage = { //private["_event","_msg","_mission"]; - diag_log format["fn_handleMessage ====] Paremeters = _this = %1",_this]; + //diag_log format["fn_handleMessage ====] Paremeters = _this = %1",_this]; params["_event","_message",["_mission",""]]; //diag_log format["blck_Message ====] Paremeters _event %1 _message %2 paramter #3 %3",_event,_message,_mission]; @@ -335,6 +335,6 @@ if !(isServer) then }; }; - diag_log "blck client loaded ver 4/2/18 for Version 6.81 8 PM"; + diag_log "blck client loaded"; -}; +}; \ No newline at end of file From e1cb05f87d554e22fa345e6d290a62d1be3626a8 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 27 Nov 2018 21:36:25 -0500 Subject: [PATCH 20/23] Update GMS_fnc_missionSpawner.sqf --- .../Compiles/Missions/GMS_fnc_missionSpawner.sqf | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index f425656..13fa778 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -444,14 +444,9 @@ private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; } forEach _crates; private["_minNoAliveForCompletion","_result","_minPercentageKilled"]; -if (_secureAsset) then -{ - _minNoAliveForCompletion = round((1 - blck_killPercentage) * (({alive _x} count _blck_AllMissionAI) - 1)); - if (_minNoAliveForCompletion < 2) then {_minNoAliveForCompletion = 2}; -} else { - _minNoAliveForCompletion = floor((1 - blck_killPercentage) * ({alive _x} count _blck_AllMissionAI)); - if (_minNoAliveForCompletion == 0) then {_minNoAliveForCompletion = 1}; -}; +//diag_log format["_missionSpawner (447): count _blck_AllMissionAI = %2 || (round(blck_killPercentage * (count _blck_AllMissionAI))) = %1", round(blck_killPercentage * (count _blck_AllMissionAI)), count _blck_AllMissionAI]; +_minNoAliveForCompletion = (count _blck_AllMissionAI) - (round(blck_killPercentage * (count _blck_AllMissionAI))); +if (_secureAsset) then {_minNoAliveForCompletion = _minNoAliveForCompletion + 1}; while {_missionComplete isEqualTo -1} do { From 8cb980c44b06ac30b8268da31846f183925681f2 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 27 Nov 2018 22:01:34 -0500 Subject: [PATCH 21/23] Further Bug fixes and code improvements --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 3 ++ .../Groups/GMS_fnc_blckSimulationMonitor.sqf | 31 ++++++++++--------- .../Groups/GMS_fnc_missionGroupMonitor.sqf | 4 +-- .../Missions/GMS_fnc_paraDropObject.sqf | 1 + .../GMS_fnc_spawnEmplacedWeaponArray.sqf | 1 + .../Compiles/Units/GMS_fnc_cleanupDeadAI.sqf | 13 +++++--- .../custom_server/Compiles/blck_functions.sqf | 5 +++ 7 files changed, 37 insertions(+), 21 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 208a2d4..ce9de82 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -25,6 +25,9 @@ while {true} do if (diag_tickTime > _timer1sec) then { [] call blck_fnc_vehicleMonitor; + #ifdef GRGserver + [] call blck_fnc_broadcastServerFPS; + #endif _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf index 7934ffe..ea795ef 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_blckSimulationMonitor.sqf @@ -11,28 +11,31 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private["_playerType","_players"]; - +_playerType = ["LandVehicle","SHIP","AIR","TANK"]; switch (toLower(blck_modType)) do { - case "exile": {_playerType = ["Exile_Unit_Player"]}; - case "epoch": {_playerType = ["Epoch_Male_F","Epoch_Female_F"]}; + case "exile": {_playerType = _playerType + ["Exile_Unit_Player"]}; + case "epoch": {_playerType = _playerType + ["Epoch_Male_F","Epoch_Female_F"]}; }; { - private _players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance]; - if (count _players > 0) then + private _group = _x; + _players = ((leader _group) nearEntities [_playerType, blck_simulationEnabledDistance]) select {isplayer _x}; + + if !(_players isEqualTo []) then { - private _group = _x; - if (blck_revealMode isEqualTo "detailed") then { - { + if !(simulationEnabled _x) then + { _x enableSimulationGlobal true; (_players select 0) reveal _x; // Force simulation on - }forEach (units _group); - } else { - _x enableSimulationGlobal true; - (_players select 0) reveal _x; // Force simulation on - }; + }; + }forEach (units _group); }else{ - {_x enableSimulationGlobal false}forEach (units _x); + { + if (simulationEnabled _x) then + { + _x enableSimulationGlobal false; + }; + }forEach (units _x); }; } forEach blck_monitoredMissionAIGroups; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf index fa467f5..7b0938f 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_missionGroupMonitor.sqf @@ -23,9 +23,9 @@ diag_log format["_fnc_missionGroupMonitor (4/29:4:09 PM)::-->> running function #ifdef blck_debugMode if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: executing function at %1",diag_tickTime];}; #endif -[] call blck_fnc_cleanEmptyGroups; +//[] call blck_fnc_cleanEmptyGroups; uiSleep 0.1; //[] call bck_fnc_groupWaypointMonitor; -if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager}; +//if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {call blck_fnc_blckSimulationManager}; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_paraDropObject.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_paraDropObject.sqf index 6f9fb5e..f8023e5 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_paraDropObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_paraDropObject.sqf @@ -21,4 +21,5 @@ _chute setPos [getPos _chute select 0, getPos _chute select 1, _dropHeight]; _crate setPos (getPos _chute); _crate attachTo [_chute, [0,0,0]]; if (_crateVisualMarker) then {[_crate] spawn blck_fnc_crateMarker}; +_chute diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf index 9dd86ed..8a3c651 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf @@ -117,6 +117,7 @@ if (blck_debugLevel > 1) then _wep setVariable["GRG_vehType","emplaced"]; _wep setPos _pos; + _wep setdir (random 359); [_wep,false] call blck_fnc_configureMissionVehicle; _emplacedWeps pushback _wep; _units = units _empGroup; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf index eab24c7..3144c55 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf @@ -21,11 +21,14 @@ _aiList = +blck_deadAI; if (diag_tickTime > _x getVariable ["blck_cleanupAt",0]) then { _ai = _x; - { - deleteVehicle _x; - }forEach nearestObjects [getPos _ai,["WeaponHolderSimulated","GroundWeapoonHolder"],3]; - blck_deadAI = blck_deadAI - [_ai]; - deleteVehicle _ai; + _nearplayer = (_ai nearEntities 1500) select {isplayer _x}; + if (_nearplayer isequalto []) then { + { + deleteVehicle _x; + }forEach nearestObjects [getPos _ai,["WeaponHolderSimulated","GroundWeapoonHolder"],3]; + blck_deadAI = blck_deadAI - [_ai]; + deleteVehicle _ai; + }; }; } forEach _aiList; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index ff4a433..78c76c8 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -163,6 +163,11 @@ private _functions = [ missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; } foreach _functions; +#ifdef GRGserver +blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; +diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; +#endif + onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; From ba32d2930b009e48d06622a6514ebe5ff1cdf9b3 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Wed, 28 Nov 2018 23:14:23 -0500 Subject: [PATCH 22/23] Clean up HC Code. --- .../Compiles/HC/GMS_fnc_HC_XferGroup.sqf | 4 - .../Compiles/HC/GMS_fnc_HC_leastBurdened.sqf | 9 +- .../Compiles/HC/GMS_fnc_passToHCs.sqf | 33 +---- .../Missions/GMS_fnc_missionSpawner.sqf | 123 +++--------------- .../Compiles/Units/GMS_fnc_processAIKill.sqf | 9 +- 5 files changed, 28 insertions(+), 150 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf index 7710af6..5866d45 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf @@ -1,5 +1,4 @@ /* - Killed handler for _units By Ghostrider-GRG- -------------------------- @@ -18,9 +17,6 @@ _group = _this select 0; _client = clientOwner; { _unit = _x; - _localEH = []; _tempEH = ["reloaded",_unit addEventHandler ["reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}]]; - _localEH pushBack _tempEH; - _x setVariable["localEH",_localEH,true]; }forEach (units _group); diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_leastBurdened.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_leastBurdened.sqf index 87930c2..e67aca3 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_leastBurdened.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_leastBurdened.sqf @@ -15,11 +15,12 @@ params["_HC_List"]; if (count _HC_List == 0) exitWith {_result = objNull; _result}; if (count _HC_List == 1) exitWith {_result = _HC_List select 0; _result}: private["_result","_fewestGroupsAssigned","_leastBurdened","_groupsAssigned"]; -_fewestGroupsAssigned = [_HC_List select 0] call blck_fnc_HC_countGroupsAssigned; -_leastBurdened = _HC_List select 0; +_fewestGroupsAssigned = 1000000; { - _groupsAssigned = [_x] call blck_fnc_HC_countGroupsAssigned; - if (_groupsAssigned < _fewestGroupsAssigned) then + _ownerHC = owner _x; + _groupsAssigned = {(groupOwner _x) isEqualTo _ownerHC} count allGroups; + diag_log format["_fnc_HC_leastBurdened: HC %1 | groupsAssigned %2",_x,_groupsAssigned]; + if ([_x] call blck_fnc_HC_countGroupsAssigned < _fewestGroupsAssigned) then { _leastBurdened = _x; _fewestGroupsAssigned = _groupsAssigned; diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf index 0bc07e7..5713c45 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf @@ -1,5 +1,4 @@ /* - Killed handler for _units By Ghostrider-GRG- -------------------------- @@ -20,52 +19,30 @@ blck_fnc_countGroupsAssigned = { _result }; - -//diag_log format["_fnc_passToHCs:: function called at server time %1",diag_tickTime]; private["_numTransfered","_clientId","_allGroups","_groupsOwned","_idHC","_id","_swap","_rc"]; _numTransfered = 0; _idHC = -2; -blck_connectedHCs = call blck_fnc_HC_getListConnected; // Double check on this function; seems overly complicated. -//diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps]; -if ( (count blck_connectedHCs) > 0) then +blck_connectedHCs = entities "HeadlessClient_F"; +diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps]; +if !(blck_connectedHCs isEqualTo []) then { _idHC = [blck_connectedHCs] call blck_fnc_HC_leastBurdened; - //diag_log format["passToHCs: evaluating passTos for HC %1 || owner HC = %2",_idHC, owner _idHC]; { - // Pass the AI - if (_x getVariable["blck_group",false]) then { - //diag_log format["group belongs to blckeagls mission system so time check if we should transfer it"]; - //diag_log format["Owner of group %1 is %2",_x,groupOwner _x]; if ((groupOwner _x) == 2) then { - //diag_log format["blckeagls group %1 is on the server: we should be moved to HC %2 with _idHC %3",_x,_idHC]; - //_x setVariable["owner",owner _idHC]; - //_x setVariable["Group",group (driver _x)),true] private _sgor = _x setGroupOwner (owner _idHC); - //diag_log format["setGroupOwner returned %1",_sgor]; - //diag_log format["_veh %1 variable owner set to %2",getVariable _veh["owner",-1]]; - //diag_log format["_veh %1 Group set to %2",_veh getVariable["Group",grpNull]]; if (_sgor) then { [_x] remoteExec["blck_fnc_HC_XferGroup",_idHC]; _numTransfered = _numTransfered + 1; - //diag_log format["group %1 transferred to %2",_x, groupOwner _x]; + diag_log format["group %1 transferred to %2",_x, groupOwner _x]; } else { - //diag_log format["something went wrong with the transfer of group %1",_x]; + diag_log format["something went wrong with the transfer of group %1",_x]; }; }; - } else { - //diag_log format["group %1 does not belong to blckeagls mission system",_x]; }; } forEach (allGroups); diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC]; - //_numTransfered = 0; - // Note : the owner of a vehicle is the owner of the driver so vehicles are automatically transferred to the HC when the group to which the driver is assigned is transferred. - -} else { - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log "_fnc_passToHCs:: No headless clients connected"}; - #endif }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index 13fa778..b1115c5 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -189,24 +189,8 @@ private _params = [_coords,_minNoAI,_maxNoAI,_missionGroups,_aiDifficultyLevel,_ _temp = [_coords, _minNoAI,_maxNoAI,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then { - diag_log format["missionSpawner :: (264) blck_fnc_spawnMissionAI returned a value of _temp = %1",_temp]; uiSleep 1; -}; - _abort = _temp select 1; -if (blck_debugLevel > 2) then { - diag_log format["missionSpawner :: (269) blck_fnc_spawnMissionAI returned a value of _abort = %1",_abort]; uiSleep 1; -}; -#endif -if (_abort) exitWith -{ - if (blck_debugLevel > 1) then { - diag_log "missionSpawner:: (277) grpNull returned, mission termination criteria met, calling blck_fnc_endMission" - }; - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; -}; if !(_abort) then { _blck_AllMissionAI append (_temp select 0); @@ -223,41 +207,17 @@ _assetSpawned = objNull; if !(_hostageConfig isEqualTo []) then { _temp = [_coords,_hostageConfig] call blck_fnc_spawnHostage; - //diag_log format["_fnc_missionSpawner: _fnc_spawnHostage returned %1",_temp]; _assetSpawned = _temp select 0; _objects pushBack (_temp select 1); - //diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned]; - //diag_log format["_fnc_missionSpawner: _fnc_spawnHostage returned object %1",_temp select 1]; _blck_AllMissionAI pushBack _assetSpawned; }; if !(_enemyLeaderConfig isEqualTo []) then { _temp = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader; - //diag_log format["_fnc_missionSpawner: _fnc_spawnLeader return _temp = %1",_temp]; _assetSpawned = _temp select 0; _objects pushBack (_temp select 1); - //diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned]; - //diag_log format["_fnc_missionSpawner: building spawned by _fnc_spawnLeader = %1",_temp select 1]; _blck_AllMissionAI pushBack _assetSpawned; - //diag_log format["_fnc_missionSpawner (261): _blck_AllMissionAI",_blck_AllMissionAI]; -}; - -#ifdef blck_debugMode - if (blck_debugLevel >= 1) then { - diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned]; - }; -#endif - -uiSleep delayTime; -_temp = [[],[],false]; -_abort = false; - - - -if (_abort) exitWith -{ - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; }; uiSleep delayTime; @@ -266,19 +226,7 @@ _abort = false; // Deal with helicopter patrols _temp = []; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then -{ - diag_log format["[blckeagls] missionSpawner:: (351) calling in heli patrol: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]; -}; -#endif - _noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara]}; -#endif if (_noChoppers > 0) then { for "_i" from 1 to (_noChoppers) do @@ -290,13 +238,11 @@ if (_noChoppers > 0) then if (typeName _temp isEqualTo "ARRAY") then { _abort = _temp select 2; - blck_monitoredVehicles pushBack (_temp select 0); - _blck_AllMissionAI append (_temp select 1); - }; - if (_abort) then - { - _objects pushback (_temp select 0); - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; + if !(_abort) then + { + blck_monitoredVehicles pushBack (_temp select 0); + _blck_AllMissionAI append (_temp select 1); + }; }; }; }; @@ -306,35 +252,23 @@ uisleep 3; if (count _garrisonedBuilding_ATLsystem > 0) then { _temp = [_coords, _garrisonedBuilding_ATLsystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_ATLsystem; - //diag_log format["_missionspawner: garrisoned a building using ATL format, function returned %1",_temp]; - // _return = [_group,_buildingsSpawned,_staticsSpawned]; _objects append (_temp select 1); blck_monitoredVehicles append (_temp select 2); _blck_AllMissionAI append (units (_temp select 0)); }; uiSleep 3; -//diag_log format["_missionSpawner: _garrisonedBuildings_BuildingPosnSystem = %1",_garrisonedBuildings_BuildingPosnSystem]; if (count _garrisonedBuildings_BuildingPosnSystem > 0) then { - // params["_center","_garrison","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks","_weaponList","_sideArms"]; _temp = [_coords, _garrisonedBuildings_BuildingPosnSystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_RelPosSystem; - diag_log format["_missionspawner: garrisoned a building using relPos format, function returned %1",_temp]; - // _return = [_group,_buildingsSpawned,_staticsSpawned]; _objects append (_temp select 1); blck_monitoredVehicles append (_temp select 2); _blck_AllMissionAI append (units (_temp select 0)); }; -////////////////////////// -// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects. -#ifdef blck_debugMode -if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (389) preparing to spawn emplaced weapons for _coords %4 | _markerClass %3 | blck_useStatic = %1 | _noEmplacedWeapons = %2",blck_useStatic,_noEmplacedWeapons,_markerClass,_coords];}; -#endif uiSleep 15; private["_noEmplacedToSpawn"]; _noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange; -//diag_log format["_fnc_missionSpawner: -> _noEmplacedToSpawn = %1 | blck_useStatic = %2",_noEmplacedToSpawn,blck_useStatic]; if (blck_useStatic && (_noEmplacedToSpawn > 0)) then { _temp = [_coords,_missionEmplacedWeapons,useRelativePos,_noEmplacedToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; @@ -350,10 +284,7 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then _blck_AllMissionAI append (_temp select 1); }; }; -if (_abort) exitWith -{ - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; -}; + _vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange; if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then { @@ -413,7 +344,6 @@ if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then }; }; -// Define Triggers for mission end private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"]; _missionComplete = -1; _startTime = diag_tickTime; @@ -425,7 +355,7 @@ switch (_endCondition) do case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;}; case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;}; }; -//diag_log format["_fnc_missionSpawner: _secureAsset = %1",_secureAsset]; + if (blck_showCountAliveAI) then { if !(_marker isEqualTo "") then @@ -444,7 +374,6 @@ private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; } forEach _crates; private["_minNoAliveForCompletion","_result","_minPercentageKilled"]; -//diag_log format["_missionSpawner (447): count _blck_AllMissionAI = %2 || (round(blck_killPercentage * (count _blck_AllMissionAI))) = %1", round(blck_killPercentage * (count _blck_AllMissionAI)), count _blck_AllMissionAI]; _minNoAliveForCompletion = (count _blck_AllMissionAI) - (round(blck_killPercentage * (count _blck_AllMissionAI))); if (_secureAsset) then {_minNoAliveForCompletion = _minNoAliveForCompletion + 1}; @@ -463,17 +392,20 @@ while {_missionComplete isEqualTo -1} do { if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {_missionComplete = 1}; }; - if (_spawnCratesTiming isEqualTo "atMissionSpawn") then + + if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then { - // Re-evaluate this - may not need the forEach - //{ - if ({[_x] call blck_fnc_crateMoved} count _crates > 0) then + { + private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]); + diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime]; + if (_d > 25) exitWith { _missionComplete = 1; _crateStolen = true; }; - //}forEach _crates; + }forEach _crates; }; + if (_secureAsset) then { if !(alive _assetSpawned) then @@ -527,15 +459,9 @@ while {_missionComplete isEqualTo -1} do if (_crateStolen) exitWith { - diag_log format["missionSpawner:: (542) Crate Stolen Callening _fnc_endMission - > players near = %1 and ai alive = %2 and crates stolen = %3",[_locations,10,true] call blck_fnc_playerInRangeArray, {alive _x} count _blck_AllMissionAI, _crateStolen]; [_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_markerClass, 2] call blck_fnc_endMission; }; -/* -if ((_secureAsset) && !(alive _assetSpawned)) exitWith -{ - [_mines,_objects,_crates, _blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, 2] call blck_fnc_endMission; -}; -*/ + if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then { if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then @@ -575,15 +501,6 @@ if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isE }; }; -#ifdef blck_debugMode -if (blck_debugLevel > 0) then -{ - diag_log format["[blckeagls] missionSpawner:: (586) Mission completion criteria fulfilled: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]; - diag_log format["missionSpawner :: (587) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled]; - diag_log format["[blckeagls] missionSpawner:: (588) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]; -}; -#endif - private["_result"]; // Force passing the mission name for informational purposes. _blck_localMissionMarker set [2, _markerMissionName]; @@ -595,20 +512,15 @@ if (blck_showCountAliveAI) then }forEach blck_missionMarkers; }; -//diag_log format["_fnc_missionSpawner (557) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]]; - if (_secureAsset && (alive _assetSpawned)) then { if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then { - //diag_log "Processing Mission End for Hostage Rescue"; - //_assetSpawned setCaptive false; _assetSpawned setVariable["GMSAnimations",[""],true]; [_assetSpawned,""] remoteExec["switchMove",-2];; uiSleep 0.1; _assetSpawned enableAI "ALL"; private _newPos = (getPos _assetSpawned) getPos [1000, random(360)]; - //diag_log format["processing domove for hostage with current pos = %1 and new pos = %2",getPos _assetSpawned, _newPos]; (group _assetSpawned) setCurrentWaypoint [group _assetSpawned, 0]; [group _assetSpawned,0] setWaypointPosition [_newPos,0]; [group _assetSpawned,0] setWaypointType "MOVE"; @@ -616,7 +528,6 @@ if (_secureAsset && (alive _assetSpawned)) then if (_assetSpawned getVariable["assetType",0] isEqualTo 2) then { - //diag_log format["Processing Mission End for Arrest of Leader %1 with endAnimation %2",_assetSpawned,_assetSpawned getVariable["endAnimation",""]]; [_assetSpawned,""] remoteExec["switchMove",-2]; _assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true]; [_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2]; @@ -626,7 +537,7 @@ if (_secureAsset && !(alive _assetSpawned)) then { _result = [_mines,_objects,_crates,_blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, -1] call blck_fnc_endMission; }; -//diag_log format["_fnc_missionSpawner (579) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]]; + if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then { _result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 0] call blck_fnc_endMission; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index ef8c6da..581c46d 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -15,12 +15,9 @@ private["_group","_isLegal","_weapon","_lastkill","_kills","_message","_killstreakMsg"]; params["_unit","_killer","_isLegal"]; -// if blck_cleanupAt > 0 then the death was already processed. if (_unit getVariable["blck_cleanupAt",-1] > 0) exitWith {}; -//diag_log format["_fnc_processAIKills:: function called with _this = %1",_this]; _unit setVariable ["blck_cleanupAt", (diag_tickTime) + blck_bodyCleanUpTimer, true]; -//diag_log format["_fnc_processAIKills: _unit = %1 | vehicle unit = %2",_unit, vehicle _unit]; blck_deadAI pushback _unit; _group = group _unit; @@ -51,7 +48,6 @@ if ((diag_tickTime - _lastkill) < 240) then _killer setVariable["blck_kills",0]; }; -//_unit action ["Eject", vehicle _unit]; [_unit, ["Eject", vehicle _unit]] remoteExec ["action",(owner _unit)]; if (blck_useKillMessages) then { @@ -65,16 +61,13 @@ if (blck_useKillMessages) then _message = format["[blck] %1 killed with %2 from %3 meters",name _killer,getText(configFile >> "CfgWeapons" >> _weapon >> "DisplayName"), round(_unit distance _killer)]; }; _message =_message + _killstreakMsg; - diag_log format["[blck] unit killed message is %1",_message,""]; [["aikilled",_message,"victory"],allPlayers] call blck_fnc_messageplayers; }; -//diag_log format["calling blck_fnc_rewardKiller for death of unit %1 and killer %2",_unit,_killer]; + [_unit,_killer] call blck_fnc_rewardKiller; if (blck_showCountAliveAI) then { - //diag_log "_fnc_processAIKills: Updating Map Marker AI Counts - blck_missionMarkers items are"; { - //diag_log format["_fnc_processAIKills: blck_missionMarkers itm %1 = %2",_forEachIndex,_x]; [_x select 0, _x select 1, _x select 2] call blck_fnc_updateMarkerAliveCount; } forEach blck_missionMarkers; }; From 6560123a60c8652b224e2091221a4cb476ea664b Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 1 Dec 2018 12:59:38 -0500 Subject: [PATCH 23/23] Ver 6.88 Build 167 Final RC --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 4 - .../Groups/GMS_fnc_changeToMoveWaypoint.sqf | 7 +- .../Compiles/HC/GMS_fnc_HC_XferGroup.sqf | 11 +- .../Compiles/HC/GMS_fnc_passToHCs.sqf | 11 +- .../Missions/GMS_fnc_missionSpawner.sqf | 2 +- .../GMS_fnc_spawnMissionVehiclePatrols.sqf | 50 +-------- .../GMS_fnc_placeCharacterInBuilding.sqf | 2 +- .../Vehicles/GMS_EH_processAIVehicleKill.sqf | 16 --- .../Vehicles/GMS_fnc_addMonitoredVehicle.sqf | 14 --- .../GMS_fnc_releaseVehicleToPlayers.sqf | 39 +++---- .../Vehicles/GMS_fnc_vehicleMonitor.sqf | 106 ++++++++---------- .../custom_server/Compiles/blck_functions.sqf | 11 +- .../custom_server/Configs/blck_configs.sqf | 87 ++------------ .../Configs/blck_configs_epoch_mil.sqf | 4 - .../Configs/blck_configs_exile.sqf | 32 +++++- .../Configs/blck_configs_exile_mil.sqf | 37 +++++- .../Configs/blck_configs_mil.sqf | 17 ++- .../Configs/blck_custom_config.sqf | 18 +-- .../custom_server/Configs/blck_defines.hpp | 9 +- .../Missions/UMS/GMS_UMS_configurations.sqf | 2 +- .../Missions/UMS/code/GMS_UMS_functions.sqf | 2 +- .../custom_server/init/blck_init_HC.sqf | 38 +------ .../custom_server/init/blck_init_server.sqf | 4 +- @GMS/addons/custom_server/init/build.sqf | 2 +- AdjustingSettings.txt | 6 +- FAQ.txt | 26 +++-- INSTALLATION.txt | 9 +- KnownIssues.txt | 2 +- blckeagles_BEexceptions.txt | 3 + changeLog.sqf | 4 +- 30 files changed, 209 insertions(+), 366 deletions(-) delete mode 100644 @GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_processAIVehicleKill.sqf delete mode 100644 @GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_addMonitoredVehicle.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index ce9de82..7829f82 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -24,10 +24,6 @@ while {true} do uiSleep 1; if (diag_tickTime > _timer1sec) then { - [] call blck_fnc_vehicleMonitor; - #ifdef GRGserver - [] call blck_fnc_broadcastServerFPS; - #endif _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf index 5621221..0fa148a 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_changeToMoveWaypoint.sqf @@ -42,8 +42,11 @@ _wp setWaypointCompletionRadius (_group getVariable["wpRadius",30]); _wp setWaypointType "MOVE"; _wp setWaypointName "move"; _wp setWaypointBehaviour "COMBAT"; -_wp setWaypointCombatMode "YELLOW"; -_wp setWaypointTimeout [1,1.1,1.2]; +_wp setWaypointCombatMode "RED"; +_wp setWaypointTimeout [10,15,20]; +_wp setWaypointLoiterRadius (_group getVariable["wpRadius",30]); +_wp setWaypointLoiterType "CIRCLE"; +_wp setWaypointSpeed "LIMITED"; _group setCurrentWaypoint _wp; #ifdef blck_debugMode if (blck_debugLevel > 2) then diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf index 5866d45..fa2cb7f 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_HC_XferGroup.sqf @@ -8,15 +8,12 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_HC_XferGroup:: _this = %1",_this]; -private["_group","_client","_unit","_tempEH"]; +private["_group","_unit","_tempEH"]; _group = _this select 0; -//blck_HC_monitoredGroups pushBack _group; -_client = clientOwner; { _unit = _x; - _tempEH = ["reloaded",_unit addEventHandler ["reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}]]; + _tempEH = _unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}]; }forEach (units _group); -diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client]; \ No newline at end of file +//diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf index 5713c45..45284f9 100644 --- a/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf +++ b/@GMS/addons/custom_server/Compiles/HC/GMS_fnc_passToHCs.sqf @@ -20,10 +20,10 @@ blck_fnc_countGroupsAssigned = { }; private["_numTransfered","_clientId","_allGroups","_groupsOwned","_idHC","_id","_swap","_rc"]; -_numTransfered = 0; +//_numTransfered = 0; _idHC = -2; blck_connectedHCs = entities "HeadlessClient_F"; -diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps]; +//diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps]; if !(blck_connectedHCs isEqualTo []) then { _idHC = [blck_connectedHCs] call blck_fnc_HC_leastBurdened; @@ -36,13 +36,10 @@ if !(blck_connectedHCs isEqualTo []) then if (_sgor) then { [_x] remoteExec["blck_fnc_HC_XferGroup",_idHC]; - _numTransfered = _numTransfered + 1; - diag_log format["group %1 transferred to %2",_x, groupOwner _x]; - } else { - diag_log format["something went wrong with the transfer of group %1",_x]; + //_numTransfered = _numTransfered + 1; }; }; }; } forEach (allGroups); - diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC]; + //diag_log format["[blckeagls] _passToHCs:: %1 groups transferred to HC %2",_numTransfered,_idHC]; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index b1115c5..cf68431 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -397,7 +397,7 @@ while {_missionComplete isEqualTo -1} do { { private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]); - diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime]; + //diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime]; if (_d > 25) exitWith { _missionComplete = 1; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf index e92033e..2e81528 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf @@ -23,32 +23,16 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms}; -//{ - //diag_log format["_fnc_spawnMissionVehiclePatrols: %1 = %2",_x select 0, _x select 1]; -//}forEach [["uniforms",_uniforms],["headgear",_headGear],["vests",_vests],["backpacks",_backpacks],["primary weapons",_weaponList],["secondary weapons",_sideArms]]; - -#ifdef blck_debugMode -if (blck_debugLevel >=2) then -{ - private _params = ["_coords","_noVehiclePatrols","_skillAI","_missionPatrolVehicles","_useRelativePos","_uniforms","_headGear","_vests","_backpacks","_weaponList","_sideArms","_isScubaGroup"]; - { - diag_log format["_fnc_spawnMissionVehiclePatrols:: param %1 | isEqualTo %2 | _forEachIndex %3",_params select _forEachIndex,_this select _forEachIndex, _forEachIndex]; - }forEach _this; -}; -#endif - private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_vehicle","_return","_abort","_spawnPos","_v"]; _vehicles = []; _missionAI = []; _abort = false; -//_useRelativePos = false; if (_missionPatrolVehicles isEqualTo []) then { _useRelativePos = false; _vehiclePatrolSpawns = [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius; { _v = [_skillAI] call blck_fnc_selectPatrolVehicle; - //diag_log format["_fnc_spawnMissionVehiclePatrols (36):: position = %1 and vehicle = %2",_x, _v]; _missionPatrolVehicles pushBack [_v, _x]; }forEach _vehiclePatrolSpawns; }; @@ -76,49 +60,19 @@ if (_missionPatrolVehicles isEqualTo []) then }; blck_monitoredMissionAIGroups pushBack _vehGroup; - - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionVehiclePatrols (73): group spawned = %1",_vehGroup]; - //diag_log format["_fnc_spawnMissionVehiclePatrols (74):: -> _missionType = %3 _vehGroup = %1 and units _vehGroup = %2",_vehGroup, units _vehGroup,_missionType]; - }; - #endif - - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionVehiclePatrols(66): will spawn vehicle %1 at position %2",_vehicle,_spawnPos]; - }; - #endif //params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; _patrolVehicle = [_coords,_spawnPos,_vehicle,40,60,_vehGroup,true] call blck_fnc_spawnVehiclePatrol; - //_vehGroup setVariable["groupVehicle",_vehicle]; - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionVehiclePatrols (76):: - > patrol vehicle spawned was %1",_patrolVehicle]; - }; - #endif if !(isNull _patrolVehicle) then { _patrolVehicle setVariable["vehicleGroup",_vehGroup]; _vehicles pushback _patrolVehicle; + blck_monitoredVehicles pushBack _patrolVehicle; _missionAI append (units _vehGroup); }; - - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionVehiclePatrols(91):: -- > _vehicles updated to %1",_vehicles]; - }; - #endif - } forEach _missionPatrolVehicles; - -blck_monitoredVehicles append _vehicles; + _return = [_vehicles, _missionAI, _abort]; _return diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf index e6f2ece..1cafabb 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf @@ -16,7 +16,7 @@ private ["_obj"]; if !(_characterBuildingConfigs isEqualTo []) then { _obj = createVehicle[(_characterBuildingConfigs select 0),_center vectorAdd (_characterBuildingConfigs select 1),[],0,"CAN_COLLIDE"]; - diag_log format["_fnc_placeCharacterInBuilding: _obj = %1",_obj]; + //diag_log format["_fnc_placeCharacterInBuilding: _obj = %1",_obj]; _obj setDir (_characterBuildingConfigs select 2); _obj allowDamage true; _obj enableDynamicSimulation true; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_processAIVehicleKill.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_processAIVehicleKill.sqf deleted file mode 100644 index 59508f0..0000000 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_EH_processAIVehicleKill.sqf +++ /dev/null @@ -1,16 +0,0 @@ - -/* - Killed handler for _units - By Ghostrider-GRG- - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_EH_processAIVehicleKill: _this = %1",_this]; -if !(isDedicated) exitWith {}; -_this call blck_fnc_processAIVehicleKill; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_addMonitoredVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_addMonitoredVehicle.sqf deleted file mode 100644 index 9023e81..0000000 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_addMonitoredVehicle.sqf +++ /dev/null @@ -1,14 +0,0 @@ -/* - By Ghostrider [GRG] - Copyright 2016 - Scans vehicles local to the machine the script is run on. - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_vehicle"]; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf index 581ab7d..96b0c8d 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf @@ -15,35 +15,24 @@ params["_veh"]; blck_monitoredVehicles = blck_monitoredVehicles - [_veh]; - //diag_log format["_fnc_releaseVehicleToPlayersl: _veh = %1 | (owner _veh) = %2",_veh,(owner _veh)]; - //diag_log format["_fnc_releaseVehicleToPlayersl: initial lock state of vehicle 51 = %2",_veh,locked _veh]; - //_veh setVehicleLock "UNLOCKED" ; - _locked = true; - _count = 0; - _timeIn = diag_tickTime; - while {_count < 2} do - { - //diag_log format["_fnc_releaseVehicleToPlayersl: attempting to unlock vehicle %1",_veh]; - [_veh,"UNLOCKED"] remoteExec ["setVehicleLock",0]; // unlock on all clients so we don't have to worry about any change of ownership when the driver is ejected. - // a bit of bandwidth seems worth ensuring that vehicles do in fact get unlocked. - uiSleep 0.1; - _count = _count + 1; - //diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; - //if ((_veh locked) isEqualTo "UNLOCKED" || (diag_tickTime - _timeIn) > 5) then {_locked = false}; - }; - + //diag_log format["_fnc_releaseVehicleToPlayersl: _veh = %1 | isLocal _veh = %3 | (owner _veh) = %2",_veh,(owner _veh),Local _veh]; + if (local _veh) then { + _veh lock false; + } + else { + if (isserver) then { + [_veh,false] remoteExecCall ["lock",_veh]; // let the machine, where the vehicle is local unlock it (only the server knows, who the owner is!!!) + } + else { + [[_veh,false],["lock",_veh]] remoteExecCall ["remoteExecCall", 2]; // If run on HC, move to the server. Server will remoteexec on local machine + }; + }; + //diag_log format["_fnc_releaseVehicleToPlayers: _veh=%1 | owner = %2 | lock = %3",_veh,owner _veh, locked _veh]; { _veh removealleventhandlers _x; } forEach ["GetIn","GetOut","fired","hit","hitpart","reloaded","dammaged","HandleDamage"]; { _veh removeAllMPEventHandlers _x; } forEach ["MPHit","MPKilled"]; - _veh setVariable["blck_DeleteAt",diag_tickTime + blck_vehicleDeleteTimer,true]; + _veh setVariable["blck_DeleteAt",nil]; if ((damage _veh) > 0.6) then {_veh setDamage 0.6}; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh]; - }; - #endif \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf index 8980975..e235c8e 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf @@ -14,73 +14,59 @@ private ["_vehList"]; _vehList = +blck_monitoredVehicles; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_monitoredVehicles %3",diag_tickTime,_vehList,blck_monitoredVehicles];}; -#endif //diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 ",diag_tickTime,_vehList,blck_monitoredVehicles]; -// Needs debugging for HC operation. + { - /* - Determine state of vehicle - _isEmplaced - _ownerIsPlayer - _allCrewDead + private["_veh","_isEmplaced","_allCrewDead","_evaluate","_deleteAtTime"]; + _veh = _x; // (purely for clarity at this point, _x could be used just as well) + + _isEmplaced = _veh getVariable["GRG_vehType","none"] isEqualTo "emplaced"; + _allCrewDead = {alive _x} count (crew _veh) == 0; + _evaluate = 0; + _deleteAtTime = _veh getVariable ["blck_deleteAtTime",diag_tickTime + 1]; - _handleReloadRefuel (0) - _scheduleDeletion (2) [_allCrewDead && !_isEmplaced && !_scheduled] // all vehicles other than statics - _disableNow and schedule for deletion (1) [_allCrewDead && _isEmplaced] // emplaced weapons - _deleteNow (3) - _releaseToPlayer (4) [_allCrewDead && !_isEmplaced && _ownerIsPlayer] - _default (5) reload rearm - */ - - if (true) then + if (diag_tickTime > _deleteAtTime) then { - private["_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_evaluate","_deleteat"]; - _veh = _x; // (purely for clarity at this point, _x could be used just as well) - - _isEmplaced = _veh getVariable["GRG_vehType","none"] isEqualTo "emplaced"; - _ownerIsPlayer = owner _veh > 2 && !(owner _veh in blck_connectedHCs); - _allCrewDead = {alive _x} count (crew _veh) == 0; - _evaluate = 0; - _deleteat = _veh getVariable ["blck_deleteAt",0]; - if (_allCrewDead && _isEmplaced && _deleteat == 0) then {_evaluate = 1}; - if (_allCrewDead && !(_isEmplaced) && _deleteat == 0) then {_evaluate = 2}; - if (_deleteat > 0 && diag_tickTime > _deleteat) then {_evaluate = 3}; - if (_ownerIsPlayer) then {_evaluate = 4}; - //diag_log format["_fnc_vehicleMonitor: vehicle = %1 | owner = %2 | crew = %2",_veh, owner _veh, {alive _x} count (crew _veh)]; - switch (_evaluate) do + _evaluate = 3; + } else { + if (_allCrewDead) then { - case 0:{[_veh] call blck_fnc_reloadVehicleAmmo;}; - case 1:{ - if (blck_killEmptyStaticWeapons) then - { - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];}; - #endif - _veh setDamage 1; - _veh setVariable["blck_DeleteAt",diag_tickTime + 60]; - }else { - [_veh] call blck_fnc_releaseVehicleToPlayers; - }; - }; - case 2:{ - if (blck_killEmptyAIVehicles) then - { - _veh setDamage 0.7; - _veh setVariable["blck_DeleteAt",diag_tickTime + 60]; - } else { - [_veh] call blck_fnc_releaseVehicleToPlayers; - }; - }; - case 3:{ - [_veh] call blck_fnc_destroyVehicleAndCrew; - }; - case 4:{ - _veh setVariable["blck_DeleteAt",nil]; - blck_monitoredVehicles = blck_monitoredVehicles - [_veh]; + _evaluate = if (_isEmplaced) then {1} else {2}; + }; + }; + + //diag_log format["_fnc_vehicleMonitor: vehicle = %1 | owner = %2 | crew = %3 | _evaluate = %4",_veh, owner _veh, {alive _x} count (crew _veh), _evaluate]; + switch (_evaluate) do + { + case 0:{[_veh] call blck_fnc_reloadVehicleAmmo;}; + case 1:{ + if (blck_killEmptyStaticWeapons) then + { + if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];}; + _veh setDamage 1; + _veh setVariable["blck_deleteAtTime",diag_tickTime + 60]; + }else { + //diag_log format["_fnc_vehicleMonitor: calling _fnc_releaseVehicleToPlayers for vehicle %1",_veh]; + [_veh] call blck_fnc_releaseVehicleToPlayers; }; }; + case 2:{ + if (blck_killEmptyAIVehicles) then + { + //if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];}; + _veh setDamage 0.7; + _veh setFuel 0; + _veh setVariable["blck_deleteAtTime",diag_tickTime + 60]; + } else { + //diag_log format["_fnc_vehicleMonitor: calling _fnc_releaseVehicleToPlayers for vehicle %1",_veh]; + [_veh] call blck_fnc_releaseVehicleToPlayers; + }; + }; + case 3:{ + //diag_log format["_fnc_releaseVehicleToPlayers: destroying vehicle and crew for vehicle %1 at time %2",_veh,diag_tickTime]; + [_veh] call blck_fnc_destroyVehicleAndCrew; + }; + }; }forEach _vehList; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 78c76c8..8bd2c70 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -150,10 +150,10 @@ private _functions = [ // HC support functions ["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"], - ["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"], - ["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"], + //["blck_fnc_onPlayerDisconnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_onPlayerDisconnected.sqf"], + //["blck_fnc_HC_monitor","\q\addons\custom_server\Compiles\HC\GMS_fnc_HCmonitor.sqf"], ["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"], - ["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"], + //["blck_fnc_HC_getListConnected","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_getListConnected.sqf"], ["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"], ["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"] ]; @@ -163,11 +163,6 @@ private _functions = [ missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; } foreach _functions; -#ifdef GRGserver -blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; -diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; -#endif - onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index e68f46c..9a0db89 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -44,7 +44,7 @@ blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent). - blck_simulationManager = blck_simulationManagementOff; + blck_simulationManager = blck_useBlckeaglsSimulationManager; diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager]; /* blck_simulationManagementOff - no simulation management occurs @@ -107,7 +107,7 @@ blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - blck_killPercentage = 0.999999999; // The mission will complete if this fraction of the total AI spawned has been killed. + blck_killPercentage = 0.999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. @@ -176,7 +176,7 @@ _blck_armed_hurons = ["B_Heli_Transport_03_F","B_Heli_Transport_03_black_F"]; _blck_armed_attackHelis = ["B_Heli_Attack_01_F"]; _blck_armed_heavyAttackHelis = ["O_Heli_Attack_02_F","O_Heli_Attack_02_black_F"]; - _blck_fighters = [ + _blck_fighters = [ "O_Plane_CAS_02_F", // /ti-199 Neophron (CAS) "I_Plane_Fighter_03_AA_F", // A-143 Buzzard (AA) "I_Plane_Fighter_04_F", // A-149 Gryphon @@ -214,12 +214,8 @@ //////////////////// // Maximum number of missions shown on the map at any one time. - #ifdef GRGserver - blck_maxSpawnedMissions = 15; - #else // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; - #endif //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; @@ -228,12 +224,6 @@ blck_enableBlueMissions = 1; blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. - #ifdef GRGserver - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = 2; - blck_maxcrashsites = 4; - #endif - //////////////////// // MISSION TIMERS //////////////////// @@ -244,12 +234,6 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; - #ifdef GRGserver - blck_TMin_Hunter = 120; - blck_TMin_Scouts = 115; - blck_TMin_Crashes = 115; - - #endif //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; @@ -257,11 +241,6 @@ blck_TMax_Blue = 200; blck_TMax_Red = 250; blck_TMax_UMS = 400; - #ifdef GRGserver - blck_TMax_Hunter = 200; - blck_TMax_Scouts = 200; - blck_TMax_Crashes = 200; - #endif /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -297,6 +276,8 @@ blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions + + /**************************************************************** GENERAL AI SETTINGS @@ -321,7 +302,7 @@ blck_maximumPatrolRadius = 35; //This defines how long after an AI dies that it's body disappears. - blck_bodyCleanUpTimer = 60*60; // time in seconds after which dead AI bodies are deleted + blck_bodyCleanUpTimer = 60*40; // time in seconds after which dead AI bodies are deleted // Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable // values are ordered as follows [blue, red, green, orange]; blck_AliveAICleanUpTimer = 60*20; // Time after mission completion at which any remaining live AI are deleted. @@ -380,61 +361,7 @@ blck_maxMoneyRed = 15; blck_maxMoneyBlue = 10; - #ifdef GRGserver - blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed. - //blck_AIAlertDistance = [150,225,400,500]; - // How precisely player locations will be revealed to AI after an AI kill - // values are ordered as follows [blue, red, green, orange]; - blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; - - blck_baseSkill = 0.7; // The overal skill of the AI - range 0.1 to 1.0. - - /*************************************************************** - - MISSION TYPE SPECIFIC AI SETTINGS - - **************************************************************/ - //This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type - // Orange Missions - blck_MinAI_Orange = 20; - blck_MaxAI_Orange = 25; - blck_AIGrps_Orange = 5; - blck_SkillsOrange = [ - ["aimingAccuracy",[0.25,0.36]],["aimingShake",[0.45,0.55]],["aimingSpeed",[0.65,0.75]],["endurance",1.00],["spotDistance",1.0],["spotTime",0.7],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] - ]; - - // Green Missions - blck_MinAI_Green = 16; - blck_MaxAI_Green = 21; - blck_AIGrps_Green = 4; - blck_SkillsGreen = [ - ["aimingAccuracy",[0.2,0.3]],["aimingShake",[0.4,0.5]],["aimingSpeed",[0.55,0.7]],["endurance",0.9],["spotDistance",0.9],["spotTime",0.65],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] - ]; - - // Red Missions - blck_MinAI_Red = 12; - blck_MaxAI_Red = 15; - blck_AIGrps_Red = 3; - blck_SkillsRed = [ - ["aimingAccuracy",[0.2,0.25]],["aimingShake",[0.35,0.4]],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.6],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] - ]; - - // Blue Missions - blck_MinAI_Blue = 8; - blck_MaxAI_Blue = 12; - blck_AIGrps_Blue = 2; - blck_SkillsBlue = [ - ["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] - ]; - - // Add some money to AI; only works with Exile for now. - blck_maxMoneyOrange = 25; - blck_maxMoneyGreen = 20; - blck_maxMoneyRed = 15; - blck_maxMoneyBlue = 10; - #endif - - if (toLower(blck_modType) isEqualTo "epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index b2abc31..ee24ee4 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -48,10 +48,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; - blck_maximumItemPriceInAI_Loadouts = 100; - _blck_lightlyArmed_ARMA3 = [ "B_G_Offroad_01_armed_F", "O_G_Offroad_01_armed_F", diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 0dfe582..dafd1b1 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -662,6 +662,25 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "Exile_Item_Moobar", "Exile_Item_InstantCoffee" ]; + #ifdef blck_addCarParts + blck_carParts = [ + "Exile_Item_CarWheel", + "DDR_Item_Tailrotor", + "DDR_Item_Main_Rotor", + "DDR_Item_Engine", + "DDR_Item_Glass", + "DDR_Item_Fuel_Tank", + "DDR_Item_Fishing_Net", + "DDR_Item_Fiberglass" + ]; + #endif + #ifdef useCUP + + #endif + + #ifdef useRHS + + #endif blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; @@ -673,7 +692,18 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard", "Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand"]; blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers"]; - + #ifdef blck_addCarParts + blck_carParts = [ + "Exile_Item_CarWheel", + "DDR_Item_Tailrotor", + "DDR_Item_Main_Rotor", + "DDR_Item_Engine", + "DDR_Item_Glass", + "DDR_Item_Fuel_Tank", + "DDR_Item_Fishing_Net", + "DDR_Item_Fiberglass" + ]; + #endif /*************************************************************************************** DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index 773eb0e..3480578 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -88,7 +88,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR //"O_MBT_02_arty_F", "I_MBT_03_cannon_F" ]; - + #ifdef useCUP _blck_APC_CUP = [ "CUP_B_Mastiff_GMG_GB_D", "CUP_B_Mastiff_HMG_GB_D", @@ -146,7 +146,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR //"CUP_O_2S6_RU", //"CUP_O_BMP1_TKA"" ]; - + #endif blck_AIPatrolVehicles = [ //"Exile_Car_Offroad_Armed_Guerilla01", @@ -187,9 +187,11 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "B_LSV_01_armed_F" ]; + #ifdef useCUP blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP; blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP; blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP; + #endif if (toLower(worldName) isEqualTo "namalsk") then { @@ -672,7 +674,18 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "Exile_Item_Moobar", "Exile_Item_InstantCoffee" ]; - + #ifdef blck_addCarParts + blck_carParts = [ + "Exile_Item_CarWheel", + "DDR_Item_Tailrotor", + "DDR_Item_Main_Rotor", + "DDR_Item_Engine", + "DDR_Item_Glass", + "DDR_Item_Fuel_Tank", + "DDR_Item_Fishing_Net", + "DDR_Item_Fiberglass" + ]; + #endif #ifdef useCUP #endif @@ -773,7 +786,10 @@ for examples of how you can do this see \Major\Compositions.sqf ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] ], - [// Materials and supplies + [// Materials and supplies + #ifdef blck_addCarParts + ["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6], + #endif ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], ["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10], ["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10], @@ -864,7 +880,10 @@ for examples of how you can do this see \Major\Compositions.sqf ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] ], - [// Materials and supplies + [// Materials and supplies + #ifdef blck_addCarParts + ["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6], + #endif ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5] @@ -945,6 +964,9 @@ for examples of how you can do this see \Major\Compositions.sqf ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] ], [// Materials and supplies + #ifdef blck_addCarParts + ["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6], + #endif ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2], ["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4] ], @@ -1019,7 +1041,10 @@ for examples of how you can do this see \Major\Compositions.sqf ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] ], - [// Materials and supplies + [// Materials and supplies + #ifdef blck_addCarParts + ["Exile_Item_CarWheel",3,6],["DDR_Item_Tailrotor",1,3],["DDR_Item_Main_Rotor",1,3],["DDR_Item_Engine",2,4],["DDR_Item_Glass",3,6],["DDR_Item_Fuel_Tank",2,4],["DDR_Item_Fiberglass",3,6], + #endif ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5] diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index a9a8500..089ef66 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -64,7 +64,7 @@ // When set to true,"dot", ext will be to the right of a black dot at the center the mission marker. blck_labelMapMarkers = [true,"center"]; blck_preciseMapMarkers = false; // Map markers are/are not centered at the loot crate - blck_showCountAliveAI = false; + blck_showCountAliveAI = true; //Minimum distance between missions blck_MinDistanceFromMission = 1500; @@ -84,7 +84,7 @@ blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" blck_killPercentage = 0.99999999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. - blck_spawnCratesTiming = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". + blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn"; @@ -204,7 +204,7 @@ // Maximum number of missions shown on the map at any one time. // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; - + //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; blck_enableGreenMissions = 1; @@ -222,7 +222,7 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; - + //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; blck_TMax_Green = 300; @@ -346,21 +346,18 @@ blck_maxMoneyRed = 30; blck_maxMoneyBlue = 20; - if (toLower(blck_modType) isEqualTo "epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf"; - waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; - waitUntil{blck_configsEpochLoaded}; - blck_configsEpochLoaded = nil; }; if (toLower(blck_modType) isEqualTo "exile") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; }; - waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}: - waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}: + waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; + waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}; if (blck_useConfigsGeneratedLoadouts) then { diag_log format["[blckeagls] Dynamic Configs Enabled"]; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index 9c98ba7..4290eea 100644 --- a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf +++ b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf @@ -148,14 +148,14 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in blck_maxSpawnedMissions = 15; blck_mainThreadUpdateInterval = 10; - blck_enableOrangeMissions = 1; - blck_enableGreenMissions = 1; + blck_enableOrangeMissions = -1; + blck_enableGreenMissions = -1; blck_enableRedMissions = 1; - blck_enableBlueMissions = 1; - blck_numberUnderwaterDynamicMissions = 3; - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = 1; - blck_maxCrashSites = 3; + blck_enableBlueMissions = -1; + blck_numberUnderwaterDynamicMissions = -3; + blck_enableHunterMissions = -1; + blck_enableScoutsMissions = -1; + blck_maxCrashSites = -3; //blck_killEmptyStaticWeapons = false; //blck_killEmptyAIVehicles = true; @@ -163,7 +163,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in blck_AliveAICleanUpTimer = 20; // Time after mission completion at which any remaining live AI are deleted. blck_bodyCleanUpTimer = 20; blck_vehicleDeleteTimer = 20; - blck_MissionTimeout = 30; + //blck_MissionTimeout = 30; //blck_noPatrolHelisOrange = 1; //blck_chanceHeliPatrolOrange = 1; @@ -183,7 +183,7 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in //blck_SpawnVeh_Orange = 1; // Number of vehicles at Orange Missions //blck_SpawnVeh_Green = 1; // Number of vehicles at Green Missions //blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions - //blck_SpawnVeh_Red = 1; + blck_SpawnVeh_Red = 1; blck_TMin_Blue = 7; blck_TMin_Red = 10; diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 1f4ad4f..1561e92 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -11,19 +11,19 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -#define blck_buildNumber 164 + #define useAPEX //#define blck_milServer //#define blck_useCUP //#define blck_useRHS - +//#define blck_addCarParts (For Exile should you wish to use some of the advanced repair scripts). //////////////////////////// // Do not touch anything below this line /////////////////////////// //#define blck_debugMode -#define blck_triggerLoopCompleteTime 40*60 +#define blck_triggerLoopCompleteTime 40*60 #define onFoot 1 #define inVehicle 2 @@ -56,3 +56,6 @@ #define blck_turnBackRadiusVehicles 1000 #define blck_turnBackRadiusHelis 1000 #define blck_turnBackRadiusJets 1500 + +#define blck_buildNumber 167 +#define blck_versionNumber 6.88 diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf index ff9bba0..16b3ffd 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf @@ -9,6 +9,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; +waitUntil{!isNil "blck_cratetypes"}; blck_UMS_uniforms = [ "U_I_Wetsuit", @@ -58,7 +59,6 @@ if ((tolower blck_modType) isEqualTo "epoch") then "B_SDV_01_EPOCH" ]; - blck_UMS_crates = blck_crateTypes; }; blck_UMS_unarmedSurfaceVessels = diff --git a/@GMS/addons/custom_server/Missions/UMS/code/GMS_UMS_functions.sqf b/@GMS/addons/custom_server/Missions/UMS/code/GMS_UMS_functions.sqf index 2ce413c..d034f1e 100644 --- a/@GMS/addons/custom_server/Missions/UMS/code/GMS_UMS_functions.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/code/GMS_UMS_functions.sqf @@ -19,4 +19,4 @@ blck_fnc_findShoreLocation = compileFinal preprocessFileLineNumbers "q\addons\cu blck_fnc_addDyanamicUMS_Mission = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_addDynamicUMS_Mission.sqf"; blck_fnc_findWaterDepth = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_UMS_fnc_findWaterDepth.sqf"; -diag_log " Functions compiled"; +diag_log "[blckeagls] UMS functions Functions compiled"; diff --git a/@GMS/addons/custom_server/init/blck_init_HC.sqf b/@GMS/addons/custom_server/init/blck_init_HC.sqf index fea65a6..7c0fc66 100644 --- a/@GMS/addons/custom_server/init/blck_init_HC.sqf +++ b/@GMS/addons/custom_server/init/blck_init_HC.sqf @@ -1,11 +1,4 @@ /* - AI Mission for Epoch and Exile Mods to Arma 3 - Credist to blckeagls who wrote the initial mission script for A3 Epoch - To Narines for debugging that original version - To cynwncler for many helpful comments along the way - And mostly importantly, - To Vampire, KiloSwiss, blckeagls, theFUCHS, lazylink, Mark311 and Buttface (Face) who wrote the pionering mission and roaming AI systems upon which this one is based and who's code is used with modification in some parts of this addon. - By Ghostrider-GRG- -------------------------- @@ -15,36 +8,17 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -if (hasInterface) exitWith{}; +if (hasInterface || isServer) exitWith{}; #include "\q\addons\custom_server\Configs\blck_defines.hpp"; if !(isNil "blck_Initialized") exitWith{}; -private["_blck_loadingStartTime"]; -_blck_loadingStartTime = diag_tickTime; +private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] Loading Headless Client Version %2 Build Date %1",_blck_versionDate,_blck_version]; - -call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; - -// compile functions +//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; -diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel]; +//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; +//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; +diag_log format["[blckeagls] Loading Headless Client Version %2 | Build Date %1 | loaded in %4 seconds",_blck_versionDate,blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]; -execVM "\q\addons\custom_server\Configs\blck_configs.sqf"; -// Load any user-defined specifications or overrides -call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; - -#ifdef GRGserver -diag_log "[blckeagls] Running GRG Version"; -#endif - -switch (blck_simulationManager) do - case 1: {diag_log "[blckeagls] dynamic simulation manager enabled"}; - case 2: {diag_log "[blckeagls] blckeagls simulation manager enabled"}; - case 0: {diag_log "[blckeagls] simulation management disabled"}; -}; - -diag_log format["[blckeagls] for HC version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; -[] spawn blck_fnc_HC_monitor; diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index de1317d..88a2ad8 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -28,7 +28,7 @@ if ((toLower blck_modType) isEqualTo "exile") then private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] Loading Server Mission System Version",blck_buildNumber]; +diag_log format["[blckeagls] Loading Server Mission System Version"]; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; @@ -80,7 +80,7 @@ switch (blck_simulationManager) do case 0: {diag_log "[blckeagls] simulation management disabled"}; }; -diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; +diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; diag_log format["blckeagls] waiting for players to join ---- >>>>"]; if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 06be3d7..8596d8e 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -2,6 +2,6 @@ private ["_version","_versionDate"]; blck_version = format["6.88 Build %1",blck_buildNumber]; _blck_version = blck_version; -_blck_versionDate = "11-21-18 4:00 PM"; +_blck_versionDate = "12-1-18 8:00 AM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version; diff --git a/AdjustingSettings.txt b/AdjustingSettings.txt index 20eb1fe..d7bd6eb 100644 --- a/AdjustingSettings.txt +++ b/AdjustingSettings.txt @@ -5,9 +5,11 @@ Read the faq and config files for specific information. Some general tips are: First, create a backup of all files. + Second, if your rpt log shows errors after a change, revert to the defaults and try again. -Third, settings that determine how messages are displayed are your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf. -Here you can use dynamic messages, hints, or titleText/cutText to display your messages. + +Third, settings that determine how messages are displayed can be configured in your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf. +Here you can use dynamic messages, hints, Toasts or titleText/cutText to display your messages. Lastly, settings for the missions themselves have been moved to @epochhive\custom_server\configs. There are two different config files, one for exile and a second for epoch. diff --git a/FAQ.txt b/FAQ.txt index 051b88e..3276c69 100644 --- a/FAQ.txt +++ b/FAQ.txt @@ -2,13 +2,14 @@ This addon includes several modules which will be discussed in the following ord 1. The core, dynamic mission system 2. A static mission system 3. A custom time acceleration module -4. A module to execute scripts for custom bases (map addons) and so forths. +4. A module to execute scripts for custom bases (map addons) and so forth. 5. A module to spawn loot crates in specific locations at server startup. +6. Tools to export mission layouts designed in the editor for use with mission templates. This allows you to quickly add content to your server. Tools are available for both static and dynamic missions. 1. Core Mission System. -The core mission system is configured to run 4 different classes of mission (Blue, Red, Green and Orange) simultaneously. -Reducing value for ...\custom_serer\configs\blck_configs.sqf\blck_maxSpawnedMissions will reduce the number of missions running on the server. +The core mission system is configured to run 5 different classes of mission (Blue, Red, Green and Orange, and underwater/surface) simultaneously. +Reducing value for ...\custom_serer\configs\blck_configs.sqf\blck_maxSpawnedMissions will reduce the number of missions running on the server at any one time. General settings include: the ability set whether and how messages to players regarding missions spawned or completed are displayed, @@ -29,6 +30,7 @@ General settings include: Loot can also be configured for each mission class or mission. You can modify the number of weapons, magazines, items, construction materials, etc. You can also adjust the choices for each of these types of items. The equipment selected for each class of mission can also be specified(uniforms, vests, headgear, backpcks, weapons, pistols). + Alternatively, AI loadouts can be determined by the mission system based on what is available at server startup. When loadouts are dynamically configured the items spawned in CfgLoot are used. Note that an upper limit on price is available. Whether kills by guns mounted on vehicles are to be penalized (gunes that are prohobited are listed in blck_config.sys). Whether to spawn a smoking wreck near the mission to be used as a visual landmark. Whether to spawn mines (recommended only when no vehcle patrols are spawned). @@ -39,17 +41,17 @@ Where possible, I have tried group weapons based on desirability from low rank ( The missions themselves are spawned from templates which can be used to define most aspects of the missions including: the messages sent to players; - text used to label the mark - type of marker used to label the map - number of AI groups and number of AI and, if desired their spawn locations. + Text used to label the mark + Type of marker used to label the map + Number of AI groups and number of AI and, if desired their spawn locations. (optional) loot chest positions and loot to be loaded - type and location of any objects, buildings, or other entities that give the mission character - number and (optional) locations of static weapons - number, type, and spawn location(s) of vehicle patrols + Type and location of any objects, buildings, or other entities that give the mission character + Number and (optional) locations of static weapons + Number, type, and spawn location(s) of vehicle patrols To create and run new missions simply: layout an AI base in the Arma 3 editor, - export the base as an .sqf using Maca's EDEN PLuging uing relative positions. + export the base as an .sqf using the tools provided. Define the above parameters (nu. AI groups, No AI, etc) add this information to the mission template and modify any messages accordingly Add the name of the file (e.g., "newAImission" to the list of missions to be spawned of that class in ...\custom)server\missions\GMS_missionLists.sqf @@ -66,8 +68,8 @@ You can shorten the time after which bodies or scenery are deleted if you believ Additional Modules Available: Suport is provided for groups of AI, vehicles, aircraft, static weapons, subs, surface vessels. -The positions of these is defined by templates (see custom_server\Missions\Static\Missions folder for examples) or by calls to functions to add these elements. -The recommended way to place static units of various types is to add their spawn information to a new template then add the name/mod to custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf. +The positions of these are defined by templates (see custom_server\Missions\Static\Missions folder for examples) or by calls to functions to add these elements. +The recommended way to place static units of various types is to lay out their positions in the editor then export the data using the tools provided to create a new mission with these definitions. Alternatively you can set up calls to the functions that initialize spawns for these units in blck_custom_configs.sqf or an include that is incorporated into it. See the directions for creating static missions for more information. diff --git a/INSTALLATION.txt b/INSTALLATION.txt index 4022e37..abee5a3 100644 --- a/INSTALLATION.txt +++ b/INSTALLATION.txt @@ -63,17 +63,12 @@ You can use blck_custom_config.sqf to code any overrides you like. An example fo //////////////////////// // What is this blck_debugON variable about? -It turns on accelerated mission spawning by default and activates additional logging. -You can turn it on or of in custom_server\Compiles\blck_variables.sqf. -Be careful about what you change in this file. +I use it to speed things up for debugging. Best to leave this one alone. /////////////////////////////////////////// // Further customization -Just about anything about the missions can be modified. The mission template (see Missions\Orange\supply_camp.sqf and Missions\Blue\default.sqf for examples) allows you to define mission specific parameters. -To create a new mission, make a copy of a mission template (e.g., custom_server\Blue\default.sqf). Edit the parameters to your liking and rename to file appropriately. -To add a new mission, create a new mission template, then add the file name (e.g., "newmissions.sqf") to the mission list found in custom_server\Missions. -That mission will now be spawned whenever it is selected from teh list. +Just about anything about the missions can be modified. Please see the FAQ for more information diff --git a/KnownIssues.txt b/KnownIssues.txt index 1d8d130..4e448eb 100644 --- a/KnownIssues.txt +++ b/KnownIssues.txt @@ -2,4 +2,4 @@ Known issues -1. AI Vehicles MAY not be unlocked when an HC is connected. + diff --git a/blckeagles_BEexceptions.txt b/blckeagles_BEexceptions.txt index 508ec2c..69534ea 100644 --- a/blckeagles_BEexceptions.txt +++ b/blckeagles_BEexceptions.txt @@ -1,3 +1,6 @@ +I am way behind on these. +If you find something that is not listed here please post it on the github. + setVariable.txt !="blck_AIState" diff --git a/changeLog.sqf b/changeLog.sqf index a87bef2..11ffa11 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -4,12 +4,14 @@ Loosely based on the AI mission system by blckeagls ver 2.0.2 Contributions by Narines: bug fixes, testing, infinite ammo fix. Ideas or code from that by He-Man, Vampire and KiloSwiss have been used for certain functions. Many thanks for new Coding and ideas from Grahame. +A huge thank you to Ignaz-HeMan for many changes to resolve bugs and improve coding efficiency. Significant Changes: ===================== -6.88 +6.88 Build 167 This update consists primarily of a set of bug fixes and code tweaks. Many thanks to HeMan for his time in effort spent going through the scripts to troublehsoot and improve them. +The most important bug fix has been resolution of issues with use of headless clients. 6.86 Build 156 Added support for spawning infantry and statics inside buildings for forming a garrison using either of two methods.