From 461b89b44cab00a6c2e9006fcc6339311c47c601 Mon Sep 17 00:00:00 2001 From: Ghostrider-GRG- Date: Tue, 19 Jun 2018 08:03:50 -0400 Subject: [PATCH] Build 141 fixed an issue with Hostage missions. Fixed an issue whereby collisions between objects at missions caused them to fly about. Changed the default for some objects to allow damage which should increase realism and make certain player tasks like loading crates easier. --- .../Functions/GMS_fnc_findSafePosn - Copy.sqf | 130 ++ .../Functions/GMS_fnc_findSafePosn.sqf | 162 ++- .../Compiles/Groups/GMS_fnc_spawnGroup.sqf | 2 +- .../GMS_fnc_missionSpawner - Copy.sqf | 128 +- .../Missions/GMS_fnc_missionSpawner.sqf | 44 +- .../Missions/GMS_fnc_spawnBaseObjects.sqf | 16 +- .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 6 +- .../Compiles/Units/GMS_fnc_spawnUnit.sqf | 2 +- .../custom_server/Compiles/blck_functions.sqf | 2 +- .../custom_server/Compiles/blck_variables.sqf | 2 +- .../custom_server/Configs/blck_configs.sqf | 2 +- .../Configs/blck_custom_config.sqf | 109 +- .../Configs/blck_custom_config_RC.sqf | 1269 +++++++++++++++++ .../custom_server/Configs/blck_defines.hpp | 1 - .../custom_server/Missions/Blue/hostage1.sqf | 99 +- .../Missions/GMS_missionLists.sqf | 4 +- .../Missions/Red/medicalCamp.sqf | 22 +- .../custom_server/Missions/Red/redCamp.sqf | 84 +- .../Missions/Red/resupplyCamp.sqf | 12 +- .../Static/Code/GMS_fnc_sm_monitorShips.sqf | 2 +- .../Static/Code/GMS_fnc_sm_monitorSubs.sqf | 1 + .../Code/GMS_fnc_sm_monitorVehicles.sqf | 3 +- .../Static/GMS_StaticMissions_Lists.sqf | 4 +- .../missions/staticMissionExample2_Epoch.sqf | 12 +- .../UMS/GMS_UMS_StaticMissions_Lists.sqf | 4 +- .../staticMissionExample2_Epoch.sqf | 8 +- @GMS/addons/custom_server/init/build.sqf | 4 +- changeLog.sqf | 4 + 28 files changed, 1777 insertions(+), 361 deletions(-) create mode 100644 @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn - Copy.sqf create mode 100644 @GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn - Copy.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn - Copy.sqf new file mode 100644 index 0000000..e077695 --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn - Copy.sqf @@ -0,0 +1,130 @@ +// self explanatory. Checks to see if the position is in either a black listed location or near a player spawn. +// As written this relies on BIS_fnc_findSafePos to ensure that the spawn point is not on water or an excessively steep slope. +// +/* + for ghostridergaming + By Ghostrider [GRG] + Copyright 2016 + Last Modified 1-22-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"; + +private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole","_oldPos","_ignore"]; + +_findNew = true; +_tries = 0; +while {_findNew} do { + _findNew = false; + //[_centerForSearch,_minDistFromCenter,_maxDistanceFromCenter,_minDistanceFromNearestObj,_waterMode,_maxTerainGradient,_shoreMode] call BIS_fnc_findSafePos + // https://community.bistudio.com/wiki/BIS_fnc_findSafePos + _coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos; + //diag_log format["<<--->> _coords = %1",_coords]; + + { + if ((_x distance2D _coords) < blck_MinDistanceFromMission) then { + _findNew = true; + }; + }forEach blck_heliCrashSites; + + { + if ( ((_x select 0) distance2D _coords) < (_x select 1)) exitWith + { + _findNew = true; + }; + } forEach blck_locationBlackList; + + //diag_log format["#- findSafePosn -# blck_ActiveMissionCoords isEqualTo %1", blck_ActiveMissionCoords]; + { + //diag_log format["#- findSafePosn -# blck_ActiveMissionCoords active mission item is %1", _x]; + if ( (_x distance2D _coords) < blck_MinDistanceFromMission) exitWith + { + _FindNew = true; + }; + } forEach blck_ActiveMissionCoords; + + //diag_log format["#- findSafePosn -# blck_recentMissionCoords isEqualTo %1", blck_recentMissionCoords]; + { + _ignore = false; + //diag_log format["-# findSafePosn.sqf -# Old Mission element is %1", _x]; + if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location. + { + _ignore = true; + blck_recentMissionCoords= blck_recentMissionCoords - _x; + //diag_log format["-# findSafePosn.sqf -# Removing Old Mission element: %1", _x]; + }; + if !(_ignore) then + { + //diag_log format["-# findSafePosn.sqf -# testing _coords against Old Mission coords is %1", _x select 0]; + if ( ((_x select 0) distance2D _coords) < blck_MinDistanceFromMission) then + { + _findNew = true; + //diag_log format["-# findSafePosn.sqf -# Too Close to Old Mission element: %1", _x]; + }; + }; + } forEach blck_recentMissionCoords; + + // 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; + }; + }; + // check that missions spawn at least 1 kkm from towns + { + _townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0]; + if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith { + _findNew = true; + }; + } forEach blck_townLocations; + + // check for nearby plot pole/freq jammer within 800 meters + _mod = call blck_fnc_getModType; + _pole = ""; + if (_mod isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"}; + if (_mod isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"}; + //diag_log format["_fnc_findSafePosn:: -- >> _mod = %1 and _pole = %2",_mod,_pole]; + { + if ((_x distance2D _coords) < blck_minDistanceToBases) then + { + _findNew = true; + }; + }forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases]; + + // check to be sure we do not spawn a mission on top of a player. + { + if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then + { + _findNew = true; + }; + }forEach playableUnits; + + 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; +}; + +if ((count _coords) > 2) then +{ + private["_temp"]; + _temp = [_coords select 0, _coords select 1]; + _coords = _temp; +}; +_coords; 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 e077695..c0e7358 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -5,7 +5,6 @@ for ghostridergaming By Ghostrider [GRG] Copyright 2016 - Last Modified 1-22-17 -------------------------- License -------------------------- @@ -15,59 +14,112 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole","_oldPos","_ignore"]; - +private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole"]; +private["_minDistFromBases","_minDistFromMission","_minDistanceFromTowns","_minSistanceFromPlayers","_weightBlckList","_weightBases","_weightMissions","_weightTowns","_weightPlayers"]; _findNew = true; _tries = 0; -while {_findNew} do { - _findNew = false; - //[_centerForSearch,_minDistFromCenter,_maxDistanceFromCenter,_minDistanceFromNearestObj,_waterMode,_maxTerainGradient,_shoreMode] call BIS_fnc_findSafePos - // https://community.bistudio.com/wiki/BIS_fnc_findSafePos - _coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos; - //diag_log format["<<--->> _coords = %1",_coords]; - + +_minDistFromBases = blck_minDistanceToBases; +_minDistFromMission = blck_MinDistanceFromMission; +_minDistanceFromTowns = blck_minDistanceFromTowns; +_minSistanceFromPlayers = blck_minDistanceToPlayer; +_weightBlckList = 0.95; +_weightBases = 0.9; +_weightMissions = 0.8; +_weightTowns = 0.7; +_weightPlayers = 0.6; +if (blck_modType isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"}; +if (blck_modType isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"}; + +{ + if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location. { - if ((_x distance2D _coords) < blck_MinDistanceFromMission) then { - _findNew = true; - }; - }forEach blck_heliCrashSites; - + blck_recentMissionCoords deleteAt (blck_recentMissionCoords find _x); + }; +}forEach blck_recentMissionCoords; + +while {_findNew} do +{ + _findNew = false; + _coords = [blck_mapCenter,0,blck_mapRange,30,0,5,0] call BIS_fnc_findSafePos; + //diag_log format["_fnc_findSafePosn: _coords = %1 | _tries = %2",_coords,_tries]; { if ( ((_x select 0) distance2D _coords) < (_x select 1)) exitWith { _findNew = true; }; } forEach blck_locationBlackList; - - //diag_log format["#- findSafePosn -# blck_ActiveMissionCoords isEqualTo %1", blck_ActiveMissionCoords]; + if !(_findNew) then { - //diag_log format["#- findSafePosn -# blck_ActiveMissionCoords active mission item is %1", _x]; - if ( (_x distance2D _coords) < blck_MinDistanceFromMission) exitWith - { - _FindNew = true; - }; - } forEach blck_ActiveMissionCoords; - - //diag_log format["#- findSafePosn -# blck_recentMissionCoords isEqualTo %1", blck_recentMissionCoords]; { - _ignore = false; - //diag_log format["-# findSafePosn.sqf -# Old Mission element is %1", _x]; - if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location. - { - _ignore = true; - blck_recentMissionCoords= blck_recentMissionCoords - _x; - //diag_log format["-# findSafePosn.sqf -# Removing Old Mission element: %1", _x]; + if ((_x distance2D _coords) < _minDistFromMission) then { + _findNew = true; }; - if !(_ignore) then + }forEach blck_heliCrashSites; + }; + if !(_findNew) then + { { - //diag_log format["-# findSafePosn.sqf -# testing _coords against Old Mission coords is %1", _x select 0]; - if ( ((_x select 0) distance2D _coords) < blck_MinDistanceFromMission) then + if ( (_x distance2D _coords) < _minDistFromMission) exitWith + { + _FindNew = true; + }; + } forEach blck_ActiveMissionCoords; + }; + if !(_findNew) then + { + { + if ((_x distance2D _coords) < blck_minDistanceToBases) then { _findNew = true; - //diag_log format["-# findSafePosn.sqf -# Too Close to Old Mission element: %1", _x]; }; + }forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases]; + }; + if !(_findNew) then + { + { + _townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0]; + if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith { + _findNew = true; + }; + } forEach blck_townLocations; + }; + if !(_findNew) then + { + { + if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then + { + _findNew = true; + }; + }forEach playableUnits; + }; + if (_findNew) then + { + if (_tries in [3,6,9,12,15,18,21]) then + { + _minDistFromMission = _minDistFromMission * _weightMissions; + _minDistFromBases = _minDistFromBases * _weightBases; + _minSistanceFromPlayers = _minSistanceFromPlayers * _minSistanceFromPlayers; + _minDistanceFromTowns = _minDistanceFromTowns * _weightTowns; }; - } forEach blck_recentMissionCoords; + if (_tries > 25) then + { + _findNew = false; + }; + }; +}; +if ((count _coords) > 2) then +{ + private["_temp"]; + _temp = [_coords select 0, _coords select 1]; + _coords = _temp; +}; +_coords; + +/* +while {_findNew} do { + + // test for water nearby _dist = 100; @@ -82,34 +134,6 @@ while {_findNew} do { _i = 361; }; }; - // check that missions spawn at least 1 kkm from towns - { - _townPos = [((locationPosition _x) select 0), ((locationPosition _x) select 1), 0]; - if (_townPos distance2D _coords < blck_minDistanceFromTowns) exitWith { - _findNew = true; - }; - } forEach blck_townLocations; - - // check for nearby plot pole/freq jammer within 800 meters - _mod = call blck_fnc_getModType; - _pole = ""; - if (_mod isEqualTo "Epoch") then {_pole = "PlotPole_EPOCH"}; - if (_mod isEqualTo "Exile") then {_pole = "Exile_Construction_Flag_Static"}; - //diag_log format["_fnc_findSafePosn:: -- >> _mod = %1 and _pole = %2",_mod,_pole]; - { - if ((_x distance2D _coords) < blck_minDistanceToBases) then - { - _findNew = true; - }; - }forEach nearestObjects[blck_mapCenter, [_pole], blck_minDistanceToBases]; - - // check to be sure we do not spawn a mission on top of a player. - { - if (isPlayer _x && (_x distance2D _coords) < blck_minDistanceToPlayer) then - { - _findNew = true; - }; - }forEach playableUnits; if (toLower(worldName) isEqualTo "taviana") then { @@ -121,10 +145,4 @@ while {_findNew} do { _tries = _tries + 1; }; -if ((count _coords) > 2) then -{ - private["_temp"]; - _temp = [_coords select 0, _coords select 1]; - _coords = _temp; -}; -_coords; + 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 0d2946b..c852ac7 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf @@ -83,7 +83,7 @@ if !(isNull _groupSpawned) then }; #endif //params["_pos","_aiGroup",_skillLevel,_uniforms, _headGear,_vests,_backpacks,_Launcher,_weaponList,_sideArms,_scuba]; - [_pos,_groupSpawned,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba, _antiGlitch] call blck_fnc_spawnUnit; + [_pos,_groupSpawned,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit; }; _groupSpawned selectLeader (units _groupSpawned select 0); // params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_pattern",["MOVE","SAD"]]]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner - Copy.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner - Copy.sqf index cd1cee5..abbce3e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner - Copy.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner - Copy.sqf @@ -47,124 +47,20 @@ if (isNil "_hostageConfig") then {_hostageConfig = []}; if (isNil "_enemyLeaderConfig") then {_enemyLeaderConfig = []}; if (isNil "_useMines") then {_useMines = blck_useMines;}; if (isNil "_weaponList") then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; -if (isNil "_sideArms") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_sideArms = blck_Pistols_blue}; - case "red": {_sideArms = blck_Pistols_red}; - case "green": {_sideArms = blck_Pistols_green}; - case "orange": {_sideArms = blck_Pistols_orange}; - default {_sideArms = blck_Pistols}; - }; -}; - -if (isNil "_uniforms") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_uniforms = blck_SkinList_blue}; - case "red": {_uniforms = blck_SkinList_red}; - case "green": {_uniforms = blck_SkinList_green}; - case "orange": {_uniforms = blck_SkinList_orange}; - default {_uniforms = blck_SkinList}; - }; -}; - -if (isNil "_headGear") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_headGear = blck_headgear_blue}; - case "red": {_headGear = blck_headgear_red}; - case "green": {_headGear = blck_headgear_green}; - case "orange": {_headGear = blck_headgear_orange}; - default {_headGear = blck_headgear}; - }; -}; - -if (isNil "_vests") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_vests = blck_vests_blue}; - case "red": {_vests = blck_vests_red}; - case "green": {_vests = blck_vests_green}; - case "orange": {_vests = blck_vests_orange}; - default {_vests = blck_vests}; - }; -}; - -if (isNil "_backpacks") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_backpacks = blck_backpacks_blue}; - case "red": {_backpacks = blck_backpacks_red}; - case "green": {_backpacks = blck_backpacks_green}; - case "orange": {_backpacks = blck_backpacks_orange}; - default {_backpacks = blck_backpacks}; - }; -}; -if (isNil "_chanceHeliPatrol") then -{ - switch (toLower(_aiDifficultyLevel)) do - { - case "blue": {_chanceHeliPatrol = blck_chanceHeliPatrolBlue}; - case "red": {_chanceHeliPatrol = blck_chanceHeliPatrolRed}; - case "green": {_chanceHeliPatrol = blck_chanceHeliPatrolGreen}; - case "orange": {_chanceHeliPatrol = blck_chanceHeliPatrolOrange}; - default {_chanceHeliPatrol = 0}; - }; -}; -if (isNil "_noChoppers") then -{ - switch (toLower(_aiDifficultyLevel)) do - { - case "blue": {_noChoppers = blck_noPatrolHelisBlue}; - case "red": {_noChoppers = blck_noPatrolHelisRed}; - case "green": {_noChoppers = blck_noPatrolHelisGreen}; - case "orange": {_noChoppers = blck_noPatrolHelisOrange}; - default {_noChoppers = 0}; - }; -}; -if (isNil "_chancePara") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_chancePara = blck_chanceParaBlue}; - case "red": {_chancePara = blck_chanceParaRed}; - case "green": {_chancePara = blck_chanceParaGreen}; - case "orange": {_chancePara = blck_chanceParaOrange}; - default {_chancePara = 0}; - }; -}; -if (isNil "_missionHelis") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_missionHelis = blck_patrolHelisBlue}; - case "red": {_missionHelis = blck_patrolHelisRed}; - case "green": {_missionHelis = blck_patrolHelisGreen}; - case "orange": {_missionHelis = blck_patrolHelisOrange}; - default {_missionHelis = blck_patrolHelisBlue}; - }; -}; -if (isNil "_noPara") then -{ - switch (toLower (_aiDifficultyLevel)) do - { - case "blue": {_noPara = blck_noParaBlue}; - case "red": {_noPara = blck_noParaRed}; - case "green": {_noPara = blck_noParaGreen}; - case "orange": {_noPara = blck_noParaOrange}; - default {_noPara = 0}; - }; -}; +if (isNil "_sideArms") then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms}; +if (isNil "_uniforms") then {_uniforms = [_aiDifficultyLevel] call blck_fnc_selectAIUniforms}; +if (isNil "_headGear") then {_headGear = [_aiDifficultyLevel] call blck_fnc_selectAIHeadgear}; +if (isNil "_vests") then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests}; +if (isNil "_backpacks") then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks}; +if (isNil "_chanceHeliPatrol") then {_chanceHeliPatrol = [_aiDifficultyLevel] call blck_fnc_selectChanceHeliPatrol}; +if (isNil "_noChoppers") then {_noChoppers = [_aiDifficultyLevel] call blck_fnc_selectNumberAirPatrols}; +if (isNil "_chancePara") then {_chancePara = [_aiDifficultyLevel] call blck_fnc_selectChanceParatroops}; +if (isNil "_missionHelis") then {_missionHelis = [_aiDifficultyLevel] call blck_fnc_selectMissionHelis}; +if (isNil "_noPara") then {_noPara = [_aiDifficultyLevel] call blck_fnc_selectNumberParatroops}; if (isNil "_chanceLoot") then {_chanceLoot = 1.0}; //0.5}; if (isNil "_paraTriggerDistance") then {_paraTriggerDistance = 400;}; -if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green}; -if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed}; +if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green}; // Add diffiiculty based settings +if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed}; // Add difficulty based settings _objects = []; 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 abbce3e..e1f2744 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -428,8 +428,16 @@ private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; _x setVariable["crateSpawnPos", (getPos _x)]; } forEach _crates; -private["_thresholdPercentageKilled","_result","_minPercentageKilled"]; -_thresholdPercentageKilled = (1-blck_killPercentage); +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}; +}; + while {_missionComplete isEqualTo -1} do { #ifdef blck_debugMode @@ -442,15 +450,11 @@ while {_missionComplete isEqualTo -1} do if (_endIfAIKilled) then { - _result = [_blck_AllMissionAI,1] call blck_fnc_countAliveAI; - // _result is an array of [no alive, total spawned]; - //private _noneAlive = if (_result select 0 isEqualTo 0) then {true} else {false}; - //private _aiCountBelowThreshold = if ( (_result select 0)/(_result select 1) < _thresholdPercentageKilled) then {true} else {false}; - //diag_log format["_fnc_missionSpawner: _noneAlive = %1 | _result = %2 | PercentageKilled = %3",_noneAlive,_result,(_result select 0)/(_result select 1)]; - if ((_result select 0) < 1 || ((_result select 0)/(_result select 1)) < _thresholdPercentageKilled ) then {_missionComplete = 1}; + if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {_missionComplete = 1}; }; if (_spawnCratesTiming isEqualTo "atMissionSpawn") then { + // Re-evaluate this - may not need the forEach { if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith { @@ -463,27 +467,27 @@ while {_missionComplete isEqualTo -1} do { if !(alive _assetSpawned) then { - _missionComplete = 1 + _missionComplete = 1; } else { - //if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1}; - _result = [_blck_AllMissionAI, 1] call blck_fnc_countAliveAI; - // _result is an array of [no alive, total spawned]; - //private _noneAlive = if (_result select 0 isEqualTo 0) then {true} else {false}; - //private _aiCountBelowThreshold = if ((_result select 0)/(_result select 1) < _thresholdPercentageKilled) then {true} else {false}; - //diag_log format["_fnc_missionSpawner: _noneAlive = %1 | _result = %2 | PercentageKilled = %3",_noneAlive,_result,(_result select 0)/(_result select 1)]; - if (((_result select 0)/(_result select 1)) < 0.18) then + + if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then { - if (_assetSpawned getVariable["blck_unguarded",0] isEqualTo 0) then {_assetSpawned setVariable["blck_unguarded",1,true]}; - if ((_assetSpawned getVariable["blck_AIState",0] > 0)) then { - _missionComplete = 1: + if ((_assetSpawned getVariable["blck_unguarded",0]) isEqualTo 0) then + { + _assetSpawned setVariable["blck_unguarded",1,true]; + }; + + if ((_assetSpawned getVariable["blck_AIState",0]) isEqualTo 1) then + { + _missionComplete = 1; _assetSpawned allowdamage false; }; + }; }; }; if (_spawnPara) then { - if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then { _spawnPara = false; // The player gets one try to spawn these. diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf index d069c65..c05ae93 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf @@ -32,19 +32,11 @@ _newObjs = []; { _simDam = _x select 3; }; - _obj = (_x select 0) createVehicle [0,0,0]; - //diag_log format["_fnc_spawnBaseObjects: _obj = %1",_obj]; + //_spawnPos = (_center vectorAdd (_x select 1)); + //_obj = (_x select 0) createVehicle [0,0,0]; + _obj = createVehicle[(_x select 0),_center vectorAdd (_x select 1),[],0,"CAN_COLLIDE"]; _newObjs pushback _obj; - //diag_log format["_fnc_spawnBaseObjects: _center = %1 and _x select 1 = %2",_center,_x select 1]; - _spawnPos = (_center vectorAdd (_x select 1)); - if (surfaceIsWater _spawnPos) then - { - _obj setPosASL _spawnPos; - //diag_log "_fnc_spawnBaseObjects: detected surface == water"; - } else { - _obj setPosATL _spawnPos; - //diag_log "_fnc_spawnBaseObjects: detected surface = Land"; - }; + _obj setDir (_x select 2); _obj enableDynamicSimulation (_simDam select 0); _obj allowDamage (_simDam select 1); 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 bdc238d..2076b85 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -15,14 +15,14 @@ params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]]; private["_objects","_wreck","_dir","_dirOffset"]; _objects = []; -_wreck = createVehicle ["Flag_AAF_F", _coords, [], 25, "NONE"]; +//_wreck = createVehicle ["Flag_AAF_F", _coords, [], 25, "NONE"]; _objects pushBack _wreck; { //Random Position Objects based on distance in array // https://community.bistudio.com/wiki/BIS_fnc_findSafePos _pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos; - _wreck = createVehicle[_x, _pos, [], 25, "NONE"]; - _wreck allowDamage false; + _wreck = createVehicle[_x, _pos, [], 0, "CAN_COLLIDE"]; + _wreck allowDamage true; _wreck enableSimulation false; _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; 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 6849c63..b542695 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf @@ -51,7 +51,7 @@ if (blck_modType isEqualTo "Exile") then case "orange":{_unit setVariable["ExileMoney",8 + floor(random(blck_maxMoneyOrange)),true];}; }; }; -_unit = _aiGroup createUnit[_unitType,_pos,[],5,"FORM"]; +_unit = _aiGroup createUnit[_unitType,_pos,[],10,"FORM"]; //_unit setPos ( _pos findEmptyPosition [0.1,3,(typeOf _unit)]); /* diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 5ed9a6f..4021752 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -83,7 +83,7 @@ blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_s 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_missionAIareDead = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionAIareDead.sqf"; -blck_fnc_countAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_countAliveAI.sqf"; +//blck_fnc_countAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_countAliveAI.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"; diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index 226c604..5a3c4d6 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"; -blck_debugON = true; +blck_debugON = false; blck_debugLevel = 0; // Sets level of detail for debugging info - WIP. blck_minFPS = 8; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 3d22bc1..ffe225f 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -363,7 +363,7 @@ blck_configsExileLoaded = nil; if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";}; }; - if (true /*blck_useConfigsGeneratedLoadouts*/) then + if (blck_useConfigsGeneratedLoadouts) then { diag_log format["[blckeagles] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index f1540cb..f669947 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,10 +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]; @@ -29,6 +26,7 @@ switch (_world) do { 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 @@ -82,9 +80,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 = 2; // Daytime time accelearation + blck_timeAccelerationDusk = 6; // Dawn/dusk time accelearation + blck_timeAccelerationNight = (12); // Nighttim time acceleration }; case "esseker": { @@ -131,13 +129,99 @@ switch (toLower (worldName)) do 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 = -4; // 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] + ]; + */ +}; -/* - You can define configs for additional mods or loadouts here -*/ -/* blck_CUPWeapons = [ "CUP_lmg_L7A2", "CUP_lmg_L110A1", @@ -1266,4 +1350,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_custom_config_RC.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf new file mode 100644 index 0000000..f1540cb --- /dev/null +++ b/@GMS/addons/custom_server/Configs/blck_custom_config_RC.sqf @@ -0,0 +1,1269 @@ + +/* + 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 17e4008..a22f1b3 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -29,6 +29,5 @@ #define groupSpawned 2 #define timesSpawned 3 #define respawnAt 4 -#define antiGlitchOn 1 diff --git a/@GMS/addons/custom_server/Missions/Blue/hostage1.sqf b/@GMS/addons/custom_server/Missions/Blue/hostage1.sqf index cb389b7..2fc0c51 100644 --- a/@GMS/addons/custom_server/Missions/Blue/hostage1.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/hostage1.sqf @@ -24,42 +24,61 @@ _markerColor = "ColorBlue"; _markerMissionName = "Rescue Hostage"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" _missionLandscape = [ - ["Flag_AAF_F",[-10.6914,-10.541,0],0,[true,false]], - ["Land_SM_01_shelter_wide_F",[-6.29883,9.57617,0],0,[true,false]], - ["Land_ContainerLine_01_F",[-5.54492,40.8184,0],0,[true,false]], - ["Land_ContainerLine_01_F",[-6.92578,-38.2188,0],0,[true,false]], - ["Land_ContainerLine_01_F",[-65.8438,-28.4023,0],90,[true,false]], - ["Land_ContainerLine_01_F",[-66.0664,21.3496,0],90,[true,false]], - ["Land_ContainerLine_01_F",[195.047,-23.9395,0],87.9345,[true,false]], - ["Land_ContainerLine_01_F",[42.6172,-23.9395,0],90.5197,[true,false]], - ["Land_ContainerLine_01_F",[42.8398,27.5977,0],270,[true,false]], - //["B_G_Soldier_AR_F",[-6.74219,-78.625,-0.00143886],0,[true,false]], - //["B_G_Soldier_AR_F",[-86.3281,-5.14453,-0.00143886],0,[true,false]], - //["B_G_Soldier_AR_F",[61.4609,-1.92773,-0.00143838],0,[true,false]], - //["B_G_Soldier_AR_F",[-43.3359,54.0898,-0.00143838],0,[true,false]], - //["B_Soldier_F",[70.5156,-90.3867,-2.75806],0,[true,false]], - //["B_Soldier_F",[70.5156,-90.3867,-2.75806],0,[true,false]], - //["B_MRAP_01_hmg_F",[70.5156,-90.3867,4.76837e-007],0,[true,false]], - //["B_Soldier_F",[-78.834,72.0566,-2.20595],0,[true,false]], - //["B_MRAP_01_F",[-78.834,72.0566,4.76837e-007],0,[true,false]], - ["Campfire_burning_F",[-8.68555,-2.57813,0],0,[true,false]], - ["Land_ChairPlastic_F",[-2.36719,16.1875,0],0,[true,false]], - ["Land_ChairPlastic_F",[-2.99609,13.2813,0],0,[true,false]], - ["Land_ChairPlastic_F",[-2.84766,10.3398,0],0,[true,false]], - ["Land_ChairPlastic_F",[-3.06055,8.08203,0],0,[true,false]], - ["Land_ChairPlastic_F",[-2.70313,5.98047,0],0,[true,false]], - ["Land_Stone_4m_F",[-5.71484,21.2051,0],0,[true,false]], - ["Land_Stone_4m_F",[-1.30469,21.2266,0],0,[true,false]], - ["Land_Stone_4m_F",[-10.1836,21.166,0],0,[true,false]], - ["Land_Stone_4m_F",[3.01953,10.2051,0],90.8324,[true,false]], - ["Land_Stone_4m_F",[2.97656,5.79492,0],90.8324,[true,false]], - ["Land_Stone_4m_F",[3.04492,14.6738,0],90.8324,[true,false]], - ["Land_Stone_4m_F",[-6.16992,-0.855469,0],0,[true,false]], - ["Land_Stone_4m_F",[-1.75977,-0.833984,0],0,[true,false]], - ["Land_Stone_4m_F",[-10.6387,-0.894531,0],0,[true,false]], - ["Land_Stone_4m_F",[-15.4609,9.93164,0],90.8324,[true,false]], - ["Land_Stone_4m_F",[-15.5039,5.52148,0],90.8324,[true,false]], - ["Land_Stone_4m_F",[-15.4355,14.4004,0],90.8324,[true,false]] + ["Flag_AAF_F",[0.935547,-24.3027,0],0,[true,false]], + ["Land_SM_01_shelter_wide_F",[0.298828,4.63867,0],0,[true,false]], + ["Campfire_burning_F",[-2.08789,-7.51563,0],0,[true,false]], + ["Land_Stone_8m_F",[-10.0313,-6.46875,0],268.936,[true,false]], + ["Land_Stone_8m_F",[-10.2402,1.90039,0],268.936,[true,false]], + ["Land_Stone_8m_F",[-10.3984,10.1035,0],268.936,[true,false]], + ["Land_Stone_8m_F",[10.125,-4.10156,0],270,[true,false]], + ["Land_Stone_8m_F",[10.0723,4.26953,0],270,[true,false]], + ["Land_Stone_8m_F",[10.0664,12.4746,0],270,[true,false]], + ["Land_Stone_8m_F",[7.95117,20.252,0],0,[true,false]], + ["Land_Stone_8m_F",[-0.314453,20.2656,0],0,[true,false]], + ["Land_Stone_8m_F",[-8.54102,20.3066,0],0,[true,false]], + ["Land_Stone_8m_F",[8.16016,-15.1113,0],0,[true,false]], + ["Land_Stone_8m_F",[-0.105469,-15.0977,0],0,[true,false]], + ["Land_Stone_8m_F",[-8.33203,-15.0566,0],0,[true,false]], + ["Land_HBarrierWall6_F",[-50.875,38.2676,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-50.3516,21.4355,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-50.6055,29.8965,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-49.4141,1.33203,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-49.918,13.0254,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-48.5371,-15.6992,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-49.0938,-7.12305,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-47.7773,-28.3535,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[-47.1641,-36.5547,0],89.1786,[true,false]], + ["Land_HBarrierWall6_F",[50.0566,-17.4785,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[50.1484,-25.9414,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[49.5039,2.64063,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[49.7852,-9.06055,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[48.9531,19.6855,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[49.3457,11.0996,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[48.4355,32.3516,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[47.9785,40.5625,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[50.2598,-34.3164,0],270.274,[true,false]], + ["Land_HBarrierWall6_F",[44.7031,55.5176,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[27.8652,55.1797,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[36.3281,55.3418,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[7.75195,54.4629,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[19.4512,54.8379,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-9.28711,53.7734,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-0.705078,54.2363,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-21.9492,53.1523,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-30.1563,52.6289,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-38.5195,52.3809,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-46.9727,52.0313,0],179.807,[true,false]], + ["Land_HBarrierWall6_F",[-44.418,-50.7617,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[-27.5898,-50.1348,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[-36.0488,-50.4434,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[-7.49023,-49.0723,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[-19.1816,-49.6484,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[9.5332,-48.0918,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[0.960938,-48.7012,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[22.1836,-47.252,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[30.3809,-46.5879,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[38.6406,-46.1328,0],358.823,[true,false]], + ["Land_HBarrierWall6_F",[47.0762,-45.5215,0],358.823,[true,false]] ]; // list of objects to spawn as landscape; // list of objects to spawn as landscape _hostageConfig = ["C_man_polo_6_F", @@ -92,10 +111,10 @@ _missionLootVehicles = [ _missionGroups = [ //_x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"]; - [[26.9961,-29.9551,-0.00143886],3,3,"Blue",10,20], - [[32.2461,33.0605,-0.00143886],3,3,"Blue",10,20], - [[-35.6035,32.1855,-0.00143886],3,3,"Blue",10,20], - [[-47.4219,-19.8906,-0.00143886],3,3,"Blue",10,20] + //[[26.9961,-29.9551,-0.00143886],3,3,"Blue",10,20], + //[[32.2461,33.0605,-0.00143886],3,3,"Blue",10,20], + //[[-35.6035,32.1855,-0.00143886],3,3,"Blue",10,20], + [[-47.4219,-19.8906,-0.00143886],1,1,"Blue",10,20] ]; // Can be used to define spawn positions of AI patrols _missionEmplacedWeapons = [ diff --git a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf index dd4eded..b329895 100644 --- a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf +++ b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf @@ -14,8 +14,8 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; _pathBlue = "Blue"; -//_missionListBlue = ["resupplyCamp"]; -_missionListBlue = ["default"/*,"default2"/*,"medicalCamp","redCamp","resupplyCamp"*/]; +_missionListBlue = ["hostage1"]; +//_missionListBlue = ["default"/*,"default2"/*,"medicalCamp","redCamp","resupplyCamp"*/]; _pathRed = "Red"; //_missionListRed = ["resupplyCamp"]; diff --git a/@GMS/addons/custom_server/Missions/Red/medicalCamp.sqf b/@GMS/addons/custom_server/Missions/Red/medicalCamp.sqf index ac57800..07f2762 100644 --- a/@GMS/addons/custom_server/Missions/Red/medicalCamp.sqf +++ b/@GMS/addons/custom_server/Missions/Red/medicalCamp.sqf @@ -29,19 +29,19 @@ _missionLandscape = [ ["Land_dp_transformer_F",[1.698242,-10.4668,-0.00763702],271.32,[true,true]], ["Land_Wreck_BRDM2_F",[1.37012,13.498,0.00109863],184.487,[true,true]], ["Land_BagBunker_Small_F",[18.4512,-3.66406,0.00780487],305.003,[true,true]], - ["Land_Cargo_HQ_V1_F",[-20.1367,11.7539,0],90.8565,[true,false]], + ["Land_Cargo_HQ_V1_F",[-20.1367,11.7539,0],90.8565,[true,true]], ["Land_BagBunker_Small_F",[-22.707,-3.75586,-0.0130234],44.9901,[true,true]], ["Land_Cargo_House_V1_F",[24.3584,7.45313,0.00111389],91.6329,[true,true]], - ["StorageBladder_01_fuel_forest_F",[1.29492,29.3184,0.000999451],179.65,[false,false]], - ["Land_GarbageBags_F",[-9.45996,31.252,0.02005],184.595,[false,false]], - ["Land_GarbageBags_F",[-13.0459,32.668,-0.0283051],184.595,[false,false]], - ["Land_GarbageBags_F",[-11.5957,33.125,-0.598007],184.595,[false,false]], - ["Land_GarbageBags_F",[-8.98145,34.5801,-0.00514221],184.592,[false,false]], - ["Land_Addon_02_V1_ruins_F",[24.8369,24.6582,-0.00820923],90.9637,[false,false]], - ["Land_GarbageBags_F",[-10.9443,35.0449,0.577057],184.592,[false,false]], - ["Land_Cargo20_military_green_F",[14.6533,32.9004,0.000480652],90.0989,[false,false]], - ["Land_BagBunker_Small_F",[-23.0186,28.6738,-0.0271301],120.012,[false,false]], - ["Land_BagBunker_Small_F",[37.1504,34.5742,0.0146866],255,[false,false]] + ["StorageBladder_01_fuel_forest_F",[1.29492,29.3184,0.000999451],179.65,[false,true]], + ["Land_GarbageBags_F",[-9.45996,31.252,0.02005],184.595,[false,true]], + ["Land_GarbageBags_F",[-13.0459,32.668,-0.0283051],184.595,[false,true]], + ["Land_GarbageBags_F",[-11.5957,33.125,-0.598007],184.595,[false,true]], + ["Land_GarbageBags_F",[-8.98145,34.5801,-0.00514221],184.592,[false,true]], + ["Land_Addon_02_V1_ruins_F",[24.8369,24.6582,-0.00820923],90.9637,[false,true]], + ["Land_GarbageBags_F",[-10.9443,35.0449,0.577057],184.592,[false,true]], + ["Land_Cargo20_military_green_F",[14.6533,32.9004,0.000480652],90.0989,[false,true]], + ["Land_BagBunker_Small_F",[-23.0186,28.6738,-0.0271301],120.012,[false,true]], + ["Land_BagBunker_Small_F",[37.1504,34.5742,0.0146866],255,[false,true]] ]; // list of objects to spawn as landscape _missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. _missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. diff --git a/@GMS/addons/custom_server/Missions/Red/redCamp.sqf b/@GMS/addons/custom_server/Missions/Red/redCamp.sqf index 67acded..52476b6 100644 --- a/@GMS/addons/custom_server/Missions/Red/redCamp.sqf +++ b/@GMS/addons/custom_server/Missions/Red/redCamp.sqf @@ -27,48 +27,48 @@ _markerMissionName = "Bandit Camp"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" _missionLandscape = [ ["Flag_AAF_F",[0,0,0],0,[false,false]], - ["Land_CampingChair_V1_F",[1.32227,2.07813,8.2016e-005],108.293,[false,false]], - ["Land_CampingChair_V1_F",[-2.01465,2.91992,3.05176e-005],236.049,[false,false]], - ["FirePlace_burning_F",[0.0302734,4.26563,2.47955e-005],359.997,[false,false]], - ["Land_CampingChair_V1_F",[2.47168,4.21484,0.000102997],108.293,[false,false]], - ["Land_CampingChair_V1_F",[-1.86816,5.07422,3.05176e-005],319.489,[false,false]], - ["Land_CampingChair_V1_F",[0.915039,6.20898,1.71661e-005],51.7207,[false,false]], - ["Land_Sleeping_bag_brown_F",[8.27441,0.609375,0.00414658],98.0314,[false,false]], - ["Land_Sleeping_bag_brown_F",[8.27344,2.76758,0.00447083],91.7928,[false,false]], - ["Land_Sleeping_bag_brown_F",[7.9082,4.95898,-0.00173759],85.1176,[false,false]], - ["Land_Garbage_square3_F",[-4.95508,8.24023,0.00018692],60.0024,[false,false]], - ["Land_Camping_Light_F",[8.92773,3.80273,-0.000205994],344.236,[false,false]], - ["Land_Sleeping_bag_brown_F",[7.32129,7.55859,-0.0051899],60.1216,[false,false]], - ["Land_TentDome_F",[-9.75488,3.13477,0.00125313],146.574,[false,false]], - ["Land_WoodPile_F",[-0.322266,9.97266,-0.000553131],35.0017,[false,false]], - ["Land_Razorwire_F",[-0.0185547,-9.84961,0.0752335],1.7831,[false,false]], - ["Land_CampingChair_V1_folded_F",[3.8584,9.59375,0],60,[false,false]], - ["Land_TentDome_F",[-8.76855,7.85156,-0.00471497],207.522,[false,false]], - ["Land_BagFence_Round_F",[8.99707,-8.01367,-0.00951576],326.002,[false,false]], - ["Land_BagFence_Round_F",[-10.8164,-6.33594,-0.0038681],59.9991,[false,false]], - ["Land_TentDome_F",[-7.12207,11.8398,-0.00328445],231.101,[false,false]], - ["Land_CampingTable_small_F",[-4.62598,13.2754,7.62939e-005],344.243,[false,false]], - ["Land_Camping_Light_F",[-4.5957,13.332,0.687943],344.243,[false,false]], - ["Land_Razorwire_F",[15.5459,0.605469,0.145557],102.505,[false,false]], - ["Land_BagFence_Round_F",[7.16211,13.8516,0.000429153],221.639,[false,false]], - ["Land_Razorwire_F",[15.9678,8.35938,0.0635166],85.7459,[false,false]], - ["Land_Razorwire_F",[-19.1553,-1.61328,-0.0238552],70.0997,[false,false]], - ["Land_Razorwire_F",[-12.3906,-15.4492,0.0128002],19.2641,[false,false]], - ["Land_Razorwire_F",[-19.4629,5.67969,0.0492821],102.505,[false,false]], - ["Land_BagFence_Round_F",[-11.2891,17.6777,-0.00759888],128.563,[false,false]], - ["Land_Razorwire_F",[15.2949,-14.3027,0.0502853],139.224,[false,false]], - ["Land_Razorwire_F",[15.2852,16.2656,-0.0208111],85.1363,[false,false]], - ["Land_Razorwire_F",[4.80273,21.8223,-0.0563145],49.2133,[false,false]], - ["Land_Razorwire_F",[-17.7891,13.4863,-0.0646877],102.5,[false,false]], - ["Land_Razorwire_F",[-14.7109,20.2871,0.0674477],306.189,[false,false]], - ["Land_BagFence_Round_F",[25.3975,-6.08008,0.00466537],272.26,[false,false]], - ["Land_Wreck_Truck_F",[26.6289,12.2441,0.00333214],344.243,[false,false]], - ["Land_GarbageBags_F",[-24.9463,17.3066,0.000968933],60.0003,[false,false]], - ["Land_BagFence_Round_F",[11.167,28.832,-0.00405121],178.394,[false,false]], - ["Land_BagFence_Round_F",[-6.36914,30.6953,-0.000207901],178.378,[false,false]], - ["Land_Wreck_Hunter_F",[21.0391,25.9707,0.0118179],325.412,[false,false]], - ["Land_Camping_Light_F",[-33.7852,10.0371,0.000759125],344.235,[false,false]], - ["Land_BagFence_Round_F",[-34.3232,10.1035,0.00181007],60.0012,[false,false]] + ["Land_CampingChair_V1_F",[1.32227,2.07813,8.2016e-005],108.293,[false,true]], + ["Land_CampingChair_V1_F",[-2.01465,2.91992,3.05176e-005],236.049,[false,true]], + ["FirePlace_burning_F",[0.0302734,4.26563,2.47955e-005],359.997,[false,true]], + ["Land_CampingChair_V1_F",[2.47168,4.21484,0.000102997],108.293,[false,true]], + ["Land_CampingChair_V1_F",[-1.86816,5.07422,3.05176e-005],319.489,[false,true]], + ["Land_CampingChair_V1_F",[0.915039,6.20898,1.71661e-005],51.7207,[false,true]], + ["Land_Sleeping_bag_brown_F",[8.27441,0.609375,0.00414658],98.0314,[false,true]], + ["Land_Sleeping_bag_brown_F",[8.27344,2.76758,0.00447083],91.7928,[false,true]], + ["Land_Sleeping_bag_brown_F",[7.9082,4.95898,-0.00173759],85.1176,[false,true]], + ["Land_Garbage_square3_F",[-4.95508,8.24023,0.00018692],60.0024,[false,true]], + ["Land_Camping_Light_F",[8.92773,3.80273,-0.000205994],344.236,[false,true]], + ["Land_Sleeping_bag_brown_F",[7.32129,7.55859,-0.0051899],60.1216,[false,true]], + ["Land_TentDome_F",[-9.75488,3.13477,0.00125313],146.574,[false,true]], + ["Land_WoodPile_F",[-0.322266,9.97266,-0.000553131],35.0017,[false,true]], + ["Land_Razorwire_F",[-0.0185547,-9.84961,0.0752335],1.7831,[false,true]], + ["Land_CampingChair_V1_folded_F",[3.8584,9.59375,0],60,[false,true]], + ["Land_TentDome_F",[-8.76855,7.85156,-0.00471497],207.522,[false,true]], + ["Land_BagFence_Round_F",[8.99707,-8.01367,-0.00951576],326.002,[false,true]], + ["Land_BagFence_Round_F",[-10.8164,-6.33594,-0.0038681],59.9991,[false,true]], + ["Land_TentDome_F",[-7.12207,11.8398,-0.00328445],231.101,[false,true]], + ["Land_CampingTable_small_F",[-4.62598,13.2754,7.62939e-005],344.243,[false,true]], + ["Land_Camping_Light_F",[-4.5957,13.332,0.687943],344.243,[false,true]], + ["Land_Razorwire_F",[15.5459,0.605469,0.145557],102.505,[false,true]], + ["Land_BagFence_Round_F",[7.16211,13.8516,0.000429153],221.639,[false,true]], + ["Land_Razorwire_F",[15.9678,8.35938,0.0635166],85.7459,[false,true]], + ["Land_Razorwire_F",[-19.1553,-1.61328,-0.0238552],70.0997,[false,true]], + ["Land_Razorwire_F",[-12.3906,-15.4492,0.0128002],19.2641,[false,true]], + ["Land_Razorwire_F",[-19.4629,5.67969,0.0492821],102.505,[false,true]], + ["Land_BagFence_Round_F",[-11.2891,17.6777,-0.00759888],128.563,[false,true]], + ["Land_Razorwire_F",[15.2949,-14.3027,0.0502853],139.224,[false,true]], + ["Land_Razorwire_F",[15.2852,16.2656,-0.0208111],85.1363,[false,true]], + ["Land_Razorwire_F",[4.80273,21.8223,-0.0563145],49.2133,[false,true]], + ["Land_Razorwire_F",[-17.7891,13.4863,-0.0646877],102.5,[false,true]], + ["Land_Razorwire_F",[-14.7109,20.2871,0.0674477],306.189,[false,true]], + ["Land_BagFence_Round_F",[25.3975,-6.08008,0.00466537],272.26,[false,true]], + ["Land_Wreck_Truck_F",[26.6289,12.2441,0.00333214],344.243,[false,true]], + ["Land_GarbageBags_F",[-24.9463,17.3066,0.000968933],60.0003,[false,true]], + ["Land_BagFence_Round_F",[11.167,28.832,-0.00405121],178.394,[false,true]], + ["Land_BagFence_Round_F",[-6.36914,30.6953,-0.000207901],178.378,[false,true]], + ["Land_Wreck_Hunter_F",[21.0391,25.9707,0.0118179],325.412,[false,true]], + ["Land_Camping_Light_F",[-33.7852,10.0371,0.000759125],344.235,[false,true]], + ["Land_BagFence_Round_F",[-34.3232,10.1035,0.00181007],60.0012,[false,true]] ]; // list of objects to spawn as landscape _missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. _missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. diff --git a/@GMS/addons/custom_server/Missions/Red/resupplyCamp.sqf b/@GMS/addons/custom_server/Missions/Red/resupplyCamp.sqf index 60eb706..6822a7f 100644 --- a/@GMS/addons/custom_server/Missions/Red/resupplyCamp.sqf +++ b/@GMS/addons/custom_server/Missions/Red/resupplyCamp.sqf @@ -27,12 +27,12 @@ _missionLandscapeMode = "precise"; // acceptable values are "none","random","pre _missionLandscape = [ ["Land_Cargo_Patrol_V1_F",[-29.41016,0.13477,-0.0224228],359.992,[true,true]], ["Land_Cargo_House_V1_F",[29.2988,-0.1,0.150505],54.9965,[true,true]], - ["CamoNet_INDP_big_F",[-20.4346,15.43164,-0.00395203],54.9965,[false,false]], - ["Land_BagBunker_Small_F",[-20.4346,15.43164,-0.0138168],119.996,[false,false]], - ["Land_BagBunker_Small_F",[-20.3604,-15.6035,-0.0130463],44.9901,[false,false]], - ["Land_BagBunker_Small_F",[18.4453,-15.791,0.00744629],305.003,[false,false]], - ["Land_BagBunker_Small_F",[18.3711,15.5703,0.0101624],254.999,[false,false]], - ["CamoNet_INDP_big_F",[18.3711,15.5703,-0.00395203],54.9965,[false,false]] + ["CamoNet_INDP_big_F",[-20.4346,15.43164,-0.00395203],54.9965,[false,true]], + ["Land_BagBunker_Small_F",[-20.4346,15.43164,-0.0138168],119.996,[false,true]], + ["Land_BagBunker_Small_F",[-20.3604,-15.6035,-0.0130463],44.9901,[false,true]], + ["Land_BagBunker_Small_F",[18.4453,-15.791,0.00744629],305.003,[false,true]], + ["Land_BagBunker_Small_F",[18.3711,15.5703,0.0101624],254.999,[false,true]], + ["CamoNet_INDP_big_F",[18.3711,15.5703,-0.00395203],54.9965,[false,true]] ]; // list of objects to spawn as landscape _missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. _missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorShips.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorShips.sqf index f10fc34..138bb6e 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorShips.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorShips.sqf @@ -47,7 +47,7 @@ _sm_groups = +blck_sm_surfaceShips; { _return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; //diag_log format["_fnc_monitorShips: _return = %1",_return]; - _group = group ((_return select 0) select 0); + _group = group ((_return select 1) select 0); _timesSpawned = _timesSpawned + 1; _groupSpawned = 1; _respawnAt = 0; diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorSubs.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorSubs.sqf index fcdd958..a3ca3a8 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorSubs.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorSubs.sqf @@ -47,6 +47,7 @@ _sm_groups = +blck_sm_submarines; { _return = [_pos,1,_difficulty,[_groupParameters],false,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,blck_backpacks,blck_UMS_weapons,blck_Pistols,true] call blck_fnc_spawnMissionVehiclePatrols; //diag_log format["_fnc_monitorSubs: _return = %1",_return]; + _group = group ((_return select 1) select 0); _timesSpawned = _timesSpawned + 1; _groupSpawned = 1; _respawnAt = 0; diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorVehicles.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorVehicles.sqf index 9590c9a..358cdc8 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorVehicles.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_monitorVehicles.sqf @@ -47,7 +47,8 @@ _sm_groups = +blck_sm_Vehicles; if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then { _return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; - _group = group (driver (_return select 0)); + //diag_log format["_fnc_monitorVehicles: _return = %1",_return]; + _group = group ((_return select 1) select 0); _timesSpawned = _timesSpawned + 1; _groupSpawned = 1; _respawnAt = 0; 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 d672418..b5b8ab0 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -15,8 +15,8 @@ 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"] ]; //diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2_Epoch.sqf b/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2_Epoch.sqf index 165749f..7a4b5bc 100644 --- a/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2_Epoch.sqf +++ b/@GMS/addons/custom_server/Missions/Static/missions/staticMissionExample2_Epoch.sqf @@ -55,10 +55,10 @@ _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]] + ["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 @@ -104,7 +104,7 @@ _aiGroupParameters = [ //[[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], - //[[22809.4,16929.5,5.33892],"blue",1, 75,0], + [[22809.4,16929.5,5.33892],"blue",1, 75,0], [[22819.4,16929.5,0],"red",1, 75, 10] ]; @@ -122,7 +122,7 @@ _noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined val // 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],"blue",1000,60] + [selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60] ]; // Change _useMines to true/false below to enable mission-specific settings. _useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. 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 032a983..9b444bb 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,8 +16,8 @@ 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"] ]; //diag_log "[blckeagls] GMS_UMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2_Epoch.sqf b/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2_Epoch.sqf index 380aef2..588ca8c 100644 --- a/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2_Epoch.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/staticMissions/staticMissionExample2_Epoch.sqf @@ -82,7 +82,7 @@ _missionLootBoxes = [ // Paste appropriate lines from M3EDEN editor output her _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] + ["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. @@ -110,14 +110,14 @@ _aiGroupParameters = [ _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",3, 75,900], - //[[22549,15288.9,0],"red",1, 75,0] + [[22613.5,15269.1,-4.28332],"red",3, 75,900], + [[22549,15288.9,0],"red",1, 75,0] ]; _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_Transport_01_F",[22570.1,15235.3,-4.49949],"red",75,60], - //["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",75,0] + ["B_T_Boat_Armed_01_minigun_F",[22578.6,15273.3,-0.0354593],"red",75,0] ]; //[ ["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). diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 9d34c9a..45feb71 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.83 Build 138"; +blck_version = "6.83 Build 141"; _blck_version = blck_version; -_blck_versionDate = "6-13-18 5:00 PM"; +_blck_versionDate = "6-16-18 5:00 PM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version; diff --git a/changeLog.sqf b/changeLog.sqf index 3fbe7db..98e0ee7 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -17,6 +17,10 @@ Added functions to despawn static patrols invehicles on on foot when no players Added: Static units will now be spawned with gear specific to difficulty level (blue, red, green, orange) as specified in blck_config.sqf etc. +Changed: Hostage missions redesigned to reduce chances of AI being glitched into containers and of mission objects flying about when spawned in. +Fixed: Collisions between objects at missions caused issues. +Fixed: Attempted a fix to reduce the chance that AI will spawn inside or under objects like rocks or containers. +Fixed: Captive missions now complete properly. Version 1.82 Build 134 Added: configs for blue, red, green and orange pistol, vest, backpack and uniforms (with thanks to Grahame for suggesting this change and doing most of the coding)