Compare commits
86 Commits
Developmen
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
096b4ff2c1 | ||
|
981347b3a4 | ||
|
893691037d | ||
|
eb28646ec8 | ||
|
3ac264fa75 | ||
|
63154379c8 | ||
|
f266afb22c | ||
|
48bc40ad4a | ||
|
f8b185c854 | ||
|
06e5c70933 | ||
|
2319276356 | ||
|
bec02396b1 | ||
|
047bf429f4 | ||
|
e54cbdba04 | ||
|
b3010e47a1 | ||
|
ceb9fb7bce | ||
|
8279a4f88b | ||
|
e843669d05 | ||
|
32649a3f27 | ||
|
0c9c115fdd | ||
|
efca35bcdd | ||
|
6d0171e99a | ||
|
a95a22b65c | ||
|
924512b299 | ||
|
11b951cfda | ||
|
3e9ecbce78 | ||
|
d626a21316 | ||
|
83e489c0c1 | ||
|
60b1d21d16 | ||
|
e11b9338ae | ||
|
388a3bc95d | ||
|
6abfb94813 | ||
|
07a6942744 | ||
|
3581aa9a1c | ||
|
c01794ccce | ||
|
a436aebf9c | ||
|
6cc3cef49d | ||
|
0842796307 | ||
|
ca7f403c70 | ||
|
bab528c796 | ||
|
6a8bb9e476 | ||
|
4d56107e15 | ||
|
dc82f9a362 | ||
|
1e6d4aeabe | ||
|
498e7e06e1 | ||
|
ccb6b17d10 | ||
|
66ae8eb113 | ||
|
99621912f6 | ||
|
d6b433d2e3 | ||
|
920f8bf526 | ||
|
ca03da88b1 | ||
|
571a65f1e9 | ||
|
7c88d1fead | ||
|
644925cbb8 | ||
|
2447c309c0 | ||
|
eb683730b5 | ||
|
6b3a295a2a | ||
|
bf9aeb4bc8 | ||
|
3e2f5ed99b | ||
|
844be883f7 | ||
|
b37c9eb77e | ||
|
b1864ec337 | ||
|
18bd169a76 | ||
|
4cd5fbe141 | ||
|
c86375c4d4 | ||
|
507530f5a1 | ||
|
bbbd73a18e | ||
|
a1a39799e4 | ||
|
d2d0325498 | ||
|
242d1ab23c | ||
|
bb119d2808 | ||
|
3e06a0d2fd | ||
|
ca4ec19ddf | ||
|
9d061e7e40 | ||
|
7afa108cba | ||
|
0e4198f05b | ||
|
b3bad01260 | ||
|
6f9b41d5b5 | ||
|
1203f03044 | ||
|
873026090d | ||
|
a62b198102 | ||
|
e582d80a8e | ||
|
cece2b222b | ||
|
6ab978a7e7 | ||
|
f59cf1e42e | ||
|
0584f61c97 |
BIN
@GMS/addons/custom_server.pbo.bak
Normal file
BIN
@GMS/addons/custom_server.pbo.bak
Normal file
Binary file not shown.
@ -11,27 +11,13 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private["_mapCenter","_waterPos","_priorUMSpositions","_maxDistance"];
|
||||
|
||||
switch (toLower worldName) do
|
||||
{
|
||||
case "altis": {_mapCenter = [15000,19000,0];_maxDistance = 20000};
|
||||
case "tanoa": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 10000};
|
||||
case "malden": {_mapCenter = [6000,7000,0];_maxDistance = 5500};
|
||||
case "stratis": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 5000};
|
||||
case "namalsk": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 5000};
|
||||
case "taviana": {_mapCenter = [12000,12000,0];_maxDistance = 12000};
|
||||
case "napf" : {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 12000};
|
||||
case "lythium": {_mapCenter = [10000,10000,0]; _maxDistance = 6000;};
|
||||
case "vt7": {_mapCenter = [9000,9000,0]; _maxDistance = 9000};
|
||||
default {_mapCenter = [6000,6000,0]; _maxDistance = 6000;};
|
||||
};
|
||||
|
||||
private _evaluate = true;
|
||||
while {_evaluate} do
|
||||
{
|
||||
_waterPos = [
|
||||
_mapCenter, // center of search area
|
||||
blck_mapCenter, // center of search area
|
||||
2, // min distance to search
|
||||
_maxDistance, // max distance to search
|
||||
blck_maxSeaSearchDistance, // max distance to search
|
||||
0, // distance to nearest object
|
||||
2, // water mode [2 = water only]
|
||||
25, // max gradient
|
||||
|
@ -40,7 +40,7 @@ for "_i" from 1 to (count blck_recentMissionCoords) do
|
||||
|
||||
private _waterMode = 0;
|
||||
private _shoreMode = 0;
|
||||
private _maxGrad = 0.20;
|
||||
private _maxGrad = blck_maxGradient;
|
||||
private _minObjDist = 30;
|
||||
private _searchDist = blck_mapRange / 2;
|
||||
private _coords = [];
|
||||
@ -164,7 +164,7 @@ while {_coords isEqualTo []} do
|
||||
_minDistanceRecentMissions = _minDistanceRecentMissions * _weightRecentMissions;
|
||||
_coords = [];
|
||||
};
|
||||
[format["_fnc_findSafePosn(140) end of cycle logging: _tries = %1 | _coords = %2 | _findNew = %3",_tries,_coords,_findNew]] call blck_fnc_log;
|
||||
//[format["_fnc_findSafePosn(140) end of cycle logging: _tries = %1 | _coords = %2 | _findNew = %3",_tries,_coords,_findNew]] call blck_fnc_log;
|
||||
};
|
||||
|
||||
if ((count _coords) > 2) then
|
||||
@ -173,7 +173,7 @@ if ((count _coords) > 2) then
|
||||
_temp = [_coords select 0, _coords select 1];
|
||||
_coords = _temp;
|
||||
};
|
||||
[format["_fnc_findSafePosn(148) final logging: _elapsedTime %3 | _tries = %1 | _coords = %2",_tries,_coords,diag_tickTime - _startTime]] call blck_fnc_log;
|
||||
//[format["_fnc_findSafePosn(148) final logging: _elapsedTime %3 | _tries = %1 | _coords = %2",_tries,_coords,diag_tickTime - _startTime]] call blck_fnc_log;
|
||||
_coords;
|
||||
|
||||
|
||||
|
@ -71,8 +71,6 @@ while {true} do
|
||||
};
|
||||
if (diag_tickTime > _timer5min) then
|
||||
{
|
||||
_activeScripts = diag_activeScripts;
|
||||
|
||||
[
|
||||
format["Timstamp %8 |Dynamic Missions Running %1 | Vehicles %2 | Groups %3 | Missions Run %4 | Server FPS %5 | Server Uptime %6 Min",
|
||||
blck_missionsRunning,
|
||||
@ -83,17 +81,21 @@ while {true} do
|
||||
diag_tickTime
|
||||
]
|
||||
] call blck_fnc_log;
|
||||
[
|
||||
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
|
||||
count diag_activeSQFScripts,
|
||||
_activeScripts select 0,
|
||||
_activeScripts select 1,
|
||||
blck_activeMonitorThreads
|
||||
]
|
||||
] call blck_fnc_log;
|
||||
if (blck_debugON) then
|
||||
{
|
||||
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
|
||||
} forEach diag_activeSQFScripts;
|
||||
private _activeScripts = diag_activeScripts;
|
||||
[
|
||||
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
|
||||
count diag_activeSQFScripts,
|
||||
_activeScripts select 0,
|
||||
_activeScripts select 1,
|
||||
blck_activeMonitorThreads
|
||||
]
|
||||
] call blck_fnc_log;
|
||||
{
|
||||
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
|
||||
} forEach diag_activeSQFScripts;
|
||||
};
|
||||
[] call blck_fnc_cleanEmptyGroups;
|
||||
_timer5min = diag_tickTime + 300;
|
||||
};
|
||||
|
@ -11,7 +11,7 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params[["_coords",[]],["_range",0],["_onFootOnly",false]];
|
||||
params[["_coords",[0,0,0]],["_range",0],["_onFootOnly",false]];
|
||||
private ["_result","_players"];
|
||||
|
||||
private "_players";
|
||||
|
@ -43,7 +43,12 @@ if !(isNull _group) then
|
||||
_launcherType = "none";
|
||||
};
|
||||
private _unitPos = [_pos,3,6] call blck_fnc_findRandomLocationWithinCircle;
|
||||
[_unitPos,_group,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit;
|
||||
if (surfaceIsWater _unitPos && _scuba) then
|
||||
{
|
||||
[_unitPos,_group,_skillLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,_launcherType, blck_UMS_weapons, _sideArms, _scuba] call blck_fnc_spawnUnit;
|
||||
} else {
|
||||
[_unitPos,_group,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit;
|
||||
};
|
||||
//diag_log format["_fnc_spawnGroup: _unit %1 spawned at %2 at a distance from the group center of %3 and _vector of %4",_unit,_unitPos,_unitPos distance _pos,_pos getRelDir _unitPos];
|
||||
};
|
||||
_group selectLeader ((units _group) select 0);
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
private["_a1","_item","_diff","_tries"];
|
||||
params["_crate","_boxLoot","_itemCnts"];
|
||||
|
||||
|
||||
_itemCnts params["_wepCnt","_magCnt","_opticsCnt","_materialsCnt","_itemCnt","_bkcPckCnt"];
|
||||
_boxLoot params["_weapons","_magazines","_optics","_materials","_items","_backpacks"];
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
// Need to debug for GM map
|
||||
private ["_coords","_coordArray","_return"];
|
||||
params["_missionCategoryDescriptors","_missionParameters","_missionCount"];
|
||||
_missionCategoryDescriptors params [
|
||||
@ -35,62 +35,23 @@ if (blck_debugLevel >= 3) then
|
||||
if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}};
|
||||
|
||||
_missionParameters params[
|
||||
"_markerData",
|
||||
"_missionMessages",
|
||||
"_paraData",
|
||||
"_endCondition",
|
||||
"_isscubamission",
|
||||
"_missionLoot",
|
||||
"_aiData",
|
||||
"_defaultMissionLocations"
|
||||
];
|
||||
|
||||
_markerData params[
|
||||
"_markerName",
|
||||
"_markerMissionName",
|
||||
"_endMsg",
|
||||
"_startMsg",
|
||||
"_defaultMissionLocations",
|
||||
"_crateLoot",
|
||||
"_lootCounts",
|
||||
"_markerMissionName", // Name used for setMarkerText and also for the root name for all markers
|
||||
"_markerType",
|
||||
"_markerColor",
|
||||
"_markerSize",
|
||||
"_markerBrush",
|
||||
"_missionLandscapeMode",
|
||||
"_garrisonedBuildings_BuildingPosnSystem",
|
||||
"_garrisonedBuilding_ATLsystem",
|
||||
"_missionLandscape",
|
||||
"_simpleObjects",
|
||||
"_missionLootBoxes",
|
||||
"_missionLootVehicles",
|
||||
"_missionPatrolVehicles",
|
||||
"_submarinePatrols",
|
||||
"_submarinePatrolParameters",
|
||||
"_airPatrols",
|
||||
"_noVehiclePatrols",
|
||||
"_vehicleCrewCount",
|
||||
"_missionEmplacedWeapons",
|
||||
"_noEmplacedWeapons",
|
||||
"_useMines",
|
||||
"_minNoAI",
|
||||
"_maxNoAI",
|
||||
"_noAIGroups",
|
||||
"_missionGroups",
|
||||
"_scubaPatrols",
|
||||
"_scubaGroupParameters",
|
||||
"_hostageConfig",
|
||||
"_enemyLeaderConfig",
|
||||
"_assetKilledMsg",
|
||||
"_uniforms",
|
||||
"_headgear",
|
||||
"_vests",
|
||||
"_backpacks",
|
||||
"_weaponList",
|
||||
"_sideArms",
|
||||
"_chanceHeliPatrol",
|
||||
"_noChoppers",
|
||||
"_missionHelis",
|
||||
"_chancePara",
|
||||
"_noPara",
|
||||
"_paraTriggerDistance",
|
||||
"_paraSkill",
|
||||
"_chanceLoot",
|
||||
"_paraLoot",
|
||||
"_paraLootCounts",
|
||||
"_spawnCratesTiming",
|
||||
"_loadCratesTiming",
|
||||
"_endCondition",
|
||||
"_isScubaMission"
|
||||
"_markerBrush"
|
||||
];
|
||||
|
||||
_coordsArray = [];
|
||||
@ -103,6 +64,7 @@ if !(_defaultMissionLocations isEqualTo []) then
|
||||
_coords = [] call blck_fnc_findShoreLocation;
|
||||
} else {
|
||||
_coords = [] call blck_fnc_findSafePosn;
|
||||
_coords = [_coords select 0, _coords select 1, 0];
|
||||
};
|
||||
};
|
||||
|
||||
@ -169,22 +131,30 @@ if (blck_debugLevel >= 3) then {[format["_initializeMissions (167): _marker = %1
|
||||
/*
|
||||
Send a message to players.
|
||||
*/
|
||||
_missionMessages params [
|
||||
"_assetKilledMsg",
|
||||
"_endMsg",
|
||||
"_startMsg"
|
||||
];
|
||||
|
||||
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
|
||||
|
||||
private _chancePara = _paraData param [6];
|
||||
private _missionTimeoutAt = diag_tickTime + blck_MissionTimeout;
|
||||
private _triggered = 0;
|
||||
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
||||
//diag_log format["_initializeMission: _spawnPara = %1 | _chancePara = %2",_spawnPara,_chancePara];
|
||||
private _objects = [];
|
||||
private _hiddenObjects = [];
|
||||
private _mines = [];
|
||||
private _crates = [];
|
||||
private _missionAIVehicles = [];
|
||||
private _blck_AllMissionAI = [];
|
||||
private _spawnedLootVehicles = [];
|
||||
private _AI_Vehicles = [];
|
||||
private _assetSpawned = objNull;
|
||||
|
||||
private _missionData = [_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers];
|
||||
private _missionData = [_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_spawnedLootVehicles,_markers];
|
||||
blck_activeMissionsList pushBack [_missionCategoryDescriptors,_missionTimeoutAt,_triggered,_spawnPara,_missionData,_missionParameters];
|
||||
|
||||
[format["Initialized Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;
|
||||
|
@ -94,25 +94,46 @@ if !(_endCondition in blck_validEndStates) then
|
||||
_endCondition = "allKilledOrPlayerNear";
|
||||
};
|
||||
|
||||
private _table = [
|
||||
private _markerData = [
|
||||
_markerName,
|
||||
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
|
||||
_endMsg,
|
||||
_startMsg,
|
||||
_defaultMissionLocations,
|
||||
_crateLoot,
|
||||
_lootCounts,
|
||||
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
|
||||
_markerType,
|
||||
_markerColor,
|
||||
_markerSize,
|
||||
_markerBrush,
|
||||
_markerBrush
|
||||
];
|
||||
|
||||
private _paraData = [
|
||||
_noPara,
|
||||
_paraTriggerDistance,
|
||||
_paraSkill,
|
||||
_chanceLoot,
|
||||
_paraLoot,
|
||||
_paraLootCounts,
|
||||
_chancePara
|
||||
],
|
||||
|
||||
private _missionLoot = [
|
||||
_spawnCratesTiming,
|
||||
_loadCratesTiming,
|
||||
_crateLoot,
|
||||
_lootCounts,
|
||||
_missionLootBoxes,
|
||||
_missionLootVehicles
|
||||
];
|
||||
|
||||
private _aiData = [
|
||||
_uniforms,
|
||||
_headgear,
|
||||
_vests,
|
||||
_backpacks,
|
||||
_weaponList,
|
||||
_sideArms,
|
||||
_missionLandscapeMode,
|
||||
_garrisonedBuildings_BuildingPosnSystem,
|
||||
_garrisonedBuilding_ATLsystem,
|
||||
_missionLandscape,
|
||||
_simpleObjects,
|
||||
_missionLootBoxes,
|
||||
_missionLootVehicles,
|
||||
_missionPatrolVehicles,
|
||||
_submarinePatrols, // Added Build 227
|
||||
_submarinePatrolParameters,
|
||||
@ -130,27 +151,26 @@ private _table = [
|
||||
_scubaGroupParameters,
|
||||
_hostageConfig,
|
||||
_enemyLeaderConfig,
|
||||
_assetKilledMsg,
|
||||
_uniforms,
|
||||
_headgear,
|
||||
_vests,
|
||||
_backpacks,
|
||||
_weaponList,
|
||||
_sideArms,
|
||||
_chanceHeliPatrol,
|
||||
_noChoppers,
|
||||
_missionHelis,
|
||||
_chancePara,
|
||||
_noPara,
|
||||
_paraTriggerDistance,
|
||||
_paraSkill,
|
||||
_chanceLoot,
|
||||
_paraLoot,
|
||||
_paraLootCounts,
|
||||
_spawnCratesTiming,
|
||||
_loadCratesTiming,
|
||||
_endCondition,
|
||||
_isScubaMission
|
||||
_missionHelis
|
||||
];
|
||||
|
||||
private _missionMessages = [
|
||||
_assetKilledMsg,
|
||||
_endMsg,
|
||||
_startMsg
|
||||
];
|
||||
|
||||
private _table = [
|
||||
_markerData,
|
||||
_missionMessages,
|
||||
_paraData,
|
||||
_endCondition,
|
||||
_isscubamission,
|
||||
_missionLoot,
|
||||
_aiData,
|
||||
_defaultMissionLocations
|
||||
];
|
||||
|
||||
_table
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_chancePara"];
|
||||
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 = blck_chanceParaRed};
|
||||
};
|
||||
_chancePara
|
||||
private _chancePara = missionNamespace getVariable[format["blck_chancePara%1",_aiDifficultyLevel],0];
|
||||
_chancePara
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_backpacks"];
|
||||
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};
|
||||
};
|
||||
_backpacks
|
||||
private _backpacks = missionNamespace getVariable[format["blck_backpacks_%1",_aiDifficultyLevel],[]];
|
||||
_backpacks
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_headgear"];
|
||||
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};
|
||||
};
|
||||
_headgear
|
||||
private _headgear = missionNamespace getVariable [format["blck_headgear_%1",_aiDifficultyLevel],[]];
|
||||
_headgear
|
||||
|
@ -16,14 +16,6 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_weaponList","_missionColor"];
|
||||
|
||||
_missionColor = _this select 0;
|
||||
switch (_missionColor) do {
|
||||
case "blue": {_weaponList = blck_WeaponList_Blue;};
|
||||
case "red": {_weaponList = blck_WeaponList_Red;};
|
||||
case "green": {_weaponList = blck_WeaponList_Green;};
|
||||
case "orange": {_weaponList = blck_WeaponList_Orange;};
|
||||
default {_weaponList = blck_WeaponList_Blue;};
|
||||
};
|
||||
params["_missionColor"];
|
||||
private _weaponList = missionNamespace getVariable [format["blck_WeaponList_%1",_missionColor],[]];
|
||||
_weaponList
|
||||
|
@ -13,13 +13,5 @@
|
||||
|
||||
params["_aiDifficultyLevel"]; //[["_aiDifficultyLevel",selectRandom["Red","Green"]]];
|
||||
|
||||
private["_sideArms"];
|
||||
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};
|
||||
};
|
||||
_sideArms
|
||||
private _sideArms = missionNamespace getVariable[format["blck_Pistols_%1",_aiDifficultyLevel],[]];
|
||||
_sideArms
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_uniforms"];
|
||||
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};
|
||||
};
|
||||
_uniforms
|
||||
private _uniforms = missionNamespace getVariable [format["blck_SkinList_%1",_aiDifficultyLevel],[]];
|
||||
_uniforms
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_vests"];
|
||||
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};
|
||||
};
|
||||
_vests
|
||||
private _vests = missionNamespace getVariable [format["blck_vests_%1",_aiDifficultyLevel],[]];
|
||||
_vests
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_chanceHeliPatrol"];
|
||||
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};
|
||||
};
|
||||
_chanceHeliPatrol
|
||||
private _chanceHeliPatrol = missionNamespace getVariable[format["blck_chanceHeliPatrol%1",_aiDifficultyLevel],[]];
|
||||
_chanceHeliPatrol
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_missionHelis"];
|
||||
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};
|
||||
};
|
||||
_missionHelis
|
||||
private _missionHelis = missionNamespace getVariable[format["blck_patrolHelis%1",_aiDifficultyLevel],[]];
|
||||
_missionHelis
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_noChoppers"];
|
||||
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};
|
||||
};
|
||||
_noChoppers
|
||||
private _noChoppers = missionNamespace getVariable [format["blck_noPatrolHelis%1",_aiDifficultyLevel],0];
|
||||
_noChoppers
|
||||
|
@ -12,13 +12,5 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_aiDifficultyLevel"];
|
||||
private["_noPara"];
|
||||
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};
|
||||
};
|
||||
_noPara
|
||||
private _noPara = missionNamespace getVariable [format["blck_noPara%1",_aiDifficultyLevel],0];
|
||||
_noPara
|
||||
|
@ -11,13 +11,5 @@
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
params["_diff"];
|
||||
private ["_count"];
|
||||
switch (toLower(_diff)) do
|
||||
{
|
||||
case "blue": {_count = blck_vehCrew_blue};
|
||||
case "red": {_count = blck_vehCrew_red};
|
||||
case "green": {_count = blck_vehCrew_green};
|
||||
case "orange": {_count = blck_vehCrew_orange};
|
||||
};
|
||||
|
||||
private _count = missionNamespace getVariable [format["blck_vehCrew_%1",_diff],0];
|
||||
_count
|
||||
|
@ -27,7 +27,7 @@ _units = [];
|
||||
_abort = false;
|
||||
_pos = [];
|
||||
|
||||
private _emplacedWepData = +_missionEmplacedWeapons;
|
||||
private _emplacedWepData = +_missionEmplacedWeapons; // So we dont overwrite this for the next instance of the mission
|
||||
//diag_log format["_spawnEmplacedWeaponArray(30): _noEmplacedWeapons = %1 | _emplacedWepData = %2",_noEmplacedWeapons,_emplacedWepData];
|
||||
|
||||
// Define _emplacedWepData if not already configured.
|
||||
|
@ -67,7 +67,6 @@ private _cratesSpawned = [];
|
||||
[_crate] call blck_fnc_loadMissionCrate;
|
||||
};
|
||||
_cratesSpawned pushback _crate;
|
||||
|
||||
}forEach _cratesToSpawn;
|
||||
|
||||
if (_spawnCrateTiming in ["atMissionEndAir","atMissionSpawnAir"]) then
|
||||
|
@ -16,15 +16,19 @@ if (count _coords isEqualTo 2) then {_coords pushBack 0};
|
||||
private _vehs = [];
|
||||
{
|
||||
_x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"];
|
||||
private _pos =_coords vectorAdd _vehOffset;
|
||||
_veh = [_vehType, _pos] call blck_fnc_spawnVehicle;
|
||||
_veh = [_vehType, _coords vectorAdd _vehOffset] call blck_fnc_spawnVehicle;
|
||||
[_veh, _dir] call blck_fnc_setDirUp;
|
||||
|
||||
_veh lock _lock;
|
||||
if (_loadCrateTiming isEqualTo "atMissionSpawn") then
|
||||
if (_loadCrateTiming isEqualTo "atMissionSpawnGround") then
|
||||
{
|
||||
[_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
|
||||
_veh setVariable["lootLoaded",true];
|
||||
//private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
||||
[_veh,missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
|
||||
} else {
|
||||
_veh setVariable["lootArray",_lootArray];
|
||||
_veh setVariable["lootCounts",_lootCounts];
|
||||
_veh setVariable["lootLoaded",false];
|
||||
};
|
||||
_vehs pushback _veh;
|
||||
}forEach _missionLootVehicles;
|
||||
|
@ -8,7 +8,7 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
// Need to debug for GM
|
||||
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {};
|
||||
|
||||
{
|
||||
|
@ -34,6 +34,9 @@ _fn_doUpdates = {
|
||||
{
|
||||
[["showScore",[_reward,"",_kills],""],[_player]] call blck_fnc_messageplayers;
|
||||
};
|
||||
|
||||
// SUggestion to update Epoch player stats from He-Man
|
||||
[_killer, "AIKills", 1, true] call EPOCH_server_updatePlayerStats;
|
||||
};
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
|
@ -15,6 +15,15 @@
|
||||
|
||||
params["_unit","_killer","_instigator"];
|
||||
|
||||
// the blck_graveyardGroup is always owned by the server.
|
||||
// which makes some cleanup easier
|
||||
[_unit] joinSilent blck_graveyardGroup;
|
||||
|
||||
if (count(units (group _unit)) isEqualTo 0) then
|
||||
{
|
||||
deleteGroup _group;
|
||||
};
|
||||
|
||||
if (local _unit) then
|
||||
{
|
||||
if !((vehicle _unit) isKindOf "Man") then
|
||||
@ -35,12 +44,7 @@ _unit disableAI "ALL";
|
||||
{
|
||||
_unit removeAllEventHandlers _x;
|
||||
}forEach["FiredNear","Reloaded"];
|
||||
[_unit] joinSilent blck_graveyardGroup;
|
||||
|
||||
if (count(units (group _unit)) isEqualTo 0) then
|
||||
{
|
||||
deleteGroup _group;
|
||||
};
|
||||
|
||||
if !((vehicle _unit) isKindOf "Man") then
|
||||
{
|
||||
|
@ -11,21 +11,27 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_launcher","_launcherRounds"];
|
||||
params["_unit"]; // = _this select 0;
|
||||
_launcher = _unit getVariable ["Launcher",""];
|
||||
_unit removeWeapon _Launcher;
|
||||
if (_launcher != "") then
|
||||
private _loadout = _unit getVariable["launcher",[[],[]]];
|
||||
//diag_log format["_removeLaunchers: _loadout = %1",_loadout];
|
||||
private _mags = magazines _unit;
|
||||
//diag_log format["_removeLaunchers: _mags = %1",_mags];
|
||||
{
|
||||
_unit removeWeapon _Launcher;
|
||||
if (_forEachIndex > 0) then
|
||||
{
|
||||
if (_launcher in weaponCargo _x) exitWith {
|
||||
deleteVehicle _x;
|
||||
};
|
||||
} forEach ((getPosATL _unit) nearObjects ["WeaponHolderSimulated",10]);
|
||||
_launcherRounds = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines"); //0;
|
||||
{
|
||||
if(_x in _launcherRounds) then {_unit removeMagazine _x;};
|
||||
} count magazines _unit;
|
||||
};
|
||||
//diag_log format["_removeLaunchers: _x = %1",_x];
|
||||
_unit removeMagazines _x;
|
||||
};
|
||||
} forEach (_loadout select 1);
|
||||
|
||||
private _launcher = _loadout select 0;
|
||||
if !(_launcher isEqualTo []) then
|
||||
{
|
||||
if (_launcher in (weapons _unit)) then {
|
||||
_unit removeWeapon _launcher;
|
||||
} else {
|
||||
{
|
||||
if (_launcher in (weaponCargo _x)) exitWith {deleteVehicle _x};
|
||||
} forEach (_unit nearObjects ["WeaponHolderSimulated",10]);
|
||||
};
|
||||
};
|
||||
|
@ -12,8 +12,8 @@
|
||||
--------------------------
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_pos","_numAI","_skillAI",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
|
||||
// Acomodate case where para are spawned over water.
|
||||
params["_pos","_numAI","_skilllevel",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
|
||||
|
||||
if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
|
||||
if (_sideArms isEqualTo []) then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms};
|
||||
@ -22,35 +22,34 @@ if (_headGear isEqualTo []) then {_headGear = [_aiDifficultyLevel] call blck_f
|
||||
if (_vests isEqualTo []) then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests};
|
||||
if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks};
|
||||
|
||||
private["_arc","_dir","_spawnPos","_chute","_unit","_return","_paraGroup"];
|
||||
private _params = ["_pos","_numAI","_skillAI"];
|
||||
#ifdef blck_debugMode
|
||||
{
|
||||
diag_log format["_fnc_spawnParaUnits: %1 = %2",_x, _this select _forEachIndex];
|
||||
}forEach _params;
|
||||
#endif
|
||||
_paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
|
||||
private _paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
|
||||
private _arc = 45;
|
||||
private _dir = 0;
|
||||
|
||||
#define infantryPatrolRadius 30
|
||||
#define infantryWaypointTimeout [5,7.5,10]
|
||||
[_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints;
|
||||
|
||||
#define launcherType "none"
|
||||
private ["_arc","_spawnPos"];
|
||||
_arc = 45;
|
||||
_dir = 0;
|
||||
|
||||
[_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints;
|
||||
for "_i" from 1 to _numAI do
|
||||
{
|
||||
_spawnPos = _pos getPos[1,_dir];
|
||||
_chute = createVehicle ["Steerable_Parachute_F", [_spawnPos select 0, _spawnPos select 1, 250], [], 0, "FLY"];
|
||||
private _unitPos = _pos getPos[1,_dir];
|
||||
private _chute = createVehicle ["Steerable_Parachute_F", [_unitPos select 0, _unitPos select 1, 250], [], 0, "FLY"];
|
||||
[_chute] call blck_fnc_protectVehicle;
|
||||
_unit = [getPos _chute,_paraGroup,_skillAI,_uniforms,_headGear,_vests,_backpacks,launcherType,_weapons,_sideArms,_isScuba] call blck_fnc_spawnUnit;
|
||||
private "_unit";
|
||||
if (surfaceIsWater _unitPos && _isScuba) then
|
||||
{
|
||||
_unit = [_unitPos,_paraGroup,_skillLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,launcherType, blck_UMS_weapons, _sideArms, _isScuba] call blck_fnc_spawnUnit;
|
||||
} else {
|
||||
_unit = [_unitPos,_paraGroup,_skillLevel,_uniforms,_headGear,_vests,_backpacks,launcherType, _weaponList, _sideArms, _isScuba] call blck_fnc_spawnUnit;
|
||||
};
|
||||
|
||||
_unit assignAsDriver _chute;
|
||||
_unit moveInDriver _chute;
|
||||
_unit setVariable["chute",_chute];
|
||||
_dir = _dir + _arc;
|
||||
|
||||
uiSleep 2;
|
||||
uiSleep 2; // To space them out a bit
|
||||
};
|
||||
|
||||
blck_monitoredMissionAIGroups pushback _paraGroup;
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private ["_i","_weap","_unit","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices","_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
|
||||
params["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", []],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false],["_garrison",false]];
|
||||
params["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", []],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false],["_garrison",false]];
|
||||
|
||||
if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout};
|
||||
if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms};
|
||||
@ -70,44 +70,23 @@ _unit allowDammage true;
|
||||
_unit setBehaviour "COMBAT";
|
||||
_unit setunitpos "AUTO";
|
||||
|
||||
if (surfaceIsWater (getPos _unit)) then
|
||||
{
|
||||
_uniforms = blck_UMS_uniforms;
|
||||
_headGear = blck_UMS_headgear;
|
||||
_weaponList = blck_UMS_weapons;
|
||||
_vests = blck_UMS_vests;
|
||||
if !(_uniforms isEqualTo []) then {_unit forceAddUniform (selectRandom _uniforms)};
|
||||
if !(_headGear isEqualTo []) then {_unit addHeadgear (selectRandom _headGear)};
|
||||
if !(_vests isEqualTo []) then {_unit addVest (selectRandom _vests)};
|
||||
if !(_weaponList isEqualTo []) then {
|
||||
_weap = selectRandom _weaponList;
|
||||
_unit addWeaponGlobal _weap;
|
||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||
_unit addMagazines[selectRandom _ammochoices,3];
|
||||
if (random 1 < blck_chanceMuzzle) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 101] call BIS_fnc_compatibleItems))}; // muzzles
|
||||
if (random 1 < blck_chanceOptics) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 201] call BIS_fnc_compatibleItems))}; // optics
|
||||
if (random 1 < blck_chancePointer) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 301] call BIS_fnc_compatibleItems))}; // pointers
|
||||
if (random 1 < blck_chanceUnderbarrel) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 302] call BIS_fnc_compatibleItems))}; // underbarrel
|
||||
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
|
||||
{
|
||||
_unit addMagazine "1Rnd_HE_Grenade_shell";
|
||||
};
|
||||
};
|
||||
_unit forceAddUniform (selectRandom _uniforms);
|
||||
if !(_headGear isEqualTo []) then
|
||||
{
|
||||
_unit addHeadgear (selectRandom _headGear);
|
||||
};
|
||||
if !(_vests isEqualTo []) then
|
||||
{
|
||||
_unit addVest (selectRandom _vests);
|
||||
};
|
||||
|
||||
if (_weaponList isEqualTo []) then {_weaponList = call blck_fnc_selectAILoadout};
|
||||
_weap = selectRandom _weaponList;
|
||||
_unit addWeaponGlobal _weap;
|
||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||
_unit addMagazines[selectRandom _ammochoices,3];
|
||||
/*
|
||||
_optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
|
||||
_pointers = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
|
||||
_muzzles = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
|
||||
_underbarrel = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
|
||||
*/
|
||||
|
||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 101] call BIS_fnc_compatibleItems))}; // muzzles
|
||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 201] call BIS_fnc_compatibleItems))}; // optics
|
||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 301] call BIS_fnc_compatibleItems))}; // pointers
|
||||
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 302] call BIS_fnc_compatibleItems))}; // underbarrel
|
||||
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
|
||||
{
|
||||
_unit addMagazine "1Rnd_HE_Grenade_shell";
|
||||
};
|
||||
|
||||
if !(_sideArms isEqualTo []) then
|
||||
{
|
||||
_weap = selectRandom _sideArms;
|
||||
@ -115,34 +94,21 @@ if !(_sideArms isEqualTo []) then
|
||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||
_unit addMagazines [selectRandom _ammoChoices, 2];
|
||||
};
|
||||
for "_i" from 1 to (1+floor(random(4))) do
|
||||
if !(blck_ConsumableItems isEqualTo []) then
|
||||
{
|
||||
_unit addItem (selectRandom blck_ConsumableItems);
|
||||
};
|
||||
|
||||
// Add First Aid or Grenade 50% of the time
|
||||
if (round(random 10) <= 5) then
|
||||
{
|
||||
_unit addItem selectRandom blck_specialItems;
|
||||
};
|
||||
|
||||
/*
|
||||
if ( !(_Launcher isEqualTo "none") && !(_backpacks isEqualTo [])) then
|
||||
{
|
||||
_unit addWeaponGlobal _Launcher;
|
||||
_unit addBackpack (selectRandom _backpacks);
|
||||
for "_i" from 1 to 3 do
|
||||
for "_i" from 1 to (1+floor(random(4))) do
|
||||
{
|
||||
_unit addItemToBackpack (getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines") select 0); // call BIS_fnc_selectRandom;
|
||||
};
|
||||
_unit setVariable["Launcher",_launcher,true];
|
||||
} else {
|
||||
if ( random (1) < blck_chanceBackpack && !(_backpacks isEqualTo [])) then
|
||||
{
|
||||
_unit addBackpack selectRandom _backpacks;
|
||||
_unit addItem (selectRandom blck_ConsumableItems);
|
||||
};
|
||||
};
|
||||
if !(blck_specialItems isEqualTo []) then
|
||||
{
|
||||
// Add First Aid or Grenade 50% of the time
|
||||
if (round(random 10) <= 5) then
|
||||
{
|
||||
_unit addItem selectRandom blck_specialItems;
|
||||
};
|
||||
};
|
||||
*/
|
||||
if !(_backpacks isEqualTo []) then
|
||||
{
|
||||
if (_Launcher isEqualTo "none") then
|
||||
@ -152,25 +118,28 @@ if !(_backpacks isEqualTo []) then
|
||||
_unit addBackpack selectRandom _backpacks;
|
||||
};
|
||||
} else {
|
||||
_unit addWeaponGlobal _Launcher;
|
||||
_unit addWeaponGlobal _launcher;
|
||||
_unit addBackpack (selectRandom _backpacks);
|
||||
private _roundsAdded = [];
|
||||
private _mags = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines");
|
||||
for "_i" from 1 to 3 do
|
||||
{
|
||||
_unit addItemToBackpack (_mags select 0); // call BIS_fnc_selectRandom;
|
||||
private _lr = selectRandom _mags; // call BIS_fnc_selectRandom;
|
||||
_roundsAdded pushBack _lr;
|
||||
_unit addItemToBackpack _lr;
|
||||
};
|
||||
_unit setVariable["Launcher",_launcher,true];
|
||||
_unit setVariable["Launcher",[_launcher,_roundsAdded]];
|
||||
};
|
||||
};
|
||||
|
||||
if(sunOrMoon < 0.2 && blck_useNVG)then
|
||||
{
|
||||
_unit addWeapon selectRandom blck_NVG;
|
||||
_unit setVariable ["hasNVG", true,true];
|
||||
_unit setVariable ["hasNVG", true];
|
||||
}
|
||||
else
|
||||
{
|
||||
_unit setVariable ["hasNVG", false,true];
|
||||
_unit setVariable ["hasNVG", false];
|
||||
};
|
||||
|
||||
_unit addWeapon selectRandomWeighted["",4,"Binocular",3,"Rangefinder",1];
|
||||
@ -180,20 +149,12 @@ _unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}];
|
||||
_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}];
|
||||
_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}];
|
||||
|
||||
switch (_skillLevel) do
|
||||
{
|
||||
case "blue": {_index = 0;_aiSkills = blck_SkillsBlue;};
|
||||
case "red": {_index = 1;_aiSkills = blck_SkillsRed;};
|
||||
case "green": {_index = 2;_aiSkills = blck_SkillsGreen;};
|
||||
case "orange": {_index = 3;_aiSkills = blck_SkillsOrange;};
|
||||
default {_index = 0;_aiSkills = blck_SkillsBlue;};
|
||||
};
|
||||
|
||||
[_unit,_aiSkills] call blck_fnc_setSkill;
|
||||
_unit setVariable ["alertDist",blck_AIAlertDistance select _index,true];
|
||||
_unit setVariable ["intelligence",blck_AIIntelligence select _index,true];
|
||||
_unit setVariable ["GMS_AI",true,true];
|
||||
|
||||
[_unit, missionNamespace getVariable[format["blck_Skills%1",_skillLevel],blck_SkillsRed]] call blck_fnc_setSkill;
|
||||
_index = missionNamespace getVariable[format["blck_skillsIndex_%1",_skillLevel],1];
|
||||
_unit setVariable ["alertDist",blck_AIAlertDistance select _index];
|
||||
_unit setVariable ["intelligence",blck_AIIntelligence select _index];
|
||||
_unit setVariable ["GMS_AI",true];
|
||||
//diag_log format["_spawnUnit: _index = %1 | _aiSkills = %2",_index,_aiSkills];
|
||||
_unit
|
||||
|
||||
|
||||
|
@ -57,6 +57,10 @@ blck_activeMonitorThreads = 0;
|
||||
blck_validEndStates = ["allUnitsKilled", "playerNear", "allKilledOrPlayerNear","assetSecured"];
|
||||
blck_validLootSpawnTimings = ["atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir"];
|
||||
blck_validLootLoadTimings = ["atMissionCompletion", "atMissionSpawn"];
|
||||
blck_skillsIndex_Blue = 0;
|
||||
blck_skillsIndex_Red = 1;
|
||||
blck_skillsIndex_Green = 2;
|
||||
blck_skillsIndex_Orange = 3;
|
||||
|
||||
if (blck_debugOn) then {diag_log "[blckeagls] Variables Loaded"};
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
blck_locationBlackList = []; // Do not touch ...
|
||||
blck_debugON = false; // should be set to false; ...
|
||||
blck_debugLevel = 0; // should be set to 0 ...
|
||||
|
||||
#ifdef blck_milServer
|
||||
if (true) exitWith
|
||||
{
|
||||
@ -312,6 +313,28 @@
|
||||
blck_logBlacklistedItems = true;
|
||||
//blck_maximumitempriceinai_loadouts = 1000;
|
||||
// lists of black-listed items to be excluded from dynamic loadouts
|
||||
|
||||
/*
|
||||
A list of dlcs will be dumped during server start up.
|
||||
You can comment out those you dont want to exclude
|
||||
or identify and add others from the list generated when the dynamicConfigs script is run
|
||||
*/
|
||||
|
||||
blck_blackListedMods = [
|
||||
// Uncomment to exclude items/weapons/uniforms/vest/headgear from being included.
|
||||
// Add DLC names you wish to exluded as appropriate
|
||||
// DLC names will be added to your server.RPT
|
||||
//"Kart",
|
||||
//"TANK",
|
||||
//"ORANGE",
|
||||
//"Heli",
|
||||
//"Contact",
|
||||
//"Enoch",
|
||||
//"Orange",
|
||||
//"Jets",
|
||||
//"Mark",
|
||||
//"Expansion"
|
||||
];
|
||||
blck_blacklistedVests = [
|
||||
//"V_Press_F"
|
||||
];
|
||||
@ -439,6 +462,12 @@
|
||||
blck_maxMoneyRed = 15;
|
||||
blck_maxMoneyBlue = 10;
|
||||
|
||||
// Define the chance of attachments
|
||||
blck_chanceOptics = 0.4;
|
||||
blck_chanceMuzzle = 0.3;
|
||||
blck_chancePointer = 0.25;
|
||||
blck_chanceUnderbarrel = 0.25;
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
|
||||
//blck_AIAlertDistance = [150,225,400,500];
|
||||
|
@ -235,8 +235,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"optic_tws"
|
||||
//"optic_tws_mg",
|
||||
];
|
||||
|
||||
#ifdef useAPEX
|
||||
blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes;
|
||||
blck_Optics_Apex = [
|
||||
//Apex
|
||||
"optic_Arco_blk_F", "optic_Arco_ghex_F",
|
||||
@ -247,7 +246,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"optic_LRPS_tna_F","optic_LRPS_ghex_F",
|
||||
"optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F"
|
||||
];
|
||||
blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes;
|
||||
#ifdef useAPEX
|
||||
blck_Optics = blck_Optics + blck_Optics_Apex;
|
||||
#endif
|
||||
|
||||
@ -313,24 +312,23 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650;
|
||||
blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG;
|
||||
|
||||
#ifdef useAPEX
|
||||
blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F",
|
||||
"arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F",
|
||||
"arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F",
|
||||
"arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"];
|
||||
|
||||
#ifdef useAPEX
|
||||
blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons;
|
||||
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
|
||||
#endif
|
||||
|
||||
blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
|
||||
|
||||
#ifdef useAPEX
|
||||
blck_ApexBackpacks = [
|
||||
"B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F",
|
||||
"B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F",
|
||||
"B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F"
|
||||
];
|
||||
#ifdef useAPEX
|
||||
blck_backpacks = blck_ApexBackpacks + blck_backpacks;
|
||||
#endif
|
||||
blck_backpacks_blue = blck_backpacks;
|
||||
|
@ -24,13 +24,13 @@
|
||||
3) A time acceleration module.
|
||||
*/
|
||||
|
||||
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
|
||||
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
|
||||
blck_spawnMapAddons = false; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
|
||||
blck_spawnStaticLootCrates = false; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
|
||||
blck_simulationManager = blck_useBlckeaglsSimulationManagement;
|
||||
blck_hideRocksAndPlants = true; // When true, any rocks, trees or bushes under enterable buildings will be 'hidden'
|
||||
|
||||
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
|
||||
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_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 = 2; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
@ -77,10 +77,10 @@
|
||||
blck_showCountAliveAI = true;
|
||||
|
||||
//Minimum distance between missions
|
||||
blck_MinDistanceFromMission = 2000;
|
||||
blck_minDistanceToBases = 800;
|
||||
blck_MinDistanceFromMission = 1000;
|
||||
blck_minDistanceToBases = 300;
|
||||
blck_minDistanceToPlayer = 500;
|
||||
blck_minDistanceFromTowns = 300;
|
||||
blck_minDistanceFromTowns = 200;
|
||||
blck_minDistanceFromDMS = 500; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check.
|
||||
|
||||
///////////////////////////////
|
||||
@ -293,6 +293,22 @@
|
||||
blck_logblacklisteditems = true;
|
||||
//blck_maximumitempriceinai_loadouts = 1000;
|
||||
// lists of black-listed items to be excluded from dynamic loadouts
|
||||
|
||||
blck_blackListedMods = [
|
||||
// Uncomment to exclude items/weapons/uniforms/vest/headgear from being included.
|
||||
// Add DLC names you wish to exluded as appropriate
|
||||
// DLC names will be added to your server.RPT
|
||||
//"Kart",
|
||||
//"TANK",
|
||||
//"ORANGE",
|
||||
//"Heli",
|
||||
//"Contact",
|
||||
//"Enoch",
|
||||
//"Orange",
|
||||
//"Jets",
|
||||
//"Mark",
|
||||
//"Expansion"
|
||||
];
|
||||
blck_blacklistedVests = [
|
||||
//"V_Press_F"
|
||||
];
|
||||
@ -359,9 +375,6 @@
|
||||
|
||||
//This defines how long after an AI dies that it's body disappears.
|
||||
blck_bodyCleanUpTimer = 80*60; // time in seconds after which dead AI bodies are deleted
|
||||
#ifdef blck_milServer
|
||||
blck_bodyCleanUpTimer = 80*60; // Trying to reduce lag with player counts > 20
|
||||
#endif
|
||||
|
||||
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
||||
// values are ordered as follows [blue, red, green, orange];
|
||||
@ -420,7 +433,11 @@
|
||||
blck_maxMoneyGreen = 40;
|
||||
blck_maxMoneyRed = 30;
|
||||
blck_maxMoneyBlue = 20;
|
||||
|
||||
// Define the chance of attachments
|
||||
blck_chanceOptics = 0.4;
|
||||
blck_chanceMuzzle = 0.3;
|
||||
blck_chancePointer = 0.25;
|
||||
blck_chanceUnderbarrel = 0.25;
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
[format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log;
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
diag_log "[blckeagls] Loading Custom Configurations 5/2/20";
|
||||
["[blckeagls] Loading Custom Configurations 11/14//20"] call blck_fnc_log;
|
||||
|
||||
switch (toLower (worldName)) do
|
||||
{
|
||||
@ -80,7 +80,7 @@ switch (toLower (worldName)) do
|
||||
};
|
||||
};
|
||||
|
||||
diag_log "[blckeagls] End of map-specific block of Custom Configurations 5/2/20";
|
||||
["[blckeagls] End of map-specific block of Custom Configurations 11/14/20"] call blck_fnc_log;
|
||||
|
||||
#ifdef blck_useNIA
|
||||
blck_NIA_WeaponsLMG = [
|
||||
@ -266,8 +266,8 @@ blck_NIA_WeaponsSniper = [
|
||||
"hlc_rifle_psg1A1"
|
||||
];
|
||||
#endif
|
||||
diag_log "[blckeagls] end of Custom Configurations for NIA 5/2/20";
|
||||
diag_log format["[blckeagls] blck_NIA_WeaponsLMG = %1",if (isNil "blck_NIA_WeaponsLMG") then {"nil"} else {blck_NIA_WeaponsLMG}];
|
||||
//diag_log "[blckeagls] end of Custom Configurations for NIA 5/2/20";
|
||||
//diag_log format["[blckeagls] blck_NIA_WeaponsLMG = %1",if (isNil "blck_NIA_WeaponsLMG") then {"nil"} else {blck_NIA_WeaponsLMG}];
|
||||
|
||||
#ifdef blck_useRHS
|
||||
blck_RHS_Weapons = [
|
||||
@ -728,8 +728,8 @@ blck_RHS_WeaponsSAF = [
|
||||
"rhs_weap_m84"
|
||||
];
|
||||
#endif
|
||||
diag_log format["[blckeagls] blck_RHS_Weapons = %1",if (isNil "blck_RHS_Weapons") then {"nil"} else {blck_RHS_Weapons}];
|
||||
diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
|
||||
//diag_log format["[blckeagls] blck_RHS_Weapons = %1",if (isNil "blck_RHS_Weapons") then {"nil"} else {blck_RHS_Weapons}];
|
||||
//diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
|
||||
|
||||
|
||||
#ifdef blck_useCUP
|
||||
@ -1222,23 +1222,29 @@ blck_CUPHeadgear = [
|
||||
"CUP_H_USMC_Officer_Cap"
|
||||
];
|
||||
#endif
|
||||
diag_log "[blckeagls] end of Custom Configurations for CUP 5/2/20";
|
||||
diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear") then {"nil"} else {blck_CUPHeadgear}];
|
||||
diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
|
||||
//diag_log "[blckeagls] end of Custom Configurations for CUP 5/2/20";
|
||||
//diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear") then {"nil"} else {blck_CUPHeadgear}];
|
||||
//diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
|
||||
blck_customConfigsLoaded = 1;
|
||||
|
||||
uiSleep 5;
|
||||
|
||||
if (blck_debugOn) then {
|
||||
diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
||||
|
||||
blck_MinDistanceFromMission = 1000;
|
||||
blck_minDistanceToBases = 1000;
|
||||
blck_minDistanceToPlayer = 1000;
|
||||
blck_minDistanceFromTowns = 500;
|
||||
diag_log "<GRG_TEST> HEY YOU porkid's settings were loaded";
|
||||
|
||||
blck_MissionTimeout = 3000;
|
||||
|
||||
blck_preciseMapMarkers = true;
|
||||
blck_MissionTimeout = 30 * 30;
|
||||
blck_cleanupCompositionTimer = 30;
|
||||
blck_AliveAICleanUpTimer = 30;
|
||||
blck_bodyCleanUpTimer = 30;
|
||||
blck_vehicleDeleteTimer = 30;
|
||||
blck_maxSpawnedMissions = 15;
|
||||
blck_mainThreadUpdateInterval = 10;
|
||||
blck_launchersPerGroup = 6;
|
||||
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 1;
|
||||
@ -1247,7 +1253,6 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxCrashSites = 0;
|
||||
diag_log "<GRG_TEST> HEY YOU custom settings for enabling missions were loaded";
|
||||
|
||||
blck_TMin_Blue = 7;
|
||||
blck_TMin_Red = 10;
|
||||
@ -1267,7 +1272,7 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
||||
blck_TMax_Crashes = 15;
|
||||
blck_TMax_UMS = 25;
|
||||
|
||||
diag_log "[blckeagls] Custom Configs <DEBUG ON> Custom mission timers loaded"
|
||||
["[blckeagls] Custom Configs <DEBUG ON> Custom mission timers loaded"] call blck_fnc_log;
|
||||
};
|
||||
|
||||
|
||||
|
@ -54,7 +54,7 @@ _misc = [];
|
||||
_baseClasses = [];
|
||||
|
||||
_classnameList = [];
|
||||
//diag_log format["blck_modType = %1",blck_modType];
|
||||
diag_log format["blck_modType = %1",blck_modType];
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
_classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses;
|
||||
@ -63,71 +63,110 @@ if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
_classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses;
|
||||
};
|
||||
//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
|
||||
private _dlcList = [];
|
||||
private _ffaa = [];
|
||||
private _lago = [];
|
||||
private _cupv = [];
|
||||
diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
|
||||
{
|
||||
private _temp = [_x] call bis_fnc_itemType;
|
||||
//diag_log _temp;
|
||||
_itemCategory = _temp select 0;
|
||||
_itemType = _temp select 1;
|
||||
_price = blck_maximumItemPriceInAI_Loadouts;
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
private _configName = "";
|
||||
switch (true) do
|
||||
{
|
||||
_price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price");
|
||||
case isClass(configFile >> "CfgMagazines" >> _x): { _configName = "CfgMagazines"; };
|
||||
case isClass(configFile >> "CfgVehicles" >> _x): { _configName = "CfgVehicles"; };
|
||||
case isClass(configFile >> "CfgAmmo" >> _x): { _configName = "CfgAmmo"; };
|
||||
case isClass(configFile >> "CfgGlasses" >> _x): { _configName = "CfgGlasses"; };
|
||||
default { _configName = "CfgWeapons"; };
|
||||
};
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
private _dlc = getText(configFile >> _configName >> _x >> "DLC");
|
||||
_dlcList pushBackUnique _dlc;
|
||||
if (_dlc isEqualTo "LAGO") then {_lago pushBackUnique _x};
|
||||
if (_dlc isEqualTo "FFAA" || _dlc isEqualTo "FFAAMOD") then {_ffaa pushBackUnique _x};
|
||||
if (_dlc isEqualTo "CUP_Vehicles") then {_cupv pushBackUnique _x};
|
||||
if !(_dlc in blck_blackListedMods) then
|
||||
{
|
||||
_price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price");
|
||||
};
|
||||
if (_price < blck_maximumItemPriceInAI_Loadouts && !(["base",_x] call BIS_fnc_inString)) then
|
||||
{
|
||||
if (_itemCategory isEqualTo "Weapon") then
|
||||
private _temp = [_x] call bis_fnc_itemType;
|
||||
//diag_log _temp;
|
||||
_itemCategory = _temp select 0;
|
||||
_itemType = _temp select 1;
|
||||
_price = blck_maximumItemPriceInAI_Loadouts;
|
||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||
{
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x} else {if (blck_logBlacklistedItems) then {diag_log format["Assualt Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Machine Gun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Submachinegun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Shotgun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Sniper Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Handgun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Launcher %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rocket Launcer %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Throw %1 Excluded: blacklisted Item",_x]}}};
|
||||
};
|
||||
_price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price");
|
||||
};
|
||||
|
||||
if (_itemCategory isEqualTo "Item") then
|
||||
if (toLower(blck_modType) isEqualTo "exile") then
|
||||
{
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Muzzle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Pointer %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Optic %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Bipod %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Binocular/Rangefinder/Binocular %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Compass %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["GPS %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["NVG %1 Excluded: blacklisted Item",_x]}}};
|
||||
};
|
||||
_price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price");
|
||||
};
|
||||
|
||||
|
||||
if (_itemCategory isEqualTo "Equipment") then
|
||||
if (_price < blck_maximumItemPriceInAI_Loadouts && !(["base",_x] call BIS_fnc_inString)) then
|
||||
{
|
||||
switch (_itemType) do
|
||||
if (_itemCategory isEqualTo "Weapon") then
|
||||
{
|
||||
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Glasses %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Headgear %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Vest %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Uniform %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Backpack %1 Excluded: blacklisted Item",_x]}}};
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x} else {if (blck_logBlacklistedItems) then {diag_log format["Assualt Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Machine Gun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Submachinegun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Shotgun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Sniper Rifle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Handgun %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Launcher %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rocket Launcer %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Throw %1 Excluded: blacklisted Item",_x]}}};
|
||||
};
|
||||
};
|
||||
|
||||
if (_itemCategory isEqualTo "Item") then
|
||||
{
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Muzzle %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Pointer %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Optic %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Bipod %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Binocular/Rangefinder/Binocular %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Compass %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["GPS %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["NVG %1 Excluded: blacklisted Item",_x]}}};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if (_itemCategory isEqualTo "Equipment") then
|
||||
{
|
||||
switch (_itemType) do
|
||||
{
|
||||
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Glasses %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Headgear %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Vest %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Uniform %1 Excluded: blacklisted Item",_x]}}};
|
||||
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Backpack %1 Excluded: blacklisted Item",_x]}}};
|
||||
};
|
||||
};
|
||||
} else {
|
||||
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
|
||||
};
|
||||
//} else {
|
||||
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
|
||||
};
|
||||
} forEach _classnameList;
|
||||
private _allWep = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper + _wpnHandGun;
|
||||
|
||||
/*
|
||||
// Example of code you can use to: a) list DLCs; b) list items from specific DLCs
|
||||
{
|
||||
diag_log format["_dlcList %1 = %2",_forEachIndex,_x];
|
||||
} forEach _dlcList;
|
||||
|
||||
{
|
||||
diag_log format["_ffaa %1 = %2",_forEachIndex,_x];
|
||||
}forEach _ffaa;
|
||||
{
|
||||
diag_log format["_lago %1 = %2",_forEachIndex,_x];
|
||||
} forEach _lago;
|
||||
{
|
||||
diag_log format["_cupw %1 = %2",_forEachIndex,_x];
|
||||
} forEach _cupw;
|
||||
*/
|
||||
|
||||
blck_primaryWeapons = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper;
|
||||
blck_WeaponList_Blue = blck_primaryWeapons;
|
||||
@ -135,6 +174,15 @@ blck_WeaponList_Red = blck_primaryWeapons;
|
||||
blck_WeaponList_Green = blck_primaryWeapons;
|
||||
blck_WeaponList_Orange = blck_primaryWeapons;
|
||||
|
||||
/*
|
||||
//here is an example for checking that weapons in the FFAA mod were added to the list of primary weapons
|
||||
|
||||
private _absentWep = [];
|
||||
{
|
||||
if !(_x in _allWep) then {diag_log format["_absentWep %1 = %2",_forEachIndex,_x];};
|
||||
} forEach _ffaa + _lago + _cupw;
|
||||
*/
|
||||
|
||||
blck_pistols = _wpnHandGun;
|
||||
blck_Pistols_blue = blck_Pistols;
|
||||
blck_Pistols_red = blck_Pistols;
|
||||
|
@ -78,7 +78,7 @@ _missionLootVehicles = [
|
||||
];
|
||||
|
||||
_missionPatrolVehicles = [
|
||||
["B_G_Offroad_01_armed_F",[3.04663,-40.3821,0.00804186],262.322]
|
||||
[selectRandom blck_AIPatrolVehicles,[3.04663,-40.3821,0.00804186],262.322]
|
||||
];
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
|
@ -127,9 +127,9 @@ _missionLootVehicles = [
|
||||
];
|
||||
|
||||
_missionPatrolVehicles = [
|
||||
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
|
||||
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
|
||||
["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337]
|
||||
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
|
||||
[selectRandom blck_AIPatrolVehicles,[9.30664,88.3091,0.00802708],89.9029],
|
||||
[selectRandom blck_AIPatrolVehicles,[72.2974,6.63599,0.00802183],0.00106337]
|
||||
];
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
|
@ -43,6 +43,7 @@ _garrisonedBuilding_ATLsystem = [
|
||||
|
||||
|
||||
_missionLandscape = [
|
||||
["RoadCone_L_F",[0.914063,-0.908203,-0.00143838],0,true,true],
|
||||
["CamoNet_OPFOR_open_F",[-31.8352,-29.0081,-0.00143909],235.13,true,true],
|
||||
["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,true,true],
|
||||
["Land_HBarrier_Big_F",[-37.4087,-8.59814,-0.00143909],286.375,true,true],
|
||||
|
@ -44,6 +44,7 @@ _missionLandscape = [
|
||||
//["Sign_Arrow_Green_F",[-5049.41,-2726.72,-0.00143862],0,true,true],
|
||||
//["Sign_Arrow_Yellow_F",[-5049.41,-2726.72,-0.00143862],0,true,true],
|
||||
//["babe_helper",[-5051.91,-2726.22,-0.00143862],78.6345,true,true],
|
||||
["RoadCone_L_F",[0.914063,-0.908203,-0.00143838],0,true,true],
|
||||
["Land_HBarrier_Big_F",[-28.8394,-8.42627,-0.00143862],91.041,true,true],
|
||||
["Land_CncShelter_F",[-10.0513,-26.2283,-0.00143862],0.0913576,true,true],
|
||||
["Land_HBarrierWall6_F",[0.581543,-12.7048,-0.00143862],91.041,true,true],
|
||||
|
@ -127,9 +127,9 @@ _missionLootVehicles = [
|
||||
];
|
||||
|
||||
_missionPatrolVehicles = [
|
||||
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
|
||||
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
|
||||
["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337]
|
||||
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
|
||||
[selectRandom blck_AIPatrolVehicles,[9.30664,88.3091,0.00802708],89.9029],
|
||||
[selectRandom blck_AIPatrolVehicles,[72.2974,6.63599,0.00802183],0.00106337]
|
||||
];
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
|
@ -111,7 +111,7 @@ _missionLootVehicles = [
|
||||
];
|
||||
|
||||
_missionPatrolVehicles = [
|
||||
["B_G_Offroad_01_armed_F",[35.8379,4.96387,0.00813246],0.00104452]
|
||||
[selectRandom blck_AIPatrolVehicles,[35.8379,4.96387,0.00813246],0.00104452]
|
||||
];
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
|
@ -104,8 +104,8 @@ _missionLootVehicles = [
|
||||
];
|
||||
|
||||
_missionPatrolVehicles = [
|
||||
["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655],
|
||||
["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356]
|
||||
[selectRandom blck_AIPatrolVehicles,[-53.8027,-29.7834,0.00867844],0.00103655],
|
||||
[selectRandom blck_AIPatrolVehicles,[51.0596,-25.7876,0.00815535],0.00104356]
|
||||
];
|
||||
|
||||
_submarinePatrolParameters = [
|
||||
|
@ -111,7 +111,7 @@ _noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic
|
||||
// Note that this value is ignored if you define vehicle patrols in the array below.
|
||||
_vehiclePatrolParameters = [
|
||||
//["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"green",600,0],
|
||||
["B_G_Offroad_01_armed_EPOCH",[22809.5,16699.2,0],"blue",600,10,1]
|
||||
[selectRandom blck_AIPatrolVehicles,[22809.5,16699.2,0],"blue",600,10,1]
|
||||
]; //[ ["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).
|
||||
|
@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "privateVars.sqf";
|
||||
|
||||
_crateMoney = 10000;
|
||||
_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se.
|
||||
_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker.
|
||||
_difficulty = "red"; // Skill level of AI (blue, red, green etc)
|
||||
|
@ -9,40 +9,52 @@
|
||||
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/
|
||||
|
||||
|
||||
Notes:
|
||||
Setting blck_maxSeaSearchDistance = 0;
|
||||
Prevents these missions from being spawned.
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName];
|
||||
switch (toLower worldName) do
|
||||
{// These may need some adjustment - including a test for shore or water should help as well to avoid missions spawning on water.
|
||||
case "altis":{blck_mapCenter = [12000,10000,0]; blck_mapRange = 25000;};
|
||||
case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500;};
|
||||
case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000;};
|
||||
case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000;};
|
||||
case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;};
|
||||
case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;};
|
||||
case "gm_weferlingen_winter":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;};
|
||||
case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300;};
|
||||
case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000;};
|
||||
case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
|
||||
case "chernarus_winter":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
|
||||
case "cup_chernarus_a3":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
|
||||
case "bornholm":{blck_mapCenter = [11240, 11292, 0];blck_mapRange = 14400;};
|
||||
case "esseker":{blck_mapCenter = [6049.26,6239.63,0]; blck_mapRange = 6000;};
|
||||
case "taviana":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14400;};
|
||||
case "napf": {blck_mapCenter = [10240,10240,0]; blck_mapRange = 14000;};
|
||||
case "australia": {blck_mapCenter = [20480,20480, 150];blck_mapRange = 40960;};
|
||||
case "panthera3":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
|
||||
case "isladuala":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
|
||||
case "sauerland":{blck_mapCenter = [12800, 12800, 0];blck_mapRange = 12800;};
|
||||
case "trinity":{blck_mapCenter = [6400, 6400, 0];blck_mapRange = 6400;};
|
||||
case "utes":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500;};
|
||||
case "zargabad":{blck_mapCenter = [4096, 4096, 0];blck_mapRange = 4096;};
|
||||
case "fallujah":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500;};
|
||||
case "tavi":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14090;};
|
||||
case "lingor":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
|
||||
case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000;};
|
||||
case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500;};
|
||||
case "vt7": {blck_mapCenter = [9000,9000,0]; blck_mapRange = 9000};
|
||||
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000};
|
||||
case "altis":{blck_mapCenter = [12000,10000,0]; blck_mapRange = 25000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 20000;};
|
||||
case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 5000;};
|
||||
case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 10000;};
|
||||
case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 5500;};
|
||||
case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 20000;};
|
||||
case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0};
|
||||
case "gm_weferlingen_winter":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0;};
|
||||
case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
|
||||
case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 5000;};
|
||||
case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
|
||||
case "chernarus_winter":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
|
||||
case "cup_chernarus_a3":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
|
||||
case "bornholm":{blck_mapCenter = [11240, 11292, 0];blck_mapRange = 14400; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "esseker":{blck_mapCenter = [6049.26,6239.63,0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0;};
|
||||
case "taviana":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14400; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "napf": {blck_mapCenter = [10240,10240,0]; blck_mapRange = 14000; blck_maxGradient = 0.30; blck_maxSeaSearchDistance = 12000;};
|
||||
case "australia": {blck_mapCenter = [20480,20480, 150];blck_mapRange = 40960; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "panthera3":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.40;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "isladuala":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.40;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "sauerland":{blck_mapCenter = [12800, 12800, 0];blck_mapRange = 12800; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
|
||||
case "trinity":{blck_mapCenter = [6400, 6400, 0];blck_mapRange = 6400; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "utes":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500; blck_maxGradient = 0.20;};
|
||||
case "zargabad":{blck_mapCenter = [4096, 4096, 0];blck_mapRange = 4096; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
|
||||
case "fallujah":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
|
||||
case "tavi":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14090; blck_maxGradient = 0.40; blck_maxSeaSearchDistance = 12000;};
|
||||
case "lingor":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
|
||||
case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500; blck_maxGradient = 0.30; blck_maxSeaSearchDistance = 0;};
|
||||
case "vt7": {blck_mapCenter = [9000,9000,0]; blck_mapRange = 9000; blck_maxGradient = 0.20;};
|
||||
case "rof_mok": {
|
||||
blck_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");
|
||||
blck_mapRange = worldsize /2;
|
||||
blck_maxGradient = 0.40;
|
||||
blck_maxSeaSearchDistance = worldsize / 2;
|
||||
[format["worldName / center / worldsize / and range set for %1 / %2 / %3",worldName,blck_mapCenter,worldSize,blck_mapRange]] call blck_fnc_log;
|
||||
};
|
||||
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
|
||||
};
|
||||
|
@ -38,7 +38,7 @@ private _blck_loadingStartTime = diag_tickTime;
|
||||
// Load Configs
|
||||
[] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
|
||||
waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn") && (!isNil "blck_AI_Side")};
|
||||
if (blck_debugOn) then {diag_log format["[blckeagls] blck_AI_Side = %1",blck_AI_Side]};
|
||||
if (blck_debugOn) then {[format["blck_AI_Side = %1",blck_AI_Side]] call blck_fnc_log};
|
||||
|
||||
// This block waits for the mod to start but is disabled for now
|
||||
if ((tolower blck_modType) isEqualto "epoch") then {
|
||||
@ -54,15 +54,15 @@ if ((toLower blck_modType) isEqualTo "exile") then
|
||||
};
|
||||
if ((toLower blck_modType) isEqualTo "default") then
|
||||
{
|
||||
diag_log "[blckeagls] Configuring Mission System for Default Settings...";
|
||||
["[blckeagls] Configuring Mission System for Default Settings..."] call blck_fnc_log;
|
||||
};
|
||||
|
||||
// Load any user-defined specifications or overrides
|
||||
// HINT: Use these for map-specific settings
|
||||
#include "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
|
||||
if (blck_debugOn) then {diag_log format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]};
|
||||
if (blck_debugOn) then {diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]};
|
||||
if (blck_debugOn) then {[format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]] call blck_fnc_log};
|
||||
if (blck_debugOn) then {[format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]] call blck_fnc_log};
|
||||
|
||||
// Load vaariables used to store information for the mission system.
|
||||
[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
||||
@ -183,10 +183,13 @@ if (blck_enableBlueMissions > 0) then
|
||||
};
|
||||
if (blck_numberUnderwaterDynamicMissions > 0) then
|
||||
{
|
||||
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
|
||||
if !(blck_maxSeaSearchDistance == 0) then {
|
||||
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
// Setup a group for AI corpses
|
||||
blck_graveyardGroup = createGroup [blck_AI_Side,false];
|
||||
blck_graveyardGroup setGroupId ["blck_graveyard"];
|
||||
|
@ -1,4 +1,4 @@
|
||||
|
||||
#define blck_buildNumber 230 // Address issues with cleanup of objects
|
||||
#define blck_versionNumber 7.02
|
||||
#define blck_buildDate "10-5-20"
|
||||
#define blck_buildNumber 240 // Address issues with cleanup of objects
|
||||
#define blck_versionNumber 7.06
|
||||
#define blck_buildDate "11-25-20"
|
||||
|
@ -1,18 +0,0 @@
|
||||
|
||||
uiSleep 5;
|
||||
diag_log format["<< ---- START TEST Crate Loading ---- >>"];
|
||||
_coords = [12000,12000,0];
|
||||
//_loot = blck_supportLoot; //[causes problems] blck_highPoweredLoot; // [causes problems] blck_contructionLoot ; //blck_BoxLoot_Orange;
|
||||
_loot = blck_BoxLoot_Orange;
|
||||
_lootCounts = [100,100,100,100,100,100];
|
||||
_aiDifficultyLevel = "Orange";
|
||||
for "_i" from 1 to 100 do
|
||||
{
|
||||
diag_log format["testCrateLoading: pass %1",_i];
|
||||
_crateType = selectRandom blck_crateTypes;
|
||||
_crate = [_coords,_crateType] call blck_fnc_spawnCrate;
|
||||
[_crate,_loot,_lootCounts] call blck_fnc_fillBoxes;
|
||||
//uiSleep 0.1;
|
||||
diag_log format["testCrateLoading: crate inventory = %1",getItemCargo _crate];
|
||||
};
|
||||
|
@ -15,5 +15,4 @@ _p2 = _bbr select 1;
|
||||
_height = abs ((_p2 select 2) - (_p1 select 2));
|
||||
_marker setPosATL [_markerPos select 0, _markerPos select 1, (_markerPos select 2) + _height];
|
||||
_object setVariable ["marker",_marker];
|
||||
|
||||
true
|
@ -9,6 +9,4 @@ if !(_object getvariable["marker",""] isEqualTo "") then
|
||||
{
|
||||
[_object] call blck3DEN_fnc_removeMarker;
|
||||
_object setVariable ["marker",nil];
|
||||
//_object setVariable ["lootVehicle",nil];
|
||||
//_object setVariable ["garrisoned",nil];
|
||||
};
|
||||
|
@ -44,4 +44,4 @@ if (_markersStateON) then
|
||||
{
|
||||
[true] call blck3DEN_fnc_displayGarrisonMarkers;
|
||||
};
|
||||
[_message,"Status"] call BIS_fnc_3DENShowMessage;
|
||||
[_message,"Status"] call BIS_fnc_3DENShowMessage;
|
||||
|
@ -8,4 +8,4 @@ all3DENEntities params ["_objects"];
|
||||
((_x get3DENAttribute "rotation") select 0) select 2,
|
||||
(_x get3DENAttribute "objectIsSimple") select 0
|
||||
];
|
||||
} forEach _objects;
|
||||
} forEach _objects;
|
||||
|
@ -55,9 +55,6 @@ class CfgFunctions
|
||||
class displayLootMarkers {};
|
||||
class getGarrisonInfo {};
|
||||
class getLootVehicleInfo {};
|
||||
class help {};
|
||||
class initializeAttributes {};
|
||||
class isInfantry {};
|
||||
class isInside {};
|
||||
class loadCratesTiming {};
|
||||
class onDrag {};
|
||||
|
@ -1,21 +1,7 @@
|
||||
Variables to define
|
||||
marker parameters
|
||||
Marker Text
|
||||
Features:
|
||||
|
||||
Mission start message
|
||||
Mission end message
|
||||
Mission level
|
||||
|
||||
To pull units:
|
||||
private _units = allUnits;
|
||||
Exports static or dynamic missions preformated in .sqf code. Simply paste the output of the editor into a new .sqf file, edit entires to refine mission parameters and add the name of the mission file to GMS_missionLists.
|
||||
Captures simple objects, sets allow dammage and allow similation according to editor settings, and captures marker configurations.
|
||||
|
||||
|
||||
To pull objects:
|
||||
_center = allMissionObejcts "RoadCone_L_F";
|
||||
_buildings = allMissionObjects "Building";
|
||||
_things = allMissionObjects "ThingX";
|
||||
_baseObjects = _buildings append _things;
|
||||
|
||||
_static = allMissionObejcts "StaticWeapon";
|
||||
_vehicles = allMissionObejcts "Car" + allMissionObejcts "Tank" + allMissionObejcts "Ship";
|
||||
_air = allMissionObejcts "Air";
|
||||
|
@ -11,7 +11,7 @@ Second, if your rpt log shows errors after a change, revert to the defaults and
|
||||
Third, settings that determine how messages are displayed can be configured in your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf.
|
||||
Here you can use dynamic messages, hints, Toasts or titleText/cutText to display your messages.
|
||||
|
||||
Lastly, settings for the missions themselves have been moved to @epochhive\custom_server\configs.
|
||||
Lastly, settings for the missions themselves are found in a general settings file and a mod-specific file. The latter contains configurations for vehicles, weapons, and other gear that might be mod specific.
|
||||
There are two different config files, one for exile and a second for epoch.
|
||||
There is a third config file which you can use to add additional map-specific or mod-specific settings.
|
||||
For example, you might want only some missions to be running on a small map like Namalsk.
|
||||
|
3
FAQ.txt
3
FAQ.txt
@ -30,6 +30,7 @@ General settings include:
|
||||
Whether players are penalized for running over AI or shootting them with OP weapons.
|
||||
|
||||
Loot can also be configured for each mission class or mission. You can modify the number of weapons, magazines, items, construction materials, etc.
|
||||
TO do this, add these custom loot paramters to the particular missions you wish to use them in, or define the tables in a config then refer to them in the mission(s).
|
||||
You can also adjust the choices for each of these types of items.
|
||||
The equipment selected for each class of mission can also be specified(uniforms, vests, headgear, backpcks, weapons, pistols).
|
||||
Alternatively, AI loadouts can be determined by the mission system based on what is available at server startup. When loadouts are dynamically configured the items spawned in CfgLoot are used. Note that an upper limit on price is available.
|
||||
@ -53,7 +54,7 @@ The missions themselves are spawned from templates which can be used to define m
|
||||
|
||||
To create and run new missions simply:
|
||||
layout an AI base in the Arma 3 editor,
|
||||
define commonly adjusted setting using the editor plugin.
|
||||
define commonly adjusted settings using the editor plugin.
|
||||
export the base as an .sqf using the editor plugin provided.
|
||||
Define the above parameters (nu. AI groups, No AI, etc)
|
||||
Add the name of the file (e.g., "newAImission" to the list of missions to be spawned of that class in ...\custom)server\missions\GMS_missionLists.sqf
|
||||
|
@ -45,7 +45,7 @@ http://www.exilemod.com/topic/9779-releasetool-bem-battleye-filter-manager-by-th
|
||||
http://www.exilemod.com/topic/9256-battleye-filter-tool/
|
||||
http://www.exilemod.com/topic/9708-battleye-filter-editor/
|
||||
|
||||
If you would let me know what exceptions you need to add I will start a list in this document.
|
||||
If you would let me know what exceptions you needed to add I will start a list in this document.
|
||||
|
||||
11) Start your server and join. By default missions will start spawning in around 5-10 min.
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
|
||||
Known issues
|
||||
|
||||
7.00
|
||||
There is no consistent check for the case in which the call to createGroup returns grpNull because the max number of groups on that side has been spawned.
|
||||
some AI vehicles may still wander some distance from the mission center.
|
||||
The distribution of missions is a bit West-favored on Altis.
|
||||
Mission spawning is broken on Namalsk
|
||||
7.02
|
||||
There is no consistent check for the case in which the call to createGroup returns grpNull which happens the max number of groups on that side has been spawned.
|
||||
Some AI vehicles may still wander some distance from the mission center.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
19
README.md
19
README.md
@ -1,10 +1,23 @@
|
||||
PLEASE NOTE!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
I strongly recommend using GMS rather than blackeagls.
|
||||
GMS is rewritten to use the most efficient coding available.
|
||||
It is bug free as far as I known whereas blckeagls has some bugs to this day.
|
||||
GMS is a lighter verision that lacks timeacceleration, mapaddons and other modules that crated confusion.
|
||||
It can be downloaded here: https://github.com/Ghostrider-DbD-/GMS_RC
|
||||
|
||||
|
||||
I have left this public release of blckeagls on github for historical reasons and for those who prefer it over GMS.
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
|
||||
|
||||
Blckegls mission system
|
||||
|
||||
Included is an updated version of blckeagls mission system. This began as an effort to fix bugs in and upgrade version 2.0.2 as updated by Narines and has now evolved to a complete reworking of almost all code.
|
||||
|
||||
|
||||
* Installation: Please refer to Installation.txt for a detailed description of installation and what you need to add to BE filters.
|
||||
* Loading crates on SDV at underwater missions. For epoch, please feel free to use the modified IgiLoad on my github.
|
||||
* Loading crates on SDV at underwater missions. For epoch, please feel free to use R3F or the modified IgiLoad on my github.
|
||||
For exile users, modify your misionfil.pbo/config.sys as described below.
|
||||
http://www.exilemod.com/topic/17352-bigfoots-shipwrecks/
|
||||
infiSTAR Users: you may need to whitelist _MainMarker depending on your settings.
|
||||
@ -23,6 +36,8 @@ Included is an updated version of blckeagls mission system. This began as an eff
|
||||
Bill (DBD Clan) for example compositions.
|
||||
cyncrwler, Grahamme and many others for help with troubleshooting and testing
|
||||
Brian Soanes for helpful bug fixes, testing, performance fixes and general guidance.
|
||||
Porkeld for CBA compatibility fixes and texting.
|
||||
Thomas_TKO for extensive testing of the editor plugin and many new missions.
|
||||
|
||||
|
||||
|
||||
|
@ -10,6 +10,19 @@ Many thanks for new Coding and ideas from Grahame.
|
||||
Significant Changes:
|
||||
|
||||
=====================
|
||||
New: Player stats updated for each AI kill on Epoch.
|
||||
New: added support for Mull of Kyntire.
|
||||
Fixed: Launchers and Launcher rounds were not being deleted.
|
||||
Fixed: AI at Turrets were spawned with scubba loadouts.
|
||||
Fixed: Units at UMS missions (Pirate missions) now spawn with scuba gear if spawned over water .
|
||||
Fixed: Mission Loot Vehicles were not being spawned.
|
||||
Fixed: Missions that were aborted (hostage or leader killed, other reasons) were not being respawned.
|
||||
Fixed: Money not being added to some mission crates.
|
||||
Changed: Some improvements in coding efficiency were implemented for frequently called functions.
|
||||
Changed: all constants used for searching for mission locations on land or at sea are defined in GMS_fnc_findWorld.sqf
|
||||
Changed: maps without water have the search range for missions at sea set to 0.
|
||||
Changed: No searches for missions at sea will be done when the search range is 0.
|
||||
|
||||
7.02 Build 230
|
||||
|
||||
New: Option to hide bushes and trees that happen to be under the location in which an enterable building is spawned
|
||||
|
Loading…
x
Reference in New Issue
Block a user