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";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
private["_mapCenter","_waterPos","_priorUMSpositions","_maxDistance"];
|
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;
|
private _evaluate = true;
|
||||||
while {_evaluate} do
|
while {_evaluate} do
|
||||||
{
|
{
|
||||||
_waterPos = [
|
_waterPos = [
|
||||||
_mapCenter, // center of search area
|
blck_mapCenter, // center of search area
|
||||||
2, // min distance to search
|
2, // min distance to search
|
||||||
_maxDistance, // max distance to search
|
blck_maxSeaSearchDistance, // max distance to search
|
||||||
0, // distance to nearest object
|
0, // distance to nearest object
|
||||||
2, // water mode [2 = water only]
|
2, // water mode [2 = water only]
|
||||||
25, // max gradient
|
25, // max gradient
|
||||||
|
@ -40,7 +40,7 @@ for "_i" from 1 to (count blck_recentMissionCoords) do
|
|||||||
|
|
||||||
private _waterMode = 0;
|
private _waterMode = 0;
|
||||||
private _shoreMode = 0;
|
private _shoreMode = 0;
|
||||||
private _maxGrad = 0.20;
|
private _maxGrad = blck_maxGradient;
|
||||||
private _minObjDist = 30;
|
private _minObjDist = 30;
|
||||||
private _searchDist = blck_mapRange / 2;
|
private _searchDist = blck_mapRange / 2;
|
||||||
private _coords = [];
|
private _coords = [];
|
||||||
@ -164,7 +164,7 @@ while {_coords isEqualTo []} do
|
|||||||
_minDistanceRecentMissions = _minDistanceRecentMissions * _weightRecentMissions;
|
_minDistanceRecentMissions = _minDistanceRecentMissions * _weightRecentMissions;
|
||||||
_coords = [];
|
_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
|
if ((count _coords) > 2) then
|
||||||
@ -173,7 +173,7 @@ if ((count _coords) > 2) then
|
|||||||
_temp = [_coords select 0, _coords select 1];
|
_temp = [_coords select 0, _coords select 1];
|
||||||
_coords = _temp;
|
_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;
|
_coords;
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,8 +71,6 @@ while {true} do
|
|||||||
};
|
};
|
||||||
if (diag_tickTime > _timer5min) then
|
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",
|
format["Timstamp %8 |Dynamic Missions Running %1 | Vehicles %2 | Groups %3 | Missions Run %4 | Server FPS %5 | Server Uptime %6 Min",
|
||||||
blck_missionsRunning,
|
blck_missionsRunning,
|
||||||
@ -83,6 +81,9 @@ while {true} do
|
|||||||
diag_tickTime
|
diag_tickTime
|
||||||
]
|
]
|
||||||
] call blck_fnc_log;
|
] call blck_fnc_log;
|
||||||
|
if (blck_debugON) then
|
||||||
|
{
|
||||||
|
private _activeScripts = diag_activeScripts;
|
||||||
[
|
[
|
||||||
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
|
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
|
||||||
count diag_activeSQFScripts,
|
count diag_activeSQFScripts,
|
||||||
@ -94,6 +95,7 @@ while {true} do
|
|||||||
{
|
{
|
||||||
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
|
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
|
||||||
} forEach diag_activeSQFScripts;
|
} forEach diag_activeSQFScripts;
|
||||||
|
};
|
||||||
[] call blck_fnc_cleanEmptyGroups;
|
[] call blck_fnc_cleanEmptyGroups;
|
||||||
_timer5min = diag_tickTime + 300;
|
_timer5min = diag_tickTime + 300;
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||||
*/
|
*/
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
params[["_coords",[]],["_range",0],["_onFootOnly",false]];
|
params[["_coords",[0,0,0]],["_range",0],["_onFootOnly",false]];
|
||||||
private ["_result","_players"];
|
private ["_result","_players"];
|
||||||
|
|
||||||
private "_players";
|
private "_players";
|
||||||
|
@ -43,7 +43,12 @@ if !(isNull _group) then
|
|||||||
_launcherType = "none";
|
_launcherType = "none";
|
||||||
};
|
};
|
||||||
private _unitPos = [_pos,3,6] call blck_fnc_findRandomLocationWithinCircle;
|
private _unitPos = [_pos,3,6] call blck_fnc_findRandomLocationWithinCircle;
|
||||||
|
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;
|
[_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];
|
//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);
|
_group selectLeader ((units _group) select 0);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
// Need to debug for GM map
|
||||||
private ["_coords","_coordArray","_return"];
|
private ["_coords","_coordArray","_return"];
|
||||||
params["_missionCategoryDescriptors","_missionParameters","_missionCount"];
|
params["_missionCategoryDescriptors","_missionParameters","_missionCount"];
|
||||||
_missionCategoryDescriptors params [
|
_missionCategoryDescriptors params [
|
||||||
@ -35,62 +35,23 @@ if (blck_debugLevel >= 3) then
|
|||||||
if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}};
|
if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}};
|
||||||
|
|
||||||
_missionParameters params[
|
_missionParameters params[
|
||||||
|
"_markerData",
|
||||||
|
"_missionMessages",
|
||||||
|
"_paraData",
|
||||||
|
"_endCondition",
|
||||||
|
"_isscubamission",
|
||||||
|
"_missionLoot",
|
||||||
|
"_aiData",
|
||||||
|
"_defaultMissionLocations"
|
||||||
|
];
|
||||||
|
|
||||||
|
_markerData params[
|
||||||
"_markerName",
|
"_markerName",
|
||||||
"_markerMissionName",
|
"_markerMissionName", // Name used for setMarkerText and also for the root name for all markers
|
||||||
"_endMsg",
|
|
||||||
"_startMsg",
|
|
||||||
"_defaultMissionLocations",
|
|
||||||
"_crateLoot",
|
|
||||||
"_lootCounts",
|
|
||||||
"_markerType",
|
"_markerType",
|
||||||
"_markerColor",
|
"_markerColor",
|
||||||
"_markerSize",
|
"_markerSize",
|
||||||
"_markerBrush",
|
"_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"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
_coordsArray = [];
|
_coordsArray = [];
|
||||||
@ -103,6 +64,7 @@ if !(_defaultMissionLocations isEqualTo []) then
|
|||||||
_coords = [] call blck_fnc_findShoreLocation;
|
_coords = [] call blck_fnc_findShoreLocation;
|
||||||
} else {
|
} else {
|
||||||
_coords = [] call blck_fnc_findSafePosn;
|
_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.
|
Send a message to players.
|
||||||
*/
|
*/
|
||||||
|
_missionMessages params [
|
||||||
|
"_assetKilledMsg",
|
||||||
|
"_endMsg",
|
||||||
|
"_startMsg"
|
||||||
|
];
|
||||||
|
|
||||||
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
|
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
|
||||||
|
|
||||||
|
private _chancePara = _paraData param [6];
|
||||||
private _missionTimeoutAt = diag_tickTime + blck_MissionTimeout;
|
private _missionTimeoutAt = diag_tickTime + blck_MissionTimeout;
|
||||||
private _triggered = 0;
|
private _triggered = 0;
|
||||||
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
||||||
|
//diag_log format["_initializeMission: _spawnPara = %1 | _chancePara = %2",_spawnPara,_chancePara];
|
||||||
private _objects = [];
|
private _objects = [];
|
||||||
private _hiddenObjects = [];
|
private _hiddenObjects = [];
|
||||||
private _mines = [];
|
private _mines = [];
|
||||||
private _crates = [];
|
private _crates = [];
|
||||||
private _missionAIVehicles = [];
|
private _missionAIVehicles = [];
|
||||||
private _blck_AllMissionAI = [];
|
private _blck_AllMissionAI = [];
|
||||||
|
private _spawnedLootVehicles = [];
|
||||||
private _AI_Vehicles = [];
|
private _AI_Vehicles = [];
|
||||||
private _assetSpawned = objNull;
|
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];
|
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;
|
[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";
|
_endCondition = "allKilledOrPlayerNear";
|
||||||
};
|
};
|
||||||
|
|
||||||
private _table = [
|
private _markerData = [
|
||||||
_markerName,
|
_markerName,
|
||||||
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
|
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
|
||||||
_endMsg,
|
|
||||||
_startMsg,
|
|
||||||
_defaultMissionLocations,
|
|
||||||
_crateLoot,
|
|
||||||
_lootCounts,
|
|
||||||
_markerType,
|
_markerType,
|
||||||
_markerColor,
|
_markerColor,
|
||||||
_markerSize,
|
_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,
|
_missionLandscapeMode,
|
||||||
_garrisonedBuildings_BuildingPosnSystem,
|
_garrisonedBuildings_BuildingPosnSystem,
|
||||||
_garrisonedBuilding_ATLsystem,
|
_garrisonedBuilding_ATLsystem,
|
||||||
_missionLandscape,
|
_missionLandscape,
|
||||||
_simpleObjects,
|
_simpleObjects,
|
||||||
_missionLootBoxes,
|
|
||||||
_missionLootVehicles,
|
|
||||||
_missionPatrolVehicles,
|
_missionPatrolVehicles,
|
||||||
_submarinePatrols, // Added Build 227
|
_submarinePatrols, // Added Build 227
|
||||||
_submarinePatrolParameters,
|
_submarinePatrolParameters,
|
||||||
@ -130,27 +151,26 @@ private _table = [
|
|||||||
_scubaGroupParameters,
|
_scubaGroupParameters,
|
||||||
_hostageConfig,
|
_hostageConfig,
|
||||||
_enemyLeaderConfig,
|
_enemyLeaderConfig,
|
||||||
_assetKilledMsg,
|
|
||||||
_uniforms,
|
|
||||||
_headgear,
|
|
||||||
_vests,
|
|
||||||
_backpacks,
|
|
||||||
_weaponList,
|
|
||||||
_sideArms,
|
|
||||||
_chanceHeliPatrol,
|
_chanceHeliPatrol,
|
||||||
_noChoppers,
|
_noChoppers,
|
||||||
_missionHelis,
|
_missionHelis
|
||||||
_chancePara,
|
];
|
||||||
_noPara,
|
|
||||||
_paraTriggerDistance,
|
private _missionMessages = [
|
||||||
_paraSkill,
|
_assetKilledMsg,
|
||||||
_chanceLoot,
|
_endMsg,
|
||||||
_paraLoot,
|
_startMsg
|
||||||
_paraLootCounts,
|
];
|
||||||
_spawnCratesTiming,
|
|
||||||
_loadCratesTiming,
|
private _table = [
|
||||||
|
_markerData,
|
||||||
|
_missionMessages,
|
||||||
|
_paraData,
|
||||||
_endCondition,
|
_endCondition,
|
||||||
_isScubaMission
|
_isscubamission,
|
||||||
|
_missionLoot,
|
||||||
|
_aiData,
|
||||||
|
_defaultMissionLocations
|
||||||
];
|
];
|
||||||
|
|
||||||
_table
|
_table
|
||||||
|
@ -17,16 +17,47 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
|
|
||||||
// Select a mission category (blue, red, green , etd)
|
// Select a mission category (blue, red, green , etd)
|
||||||
private _el = blck_activeMissionsList deleteAt 0;
|
private _el = blck_activeMissionsList deleteAt 0;
|
||||||
|
|
||||||
_el params [
|
_el params [
|
||||||
"_missionCategoryDescriptors", // 0
|
"_missionCategoryDescriptors", // 0
|
||||||
"_missionTimeoutAt", // 1
|
"_missionTimeoutAt", // 1 // server time at which the mission times out.
|
||||||
"_triggered", // 2
|
"_triggered", // 2 // true/false - specifies if mission was triggered by a player or scripting such as debug setting
|
||||||
"_spawnPara", // 3
|
"_spawnPara", // 3 // true/false - specifies if para reinforcements were spawned
|
||||||
"_missionData", // 4
|
"_missionData", // 4 // variable containing information specific to this instance of the mission such as location and objects
|
||||||
"_missionParameters" // 5
|
"_missionParameters" // 5 // Variables regarding the configuration of the dynamic mission
|
||||||
];
|
];
|
||||||
|
|
||||||
|
#define delayTime 1
|
||||||
|
private _monitorAction = -2;
|
||||||
|
|
||||||
|
if (_triggered == 0) then
|
||||||
|
{
|
||||||
|
if (diag_tickTime > _missionTimeoutAt) then
|
||||||
|
{
|
||||||
|
_monitorAction = -1;
|
||||||
|
//diag_log format["_monitorInitializedMissions (37) Mission Timeout Criteria Met at %1",diag_tickTime];
|
||||||
|
} else {
|
||||||
|
private _playerInRange = [_missionData select 0, blck_TriggerDistance, false, true] call blck_fnc_playerInRange;
|
||||||
|
if (_playerInRange) then {
|
||||||
|
//diag_log format["_monitorInitializedMissions (41) Player in range criteria met at %1",diag_tickTime];
|
||||||
|
_monitorAction = 0;
|
||||||
|
} else {
|
||||||
|
if (blck_debugLevel >= 3) then {_monitorAction = 0}; // simulate the mission being tripped by a player
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
if (_triggered == 1) then
|
||||||
|
{
|
||||||
|
//diag_log format["_monitorInitializedMissions (50) Mission already triggered: time %1",diag_tickTime];
|
||||||
|
_monitorAction = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//diag_log format["_monitorInitializedMissions: time %1 | _monitorAction %2 | _missionParameters %3",diag_tickTime,_monitorAction,_missionParameters];
|
||||||
|
|
||||||
|
if (_monitorAction == -2) then
|
||||||
|
{
|
||||||
|
blck_activeMissionsList pushBack _el;
|
||||||
|
} else {
|
||||||
_missionCategoryDescriptors params [
|
_missionCategoryDescriptors params [
|
||||||
"_difficulty",
|
"_difficulty",
|
||||||
"_noMissions", // Max no missions of this category
|
"_noMissions", // Max no missions of this category
|
||||||
@ -36,7 +67,7 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
"_waitTime", // time at which a mission should be spawned
|
"_waitTime", // time at which a mission should be spawned
|
||||||
"_missionsData" //
|
"_missionsData" //
|
||||||
];
|
];
|
||||||
//_missionData = [_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers];
|
|
||||||
_missionData params [
|
_missionData params [
|
||||||
"_coords",
|
"_coords",
|
||||||
"_mines",
|
"_mines",
|
||||||
@ -46,30 +77,77 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
"_blck_AllMissionAI",
|
"_blck_AllMissionAI",
|
||||||
"_assetSpawned",
|
"_assetSpawned",
|
||||||
"_missionAIVehicles",
|
"_missionAIVehicles",
|
||||||
|
"_spawnedLootVehicles",
|
||||||
"_markers"
|
"_markers"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
switch (_monitorAction) do
|
||||||
|
{
|
||||||
|
|
||||||
|
// Handle Timeout
|
||||||
|
case -1:
|
||||||
|
{
|
||||||
_missionParameters params[
|
_missionParameters params[
|
||||||
|
"_markerData",
|
||||||
|
"_missionMessages"
|
||||||
|
];
|
||||||
|
_markerData params[
|
||||||
"_markerName",
|
"_markerName",
|
||||||
"_markerMissionName",
|
"_markerMissionName"
|
||||||
|
];
|
||||||
|
_missionMessages params [
|
||||||
|
"_assetKilledMsg",
|
||||||
|
"_endMsg"
|
||||||
|
];
|
||||||
|
[format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]] call blck_fnc_log;
|
||||||
|
_missionCategoryDescriptors set[noActive, _noActive - 1];
|
||||||
|
[_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, -1] call blck_fnc_endMission;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Handle mission waiting to be triggerd and player is within the range to trigger
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
|
||||||
|
_missionParameters params[
|
||||||
|
"_markerData",
|
||||||
|
"_missionMessages",
|
||||||
|
"_paraData",
|
||||||
|
"_endCondition",
|
||||||
|
"_isscubamission",
|
||||||
|
"_missionLoot",
|
||||||
|
"_aiData"
|
||||||
|
];
|
||||||
|
_markerData params[
|
||||||
|
"_markerName",
|
||||||
|
"_markerMissionName"
|
||||||
|
];
|
||||||
|
_missionMessages params [
|
||||||
|
"_assetKilledMsg",
|
||||||
"_endMsg",
|
"_endMsg",
|
||||||
"_startMsg",
|
"_startMsg"
|
||||||
"_defaultMissionLocations",
|
];
|
||||||
|
_missionLoot params [
|
||||||
|
"_spawnCratesTiming",
|
||||||
|
"_loadCratesTiming",
|
||||||
"_crateLoot",
|
"_crateLoot",
|
||||||
"_lootCounts",
|
"_lootCounts",
|
||||||
"_markerType",
|
"_missionLootBoxes",
|
||||||
"_markerColor",
|
"_missionLootVehicles"
|
||||||
"_markerSize",
|
];
|
||||||
"_markerBrush",
|
_aiData params [
|
||||||
|
"_uniforms",
|
||||||
|
"_headgear",
|
||||||
|
"_vests",
|
||||||
|
"_backpacks",
|
||||||
|
"_weaponList",
|
||||||
|
"_sideArms",
|
||||||
"_missionLandscapeMode",
|
"_missionLandscapeMode",
|
||||||
"_garrisonedBuildings_BuildingPosnSystem",
|
"_garrisonedBuildings_BuildingPosnSystem",
|
||||||
"_garrisonedBuilding_ATLsystem",
|
"_garrisonedBuilding_ATLsystem",
|
||||||
"_missionLandscape",
|
"_missionLandscape",
|
||||||
"_simpleObjects",
|
"_simpleObjects",
|
||||||
"_missionLootBoxes",
|
|
||||||
"_missionLootVehicles",
|
|
||||||
"_missionPatrolVehicles",
|
"_missionPatrolVehicles",
|
||||||
"_submarinePatrols",
|
"_submarinePatrols", // Added Build 227
|
||||||
"_submarinePatrolParameters",
|
"_submarinePatrolParameters",
|
||||||
"_airPatrols",
|
"_airPatrols",
|
||||||
"_noVehiclePatrols",
|
"_noVehiclePatrols",
|
||||||
@ -81,70 +159,14 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
"_maxNoAI",
|
"_maxNoAI",
|
||||||
"_noAIGroups",
|
"_noAIGroups",
|
||||||
"_missionGroups",
|
"_missionGroups",
|
||||||
"_scubaPatrols",
|
"_scubaPatrols", // Added Build 227
|
||||||
"_scubaGroupParameters",
|
"_scubaGroupParameters",
|
||||||
"_hostageConfig",
|
"_hostageConfig",
|
||||||
"_enemyLeaderConfig",
|
"_enemyLeaderConfig",
|
||||||
"_assetKilledMsg",
|
|
||||||
"_uniforms",
|
|
||||||
"_headgear",
|
|
||||||
"_vests",
|
|
||||||
"_backpacks",
|
|
||||||
"_weaponList",
|
|
||||||
"_sideArms",
|
|
||||||
"_chanceHeliPatrol",
|
"_chanceHeliPatrol",
|
||||||
"_noChoppers",
|
"_noChoppers",
|
||||||
"_missionHelis",
|
"_missionHelis"
|
||||||
"_chancePara",
|
|
||||||
"_noPara",
|
|
||||||
"_paraTriggerDistance",
|
|
||||||
"_paraSkill",
|
|
||||||
"_chanceLoot",
|
|
||||||
"_paraLoot",
|
|
||||||
"_paraLootCounts",
|
|
||||||
"_spawnCratesTiming",
|
|
||||||
"_loadCratesTiming",
|
|
||||||
"_endCondition",
|
|
||||||
"_isScubaMission"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
private _playerInRange = [_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange;
|
|
||||||
#define delayTime 1
|
|
||||||
private _monitorAction = -2;
|
|
||||||
|
|
||||||
if (_triggered isEqualTo 0) then
|
|
||||||
{
|
|
||||||
if (diag_tickTime > _missionTimeoutAt) then
|
|
||||||
{
|
|
||||||
_monitorAction = -1;
|
|
||||||
} else {
|
|
||||||
if (_playerInRange) then {
|
|
||||||
_monitorAction = 0;
|
|
||||||
} else {
|
|
||||||
if (blck_debugLevel >= 3) then {_monitorAction = 0}; // simulate the mission being tripped by a player
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
if (_triggered isEqualTo 1) then
|
|
||||||
{
|
|
||||||
_monitorAction = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
switch (_monitorAction) do
|
|
||||||
{
|
|
||||||
|
|
||||||
// Handle Timeout
|
|
||||||
case -1:
|
|
||||||
{
|
|
||||||
//[format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]] call blck_fnc_log;
|
|
||||||
_missionCategoryDescriptors set[noActive, _noActive - 1];
|
|
||||||
[_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, -1] call blck_fnc_endMission;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Handle mission waiting to be triggerd and player is within the range to trigger
|
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
#define triggered 2
|
#define triggered 2
|
||||||
#define timedOut 1
|
#define timedOut 1
|
||||||
_el set[triggered,1];
|
_el set[triggered,1];
|
||||||
@ -191,11 +213,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
|
|
||||||
if !(_scubaGroupParameters isEqualTo [] || _scubaPatrols > 0) then
|
if !(_scubaGroupParameters isEqualTo [] || _scubaPatrols > 0) then
|
||||||
{
|
{
|
||||||
//_umsUniforms = blck_UMS_uniforms;
|
|
||||||
//_umsHeadgear = blck_UMS_headgear;
|
|
||||||
//_umsWeapons = blck_UMS_weapons;
|
|
||||||
//_umsVests = blck_UMS_vests;
|
|
||||||
|
|
||||||
_temp = [_coords, _minNoAI,_maxNoAI,_scubaPatrols,_scubaGroupParameters,_difficulty,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,blck_UMS_weapons,_sideArms,true] call blck_fnc_spawnMissionAI;
|
_temp = [_coords, _minNoAI,_maxNoAI,_scubaPatrols,_scubaGroupParameters,_difficulty,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,blck_UMS_weapons,_sideArms,true] call blck_fnc_spawnMissionAI;
|
||||||
_temp params["_ai","_abort"];
|
_temp params["_ai","_abort"];
|
||||||
if (_abort) throw 1;
|
if (_abort) throw 1;
|
||||||
@ -296,6 +313,11 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
};
|
};
|
||||||
uisleep 5;
|
uisleep 5;
|
||||||
|
|
||||||
|
if !(_missionLootVehicles isEqualTo []) then
|
||||||
|
{
|
||||||
|
_spawnedLootVehicles = [_coords,_missionLootVehicles,_spawnCratesTiming] call blck_fnc_spawnMissionLootVehicles;
|
||||||
|
};
|
||||||
|
|
||||||
private _noPatrols = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
|
private _noPatrols = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
|
||||||
|
|
||||||
if (blck_useVehiclePatrols && ((_noPatrols > 0) || !(_missionPatrolVehicles isEqualTo []))) then
|
if (blck_useVehiclePatrols && ((_noPatrols > 0) || !(_missionPatrolVehicles isEqualTo []))) then
|
||||||
@ -329,17 +351,20 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
{
|
{
|
||||||
_crates = [_coords,_missionLootBoxes,_loadCratesTiming, _spawnCratesTiming, "start", _difficulty] call blck_fnc_spawnMissionCrates;
|
_crates = [_coords,_missionLootBoxes,_loadCratesTiming, _spawnCratesTiming, "start", _difficulty] call blck_fnc_spawnMissionCrates;
|
||||||
};
|
};
|
||||||
|
//diag_log format["monitorInitializedMission: _spawnCrates Timing = %1 / crates spawned = %2",_spawnCratesTiming,_crate];
|
||||||
if (blck_cleanUpLootChests) then
|
if (blck_cleanUpLootChests) then
|
||||||
{
|
{
|
||||||
_objects append _crates;
|
_objects append _crates;
|
||||||
};
|
};
|
||||||
if (_loadCratesTiming isEqualTo "atMissionSpawn") then
|
if (_loadCratesTiming isEqualTo "atMissionSpawn") then
|
||||||
{
|
{
|
||||||
private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
//private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
||||||
{
|
{
|
||||||
[_x,_crateMoney] call blck_fnc_addMoneyToObject;
|
[_x,missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
|
||||||
} forEach _crates;
|
} forEach _crates;
|
||||||
|
//diag_log format["monitorInitializedMission: Loot LOADED _loadCrates Timing = %1",_loadCratesTiming];
|
||||||
|
} else {
|
||||||
|
//diag_log format["monitorInitializedMission: NO Loot LOADED _loadCrates Timing = %1",_loadCratesTiming];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -353,9 +378,8 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
{
|
{
|
||||||
_x setVariable["crateSpawnPos", (getPos _x)];
|
_x setVariable["crateSpawnPos", (getPos _x)];
|
||||||
} forEach _crates;
|
} forEach _crates;
|
||||||
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
|
|
||||||
|
|
||||||
_missionData = [_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers];
|
_missionData = [_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_spawnedLootVehicles,_markers];
|
||||||
|
|
||||||
_el set[missionData, _missionData];
|
_el set[missionData, _missionData];
|
||||||
|
|
||||||
@ -377,6 +401,35 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
|
_missionParameters params[
|
||||||
|
"_markerData",
|
||||||
|
"_missionMessages",
|
||||||
|
"_paraData",
|
||||||
|
"_endCondition",
|
||||||
|
"_isscubamission",
|
||||||
|
"_missionLoot",
|
||||||
|
"_aiData"
|
||||||
|
];
|
||||||
|
|
||||||
|
_markerData params [
|
||||||
|
"_markerName",
|
||||||
|
"_markerMissionName"
|
||||||
|
];
|
||||||
|
|
||||||
|
_missionMessages params [
|
||||||
|
"_assetKilledMsg",
|
||||||
|
"_endMsg"
|
||||||
|
];
|
||||||
|
|
||||||
|
_missionLoot params [
|
||||||
|
"_spawnCratesTiming",
|
||||||
|
"_loadCratesTiming",
|
||||||
|
"_crateLoot",
|
||||||
|
"_lootCounts",
|
||||||
|
"_missionLootBoxes",
|
||||||
|
"_missionLootVehicles"
|
||||||
|
];
|
||||||
|
|
||||||
private _missionComplete = -1;
|
private _missionComplete = -1;
|
||||||
private ["_secureAsset","_endIfPlayerNear","_endIfAIKilled"];
|
private ["_secureAsset","_endIfPlayerNear","_endIfAIKilled"];
|
||||||
|
|
||||||
@ -411,15 +464,29 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
if (_aiKilled) throw 1;
|
if (_aiKilled) throw 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_spawnPara) then
|
if (_spawnPara || blck_debugLevel >= 3) then
|
||||||
{
|
{
|
||||||
if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then
|
if ([_coords,_paraData select 1,true] call blck_fnc_playerInRange) then
|
||||||
{
|
{
|
||||||
_spawnPara = false; // The player gets one try to spawn these.
|
_spawnPara = false; // The player gets one try to spawn these.
|
||||||
_el set[3,_spawnPara];
|
_el set[3,_spawnPara];
|
||||||
if (random(1) < _chancePara) then //
|
_paraData params[
|
||||||
{
|
"_noPara",
|
||||||
private _paratroops = [_coords,_noPara,_difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnParaUnits;
|
"_paraTriggerDistance",
|
||||||
|
"_paraSkill",
|
||||||
|
"_chanceLoot",
|
||||||
|
"_paraLoot",
|
||||||
|
"_paraLootCounts"
|
||||||
|
];
|
||||||
|
_aiData params [
|
||||||
|
"_uniforms",
|
||||||
|
"_headgear",
|
||||||
|
"_vests",
|
||||||
|
"_backpacks",
|
||||||
|
"_weaponList",
|
||||||
|
"_sideArms"
|
||||||
|
];
|
||||||
|
private _paratroops = [_coords,_noPara,_difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,_isScubaMission] call blck_fnc_spawnParaUnits;
|
||||||
if !(isNull _paratroops) then
|
if !(isNull _paratroops) then
|
||||||
{
|
{
|
||||||
_blck_AllMissionAI append (units _paratroops);
|
_blck_AllMissionAI append (units _paratroops);
|
||||||
@ -432,7 +499,7 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
_objects append _extraCrates;
|
_objects append _extraCrates;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
//diag_log format["_monitorInitializedMissions: para spawned at %1",diag_tickTime];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -468,7 +535,7 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
} forEach _crates;
|
} forEach _crates;
|
||||||
};
|
};
|
||||||
|
|
||||||
_missionData = [_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers];
|
_missionData = [_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_spawnedLootVehicles,_markers];
|
||||||
|
|
||||||
_el set[missionData, _missionData];
|
_el set[missionData, _missionData];
|
||||||
|
|
||||||
@ -481,12 +548,12 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
switch (_exception) do
|
switch (_exception) do
|
||||||
{
|
{
|
||||||
case 1: { // Normal Mission End
|
case 1: { // Normal Mission End
|
||||||
//diag_log format["_monitorInitializedMissions: Normal mission end"];
|
diag_log format["_monitorInitializedMissions: Normal mission end"];
|
||||||
if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then
|
if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then
|
||||||
{
|
{
|
||||||
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
||||||
{
|
{
|
||||||
if (count _missionLootBoxes > 0) then
|
if !(_missionLootBoxes isEqualTo []) then
|
||||||
{
|
{
|
||||||
_crates = [_coords,_missionLootBoxes,_loadCratesTiming,_spawnCratesTiming, "end", _difficulty] call blck_fnc_spawnMissionCrates;
|
_crates = [_coords,_missionLootBoxes,_loadCratesTiming,_spawnCratesTiming, "end", _difficulty] call blck_fnc_spawnMissionCrates;
|
||||||
}
|
}
|
||||||
@ -499,25 +566,33 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
{
|
{
|
||||||
_objects append _crates;
|
_objects append _crates;
|
||||||
};
|
};
|
||||||
private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
//private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
||||||
{
|
{
|
||||||
[_x,_crateMoney] call blck_fnc_addMoneyToObject;
|
[_x, missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
|
||||||
} forEach _crates;
|
} forEach _crates;
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_spawnCratesTiming in ["atMissionSpawnGround","atMissionSpawnAir"] && _loadCratesTiming isEqualTo "atMissionCompletion") then
|
if (_loadCratesTiming isEqualTo "atMissionCompletion") then
|
||||||
{
|
{
|
||||||
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then
|
||||||
{
|
{
|
||||||
|
//private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
||||||
|
{
|
||||||
|
[_x] call blck_fnc_loadMissionCrate;
|
||||||
|
[_x, missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
|
||||||
|
} forEach _crates;
|
||||||
|
//diag_log format["monitorInitializedMission (586): Loot LOADED _loadCrates Timing = %1",_loadCratesTiming];
|
||||||
private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
|
||||||
{
|
{
|
||||||
[_x] call blck_fnc_loadMissionCrate;
|
[_x] call blck_fnc_loadMissionCrate;
|
||||||
[_x,_crateMoney] call blck_fnc_addMoneyToObject;
|
[_x, missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
|
||||||
} forEach _crates;
|
} forEach _spawnedLootVehicles;
|
||||||
|
//diag_log format["monitorInitializedMission (592): Loot LOADED _loadCrates Timing = %1",_loadCratesTiming];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
_missionAIVehicles append _spawnedLootVehicles; // So these are deleted if no player enters the driver's seat.
|
||||||
if (_secureAsset && (alive _assetSpawned)) then
|
if (_secureAsset && (alive _assetSpawned)) then
|
||||||
{
|
{
|
||||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
||||||
@ -547,26 +622,40 @@ for "_i" from 1 to (count blck_activeMissionsList) do
|
|||||||
};
|
};
|
||||||
case 2: { // Abort, crate moved.
|
case 2: { // Abort, crate moved.
|
||||||
_endMsg = "Crate Removed from Mission Site Before Mission Completion: Mission Aborted";
|
_endMsg = "Crate Removed from Mission Site Before Mission Completion: Mission Aborted";
|
||||||
|
_objects append _missionAIVehicles;
|
||||||
|
_objects append _spawnedLootVehicls;
|
||||||
[_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
[_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
||||||
|
_waitTime = diag_tickTime + _tMin + random(_tMax - _tMin);
|
||||||
|
_missionCategoryDescriptors set [noActive,_noActive - 1];
|
||||||
|
_missionCategoryDescriptors set [waitTime,_waitTime];
|
||||||
};
|
};
|
||||||
case 3: { // Abort, key asset killed
|
case 3: { // Abort, key asset killed
|
||||||
|
_objects append _missionAIVehicles;
|
||||||
|
_objects append _spawnedLootVehicles;
|
||||||
[_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
[_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
||||||
|
_waitTime = diag_tickTime + _tMin + random(_tMax - _tMin);
|
||||||
|
_missionCategoryDescriptors set [noActive,_noActive - 1];
|
||||||
|
_missionCategoryDescriptors set [waitTime,_waitTime];
|
||||||
};
|
};
|
||||||
case 4: { // Reserved for grpNull errors in the future
|
case 4: { // Reserved for grpNull errors in the future
|
||||||
|
|
||||||
};
|
};
|
||||||
case 5: {
|
case 5: {
|
||||||
|
// Used for testing purposes only
|
||||||
|
[format["Programed mission abort, debut level >= 4"]] call blck_fnc_log;
|
||||||
|
_objects append _missionAIVehicles;
|
||||||
|
_objects append _spawnedLootVehicles;
|
||||||
[_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
[_coords,_mines,_objects,_hiddenObjects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission;
|
||||||
}
|
_waitTime = diag_tickTime + _tMin + random(_tMax - _tMin);
|
||||||
|
_missionCategoryDescriptors set [noActive,_noActive - 1];
|
||||||
|
_missionCategoryDescriptors set [waitTime,_waitTime];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
default
|
|
||||||
{
|
|
||||||
blck_activeMissionsList pushBack _el;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
//diag_log format["_monitorInitializedMissions (599) End of Code Block | blck_activeMissionsList = %1",blck_activeMissionsList];
|
||||||
};
|
};
|
||||||
|
|
||||||
blck_activeMonitorThreads = blck_activeMonitorThreads - 1;
|
blck_activeMonitorThreads = blck_activeMonitorThreads - 1;
|
||||||
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_chancePara"];
|
private _chancePara = missionNamespace getVariable[format["blck_chancePara%1",_aiDifficultyLevel],0];
|
||||||
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
|
_chancePara
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_backpacks"];
|
private _backpacks = missionNamespace getVariable[format["blck_backpacks_%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_backpacks
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_headgear"];
|
private _headgear = missionNamespace getVariable [format["blck_headgear_%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_headgear
|
@ -16,14 +16,6 @@
|
|||||||
*/
|
*/
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
private["_weaponList","_missionColor"];
|
params["_missionColor"];
|
||||||
|
private _weaponList = missionNamespace getVariable [format["blck_WeaponList_%1",_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;};
|
|
||||||
};
|
|
||||||
_weaponList
|
_weaponList
|
||||||
|
@ -13,13 +13,5 @@
|
|||||||
|
|
||||||
params["_aiDifficultyLevel"]; //[["_aiDifficultyLevel",selectRandom["Red","Green"]]];
|
params["_aiDifficultyLevel"]; //[["_aiDifficultyLevel",selectRandom["Red","Green"]]];
|
||||||
|
|
||||||
private["_sideArms"];
|
private _sideArms = missionNamespace getVariable[format["blck_Pistols_%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_sideArms
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_uniforms"];
|
private _uniforms = missionNamespace getVariable [format["blck_SkinList_%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_uniforms
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_vests"];
|
private _vests = missionNamespace getVariable [format["blck_vests_%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_vests
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_chanceHeliPatrol"];
|
private _chanceHeliPatrol = missionNamespace getVariable[format["blck_chanceHeliPatrol%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_chanceHeliPatrol
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_missionHelis"];
|
private _missionHelis = missionNamespace getVariable[format["blck_patrolHelis%1",_aiDifficultyLevel],[]];
|
||||||
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
|
_missionHelis
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_noChoppers"];
|
private _noChoppers = missionNamespace getVariable [format["blck_noPatrolHelis%1",_aiDifficultyLevel],0];
|
||||||
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
|
_noChoppers
|
@ -12,13 +12,5 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
params["_aiDifficultyLevel"];
|
params["_aiDifficultyLevel"];
|
||||||
private["_noPara"];
|
private _noPara = missionNamespace getVariable [format["blck_noPara%1",_aiDifficultyLevel],0];
|
||||||
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
|
_noPara
|
@ -11,13 +11,5 @@
|
|||||||
|
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
params["_diff"];
|
params["_diff"];
|
||||||
private ["_count"];
|
private _count = missionNamespace getVariable [format["blck_vehCrew_%1",_diff],0];
|
||||||
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};
|
|
||||||
};
|
|
||||||
|
|
||||||
_count
|
_count
|
||||||
|
@ -27,7 +27,7 @@ _units = [];
|
|||||||
_abort = false;
|
_abort = false;
|
||||||
_pos = [];
|
_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];
|
//diag_log format["_spawnEmplacedWeaponArray(30): _noEmplacedWeapons = %1 | _emplacedWepData = %2",_noEmplacedWeapons,_emplacedWepData];
|
||||||
|
|
||||||
// Define _emplacedWepData if not already configured.
|
// Define _emplacedWepData if not already configured.
|
||||||
|
@ -67,7 +67,6 @@ private _cratesSpawned = [];
|
|||||||
[_crate] call blck_fnc_loadMissionCrate;
|
[_crate] call blck_fnc_loadMissionCrate;
|
||||||
};
|
};
|
||||||
_cratesSpawned pushback _crate;
|
_cratesSpawned pushback _crate;
|
||||||
|
|
||||||
}forEach _cratesToSpawn;
|
}forEach _cratesToSpawn;
|
||||||
|
|
||||||
if (_spawnCrateTiming in ["atMissionEndAir","atMissionSpawnAir"]) then
|
if (_spawnCrateTiming in ["atMissionEndAir","atMissionSpawnAir"]) then
|
||||||
|
@ -16,15 +16,19 @@ if (count _coords isEqualTo 2) then {_coords pushBack 0};
|
|||||||
private _vehs = [];
|
private _vehs = [];
|
||||||
{
|
{
|
||||||
_x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"];
|
_x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"];
|
||||||
private _pos =_coords vectorAdd _vehOffset;
|
_veh = [_vehType, _coords vectorAdd _vehOffset] call blck_fnc_spawnVehicle;
|
||||||
_veh = [_vehType, _pos] call blck_fnc_spawnVehicle;
|
|
||||||
[_veh, _dir] call blck_fnc_setDirUp;
|
[_veh, _dir] call blck_fnc_setDirUp;
|
||||||
|
|
||||||
_veh lock _lock;
|
_veh lock _lock;
|
||||||
if (_loadCrateTiming isEqualTo "atMissionSpawn") then
|
if (_loadCrateTiming isEqualTo "atMissionSpawnGround") then
|
||||||
{
|
{
|
||||||
[_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
|
[_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
|
||||||
_veh setVariable["lootLoaded",true];
|
_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;
|
_vehs pushback _veh;
|
||||||
}forEach _missionLootVehicles;
|
}forEach _missionLootVehicles;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||||
*/
|
*/
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
// Need to debug for GM
|
||||||
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {};
|
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {};
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -34,6 +34,9 @@ _fn_doUpdates = {
|
|||||||
{
|
{
|
||||||
[["showScore",[_reward,"",_kills],""],[_player]] call blck_fnc_messageplayers;
|
[["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
|
if (toLower(blck_modType) isEqualTo "exile") then
|
||||||
{
|
{
|
||||||
|
@ -15,6 +15,15 @@
|
|||||||
|
|
||||||
params["_unit","_killer","_instigator"];
|
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 (local _unit) then
|
||||||
{
|
{
|
||||||
if !((vehicle _unit) isKindOf "Man") then
|
if !((vehicle _unit) isKindOf "Man") then
|
||||||
@ -35,12 +44,7 @@ _unit disableAI "ALL";
|
|||||||
{
|
{
|
||||||
_unit removeAllEventHandlers _x;
|
_unit removeAllEventHandlers _x;
|
||||||
}forEach["FiredNear","Reloaded"];
|
}forEach["FiredNear","Reloaded"];
|
||||||
[_unit] joinSilent blck_graveyardGroup;
|
|
||||||
|
|
||||||
if (count(units (group _unit)) isEqualTo 0) then
|
|
||||||
{
|
|
||||||
deleteGroup _group;
|
|
||||||
};
|
|
||||||
|
|
||||||
if !((vehicle _unit) isKindOf "Man") then
|
if !((vehicle _unit) isKindOf "Man") then
|
||||||
{
|
{
|
||||||
|
@ -11,21 +11,27 @@
|
|||||||
*/
|
*/
|
||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
private["_launcher","_launcherRounds"];
|
|
||||||
params["_unit"]; // = _this select 0;
|
params["_unit"]; // = _this select 0;
|
||||||
_launcher = _unit getVariable ["Launcher",""];
|
private _loadout = _unit getVariable["launcher",[[],[]]];
|
||||||
_unit removeWeapon _Launcher;
|
//diag_log format["_removeLaunchers: _loadout = %1",_loadout];
|
||||||
if (_launcher != "") then
|
private _mags = magazines _unit;
|
||||||
|
//diag_log format["_removeLaunchers: _mags = %1",_mags];
|
||||||
{
|
{
|
||||||
_unit removeWeapon _Launcher;
|
if (_forEachIndex > 0) then
|
||||||
{
|
{
|
||||||
if (_launcher in weaponCargo _x) exitWith {
|
//diag_log format["_removeLaunchers: _x = %1",_x];
|
||||||
deleteVehicle _x;
|
_unit removeMagazines _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;
|
|
||||||
};
|
};
|
||||||
|
} 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";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
// Acomodate case where para are spawned over water.
|
||||||
params["_pos","_numAI","_skillAI",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
|
params["_pos","_numAI","_skilllevel",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
|
||||||
|
|
||||||
if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
|
if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
|
||||||
if (_sideArms isEqualTo []) then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms};
|
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 (_vests isEqualTo []) then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests};
|
||||||
if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks};
|
if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks};
|
||||||
|
|
||||||
private["_arc","_dir","_spawnPos","_chute","_unit","_return","_paraGroup"];
|
|
||||||
private _params = ["_pos","_numAI","_skillAI"];
|
private _params = ["_pos","_numAI","_skillAI"];
|
||||||
#ifdef blck_debugMode
|
private _paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
|
||||||
{
|
private _arc = 45;
|
||||||
diag_log format["_fnc_spawnParaUnits: %1 = %2",_x, _this select _forEachIndex];
|
private _dir = 0;
|
||||||
}forEach _params;
|
|
||||||
#endif
|
|
||||||
_paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
|
|
||||||
#define infantryPatrolRadius 30
|
#define infantryPatrolRadius 30
|
||||||
#define infantryWaypointTimeout [5,7.5,10]
|
#define infantryWaypointTimeout [5,7.5,10]
|
||||||
[_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints;
|
|
||||||
|
|
||||||
#define launcherType "none"
|
#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
|
for "_i" from 1 to _numAI do
|
||||||
{
|
{
|
||||||
_spawnPos = _pos getPos[1,_dir];
|
private _unitPos = _pos getPos[1,_dir];
|
||||||
_chute = createVehicle ["Steerable_Parachute_F", [_spawnPos select 0, _spawnPos select 1, 250], [], 0, "FLY"];
|
private _chute = createVehicle ["Steerable_Parachute_F", [_unitPos select 0, _unitPos select 1, 250], [], 0, "FLY"];
|
||||||
[_chute] call blck_fnc_protectVehicle;
|
[_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 assignAsDriver _chute;
|
||||||
_unit moveInDriver _chute;
|
_unit moveInDriver _chute;
|
||||||
_unit setVariable["chute",_chute];
|
_unit setVariable["chute",_chute];
|
||||||
_dir = _dir + _arc;
|
_dir = _dir + _arc;
|
||||||
|
uiSleep 2; // To space them out a bit
|
||||||
uiSleep 2;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
blck_monitoredMissionAIGroups pushback _paraGroup;
|
blck_monitoredMissionAIGroups pushback _paraGroup;
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
private ["_i","_weap","_unit","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices","_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
|
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 (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout};
|
||||||
if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms};
|
if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms};
|
||||||
@ -70,44 +70,23 @@ _unit allowDammage true;
|
|||||||
_unit setBehaviour "COMBAT";
|
_unit setBehaviour "COMBAT";
|
||||||
_unit setunitpos "AUTO";
|
_unit setunitpos "AUTO";
|
||||||
|
|
||||||
if (surfaceIsWater (getPos _unit)) then
|
if !(_uniforms isEqualTo []) then {_unit forceAddUniform (selectRandom _uniforms)};
|
||||||
{
|
if !(_headGear isEqualTo []) then {_unit addHeadgear (selectRandom _headGear)};
|
||||||
_uniforms = blck_UMS_uniforms;
|
if !(_vests isEqualTo []) then {_unit addVest (selectRandom _vests)};
|
||||||
_headGear = blck_UMS_headgear;
|
if !(_weaponList isEqualTo []) then {
|
||||||
_weaponList = blck_UMS_weapons;
|
|
||||||
_vests = blck_UMS_vests;
|
|
||||||
};
|
|
||||||
_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;
|
_weap = selectRandom _weaponList;
|
||||||
_unit addWeaponGlobal _weap;
|
_unit addWeaponGlobal _weap;
|
||||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||||
_unit addMagazines[selectRandom _ammochoices,3];
|
_unit addMagazines[selectRandom _ammochoices,3];
|
||||||
/*
|
if (random 1 < blck_chanceMuzzle) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 101] call BIS_fnc_compatibleItems))}; // muzzles
|
||||||
_optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
|
if (random 1 < blck_chanceOptics) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 201] call BIS_fnc_compatibleItems))}; // optics
|
||||||
_pointers = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
|
if (random 1 < blck_chancePointer) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 301] call BIS_fnc_compatibleItems))}; // pointers
|
||||||
_muzzles = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
|
if (random 1 < blck_chanceUnderbarrel) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 302] call BIS_fnc_compatibleItems))}; // underbarrel
|
||||||
_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
|
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
|
||||||
{
|
{
|
||||||
_unit addMagazine "1Rnd_HE_Grenade_shell";
|
_unit addMagazine "1Rnd_HE_Grenade_shell";
|
||||||
};
|
};
|
||||||
|
};
|
||||||
if !(_sideArms isEqualTo []) then
|
if !(_sideArms isEqualTo []) then
|
||||||
{
|
{
|
||||||
_weap = selectRandom _sideArms;
|
_weap = selectRandom _sideArms;
|
||||||
@ -115,34 +94,21 @@ if !(_sideArms isEqualTo []) then
|
|||||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||||
_unit addMagazines [selectRandom _ammoChoices, 2];
|
_unit addMagazines [selectRandom _ammoChoices, 2];
|
||||||
};
|
};
|
||||||
|
if !(blck_ConsumableItems isEqualTo []) then
|
||||||
|
{
|
||||||
for "_i" from 1 to (1+floor(random(4))) do
|
for "_i" from 1 to (1+floor(random(4))) do
|
||||||
{
|
{
|
||||||
_unit addItem (selectRandom blck_ConsumableItems);
|
_unit addItem (selectRandom blck_ConsumableItems);
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
if !(blck_specialItems isEqualTo []) then
|
||||||
|
{
|
||||||
// Add First Aid or Grenade 50% of the time
|
// Add First Aid or Grenade 50% of the time
|
||||||
if (round(random 10) <= 5) then
|
if (round(random 10) <= 5) then
|
||||||
{
|
{
|
||||||
_unit addItem selectRandom blck_specialItems;
|
_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
|
|
||||||
{
|
|
||||||
_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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
if !(_backpacks isEqualTo []) then
|
if !(_backpacks isEqualTo []) then
|
||||||
{
|
{
|
||||||
if (_Launcher isEqualTo "none") then
|
if (_Launcher isEqualTo "none") then
|
||||||
@ -152,25 +118,28 @@ if !(_backpacks isEqualTo []) then
|
|||||||
_unit addBackpack selectRandom _backpacks;
|
_unit addBackpack selectRandom _backpacks;
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
_unit addWeaponGlobal _Launcher;
|
_unit addWeaponGlobal _launcher;
|
||||||
_unit addBackpack (selectRandom _backpacks);
|
_unit addBackpack (selectRandom _backpacks);
|
||||||
|
private _roundsAdded = [];
|
||||||
private _mags = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines");
|
private _mags = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines");
|
||||||
for "_i" from 1 to 3 do
|
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
|
if(sunOrMoon < 0.2 && blck_useNVG)then
|
||||||
{
|
{
|
||||||
_unit addWeapon selectRandom blck_NVG;
|
_unit addWeapon selectRandom blck_NVG;
|
||||||
_unit setVariable ["hasNVG", true,true];
|
_unit setVariable ["hasNVG", true];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_unit setVariable ["hasNVG", false,true];
|
_unit setVariable ["hasNVG", false];
|
||||||
};
|
};
|
||||||
|
|
||||||
_unit addWeapon selectRandomWeighted["",4,"Binocular",3,"Rangefinder",1];
|
_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 ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}];
|
||||||
_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}];
|
_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}];
|
||||||
|
|
||||||
switch (_skillLevel) do
|
[_unit, missionNamespace getVariable[format["blck_Skills%1",_skillLevel],blck_SkillsRed]] call blck_fnc_setSkill;
|
||||||
{
|
_index = missionNamespace getVariable[format["blck_skillsIndex_%1",_skillLevel],1];
|
||||||
case "blue": {_index = 0;_aiSkills = blck_SkillsBlue;};
|
_unit setVariable ["alertDist",blck_AIAlertDistance select _index];
|
||||||
case "red": {_index = 1;_aiSkills = blck_SkillsRed;};
|
_unit setVariable ["intelligence",blck_AIIntelligence select _index];
|
||||||
case "green": {_index = 2;_aiSkills = blck_SkillsGreen;};
|
_unit setVariable ["GMS_AI",true];
|
||||||
case "orange": {_index = 3;_aiSkills = blck_SkillsOrange;};
|
//diag_log format["_spawnUnit: _index = %1 | _aiSkills = %2",_index,_aiSkills];
|
||||||
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
|
_unit
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,6 +57,10 @@ blck_activeMonitorThreads = 0;
|
|||||||
blck_validEndStates = ["allUnitsKilled", "playerNear", "allKilledOrPlayerNear","assetSecured"];
|
blck_validEndStates = ["allUnitsKilled", "playerNear", "allKilledOrPlayerNear","assetSecured"];
|
||||||
blck_validLootSpawnTimings = ["atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir"];
|
blck_validLootSpawnTimings = ["atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir"];
|
||||||
blck_validLootLoadTimings = ["atMissionCompletion", "atMissionSpawn"];
|
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"};
|
if (blck_debugOn) then {diag_log "[blckeagls] Variables Loaded"};
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
blck_locationBlackList = []; // Do not touch ...
|
blck_locationBlackList = []; // Do not touch ...
|
||||||
blck_debugON = false; // should be set to false; ...
|
blck_debugON = false; // should be set to false; ...
|
||||||
blck_debugLevel = 0; // should be set to 0 ...
|
blck_debugLevel = 0; // should be set to 0 ...
|
||||||
|
|
||||||
#ifdef blck_milServer
|
#ifdef blck_milServer
|
||||||
if (true) exitWith
|
if (true) exitWith
|
||||||
{
|
{
|
||||||
@ -312,6 +313,28 @@
|
|||||||
blck_logBlacklistedItems = true;
|
blck_logBlacklistedItems = true;
|
||||||
//blck_maximumitempriceinai_loadouts = 1000;
|
//blck_maximumitempriceinai_loadouts = 1000;
|
||||||
// lists of black-listed items to be excluded from dynamic loadouts
|
// 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 = [
|
blck_blacklistedVests = [
|
||||||
//"V_Press_F"
|
//"V_Press_F"
|
||||||
];
|
];
|
||||||
@ -439,6 +462,12 @@
|
|||||||
blck_maxMoneyRed = 15;
|
blck_maxMoneyRed = 15;
|
||||||
blck_maxMoneyBlue = 10;
|
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
|
#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 = [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];
|
//blck_AIAlertDistance = [150,225,400,500];
|
||||||
|
@ -235,8 +235,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
|||||||
"optic_tws"
|
"optic_tws"
|
||||||
//"optic_tws_mg",
|
//"optic_tws_mg",
|
||||||
];
|
];
|
||||||
|
blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes;
|
||||||
#ifdef useAPEX
|
|
||||||
blck_Optics_Apex = [
|
blck_Optics_Apex = [
|
||||||
//Apex
|
//Apex
|
||||||
"optic_Arco_blk_F", "optic_Arco_ghex_F",
|
"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_LRPS_tna_F","optic_LRPS_ghex_F",
|
||||||
"optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_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;
|
blck_Optics = blck_Optics + blck_Optics_Apex;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -313,24 +312,23 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
|||||||
blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650;
|
blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650;
|
||||||
blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG;
|
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",
|
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_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_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"];
|
"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_Orange = blck_WeaponList_Orange + blck_apexWeapons;
|
||||||
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
|
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
|
blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
|
||||||
|
|
||||||
#ifdef useAPEX
|
|
||||||
blck_ApexBackpacks = [
|
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_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_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"
|
"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;
|
blck_backpacks = blck_ApexBackpacks + blck_backpacks;
|
||||||
#endif
|
#endif
|
||||||
blck_backpacks_blue = blck_backpacks;
|
blck_backpacks_blue = blck_backpacks;
|
||||||
|
@ -24,13 +24,13 @@
|
|||||||
3) A time acceleration module.
|
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_spawnMapAddons = false; // 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_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_simulationManager = blck_useBlckeaglsSimulationManagement;
|
||||||
blck_hideRocksAndPlants = true; // When true, any rocks, trees or bushes under enterable buildings will be 'hidden'
|
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
|
// 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_timeAccelerationDay = 2; // Daytime time accelearation
|
||||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||||
@ -77,10 +77,10 @@
|
|||||||
blck_showCountAliveAI = true;
|
blck_showCountAliveAI = true;
|
||||||
|
|
||||||
//Minimum distance between missions
|
//Minimum distance between missions
|
||||||
blck_MinDistanceFromMission = 2000;
|
blck_MinDistanceFromMission = 1000;
|
||||||
blck_minDistanceToBases = 800;
|
blck_minDistanceToBases = 300;
|
||||||
blck_minDistanceToPlayer = 500;
|
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.
|
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_logblacklisteditems = true;
|
||||||
//blck_maximumitempriceinai_loadouts = 1000;
|
//blck_maximumitempriceinai_loadouts = 1000;
|
||||||
// lists of black-listed items to be excluded from dynamic loadouts
|
// 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 = [
|
blck_blacklistedVests = [
|
||||||
//"V_Press_F"
|
//"V_Press_F"
|
||||||
];
|
];
|
||||||
@ -359,9 +375,6 @@
|
|||||||
|
|
||||||
//This defines how long after an AI dies that it's body disappears.
|
//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
|
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
|
// 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];
|
// values are ordered as follows [blue, red, green, orange];
|
||||||
@ -420,7 +433,11 @@
|
|||||||
blck_maxMoneyGreen = 40;
|
blck_maxMoneyGreen = 40;
|
||||||
blck_maxMoneyRed = 30;
|
blck_maxMoneyRed = 30;
|
||||||
blck_maxMoneyBlue = 20;
|
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
|
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||||
{
|
{
|
||||||
[format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log;
|
[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";
|
#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
|
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
|
#ifdef blck_useNIA
|
||||||
blck_NIA_WeaponsLMG = [
|
blck_NIA_WeaponsLMG = [
|
||||||
@ -266,8 +266,8 @@ blck_NIA_WeaponsSniper = [
|
|||||||
"hlc_rifle_psg1A1"
|
"hlc_rifle_psg1A1"
|
||||||
];
|
];
|
||||||
#endif
|
#endif
|
||||||
diag_log "[blckeagls] end of Custom Configurations for NIA 5/2/20";
|
//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 format["[blckeagls] blck_NIA_WeaponsLMG = %1",if (isNil "blck_NIA_WeaponsLMG") then {"nil"} else {blck_NIA_WeaponsLMG}];
|
||||||
|
|
||||||
#ifdef blck_useRHS
|
#ifdef blck_useRHS
|
||||||
blck_RHS_Weapons = [
|
blck_RHS_Weapons = [
|
||||||
@ -728,8 +728,8 @@ blck_RHS_WeaponsSAF = [
|
|||||||
"rhs_weap_m84"
|
"rhs_weap_m84"
|
||||||
];
|
];
|
||||||
#endif
|
#endif
|
||||||
diag_log format["[blckeagls] blck_RHS_Weapons = %1",if (isNil "blck_RHS_Weapons") then {"nil"} else {blck_RHS_Weapons}];
|
//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 "[blckeagls] end of Custom Configurations for RHS 5/2/20";
|
||||||
|
|
||||||
|
|
||||||
#ifdef blck_useCUP
|
#ifdef blck_useCUP
|
||||||
@ -1222,23 +1222,29 @@ blck_CUPHeadgear = [
|
|||||||
"CUP_H_USMC_Officer_Cap"
|
"CUP_H_USMC_Officer_Cap"
|
||||||
];
|
];
|
||||||
#endif
|
#endif
|
||||||
diag_log "[blckeagls] end of Custom Configurations for CUP 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 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 RHS 5/2/20";
|
||||||
blck_customConfigsLoaded = 1;
|
blck_customConfigsLoaded = 1;
|
||||||
|
|
||||||
|
uiSleep 5;
|
||||||
|
|
||||||
if (blck_debugOn) then {
|
if (blck_debugOn) then {
|
||||||
diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
|
||||||
blck_MinDistanceFromMission = 1000;
|
blck_MinDistanceFromMission = 1000;
|
||||||
blck_minDistanceToBases = 1000;
|
blck_minDistanceToBases = 1000;
|
||||||
blck_minDistanceToPlayer = 1000;
|
blck_minDistanceToPlayer = 1000;
|
||||||
blck_minDistanceFromTowns = 500;
|
blck_minDistanceFromTowns = 500;
|
||||||
diag_log "<GRG_TEST> HEY YOU porkid's settings were loaded";
|
blck_preciseMapMarkers = true;
|
||||||
|
blck_MissionTimeout = 30 * 30;
|
||||||
blck_MissionTimeout = 3000;
|
blck_cleanupCompositionTimer = 30;
|
||||||
|
blck_AliveAICleanUpTimer = 30;
|
||||||
|
blck_bodyCleanUpTimer = 30;
|
||||||
|
blck_vehicleDeleteTimer = 30;
|
||||||
blck_maxSpawnedMissions = 15;
|
blck_maxSpawnedMissions = 15;
|
||||||
blck_mainThreadUpdateInterval = 10;
|
blck_mainThreadUpdateInterval = 10;
|
||||||
|
blck_launchersPerGroup = 6;
|
||||||
|
|
||||||
blck_enableOrangeMissions = 1;
|
blck_enableOrangeMissions = 1;
|
||||||
blck_enableGreenMissions = 1;
|
blck_enableGreenMissions = 1;
|
||||||
blck_enableRedMissions = 1;
|
blck_enableRedMissions = 1;
|
||||||
@ -1247,7 +1253,6 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
|||||||
blck_enableHunterMissions = 1;
|
blck_enableHunterMissions = 1;
|
||||||
blck_enableScoutsMissions = 1;
|
blck_enableScoutsMissions = 1;
|
||||||
blck_maxCrashSites = 0;
|
blck_maxCrashSites = 0;
|
||||||
diag_log "<GRG_TEST> HEY YOU custom settings for enabling missions were loaded";
|
|
||||||
|
|
||||||
blck_TMin_Blue = 7;
|
blck_TMin_Blue = 7;
|
||||||
blck_TMin_Red = 10;
|
blck_TMin_Red = 10;
|
||||||
@ -1267,7 +1272,7 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
|
|||||||
blck_TMax_Crashes = 15;
|
blck_TMax_Crashes = 15;
|
||||||
blck_TMax_UMS = 25;
|
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 = [];
|
_baseClasses = [];
|
||||||
|
|
||||||
_classnameList = [];
|
_classnameList = [];
|
||||||
//diag_log format["blck_modType = %1",blck_modType];
|
diag_log format["blck_modType = %1",blck_modType];
|
||||||
if (toLower(blck_modType) isEqualTo "epoch") then
|
if (toLower(blck_modType) isEqualTo "epoch") then
|
||||||
{
|
{
|
||||||
_classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses;
|
_classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses;
|
||||||
@ -63,7 +63,27 @@ if (toLower(blck_modType) isEqualTo "exile") then
|
|||||||
{
|
{
|
||||||
_classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses;
|
_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 _configName = "";
|
||||||
|
switch (true) do
|
||||||
|
{
|
||||||
|
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"; };
|
||||||
|
};
|
||||||
|
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
|
||||||
{
|
{
|
||||||
private _temp = [_x] call bis_fnc_itemType;
|
private _temp = [_x] call bis_fnc_itemType;
|
||||||
//diag_log _temp;
|
//diag_log _temp;
|
||||||
@ -124,10 +144,29 @@ if (toLower(blck_modType) isEqualTo "exile") then
|
|||||||
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]}}};
|
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 {
|
} else {
|
||||||
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
|
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
} forEach _classnameList;
|
} 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_primaryWeapons = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper;
|
||||||
blck_WeaponList_Blue = blck_primaryWeapons;
|
blck_WeaponList_Blue = blck_primaryWeapons;
|
||||||
@ -135,6 +174,15 @@ blck_WeaponList_Red = blck_primaryWeapons;
|
|||||||
blck_WeaponList_Green = blck_primaryWeapons;
|
blck_WeaponList_Green = blck_primaryWeapons;
|
||||||
blck_WeaponList_Orange = 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 = _wpnHandGun;
|
||||||
blck_Pistols_blue = blck_Pistols;
|
blck_Pistols_blue = blck_Pistols;
|
||||||
blck_Pistols_red = blck_Pistols;
|
blck_Pistols_red = blck_Pistols;
|
||||||
|
@ -78,7 +78,7 @@ _missionLootVehicles = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
_missionPatrolVehicles = [
|
_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 = [
|
_submarinePatrolParameters = [
|
||||||
|
@ -127,9 +127,9 @@ _missionLootVehicles = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
_missionPatrolVehicles = [
|
_missionPatrolVehicles = [
|
||||||
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
|
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
|
||||||
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
|
[selectRandom blck_AIPatrolVehicles,[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,[72.2974,6.63599,0.00802183],0.00106337]
|
||||||
];
|
];
|
||||||
|
|
||||||
_submarinePatrolParameters = [
|
_submarinePatrolParameters = [
|
||||||
|
@ -43,6 +43,7 @@ _garrisonedBuilding_ATLsystem = [
|
|||||||
|
|
||||||
|
|
||||||
_missionLandscape = [
|
_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",[-31.8352,-29.0081,-0.00143909],235.13,true,true],
|
||||||
["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,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],
|
["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_Green_F",[-5049.41,-2726.72,-0.00143862],0,true,true],
|
||||||
//["Sign_Arrow_Yellow_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],
|
//["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_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_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],
|
["Land_HBarrierWall6_F",[0.581543,-12.7048,-0.00143862],91.041,true,true],
|
||||||
|
@ -127,9 +127,9 @@ _missionLootVehicles = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
_missionPatrolVehicles = [
|
_missionPatrolVehicles = [
|
||||||
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
|
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
|
||||||
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
|
[selectRandom blck_AIPatrolVehicles,[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,[72.2974,6.63599,0.00802183],0.00106337]
|
||||||
];
|
];
|
||||||
|
|
||||||
_submarinePatrolParameters = [
|
_submarinePatrolParameters = [
|
||||||
|
@ -111,7 +111,7 @@ _missionLootVehicles = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
_missionPatrolVehicles = [
|
_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 = [
|
_submarinePatrolParameters = [
|
||||||
|
@ -104,8 +104,8 @@ _missionLootVehicles = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
_missionPatrolVehicles = [
|
_missionPatrolVehicles = [
|
||||||
["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655],
|
[selectRandom blck_AIPatrolVehicles,[-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,[51.0596,-25.7876,0.00815535],0.00104356]
|
||||||
];
|
];
|
||||||
|
|
||||||
_submarinePatrolParameters = [
|
_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.
|
// Note that this value is ignored if you define vehicle patrols in the array below.
|
||||||
_vehiclePatrolParameters = [
|
_vehiclePatrolParameters = [
|
||||||
//["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"green",600,0],
|
//["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] ]
|
]; //[ ["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.
|
// 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).
|
// 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";
|
#include "privateVars.sqf";
|
||||||
|
_crateMoney = 10000;
|
||||||
_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se.
|
_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.
|
_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker.
|
||||||
_difficulty = "red"; // Skill level of AI (blue, red, green etc)
|
_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.
|
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/
|
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";
|
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||||
|
|
||||||
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName];
|
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName];
|
||||||
switch (toLower worldName) do
|
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.
|
{// 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 "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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
case "utes":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500; blck_maxGradient = 0.20;};
|
||||||
case "zargabad":{blck_mapCenter = [4096, 4096, 0];blck_mapRange = 4096;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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;};
|
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};
|
case "vt7": {blck_mapCenter = [9000,9000,0]; blck_mapRange = 9000; blck_maxGradient = 0.20;};
|
||||||
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000};
|
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
|
// Load Configs
|
||||||
[] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
|
[] 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")};
|
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
|
// This block waits for the mod to start but is disabled for now
|
||||||
if ((tolower blck_modType) isEqualto "epoch") then {
|
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
|
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
|
// Load any user-defined specifications or overrides
|
||||||
// HINT: Use these for map-specific settings
|
// HINT: Use these for map-specific settings
|
||||||
#include "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
#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 {[format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]] call blck_fnc_log};
|
||||||
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] 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.
|
// Load vaariables used to store information for the mission system.
|
||||||
[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
|
||||||
@ -183,8 +183,11 @@ if (blck_enableBlueMissions > 0) then
|
|||||||
};
|
};
|
||||||
if (blck_numberUnderwaterDynamicMissions > 0) then
|
if (blck_numberUnderwaterDynamicMissions > 0) then
|
||||||
{
|
{
|
||||||
|
if !(blck_maxSeaSearchDistance == 0) then {
|
||||||
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
|
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Setup a group for AI corpses
|
// Setup a group for AI corpses
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
#define blck_buildNumber 230 // Address issues with cleanup of objects
|
#define blck_buildNumber 240 // Address issues with cleanup of objects
|
||||||
#define blck_versionNumber 7.02
|
#define blck_versionNumber 7.06
|
||||||
#define blck_buildDate "10-5-20"
|
#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));
|
_height = abs ((_p2 select 2) - (_p1 select 2));
|
||||||
_marker setPosATL [_markerPos select 0, _markerPos select 1, (_markerPos select 2) + _height];
|
_marker setPosATL [_markerPos select 0, _markerPos select 1, (_markerPos select 2) + _height];
|
||||||
_object setVariable ["marker",_marker];
|
_object setVariable ["marker",_marker];
|
||||||
|
|
||||||
true
|
true
|
@ -9,6 +9,4 @@ if !(_object getvariable["marker",""] isEqualTo "") then
|
|||||||
{
|
{
|
||||||
[_object] call blck3DEN_fnc_removeMarker;
|
[_object] call blck3DEN_fnc_removeMarker;
|
||||||
_object setVariable ["marker",nil];
|
_object setVariable ["marker",nil];
|
||||||
//_object setVariable ["lootVehicle",nil];
|
|
||||||
//_object setVariable ["garrisoned",nil];
|
|
||||||
};
|
};
|
||||||
|
@ -55,9 +55,6 @@ class CfgFunctions
|
|||||||
class displayLootMarkers {};
|
class displayLootMarkers {};
|
||||||
class getGarrisonInfo {};
|
class getGarrisonInfo {};
|
||||||
class getLootVehicleInfo {};
|
class getLootVehicleInfo {};
|
||||||
class help {};
|
|
||||||
class initializeAttributes {};
|
|
||||||
class isInfantry {};
|
|
||||||
class isInside {};
|
class isInside {};
|
||||||
class loadCratesTiming {};
|
class loadCratesTiming {};
|
||||||
class onDrag {};
|
class onDrag {};
|
||||||
|
@ -1,21 +1,7 @@
|
|||||||
Variables to define
|
Features:
|
||||||
marker parameters
|
|
||||||
Marker Text
|
|
||||||
|
|
||||||
Mission start message
|
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.
|
||||||
Mission end message
|
Captures simple objects, sets allow dammage and allow similation according to editor settings, and captures marker configurations.
|
||||||
Mission level
|
|
||||||
|
|
||||||
To pull units:
|
|
||||||
private _units = allUnits;
|
|
||||||
|
|
||||||
|
|
||||||
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.
|
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.
|
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 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.
|
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.
|
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.
|
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.
|
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.
|
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).
|
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.
|
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:
|
To create and run new missions simply:
|
||||||
layout an AI base in the Arma 3 editor,
|
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.
|
export the base as an .sqf using the editor plugin provided.
|
||||||
Define the above parameters (nu. AI groups, No AI, etc)
|
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
|
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/9256-battleye-filter-tool/
|
||||||
http://www.exilemod.com/topic/9708-battleye-filter-editor/
|
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.
|
11) Start your server and join. By default missions will start spawning in around 5-10 min.
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
Known issues
|
Known issues
|
||||||
|
|
||||||
7.00
|
7.02
|
||||||
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.
|
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.
|
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
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.
|
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.
|
* 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.
|
For exile users, modify your misionfil.pbo/config.sys as described below.
|
||||||
http://www.exilemod.com/topic/17352-bigfoots-shipwrecks/
|
http://www.exilemod.com/topic/17352-bigfoots-shipwrecks/
|
||||||
infiSTAR Users: you may need to whitelist _MainMarker depending on your settings.
|
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.
|
Bill (DBD Clan) for example compositions.
|
||||||
cyncrwler, Grahamme and many others for help with troubleshooting and testing
|
cyncrwler, Grahamme and many others for help with troubleshooting and testing
|
||||||
Brian Soanes for helpful bug fixes, testing, performance fixes and general guidance.
|
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:
|
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
|
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
|
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