Compare commits

...

86 Commits

Author SHA1 Message Date
Ghostrider [GRG]
096b4ff2c1
Update README.md 2022-07-31 15:02:09 -04:00
Chris Cardozo
981347b3a4 End of Build 239 / Ver 7.06 2020-11-25 09:23:29 -05:00
Chris Cardozo
893691037d Addressed small bugs with APEX Gear 2020-11-25 09:18:19 -05:00
Chris Cardozo
eb28646ec8 Removed some logging 2020-11-25 09:17:57 -05:00
Chris Cardozo
3ac264fa75 Change logging of active scripts so it is done only if blck_debugON == true 2020-11-25 09:15:20 -05:00
Chris Cardozo
63154379c8 Removed logging 2020-11-25 09:13:11 -05:00
Chris Cardozo
f266afb22c Converted diagnostic code to comments. 2020-11-23 18:11:57 -05:00
Chris Cardozo
48bc40ad4a Fixed Typo (Thanks ehylla93 for pointing it ou) 2020-11-23 17:43:09 -05:00
Chris Cardozo
f8b185c854 Updates Configs 2020-11-23 08:03:24 -05:00
Chris Cardozo
06e5c70933 logging for weapBuild 239 Logging for Config based loadoutsns in config-based loadouts 2020-11-23 02:01:29 -05:00
Chris Cardozo
2319276356 logging for weapons in config-based loadouts 2020-11-23 01:21:45 -05:00
Chris Cardozo
bec02396b1 End of build 238 2020-11-22 11:23:01 -05:00
Chris Cardozo
047bf429f4 FIx a script error that prevented units from having primary weapons. 2020-11-22 11:13:22 -05:00
Chris Cardozo
e54cbdba04 Define _missionLoot parameters for the case where the crates are spawned at mission completion. 2020-11-22 11:13:04 -05:00
Chris Cardozo
b3010e47a1 Add a default Value 2020-11-22 11:12:39 -05:00
Chris Cardozo
ceb9fb7bce Updated to refer to blck_maxGradient
This constant was added so there can be a map-specific setting for max gradient.
2020-11-22 08:52:55 -05:00
Chris Cardozo
8279a4f88b definition of constants consolidated in gms_fnc_findWorld.sqf 2020-11-22 08:52:18 -05:00
Chris Cardozo
e843669d05 Set up a check for maps without water (
where blck_maxSeaSearchDistance == 0;
2020-11-22 08:51:44 -05:00
Chris Cardozo
32649a3f27 Added Mull of Kintire and info for pirate mission constants. 2020-11-22 08:50:47 -05:00
Chris Cardozo
0c9c115fdd Updated to Build 237 / Ver 7.06 2020-11-22 08:50:21 -05:00
Chris Cardozo
efca35bcdd Updated for Build 237 2020-11-22 08:49:56 -05:00
Chris Cardozo
6d0171e99a bug fixes / performance tweaks
split the long list of mission parameters up into modules to reduce the number of variables set with each pass through various scripts.
2020-11-21 14:53:06 -05:00
Chris Cardozo
a95a22b65c Minor adjustments to vehicles 2020-11-21 14:51:29 -05:00
Chris Cardozo
924512b299 Update to Build 236 2020-11-21 14:51:15 -05:00
Chris Cardozo
11b951cfda Updated Changelog for build 245 2020-11-16 14:58:22 -05:00
Chris Cardozo
3e9ecbce78 Small tweaks to some missions 2020-11-16 13:40:47 -05:00
Chris Cardozo
d626a21316 remove space 2020-11-16 13:32:38 -05:00
Chris Cardozo
83e489c0c1 Small fixes 2020-11-16 13:32:26 -05:00
Chris Cardozo
60b1d21d16 Build 235 / Fix issue with loot vehicles not being spawend
/ Streamline coding for build 235
2020-11-16 13:32:12 -05:00
Chris Cardozo
e11b9338ae Update build info to 235 2020-11-16 13:31:13 -05:00
Chris Cardozo
388a3bc95d Streamline coding Build 235 2020-11-16 13:31:00 -05:00
Chris Cardozo
6abfb94813 fixed issue with some UMS AI being spawned with non-scuba gear 2020-11-14 14:51:37 -05:00
Chris Cardozo
07a6942744 Merge branch 'Experimental' 2020-11-08 08:38:11 -05:00
Chris Cardozo
3581aa9a1c missing info fo rbild 233 2020-11-08 08:32:04 -05:00
Chris Cardozo
c01794ccce updated build # 2020-11-08 08:02:30 -05:00
Chris Cardozo
a436aebf9c Merge branch 'Experimental' 2020-11-08 07:49:20 -05:00
Chris Cardozo
6cc3cef49d update version 2020-11-08 07:44:32 -05:00
Chris Cardozo
0842796307 Update changeLog.sqf 2020-11-08 07:38:25 -05:00
Chris Cardozo
ca7f403c70 Updated Changelog 2020-11-07 10:06:49 -05:00
Chris Cardozo
bab528c796 Merge branch 'Experimental' 2020-11-07 10:02:02 -05:00
Chris Cardozo
6a8bb9e476 Final Version 7.03 Build 233 2020-11-07 10:01:15 -05:00
Ghostrider [GRG]
4d56107e15
Resolved conflicts 2020-11-07 09:52:20 -05:00
Chris Cardozo
dc82f9a362 Launchers and rounds now removed from ai corpses. 2020-11-01 10:18:22 -05:00
Chris Cardozo
1e6d4aeabe Fix for launchers not being deleted
Still have to do something about the launcher rounds which persist for some reason.
2020-10-31 11:38:46 -04:00
Chris Cardozo
498e7e06e1 Update Build 2020-10-31 09:54:38 -04:00
Chris Cardozo
ccb6b17d10 remove some logging 2020-10-31 09:54:23 -04:00
Chris Cardozo
66ae8eb113 Tweak to be sure the dead unit is in a group owned by the server before proceeding with processing kills 2020-10-31 09:53:53 -04:00
Chris Cardozo
99621912f6 Add config for the chance of various attachments 2020-10-31 09:53:17 -04:00
Chris Cardozo
d6b433d2e3 Add player states updates for EPOCH (Thanks He-Man) 2020-10-31 09:52:48 -04:00
Chris Cardozo
920f8bf526 Temporary fix for turret AI beign spawned with wet suits 2020-10-20 00:51:59 -04:00
Chris Cardozo
ca03da88b1 updated documentation 2020-10-10 09:12:32 -04:00
Chris Cardozo
571a65f1e9 Merge branch 'Experimental' 2020-10-10 08:43:45 -04:00
Chris Cardozo
7c88d1fead Update Guidelines.txt 2020-10-10 08:39:09 -04:00
Chris Cardozo
644925cbb8 Merge branch 'Development' into Experimental 2020-10-10 08:34:43 -04:00
Chris Cardozo
2447c309c0 Build 229 2020-10-05 22:42:04 -04:00
Chris Cardozo
eb683730b5 Fixed Issues with relPos unit spawning, removed some logging 2020-10-05 22:41:56 -04:00
Chris Cardozo
6b3a295a2a A few small updates
Support for new settings for pirate missions.
2020-10-05 18:47:06 -04:00
Chris Cardozo
bf9aeb4bc8 Merge branch 'Development' into Experimental 2020-10-05 07:26:49 -04:00
Chris Cardozo
3e2f5ed99b Merge branch 'Development' into Experimental 2020-10-04 15:51:53 -04:00
Chris Cardozo
844be883f7 Merge branch 'Development' into Experimental 2020-10-04 13:36:45 -04:00
Chris Cardozo
b37c9eb77e Merge branch 'Development' into Experimental 2020-10-04 12:31:22 -04:00
Chris Cardozo
b1864ec337 Merge branch 'Development' into Experimental 2020-10-04 10:04:46 -04:00
Chris Cardozo
18bd169a76 Merge branch 'Development' into Experimental 2020-10-03 08:21:25 -04:00
Chris Cardozo
4cd5fbe141 Merge branch 'Development' into Experimental 2020-10-03 08:13:41 -04:00
Chris Cardozo
c86375c4d4 Fix issue with vt7 2020-10-01 20:35:45 -04:00
Chris Cardozo
507530f5a1 Build 224 2020-10-01 20:35:30 -04:00
Chris Cardozo
bbbd73a18e bug fixes 2020-10-01 20:35:17 -04:00
Chris Cardozo
a1a39799e4 bug fixes 2020-10-01 20:35:00 -04:00
Chris Cardozo
d2d0325498 Added some logging / counting 2020-10-01 20:34:44 -04:00
Chris Cardozo
242d1ab23c Rmoved logging 2020-10-01 20:34:17 -04:00
Chris Cardozo
bb119d2808 Merge branch 'Development' into Experimental 2020-10-01 11:53:13 -04:00
Chris Cardozo
3e06a0d2fd Merge branch 'Development' into Experimental 2020-09-30 00:00:34 -04:00
Chris Cardozo
ca4ec19ddf Add code needed to spawn subs and divers that was previously missing. 2020-09-29 18:58:05 -04:00
Chris Cardozo
9d061e7e40 Add logging for thread count (for dev/exp only for now)
Thomas-TKO reported a large number of threads running with build 219 - trying to keep an eye on this here.
2020-09-29 18:57:42 -04:00
Chris Cardozo
7afa108cba Add logging when non safe position found for a mission. 2020-09-29 18:56:49 -04:00
Chris Cardozo
0e4198f05b Start pf Biuild 223
Addresses issues with missing subs and divers at underwater missions.

Adds logging when no safe spot for a mission found.

Addresses some issues with missing info for some maps.
2020-09-29 18:56:25 -04:00
Chris Cardozo
b3bad01260 turned off debugging. 2020-09-08 07:13:36 -04:00
Chris Cardozo
6f9b41d5b5 New features / debugging of editor plugin 2020-09-07 10:13:24 -04:00
Chris Cardozo
1203f03044 Bug Fixes for the 3DEN Plugin 2020-09-06 12:30:56 -04:00
Chris Cardozo
873026090d Merge branch 'Experimental' 2020-09-02 11:57:39 -04:00
Chris Cardozo
a62b198102 Undo the last change 2020-06-28 07:47:19 -04:00
Chris Cardozo
e582d80a8e Disable calls to spawn new dynamic UMS as these are incorproaed in routine mission spawning 2020-06-28 07:46:52 -04:00
Chris Cardozo
cece2b222b Build 206, Final for Ver 6.98 2020-06-27 18:15:46 -04:00
Chris Cardozo
6ab978a7e7 final tidying up. 2020-06-27 14:27:25 -04:00
Chris Cardozo
f59cf1e42e added missing code for militarized 'default' servers 2020-06-27 13:33:58 -04:00
Chris Cardozo
0584f61c97 A bunch of small bug fixes and removed debugging 2020-06-27 12:35:02 -04:00
62 changed files with 1054 additions and 993 deletions

Binary file not shown.

View File

@ -11,27 +11,13 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_mapCenter","_waterPos","_priorUMSpositions","_maxDistance"];
switch (toLower worldName) do
{
case "altis": {_mapCenter = [15000,19000,0];_maxDistance = 20000};
case "tanoa": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 10000};
case "malden": {_mapCenter = [6000,7000,0];_maxDistance = 5500};
case "stratis": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 5000};
case "namalsk": {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 5000};
case "taviana": {_mapCenter = [12000,12000,0];_maxDistance = 12000};
case "napf" : {_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");_maxDistance = 12000};
case "lythium": {_mapCenter = [10000,10000,0]; _maxDistance = 6000;};
case "vt7": {_mapCenter = [9000,9000,0]; _maxDistance = 9000};
default {_mapCenter = [6000,6000,0]; _maxDistance = 6000;};
};
private _evaluate = true;
while {_evaluate} do
{
_waterPos = [
_mapCenter, // center of search area
blck_mapCenter, // center of search area
2, // min distance to search
_maxDistance, // max distance to search
blck_maxSeaSearchDistance, // max distance to search
0, // distance to nearest object
2, // water mode [2 = water only]
25, // max gradient

View File

@ -40,7 +40,7 @@ for "_i" from 1 to (count blck_recentMissionCoords) do
private _waterMode = 0;
private _shoreMode = 0;
private _maxGrad = 0.20;
private _maxGrad = blck_maxGradient;
private _minObjDist = 30;
private _searchDist = blck_mapRange / 2;
private _coords = [];
@ -164,7 +164,7 @@ while {_coords isEqualTo []} do
_minDistanceRecentMissions = _minDistanceRecentMissions * _weightRecentMissions;
_coords = [];
};
[format["_fnc_findSafePosn(140) end of cycle logging: _tries = %1 | _coords = %2 | _findNew = %3",_tries,_coords,_findNew]] call blck_fnc_log;
//[format["_fnc_findSafePosn(140) end of cycle logging: _tries = %1 | _coords = %2 | _findNew = %3",_tries,_coords,_findNew]] call blck_fnc_log;
};
if ((count _coords) > 2) then
@ -173,7 +173,7 @@ if ((count _coords) > 2) then
_temp = [_coords select 0, _coords select 1];
_coords = _temp;
};
[format["_fnc_findSafePosn(148) final logging: _elapsedTime %3 | _tries = %1 | _coords = %2",_tries,_coords,diag_tickTime - _startTime]] call blck_fnc_log;
//[format["_fnc_findSafePosn(148) final logging: _elapsedTime %3 | _tries = %1 | _coords = %2",_tries,_coords,diag_tickTime - _startTime]] call blck_fnc_log;
_coords;

View File

@ -71,8 +71,6 @@ while {true} do
};
if (diag_tickTime > _timer5min) then
{
_activeScripts = diag_activeScripts;
[
format["Timstamp %8 |Dynamic Missions Running %1 | Vehicles %2 | Groups %3 | Missions Run %4 | Server FPS %5 | Server Uptime %6 Min",
blck_missionsRunning,
@ -83,17 +81,21 @@ while {true} do
diag_tickTime
]
] call blck_fnc_log;
[
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
count diag_activeSQFScripts,
_activeScripts select 0,
_activeScripts select 1,
blck_activeMonitorThreads
]
] call blck_fnc_log;
if (blck_debugON) then
{
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
} forEach diag_activeSQFScripts;
private _activeScripts = diag_activeScripts;
[
format["count diag_activeSQFScripts %1 | Threads [spawned %2, execVM %3] | monitorThreads %4",
count diag_activeSQFScripts,
_activeScripts select 0,
_activeScripts select 1,
blck_activeMonitorThreads
]
] call blck_fnc_log;
{
[format["file %1 | running %2",(_x select 1),(_x select 2)]] call blck_fnc_log;
} forEach diag_activeSQFScripts;
};
[] call blck_fnc_cleanEmptyGroups;
_timer5min = diag_tickTime + 300;
};

View File

@ -11,7 +11,7 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params[["_coords",[]],["_range",0],["_onFootOnly",false]];
params[["_coords",[0,0,0]],["_range",0],["_onFootOnly",false]];
private ["_result","_players"];
private "_players";

View File

@ -43,7 +43,12 @@ if !(isNull _group) then
_launcherType = "none";
};
private _unitPos = [_pos,3,6] call blck_fnc_findRandomLocationWithinCircle;
[_unitPos,_group,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit;
if (surfaceIsWater _unitPos && _scuba) then
{
[_unitPos,_group,_skillLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,_launcherType, blck_UMS_weapons, _sideArms, _scuba] call blck_fnc_spawnUnit;
} else {
[_unitPos,_group,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit;
};
//diag_log format["_fnc_spawnGroup: _unit %1 spawned at %2 at a distance from the group center of %3 and _vector of %4",_unit,_unitPos,_unitPos distance _pos,_pos getRelDir _unitPos];
};
_group selectLeader ((units _group) select 0);

View File

@ -14,7 +14,7 @@
private["_a1","_item","_diff","_tries"];
params["_crate","_boxLoot","_itemCnts"];
_itemCnts params["_wepCnt","_magCnt","_opticsCnt","_materialsCnt","_itemCnt","_bkcPckCnt"];
_boxLoot params["_weapons","_magazines","_optics","_materials","_items","_backpacks"];

View File

@ -5,7 +5,7 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
// Need to debug for GM map
private ["_coords","_coordArray","_return"];
params["_missionCategoryDescriptors","_missionParameters","_missionCount"];
_missionCategoryDescriptors params [
@ -35,62 +35,23 @@ if (blck_debugLevel >= 3) then
if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}};
_missionParameters params[
"_markerData",
"_missionMessages",
"_paraData",
"_endCondition",
"_isscubamission",
"_missionLoot",
"_aiData",
"_defaultMissionLocations"
];
_markerData params[
"_markerName",
"_markerMissionName",
"_endMsg",
"_startMsg",
"_defaultMissionLocations",
"_crateLoot",
"_lootCounts",
"_markerMissionName", // Name used for setMarkerText and also for the root name for all markers
"_markerType",
"_markerColor",
"_markerSize",
"_markerBrush",
"_missionLandscapeMode",
"_garrisonedBuildings_BuildingPosnSystem",
"_garrisonedBuilding_ATLsystem",
"_missionLandscape",
"_simpleObjects",
"_missionLootBoxes",
"_missionLootVehicles",
"_missionPatrolVehicles",
"_submarinePatrols",
"_submarinePatrolParameters",
"_airPatrols",
"_noVehiclePatrols",
"_vehicleCrewCount",
"_missionEmplacedWeapons",
"_noEmplacedWeapons",
"_useMines",
"_minNoAI",
"_maxNoAI",
"_noAIGroups",
"_missionGroups",
"_scubaPatrols",
"_scubaGroupParameters",
"_hostageConfig",
"_enemyLeaderConfig",
"_assetKilledMsg",
"_uniforms",
"_headgear",
"_vests",
"_backpacks",
"_weaponList",
"_sideArms",
"_chanceHeliPatrol",
"_noChoppers",
"_missionHelis",
"_chancePara",
"_noPara",
"_paraTriggerDistance",
"_paraSkill",
"_chanceLoot",
"_paraLoot",
"_paraLootCounts",
"_spawnCratesTiming",
"_loadCratesTiming",
"_endCondition",
"_isScubaMission"
"_markerBrush"
];
_coordsArray = [];
@ -103,6 +64,7 @@ if !(_defaultMissionLocations isEqualTo []) then
_coords = [] call blck_fnc_findShoreLocation;
} else {
_coords = [] call blck_fnc_findSafePosn;
_coords = [_coords select 0, _coords select 1, 0];
};
};
@ -169,22 +131,30 @@ if (blck_debugLevel >= 3) then {[format["_initializeMissions (167): _marker = %1
/*
Send a message to players.
*/
_missionMessages params [
"_assetKilledMsg",
"_endMsg",
"_startMsg"
];
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
private _chancePara = _paraData param [6];
private _missionTimeoutAt = diag_tickTime + blck_MissionTimeout;
private _triggered = 0;
private _spawnPara = if (random(1) < _chancePara) then {true} else {false};
//diag_log format["_initializeMission: _spawnPara = %1 | _chancePara = %2",_spawnPara,_chancePara];
private _objects = [];
private _hiddenObjects = [];
private _mines = [];
private _crates = [];
private _missionAIVehicles = [];
private _blck_AllMissionAI = [];
private _spawnedLootVehicles = [];
private _AI_Vehicles = [];
private _assetSpawned = objNull;
private _missionData = [_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers];
private _missionData = [_coords,_mines,_objects,_hiddenObjects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_spawnedLootVehicles,_markers];
blck_activeMissionsList pushBack [_missionCategoryDescriptors,_missionTimeoutAt,_triggered,_spawnPara,_missionData,_missionParameters];
[format["Initialized Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;

View File

@ -94,25 +94,46 @@ if !(_endCondition in blck_validEndStates) then
_endCondition = "allKilledOrPlayerNear";
};
private _table = [
private _markerData = [
_markerName,
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
_endMsg,
_startMsg,
_defaultMissionLocations,
_crateLoot,
_lootCounts,
_markerMissionName, // Name used for setMarkerText and also for the root name for all markers
_markerType,
_markerColor,
_markerSize,
_markerBrush,
_markerBrush
];
private _paraData = [
_noPara,
_paraTriggerDistance,
_paraSkill,
_chanceLoot,
_paraLoot,
_paraLootCounts,
_chancePara
],
private _missionLoot = [
_spawnCratesTiming,
_loadCratesTiming,
_crateLoot,
_lootCounts,
_missionLootBoxes,
_missionLootVehicles
];
private _aiData = [
_uniforms,
_headgear,
_vests,
_backpacks,
_weaponList,
_sideArms,
_missionLandscapeMode,
_garrisonedBuildings_BuildingPosnSystem,
_garrisonedBuilding_ATLsystem,
_missionLandscape,
_simpleObjects,
_missionLootBoxes,
_missionLootVehicles,
_missionPatrolVehicles,
_submarinePatrols, // Added Build 227
_submarinePatrolParameters,
@ -130,27 +151,26 @@ private _table = [
_scubaGroupParameters,
_hostageConfig,
_enemyLeaderConfig,
_assetKilledMsg,
_uniforms,
_headgear,
_vests,
_backpacks,
_weaponList,
_sideArms,
_chanceHeliPatrol,
_noChoppers,
_missionHelis,
_chancePara,
_noPara,
_paraTriggerDistance,
_paraSkill,
_chanceLoot,
_paraLoot,
_paraLootCounts,
_spawnCratesTiming,
_loadCratesTiming,
_endCondition,
_isScubaMission
_missionHelis
];
private _missionMessages = [
_assetKilledMsg,
_endMsg,
_startMsg
];
private _table = [
_markerData,
_missionMessages,
_paraData,
_endCondition,
_isscubamission,
_missionLoot,
_aiData,
_defaultMissionLocations
];
_table

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_chancePara"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_chancePara = blck_chanceParaBlue};
case "red": {_chancePara = blck_chanceParaRed};
case "green": {_chancePara = blck_chanceParaGreen};
case "orange": {_chancePara = blck_chanceParaOrange};
default {_chancePara = blck_chanceParaRed};
};
_chancePara
private _chancePara = missionNamespace getVariable[format["blck_chancePara%1",_aiDifficultyLevel],0];
_chancePara

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_backpacks"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_backpacks = blck_backpacks_blue};
case "red": {_backpacks = blck_backpacks_red};
case "green": {_backpacks = blck_backpacks_green};
case "orange": {_backpacks = blck_backpacks_orange};
default {_backpacks = blck_backpacks};
};
_backpacks
private _backpacks = missionNamespace getVariable[format["blck_backpacks_%1",_aiDifficultyLevel],[]];
_backpacks

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_headgear"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_headGear = blck_headgear_blue};
case "red": {_headGear = blck_headgear_red};
case "green": {_headGear = blck_headgear_green};
case "orange": {_headGear = blck_headgear_orange};
default {_headGear = blck_headgear};
};
_headgear
private _headgear = missionNamespace getVariable [format["blck_headgear_%1",_aiDifficultyLevel],[]];
_headgear

View File

@ -16,14 +16,6 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_weaponList","_missionColor"];
_missionColor = _this select 0;
switch (_missionColor) do {
case "blue": {_weaponList = blck_WeaponList_Blue;};
case "red": {_weaponList = blck_WeaponList_Red;};
case "green": {_weaponList = blck_WeaponList_Green;};
case "orange": {_weaponList = blck_WeaponList_Orange;};
default {_weaponList = blck_WeaponList_Blue;};
};
params["_missionColor"];
private _weaponList = missionNamespace getVariable [format["blck_WeaponList_%1",_missionColor],[]];
_weaponList

View File

@ -13,13 +13,5 @@
params["_aiDifficultyLevel"]; //[["_aiDifficultyLevel",selectRandom["Red","Green"]]];
private["_sideArms"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_sideArms = blck_Pistols_blue};
case "red": {_sideArms = blck_Pistols_red};
case "green": {_sideArms = blck_Pistols_green};
case "orange": {_sideArms = blck_Pistols_orange};
default {_sideArms = blck_Pistols};
};
_sideArms
private _sideArms = missionNamespace getVariable[format["blck_Pistols_%1",_aiDifficultyLevel],[]];
_sideArms

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_uniforms"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_uniforms = blck_SkinList_blue};
case "red": {_uniforms = blck_SkinList_red};
case "green": {_uniforms = blck_SkinList_green};
case "orange": {_uniforms = blck_SkinList_orange};
default {_uniforms = blck_SkinList};
};
_uniforms
private _uniforms = missionNamespace getVariable [format["blck_SkinList_%1",_aiDifficultyLevel],[]];
_uniforms

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_vests"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_vests = blck_vests_blue};
case "red": {_vests = blck_vests_red};
case "green": {_vests = blck_vests_green};
case "orange": {_vests = blck_vests_orange};
default {_vests = blck_vests};
};
_vests
private _vests = missionNamespace getVariable [format["blck_vests_%1",_aiDifficultyLevel],[]];
_vests

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_chanceHeliPatrol"];
switch (toLower(_aiDifficultyLevel)) do
{
case "blue": {_chanceHeliPatrol = blck_chanceHeliPatrolBlue};
case "red": {_chanceHeliPatrol = blck_chanceHeliPatrolRed};
case "green": {_chanceHeliPatrol = blck_chanceHeliPatrolGreen};
case "orange": {_chanceHeliPatrol = blck_chanceHeliPatrolOrange};
default {_chanceHeliPatrol = 0};
};
_chanceHeliPatrol
private _chanceHeliPatrol = missionNamespace getVariable[format["blck_chanceHeliPatrol%1",_aiDifficultyLevel],[]];
_chanceHeliPatrol

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_missionHelis"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_missionHelis = blck_patrolHelisBlue};
case "red": {_missionHelis = blck_patrolHelisRed};
case "green": {_missionHelis = blck_patrolHelisGreen};
case "orange": {_missionHelis = blck_patrolHelisOrange};
default {_missionHelis = blck_patrolHelisBlue};
};
_missionHelis
private _missionHelis = missionNamespace getVariable[format["blck_patrolHelis%1",_aiDifficultyLevel],[]];
_missionHelis

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_noChoppers"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_noChoppers = blck_noPatrolHelisBlue};
case "red": {_noChoppers = blck_noPatrolHelisRed};
case "green": {_noChoppers = blck_noPatrolHelisGreen};
case "orange": {_noChoppers = blck_noPatrolHelisOrange};
default {_noChoppers = 0};
};
_noChoppers
private _noChoppers = missionNamespace getVariable [format["blck_noPatrolHelis%1",_aiDifficultyLevel],0];
_noChoppers

View File

@ -12,13 +12,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_aiDifficultyLevel"];
private["_noPara"];
switch (toLower (_aiDifficultyLevel)) do
{
case "blue": {_noPara = blck_noParaBlue};
case "red": {_noPara = blck_noParaRed};
case "green": {_noPara = blck_noParaGreen};
case "orange": {_noPara = blck_noParaOrange};
default {_noPara = 0};
};
_noPara
private _noPara = missionNamespace getVariable [format["blck_noPara%1",_aiDifficultyLevel],0];
_noPara

View File

@ -11,13 +11,5 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_diff"];
private ["_count"];
switch (toLower(_diff)) do
{
case "blue": {_count = blck_vehCrew_blue};
case "red": {_count = blck_vehCrew_red};
case "green": {_count = blck_vehCrew_green};
case "orange": {_count = blck_vehCrew_orange};
};
private _count = missionNamespace getVariable [format["blck_vehCrew_%1",_diff],0];
_count

View File

@ -27,7 +27,7 @@ _units = [];
_abort = false;
_pos = [];
private _emplacedWepData = +_missionEmplacedWeapons;
private _emplacedWepData = +_missionEmplacedWeapons; // So we dont overwrite this for the next instance of the mission
//diag_log format["_spawnEmplacedWeaponArray(30): _noEmplacedWeapons = %1 | _emplacedWepData = %2",_noEmplacedWeapons,_emplacedWepData];
// Define _emplacedWepData if not already configured.

View File

@ -67,7 +67,6 @@ private _cratesSpawned = [];
[_crate] call blck_fnc_loadMissionCrate;
};
_cratesSpawned pushback _crate;
}forEach _cratesToSpawn;
if (_spawnCrateTiming in ["atMissionEndAir","atMissionSpawnAir"]) then

View File

@ -16,15 +16,19 @@ if (count _coords isEqualTo 2) then {_coords pushBack 0};
private _vehs = [];
{
_x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"];
private _pos =_coords vectorAdd _vehOffset;
_veh = [_vehType, _pos] call blck_fnc_spawnVehicle;
_veh = [_vehType, _coords vectorAdd _vehOffset] call blck_fnc_spawnVehicle;
[_veh, _dir] call blck_fnc_setDirUp;
_veh lock _lock;
if (_loadCrateTiming isEqualTo "atMissionSpawn") then
if (_loadCrateTiming isEqualTo "atMissionSpawnGround") then
{
[_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
_veh setVariable["lootLoaded",true];
//private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]);
[_veh,missionNamespace getVariable (format["blck_crateMoney%1",_difficulty])] call blck_fnc_addMoneyToObject;
} else {
_veh setVariable["lootArray",_lootArray];
_veh setVariable["lootCounts",_lootCounts];
_veh setVariable["lootLoaded",false];
};
_vehs pushback _veh;
}forEach _missionLootVehicles;

View File

@ -8,7 +8,7 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
// Need to debug for GM
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {};
{

View File

@ -34,6 +34,9 @@ _fn_doUpdates = {
{
[["showScore",[_reward,"",_kills],""],[_player]] call blck_fnc_messageplayers;
};
// SUggestion to update Epoch player stats from He-Man
[_killer, "AIKills", 1, true] call EPOCH_server_updatePlayerStats;
};
if (toLower(blck_modType) isEqualTo "exile") then
{

View File

@ -15,6 +15,15 @@
params["_unit","_killer","_instigator"];
// the blck_graveyardGroup is always owned by the server.
// which makes some cleanup easier
[_unit] joinSilent blck_graveyardGroup;
if (count(units (group _unit)) isEqualTo 0) then
{
deleteGroup _group;
};
if (local _unit) then
{
if !((vehicle _unit) isKindOf "Man") then
@ -35,12 +44,7 @@ _unit disableAI "ALL";
{
_unit removeAllEventHandlers _x;
}forEach["FiredNear","Reloaded"];
[_unit] joinSilent blck_graveyardGroup;
if (count(units (group _unit)) isEqualTo 0) then
{
deleteGroup _group;
};
if !((vehicle _unit) isKindOf "Man") then
{

View File

@ -11,21 +11,27 @@
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private["_launcher","_launcherRounds"];
params["_unit"]; // = _this select 0;
_launcher = _unit getVariable ["Launcher",""];
_unit removeWeapon _Launcher;
if (_launcher != "") then
private _loadout = _unit getVariable["launcher",[[],[]]];
//diag_log format["_removeLaunchers: _loadout = %1",_loadout];
private _mags = magazines _unit;
//diag_log format["_removeLaunchers: _mags = %1",_mags];
{
_unit removeWeapon _Launcher;
if (_forEachIndex > 0) then
{
if (_launcher in weaponCargo _x) exitWith {
deleteVehicle _x;
};
} forEach ((getPosATL _unit) nearObjects ["WeaponHolderSimulated",10]);
_launcherRounds = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines"); //0;
{
if(_x in _launcherRounds) then {_unit removeMagazine _x;};
} count magazines _unit;
};
//diag_log format["_removeLaunchers: _x = %1",_x];
_unit removeMagazines _x;
};
} forEach (_loadout select 1);
private _launcher = _loadout select 0;
if !(_launcher isEqualTo []) then
{
if (_launcher in (weapons _unit)) then {
_unit removeWeapon _launcher;
} else {
{
if (_launcher in (weaponCargo _x)) exitWith {deleteVehicle _x};
} forEach (_unit nearObjects ["WeaponHolderSimulated",10]);
};
};

View File

@ -12,8 +12,8 @@
--------------------------
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
params["_pos","_numAI","_skillAI",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
// Acomodate case where para are spawned over water.
params["_pos","_numAI","_skilllevel",["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScuba",false]];
if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout};
if (_sideArms isEqualTo []) then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms};
@ -22,35 +22,34 @@ if (_headGear isEqualTo []) then {_headGear = [_aiDifficultyLevel] call blck_f
if (_vests isEqualTo []) then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests};
if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks};
private["_arc","_dir","_spawnPos","_chute","_unit","_return","_paraGroup"];
private _params = ["_pos","_numAI","_skillAI"];
#ifdef blck_debugMode
{
diag_log format["_fnc_spawnParaUnits: %1 = %2",_x, _this select _forEachIndex];
}forEach _params;
#endif
_paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
private _paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup;
private _arc = 45;
private _dir = 0;
#define infantryPatrolRadius 30
#define infantryWaypointTimeout [5,7.5,10]
[_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints;
#define launcherType "none"
private ["_arc","_spawnPos"];
_arc = 45;
_dir = 0;
[_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints;
for "_i" from 1 to _numAI do
{
_spawnPos = _pos getPos[1,_dir];
_chute = createVehicle ["Steerable_Parachute_F", [_spawnPos select 0, _spawnPos select 1, 250], [], 0, "FLY"];
private _unitPos = _pos getPos[1,_dir];
private _chute = createVehicle ["Steerable_Parachute_F", [_unitPos select 0, _unitPos select 1, 250], [], 0, "FLY"];
[_chute] call blck_fnc_protectVehicle;
_unit = [getPos _chute,_paraGroup,_skillAI,_uniforms,_headGear,_vests,_backpacks,launcherType,_weapons,_sideArms,_isScuba] call blck_fnc_spawnUnit;
private "_unit";
if (surfaceIsWater _unitPos && _isScuba) then
{
_unit = [_unitPos,_paraGroup,_skillLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,_backpacks,launcherType, blck_UMS_weapons, _sideArms, _isScuba] call blck_fnc_spawnUnit;
} else {
_unit = [_unitPos,_paraGroup,_skillLevel,_uniforms,_headGear,_vests,_backpacks,launcherType, _weaponList, _sideArms, _isScuba] call blck_fnc_spawnUnit;
};
_unit assignAsDriver _chute;
_unit moveInDriver _chute;
_unit setVariable["chute",_chute];
_dir = _dir + _arc;
uiSleep 2;
uiSleep 2; // To space them out a bit
};
blck_monitoredMissionAIGroups pushback _paraGroup;

View File

@ -13,7 +13,7 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
private ["_i","_weap","_unit","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices","_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
params["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", []],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false],["_garrison",false]];
params["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", []],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false],["_garrison",false]];
if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout};
if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms};
@ -70,44 +70,23 @@ _unit allowDammage true;
_unit setBehaviour "COMBAT";
_unit setunitpos "AUTO";
if (surfaceIsWater (getPos _unit)) then
{
_uniforms = blck_UMS_uniforms;
_headGear = blck_UMS_headgear;
_weaponList = blck_UMS_weapons;
_vests = blck_UMS_vests;
if !(_uniforms isEqualTo []) then {_unit forceAddUniform (selectRandom _uniforms)};
if !(_headGear isEqualTo []) then {_unit addHeadgear (selectRandom _headGear)};
if !(_vests isEqualTo []) then {_unit addVest (selectRandom _vests)};
if !(_weaponList isEqualTo []) then {
_weap = selectRandom _weaponList;
_unit addWeaponGlobal _weap;
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
_unit addMagazines[selectRandom _ammochoices,3];
if (random 1 < blck_chanceMuzzle) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 101] call BIS_fnc_compatibleItems))}; // muzzles
if (random 1 < blck_chanceOptics) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 201] call BIS_fnc_compatibleItems))}; // optics
if (random 1 < blck_chancePointer) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 301] call BIS_fnc_compatibleItems))}; // pointers
if (random 1 < blck_chanceUnderbarrel) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 302] call BIS_fnc_compatibleItems))}; // underbarrel
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
{
_unit addMagazine "1Rnd_HE_Grenade_shell";
};
};
_unit forceAddUniform (selectRandom _uniforms);
if !(_headGear isEqualTo []) then
{
_unit addHeadgear (selectRandom _headGear);
};
if !(_vests isEqualTo []) then
{
_unit addVest (selectRandom _vests);
};
if (_weaponList isEqualTo []) then {_weaponList = call blck_fnc_selectAILoadout};
_weap = selectRandom _weaponList;
_unit addWeaponGlobal _weap;
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
_unit addMagazines[selectRandom _ammochoices,3];
/*
_optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
_pointers = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems");
_muzzles = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems");
_underbarrel = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems");
*/
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 101] call BIS_fnc_compatibleItems))}; // muzzles
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 201] call BIS_fnc_compatibleItems))}; // optics
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 301] call BIS_fnc_compatibleItems))}; // pointers
if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom ([_weap, 302] call BIS_fnc_compatibleItems))}; // underbarrel
if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) then
{
_unit addMagazine "1Rnd_HE_Grenade_shell";
};
if !(_sideArms isEqualTo []) then
{
_weap = selectRandom _sideArms;
@ -115,34 +94,21 @@ if !(_sideArms isEqualTo []) then
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
_unit addMagazines [selectRandom _ammoChoices, 2];
};
for "_i" from 1 to (1+floor(random(4))) do
if !(blck_ConsumableItems isEqualTo []) then
{
_unit addItem (selectRandom blck_ConsumableItems);
};
// Add First Aid or Grenade 50% of the time
if (round(random 10) <= 5) then
{
_unit addItem selectRandom blck_specialItems;
};
/*
if ( !(_Launcher isEqualTo "none") && !(_backpacks isEqualTo [])) then
{
_unit addWeaponGlobal _Launcher;
_unit addBackpack (selectRandom _backpacks);
for "_i" from 1 to 3 do
for "_i" from 1 to (1+floor(random(4))) do
{
_unit addItemToBackpack (getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines") select 0); // call BIS_fnc_selectRandom;
};
_unit setVariable["Launcher",_launcher,true];
} else {
if ( random (1) < blck_chanceBackpack && !(_backpacks isEqualTo [])) then
{
_unit addBackpack selectRandom _backpacks;
_unit addItem (selectRandom blck_ConsumableItems);
};
};
if !(blck_specialItems isEqualTo []) then
{
// Add First Aid or Grenade 50% of the time
if (round(random 10) <= 5) then
{
_unit addItem selectRandom blck_specialItems;
};
};
*/
if !(_backpacks isEqualTo []) then
{
if (_Launcher isEqualTo "none") then
@ -152,25 +118,28 @@ if !(_backpacks isEqualTo []) then
_unit addBackpack selectRandom _backpacks;
};
} else {
_unit addWeaponGlobal _Launcher;
_unit addWeaponGlobal _launcher;
_unit addBackpack (selectRandom _backpacks);
private _roundsAdded = [];
private _mags = getArray (configFile >> "CfgWeapons" >> _Launcher >> "magazines");
for "_i" from 1 to 3 do
{
_unit addItemToBackpack (_mags select 0); // call BIS_fnc_selectRandom;
private _lr = selectRandom _mags; // call BIS_fnc_selectRandom;
_roundsAdded pushBack _lr;
_unit addItemToBackpack _lr;
};
_unit setVariable["Launcher",_launcher,true];
_unit setVariable["Launcher",[_launcher,_roundsAdded]];
};
};
if(sunOrMoon < 0.2 && blck_useNVG)then
{
_unit addWeapon selectRandom blck_NVG;
_unit setVariable ["hasNVG", true,true];
_unit setVariable ["hasNVG", true];
}
else
{
_unit setVariable ["hasNVG", false,true];
_unit setVariable ["hasNVG", false];
};
_unit addWeapon selectRandomWeighted["",4,"Binocular",3,"Rangefinder",1];
@ -180,20 +149,12 @@ _unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}];
_unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}];
_unit addMPEventHandler ["MPHit",{[_this] call blck_EH_AIHit;}];
switch (_skillLevel) do
{
case "blue": {_index = 0;_aiSkills = blck_SkillsBlue;};
case "red": {_index = 1;_aiSkills = blck_SkillsRed;};
case "green": {_index = 2;_aiSkills = blck_SkillsGreen;};
case "orange": {_index = 3;_aiSkills = blck_SkillsOrange;};
default {_index = 0;_aiSkills = blck_SkillsBlue;};
};
[_unit,_aiSkills] call blck_fnc_setSkill;
_unit setVariable ["alertDist",blck_AIAlertDistance select _index,true];
_unit setVariable ["intelligence",blck_AIIntelligence select _index,true];
_unit setVariable ["GMS_AI",true,true];
[_unit, missionNamespace getVariable[format["blck_Skills%1",_skillLevel],blck_SkillsRed]] call blck_fnc_setSkill;
_index = missionNamespace getVariable[format["blck_skillsIndex_%1",_skillLevel],1];
_unit setVariable ["alertDist",blck_AIAlertDistance select _index];
_unit setVariable ["intelligence",blck_AIIntelligence select _index];
_unit setVariable ["GMS_AI",true];
//diag_log format["_spawnUnit: _index = %1 | _aiSkills = %2",_index,_aiSkills];
_unit

View File

@ -57,6 +57,10 @@ blck_activeMonitorThreads = 0;
blck_validEndStates = ["allUnitsKilled", "playerNear", "allKilledOrPlayerNear","assetSecured"];
blck_validLootSpawnTimings = ["atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir"];
blck_validLootLoadTimings = ["atMissionCompletion", "atMissionSpawn"];
blck_skillsIndex_Blue = 0;
blck_skillsIndex_Red = 1;
blck_skillsIndex_Green = 2;
blck_skillsIndex_Orange = 3;
if (blck_debugOn) then {diag_log "[blckeagls] Variables Loaded"};

View File

@ -19,6 +19,7 @@
blck_locationBlackList = []; // Do not touch ...
blck_debugON = false; // should be set to false; ...
blck_debugLevel = 0; // should be set to 0 ...
#ifdef blck_milServer
if (true) exitWith
{
@ -312,6 +313,28 @@
blck_logBlacklistedItems = true;
//blck_maximumitempriceinai_loadouts = 1000;
// lists of black-listed items to be excluded from dynamic loadouts
/*
A list of dlcs will be dumped during server start up.
You can comment out those you dont want to exclude
or identify and add others from the list generated when the dynamicConfigs script is run
*/
blck_blackListedMods = [
// Uncomment to exclude items/weapons/uniforms/vest/headgear from being included.
// Add DLC names you wish to exluded as appropriate
// DLC names will be added to your server.RPT
//"Kart",
//"TANK",
//"ORANGE",
//"Heli",
//"Contact",
//"Enoch",
//"Orange",
//"Jets",
//"Mark",
//"Expansion"
];
blck_blacklistedVests = [
//"V_Press_F"
];
@ -439,6 +462,12 @@
blck_maxMoneyRed = 15;
blck_maxMoneyBlue = 10;
// Define the chance of attachments
blck_chanceOptics = 0.4;
blck_chanceMuzzle = 0.3;
blck_chancePointer = 0.25;
blck_chanceUnderbarrel = 0.25;
#ifdef GRGserver
blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
//blck_AIAlertDistance = [150,225,400,500];

View File

@ -235,8 +235,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
"optic_tws"
//"optic_tws_mg",
];
#ifdef useAPEX
blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes;
blck_Optics_Apex = [
//Apex
"optic_Arco_blk_F", "optic_Arco_ghex_F",
@ -247,7 +246,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
"optic_LRPS_tna_F","optic_LRPS_ghex_F",
"optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F"
];
blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes;
#ifdef useAPEX
blck_Optics = blck_Optics + blck_Optics_Apex;
#endif
@ -313,24 +312,23 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650;
blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG;
#ifdef useAPEX
blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F",
"arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F",
"arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F",
"arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"];
#ifdef useAPEX
blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons;
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
#endif
blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
#ifdef useAPEX
blck_ApexBackpacks = [
"B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F",
"B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F",
"B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F"
];
#ifdef useAPEX
blck_backpacks = blck_ApexBackpacks + blck_backpacks;
#endif
blck_backpacks_blue = blck_backpacks;

View File

@ -24,13 +24,13 @@
3) A time acceleration module.
*/
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
blck_spawnMapAddons = false; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = false; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
blck_simulationManager = blck_useBlckeaglsSimulationManagement;
blck_hideRocksAndPlants = true; // When true, any rocks, trees or bushes under enterable buildings will be 'hidden'
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
blck_timeAccelerationDay = 2; // Daytime time accelearation
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
blck_timeAccelerationNight = 8; // Nighttim time acceleration
@ -77,10 +77,10 @@
blck_showCountAliveAI = true;
//Minimum distance between missions
blck_MinDistanceFromMission = 2000;
blck_minDistanceToBases = 800;
blck_MinDistanceFromMission = 1000;
blck_minDistanceToBases = 300;
blck_minDistanceToPlayer = 500;
blck_minDistanceFromTowns = 300;
blck_minDistanceFromTowns = 200;
blck_minDistanceFromDMS = 500; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check.
///////////////////////////////
@ -293,6 +293,22 @@
blck_logblacklisteditems = true;
//blck_maximumitempriceinai_loadouts = 1000;
// lists of black-listed items to be excluded from dynamic loadouts
blck_blackListedMods = [
// Uncomment to exclude items/weapons/uniforms/vest/headgear from being included.
// Add DLC names you wish to exluded as appropriate
// DLC names will be added to your server.RPT
//"Kart",
//"TANK",
//"ORANGE",
//"Heli",
//"Contact",
//"Enoch",
//"Orange",
//"Jets",
//"Mark",
//"Expansion"
];
blck_blacklistedVests = [
//"V_Press_F"
];
@ -359,9 +375,6 @@
//This defines how long after an AI dies that it's body disappears.
blck_bodyCleanUpTimer = 80*60; // time in seconds after which dead AI bodies are deleted
#ifdef blck_milServer
blck_bodyCleanUpTimer = 80*60; // Trying to reduce lag with player counts > 20
#endif
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
// values are ordered as follows [blue, red, green, orange];
@ -420,7 +433,11 @@
blck_maxMoneyGreen = 40;
blck_maxMoneyRed = 30;
blck_maxMoneyBlue = 20;
// Define the chance of attachments
blck_chanceOptics = 0.4;
blck_chanceMuzzle = 0.3;
blck_chancePointer = 0.25;
blck_chanceUnderbarrel = 0.25;
if (toLower(blck_modType) isEqualTo "epoch") then
{
[format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log;

View File

@ -15,7 +15,7 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
diag_log "[blckeagls] Loading Custom Configurations 5/2/20";
["[blckeagls] Loading Custom Configurations 11/14//20"] call blck_fnc_log;
switch (toLower (worldName)) do
{
@ -80,7 +80,7 @@ switch (toLower (worldName)) do
};
};
diag_log "[blckeagls] End of map-specific block of Custom Configurations 5/2/20";
["[blckeagls] End of map-specific block of Custom Configurations 11/14/20"] call blck_fnc_log;
#ifdef blck_useNIA
blck_NIA_WeaponsLMG = [
@ -266,8 +266,8 @@ blck_NIA_WeaponsSniper = [
"hlc_rifle_psg1A1"
];
#endif
diag_log "[blckeagls] end of Custom Configurations for NIA 5/2/20";
diag_log format["[blckeagls] blck_NIA_WeaponsLMG = %1",if (isNil "blck_NIA_WeaponsLMG") then {"nil"} else {blck_NIA_WeaponsLMG}];
//diag_log "[blckeagls] end of Custom Configurations for NIA 5/2/20";
//diag_log format["[blckeagls] blck_NIA_WeaponsLMG = %1",if (isNil "blck_NIA_WeaponsLMG") then {"nil"} else {blck_NIA_WeaponsLMG}];
#ifdef blck_useRHS
blck_RHS_Weapons = [
@ -728,8 +728,8 @@ blck_RHS_WeaponsSAF = [
"rhs_weap_m84"
];
#endif
diag_log format["[blckeagls] blck_RHS_Weapons = %1",if (isNil "blck_RHS_Weapons") then {"nil"} else {blck_RHS_Weapons}];
diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
//diag_log format["[blckeagls] blck_RHS_Weapons = %1",if (isNil "blck_RHS_Weapons") then {"nil"} else {blck_RHS_Weapons}];
//diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
#ifdef blck_useCUP
@ -1222,23 +1222,29 @@ blck_CUPHeadgear = [
"CUP_H_USMC_Officer_Cap"
];
#endif
diag_log "[blckeagls] end of Custom Configurations for CUP 5/2/20";
diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear") then {"nil"} else {blck_CUPHeadgear}];
diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
//diag_log "[blckeagls] end of Custom Configurations for CUP 5/2/20";
//diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear") then {"nil"} else {blck_CUPHeadgear}];
//diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20";
blck_customConfigsLoaded = 1;
uiSleep 5;
if (blck_debugOn) then {
diag_log "<GRG_TEST> HEY YOU ITS WORKING";
blck_MinDistanceFromMission = 1000;
blck_minDistanceToBases = 1000;
blck_minDistanceToPlayer = 1000;
blck_minDistanceFromTowns = 500;
diag_log "<GRG_TEST> HEY YOU porkid's settings were loaded";
blck_MissionTimeout = 3000;
blck_preciseMapMarkers = true;
blck_MissionTimeout = 30 * 30;
blck_cleanupCompositionTimer = 30;
blck_AliveAICleanUpTimer = 30;
blck_bodyCleanUpTimer = 30;
blck_vehicleDeleteTimer = 30;
blck_maxSpawnedMissions = 15;
blck_mainThreadUpdateInterval = 10;
blck_launchersPerGroup = 6;
blck_enableOrangeMissions = 1;
blck_enableGreenMissions = 1;
blck_enableRedMissions = 1;
@ -1247,7 +1253,6 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
blck_enableHunterMissions = 1;
blck_enableScoutsMissions = 1;
blck_maxCrashSites = 0;
diag_log "<GRG_TEST> HEY YOU custom settings for enabling missions were loaded";
blck_TMin_Blue = 7;
blck_TMin_Red = 10;
@ -1267,7 +1272,7 @@ diag_log "<GRG_TEST> HEY YOU ITS WORKING";
blck_TMax_Crashes = 15;
blck_TMax_UMS = 25;
diag_log "[blckeagls] Custom Configs <DEBUG ON> Custom mission timers loaded"
["[blckeagls] Custom Configs <DEBUG ON> Custom mission timers loaded"] call blck_fnc_log;
};

View File

@ -54,7 +54,7 @@ _misc = [];
_baseClasses = [];
_classnameList = [];
//diag_log format["blck_modType = %1",blck_modType];
diag_log format["blck_modType = %1",blck_modType];
if (toLower(blck_modType) isEqualTo "epoch") then
{
_classnameList = (missionConfigFile >> "CfgPricing" ) call BIS_fnc_getCfgSubClasses;
@ -63,71 +63,110 @@ if (toLower(blck_modType) isEqualTo "exile") then
{
_classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses;
};
//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
private _dlcList = [];
private _ffaa = [];
private _lago = [];
private _cupv = [];
diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
{
private _temp = [_x] call bis_fnc_itemType;
//diag_log _temp;
_itemCategory = _temp select 0;
_itemType = _temp select 1;
_price = blck_maximumItemPriceInAI_Loadouts;
if (toLower(blck_modType) isEqualTo "epoch") then
private _configName = "";
switch (true) do
{
_price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price");
case isClass(configFile >> "CfgMagazines" >> _x): { _configName = "CfgMagazines"; };
case isClass(configFile >> "CfgVehicles" >> _x): { _configName = "CfgVehicles"; };
case isClass(configFile >> "CfgAmmo" >> _x): { _configName = "CfgAmmo"; };
case isClass(configFile >> "CfgGlasses" >> _x): { _configName = "CfgGlasses"; };
default { _configName = "CfgWeapons"; };
};
if (toLower(blck_modType) isEqualTo "exile") then
private _dlc = getText(configFile >> _configName >> _x >> "DLC");
_dlcList pushBackUnique _dlc;
if (_dlc isEqualTo "LAGO") then {_lago pushBackUnique _x};
if (_dlc isEqualTo "FFAA" || _dlc isEqualTo "FFAAMOD") then {_ffaa pushBackUnique _x};
if (_dlc isEqualTo "CUP_Vehicles") then {_cupv pushBackUnique _x};
if !(_dlc in blck_blackListedMods) then
{
_price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price");
};
if (_price < blck_maximumItemPriceInAI_Loadouts && !(["base",_x] call BIS_fnc_inString)) then
{
if (_itemCategory isEqualTo "Weapon") then
private _temp = [_x] call bis_fnc_itemType;
//diag_log _temp;
_itemCategory = _temp select 0;
_itemType = _temp select 1;
_price = blck_maximumItemPriceInAI_Loadouts;
if (toLower(blck_modType) isEqualTo "epoch") then
{
switch (_itemType) do
{
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x} else {if (blck_logBlacklistedItems) then {diag_log format["Assualt Rifle %1 Excluded: blacklisted Item",_x]}}};
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Machine Gun %1 Excluded: blacklisted Item",_x]}}};
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Submachinegun %1 Excluded: blacklisted Item",_x]}}};
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Shotgun %1 Excluded: blacklisted Item",_x]}}};
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rifle %1 Excluded: blacklisted Item",_x]}}};
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Sniper Rifle %1 Excluded: blacklisted Item",_x]}}};
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Handgun %1 Excluded: blacklisted Item",_x]}}};
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Launcher %1 Excluded: blacklisted Item",_x]}}};
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rocket Launcer %1 Excluded: blacklisted Item",_x]}}};
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Throw %1 Excluded: blacklisted Item",_x]}}};
};
_price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price");
};
if (_itemCategory isEqualTo "Item") then
if (toLower(blck_modType) isEqualTo "exile") then
{
switch (_itemType) do
{
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Muzzle %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Pointer %1 Excluded: blacklisted Item",_x]}}};
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Optic %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Bipod %1 Excluded: blacklisted Item",_x]}}};
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Binocular/Rangefinder/Binocular %1 Excluded: blacklisted Item",_x]}}};
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Compass %1 Excluded: blacklisted Item",_x]}}};
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["GPS %1 Excluded: blacklisted Item",_x]}}};
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["NVG %1 Excluded: blacklisted Item",_x]}}};
};
_price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price");
};
if (_itemCategory isEqualTo "Equipment") then
if (_price < blck_maximumItemPriceInAI_Loadouts && !(["base",_x] call BIS_fnc_inString)) then
{
switch (_itemType) do
if (_itemCategory isEqualTo "Weapon") then
{
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Glasses %1 Excluded: blacklisted Item",_x]}}};
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Headgear %1 Excluded: blacklisted Item",_x]}}};
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Vest %1 Excluded: blacklisted Item",_x]}}};
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Uniform %1 Excluded: blacklisted Item",_x]}}};
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Backpack %1 Excluded: blacklisted Item",_x]}}};
switch (_itemType) do
{
case "AssaultRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x} else {if (blck_logBlacklistedItems) then {diag_log format["Assualt Rifle %1 Excluded: blacklisted Item",_x]}}};
case "MachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnLMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Machine Gun %1 Excluded: blacklisted Item",_x]}}};
case "SubmachineGun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSMG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Submachinegun %1 Excluded: blacklisted Item",_x]}}};
case "Shotgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnShotGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Shotgun %1 Excluded: blacklisted Item",_x]}}};
case "Rifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnAR pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rifle %1 Excluded: blacklisted Item",_x]}}};
case "SniperRifle": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnSniper pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Sniper Rifle %1 Excluded: blacklisted Item",_x]}}};
case "Handgun": {if !(_x in blck_blacklistedSecondaryWeapons) then {_wpnHandGun pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Handgun %1 Excluded: blacklisted Item",_x]}}};
case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Launcher %1 Excluded: blacklisted Item",_x]}}};
case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Rocket Launcer %1 Excluded: blacklisted Item",_x]}}};
case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Throw %1 Excluded: blacklisted Item",_x]}}};
};
};
if (_itemCategory isEqualTo "Item") then
{
switch (_itemType) do
{
case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Muzzle %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryPointer": {if !(_x in blck_blacklistedAttachments) then {_wpnPointers pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Pointer %1 Excluded: blacklisted Item",_x]}}};
case "AccessorySights": {if !(_x in blck_blacklistedOptics) then {_wpnOptics pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Optic %1 Excluded: blacklisted Item",_x]}}};
case "AccessoryBipod": {if !(_x in blck_blacklistedAttachments) then {_wpnUnderbarrel pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Bipod %1 Excluded: blacklisted Item",_x]}}};
case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Binocular/Rangefinder/Binocular %1 Excluded: blacklisted Item",_x]}}};
case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Compass %1 Excluded: blacklisted Item",_x]}}};
case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["GPS %1 Excluded: blacklisted Item",_x]}}};
case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["NVG %1 Excluded: blacklisted Item",_x]}}};
};
};
if (_itemCategory isEqualTo "Equipment") then
{
switch (_itemType) do
{
case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Glasses %1 Excluded: blacklisted Item",_x]}}};
case "Headgear": {if !(_x in blck_blacklistedHeadgear) then {_headgear pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Headgear %1 Excluded: blacklisted Item",_x]}}};
case "Vest": {if !(_x in blck_blacklistedVests) then {_vests pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Vest %1 Excluded: blacklisted Item",_x]}}};
case "Uniform": {if !(_x in blck_blacklistedUniforms) then {_uniforms pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Uniform %1 Excluded: blacklisted Item",_x]}}};
case "Backpack": {if !(_x in blck_blacklistedBackpacks) then {_backpacks pushBack _x}else {if (blck_logBlacklistedItems) then {diag_log format["Backpack %1 Excluded: blacklisted Item",_x]}}};
};
};
} else {
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
};
//} else {
//if (["base",_x] call BIS_fnc_inString) then {diag_log format["_dynamicConfigs: excluding class %1",_x]};
};
} forEach _classnameList;
private _allWep = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper + _wpnHandGun;
/*
// Example of code you can use to: a) list DLCs; b) list items from specific DLCs
{
diag_log format["_dlcList %1 = %2",_forEachIndex,_x];
} forEach _dlcList;
{
diag_log format["_ffaa %1 = %2",_forEachIndex,_x];
}forEach _ffaa;
{
diag_log format["_lago %1 = %2",_forEachIndex,_x];
} forEach _lago;
{
diag_log format["_cupw %1 = %2",_forEachIndex,_x];
} forEach _cupw;
*/
blck_primaryWeapons = _wpnAR + _wpnLMG + _wpnSMG + _wpnShotGun + _wpnSniper;
blck_WeaponList_Blue = blck_primaryWeapons;
@ -135,6 +174,15 @@ blck_WeaponList_Red = blck_primaryWeapons;
blck_WeaponList_Green = blck_primaryWeapons;
blck_WeaponList_Orange = blck_primaryWeapons;
/*
//here is an example for checking that weapons in the FFAA mod were added to the list of primary weapons
private _absentWep = [];
{
if !(_x in _allWep) then {diag_log format["_absentWep %1 = %2",_forEachIndex,_x];};
} forEach _ffaa + _lago + _cupw;
*/
blck_pistols = _wpnHandGun;
blck_Pistols_blue = blck_Pistols;
blck_Pistols_red = blck_Pistols;

View File

@ -78,7 +78,7 @@ _missionLootVehicles = [
];
_missionPatrolVehicles = [
["B_G_Offroad_01_armed_F",[3.04663,-40.3821,0.00804186],262.322]
[selectRandom blck_AIPatrolVehicles,[3.04663,-40.3821,0.00804186],262.322]
];
_submarinePatrolParameters = [

View File

@ -127,9 +127,9 @@ _missionLootVehicles = [
];
_missionPatrolVehicles = [
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337]
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
[selectRandom blck_AIPatrolVehicles,[9.30664,88.3091,0.00802708],89.9029],
[selectRandom blck_AIPatrolVehicles,[72.2974,6.63599,0.00802183],0.00106337]
];
_submarinePatrolParameters = [

View File

@ -43,6 +43,7 @@ _garrisonedBuilding_ATLsystem = [
_missionLandscape = [
["RoadCone_L_F",[0.914063,-0.908203,-0.00143838],0,true,true],
["CamoNet_OPFOR_open_F",[-31.8352,-29.0081,-0.00143909],235.13,true,true],
["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,true,true],
["Land_HBarrier_Big_F",[-37.4087,-8.59814,-0.00143909],286.375,true,true],

View File

@ -44,6 +44,7 @@ _missionLandscape = [
//["Sign_Arrow_Green_F",[-5049.41,-2726.72,-0.00143862],0,true,true],
//["Sign_Arrow_Yellow_F",[-5049.41,-2726.72,-0.00143862],0,true,true],
//["babe_helper",[-5051.91,-2726.22,-0.00143862],78.6345,true,true],
["RoadCone_L_F",[0.914063,-0.908203,-0.00143838],0,true,true],
["Land_HBarrier_Big_F",[-28.8394,-8.42627,-0.00143862],91.041,true,true],
["Land_CncShelter_F",[-10.0513,-26.2283,-0.00143862],0.0913576,true,true],
["Land_HBarrierWall6_F",[0.581543,-12.7048,-0.00143862],91.041,true,true],

View File

@ -127,9 +127,9 @@ _missionLootVehicles = [
];
_missionPatrolVehicles = [
["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03],
["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029],
["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337]
[selectRandom blck_AIPatrolVehicles,[-51.5793,28.9631,0.00801468],179.03],
[selectRandom blck_AIPatrolVehicles,[9.30664,88.3091,0.00802708],89.9029],
[selectRandom blck_AIPatrolVehicles,[72.2974,6.63599,0.00802183],0.00106337]
];
_submarinePatrolParameters = [

View File

@ -111,7 +111,7 @@ _missionLootVehicles = [
];
_missionPatrolVehicles = [
["B_G_Offroad_01_armed_F",[35.8379,4.96387,0.00813246],0.00104452]
[selectRandom blck_AIPatrolVehicles,[35.8379,4.96387,0.00813246],0.00104452]
];
_submarinePatrolParameters = [

View File

@ -104,8 +104,8 @@ _missionLootVehicles = [
];
_missionPatrolVehicles = [
["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655],
["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356]
[selectRandom blck_AIPatrolVehicles,[-53.8027,-29.7834,0.00867844],0.00103655],
[selectRandom blck_AIPatrolVehicles,[51.0596,-25.7876,0.00815535],0.00104356]
];
_submarinePatrolParameters = [

View File

@ -111,7 +111,7 @@ _noVehiclePatrols = blck_SpawnVeh_Red; // Modified as needed; can be a numberic
// Note that this value is ignored if you define vehicle patrols in the array below.
_vehiclePatrolParameters = [
//["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"green",600,0],
["B_G_Offroad_01_armed_EPOCH",[22809.5,16699.2,0],"blue",600,10,1]
[selectRandom blck_AIPatrolVehicles,[22809.5,16699.2,0],"blue",600,10,1]
]; //[ ["vehicleClassName",[px,py,pz] /* center of patrol area */, difficulty /* blue, red etc*/, patrol radius] ]
// When this array is empty, vehicle patrols will be scattered randomely around the mission.
// Allows you to define the location of the center of the patrol, vehicle type spawned, radius to patrol, and AI difficulty (blue, red, green etc).

View File

@ -16,7 +16,7 @@
*/
#include "privateVars.sqf";
_crateMoney = 10000;
_mission = "static mission example #2"; // Included for additional documentation. Not intended to be spawned as a mission per se.
_missionCenter = [22907,16789,0]; // I pulled this from the position of the marker.
_difficulty = "red"; // Skill level of AI (blue, red, green etc)

View File

@ -9,40 +9,52 @@
All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License.
http://creativecommons.org/licenses/by-nc-sa/4.0/
Notes:
Setting blck_maxSeaSearchDistance = 0;
Prevents these missions from being spawned.
*/
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName];
switch (toLower worldName) do
{// These may need some adjustment - including a test for shore or water should help as well to avoid missions spawning on water.
case "altis":{blck_mapCenter = [12000,10000,0]; blck_mapRange = 25000;};
case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500;};
case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000;};
case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000;};
case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;};
case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;};
case "gm_weferlingen_winter":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;};
case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300;};
case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000;};
case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
case "chernarus_winter":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
case "cup_chernarus_a3":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;};
case "bornholm":{blck_mapCenter = [11240, 11292, 0];blck_mapRange = 14400;};
case "esseker":{blck_mapCenter = [6049.26,6239.63,0]; blck_mapRange = 6000;};
case "taviana":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14400;};
case "napf": {blck_mapCenter = [10240,10240,0]; blck_mapRange = 14000;};
case "australia": {blck_mapCenter = [20480,20480, 150];blck_mapRange = 40960;};
case "panthera3":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
case "isladuala":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
case "sauerland":{blck_mapCenter = [12800, 12800, 0];blck_mapRange = 12800;};
case "trinity":{blck_mapCenter = [6400, 6400, 0];blck_mapRange = 6400;};
case "utes":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500;};
case "zargabad":{blck_mapCenter = [4096, 4096, 0];blck_mapRange = 4096;};
case "fallujah":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500;};
case "tavi":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14090;};
case "lingor":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;};
case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000;};
case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500;};
case "vt7": {blck_mapCenter = [9000,9000,0]; blck_mapRange = 9000};
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000};
case "altis":{blck_mapCenter = [12000,10000,0]; blck_mapRange = 25000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 20000;};
case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 5000;};
case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 10000;};
case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 5500;};
case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 20000;};
case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0};
case "gm_weferlingen_winter":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0;};
case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 5000;};
case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
case "chernarus_winter":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
case "cup_chernarus_a3":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 6000;};
case "bornholm":{blck_mapCenter = [11240, 11292, 0];blck_mapRange = 14400; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = blck_mapRange;};
case "esseker":{blck_mapCenter = [6049.26,6239.63,0]; blck_mapRange = 6000; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = 0;};
case "taviana":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14400; blck_maxGradient = 0.20; blck_maxSeaSearchDistance = blck_mapRange;};
case "napf": {blck_mapCenter = [10240,10240,0]; blck_mapRange = 14000; blck_maxGradient = 0.30; blck_maxSeaSearchDistance = 12000;};
case "australia": {blck_mapCenter = [20480,20480, 150];blck_mapRange = 40960; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
case "panthera3":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.40;blck_maxSeaSearchDistance = blck_mapRange;};
case "isladuala":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.40;blck_maxSeaSearchDistance = blck_mapRange;};
case "sauerland":{blck_mapCenter = [12800, 12800, 0];blck_mapRange = 12800; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
case "trinity":{blck_mapCenter = [6400, 6400, 0];blck_mapRange = 6400; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
case "utes":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500; blck_maxGradient = 0.20;};
case "zargabad":{blck_mapCenter = [4096, 4096, 0];blck_mapRange = 4096; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
case "fallujah":{blck_mapCenter = [3500, 3500, 0];blck_mapRange = 3500; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
case "tavi":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14090; blck_maxGradient = 0.40; blck_maxSeaSearchDistance = 12000;};
case "lingor":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
case "takistan":{blck_mapCenter = [5500, 6500, 0];blck_mapRange = 5000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = 0;};
case "lythium":{blck_mapCenter = [10000,10000,0];blck_mapRange = 8500; blck_maxGradient = 0.30; blck_maxSeaSearchDistance = 0;};
case "vt7": {blck_mapCenter = [9000,9000,0]; blck_mapRange = 9000; blck_maxGradient = 0.20;};
case "rof_mok": {
blck_mapCenter = getArray(configFile >> "CfgWorlds" >> worldName >> "centerPosition");
blck_mapRange = worldsize /2;
blck_maxGradient = 0.40;
blck_maxSeaSearchDistance = worldsize / 2;
[format["worldName / center / worldsize / and range set for %1 / %2 / %3",worldName,blck_mapCenter,worldSize,blck_mapRange]] call blck_fnc_log;
};
default {blck_mapCenter = [6322,7801,0]; blck_mapRange = 6000; blck_maxGradient = 0.20;blck_maxSeaSearchDistance = blck_mapRange;};
};

View File

@ -38,7 +38,7 @@ private _blck_loadingStartTime = diag_tickTime;
// Load Configs
[] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf";
waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn") && (!isNil "blck_AI_Side")};
if (blck_debugOn) then {diag_log format["[blckeagls] blck_AI_Side = %1",blck_AI_Side]};
if (blck_debugOn) then {[format["blck_AI_Side = %1",blck_AI_Side]] call blck_fnc_log};
// This block waits for the mod to start but is disabled for now
if ((tolower blck_modType) isEqualto "epoch") then {
@ -54,15 +54,15 @@ if ((toLower blck_modType) isEqualTo "exile") then
};
if ((toLower blck_modType) isEqualTo "default") then
{
diag_log "[blckeagls] Configuring Mission System for Default Settings...";
["[blckeagls] Configuring Mission System for Default Settings..."] call blck_fnc_log;
};
// Load any user-defined specifications or overrides
// HINT: Use these for map-specific settings
#include "\q\addons\custom_server\Configs\blck_custom_config.sqf";
if (blck_debugOn) then {diag_log format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]};
if (blck_debugOn) then {diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]};
if (blck_debugOn) then {[format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]] call blck_fnc_log};
if (blck_debugOn) then {[format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]] call blck_fnc_log};
// Load vaariables used to store information for the mission system.
[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
@ -183,10 +183,13 @@ if (blck_enableBlueMissions > 0) then
};
if (blck_numberUnderwaterDynamicMissions > 0) then
{
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
if !(blck_maxSeaSearchDistance == 0) then {
[_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue;
};
};
// Setup a group for AI corpses
blck_graveyardGroup = createGroup [blck_AI_Side,false];
blck_graveyardGroup setGroupId ["blck_graveyard"];

View File

@ -1,4 +1,4 @@
#define blck_buildNumber 230 // Address issues with cleanup of objects
#define blck_versionNumber 7.02
#define blck_buildDate "10-5-20"
#define blck_buildNumber 240 // Address issues with cleanup of objects
#define blck_versionNumber 7.06
#define blck_buildDate "11-25-20"

View File

@ -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];
};

View File

@ -15,5 +15,4 @@ _p2 = _bbr select 1;
_height = abs ((_p2 select 2) - (_p1 select 2));
_marker setPosATL [_markerPos select 0, _markerPos select 1, (_markerPos select 2) + _height];
_object setVariable ["marker",_marker];
true

View File

@ -9,6 +9,4 @@ if !(_object getvariable["marker",""] isEqualTo "") then
{
[_object] call blck3DEN_fnc_removeMarker;
_object setVariable ["marker",nil];
//_object setVariable ["lootVehicle",nil];
//_object setVariable ["garrisoned",nil];
};

View File

@ -44,4 +44,4 @@ if (_markersStateON) then
{
[true] call blck3DEN_fnc_displayGarrisonMarkers;
};
[_message,"Status"] call BIS_fnc_3DENShowMessage;
[_message,"Status"] call BIS_fnc_3DENShowMessage;

View File

@ -8,4 +8,4 @@ all3DENEntities params ["_objects"];
((_x get3DENAttribute "rotation") select 0) select 2,
(_x get3DENAttribute "objectIsSimple") select 0
];
} forEach _objects;
} forEach _objects;

View File

@ -55,9 +55,6 @@ class CfgFunctions
class displayLootMarkers {};
class getGarrisonInfo {};
class getLootVehicleInfo {};
class help {};
class initializeAttributes {};
class isInfantry {};
class isInside {};
class loadCratesTiming {};
class onDrag {};

View File

@ -1,21 +1,7 @@
Variables to define
marker parameters
Marker Text
Features:
Mission start message
Mission end message
Mission level
To pull units:
private _units = allUnits;
Exports static or dynamic missions preformated in .sqf code. Simply paste the output of the editor into a new .sqf file, edit entires to refine mission parameters and add the name of the mission file to GMS_missionLists.
Captures simple objects, sets allow dammage and allow similation according to editor settings, and captures marker configurations.
To pull objects:
_center = allMissionObejcts "RoadCone_L_F";
_buildings = allMissionObjects "Building";
_things = allMissionObjects "ThingX";
_baseObjects = _buildings append _things;
_static = allMissionObejcts "StaticWeapon";
_vehicles = allMissionObejcts "Car" + allMissionObejcts "Tank" + allMissionObejcts "Ship";
_air = allMissionObejcts "Air";

View File

@ -11,7 +11,7 @@ Second, if your rpt log shows errors after a change, revert to the defaults and
Third, settings that determine how messages are displayed can be configured in your mission file (i.e, epoch.Altis.pbo) in debug\blckClient.sqf.
Here you can use dynamic messages, hints, Toasts or titleText/cutText to display your messages.
Lastly, settings for the missions themselves have been moved to @epochhive\custom_server\configs.
Lastly, settings for the missions themselves are found in a general settings file and a mod-specific file. The latter contains configurations for vehicles, weapons, and other gear that might be mod specific.
There are two different config files, one for exile and a second for epoch.
There is a third config file which you can use to add additional map-specific or mod-specific settings.
For example, you might want only some missions to be running on a small map like Namalsk.

View File

@ -30,6 +30,7 @@ General settings include:
Whether players are penalized for running over AI or shootting them with OP weapons.
Loot can also be configured for each mission class or mission. You can modify the number of weapons, magazines, items, construction materials, etc.
TO do this, add these custom loot paramters to the particular missions you wish to use them in, or define the tables in a config then refer to them in the mission(s).
You can also adjust the choices for each of these types of items.
The equipment selected for each class of mission can also be specified(uniforms, vests, headgear, backpcks, weapons, pistols).
Alternatively, AI loadouts can be determined by the mission system based on what is available at server startup. When loadouts are dynamically configured the items spawned in CfgLoot are used. Note that an upper limit on price is available.
@ -53,7 +54,7 @@ The missions themselves are spawned from templates which can be used to define m
To create and run new missions simply:
layout an AI base in the Arma 3 editor,
define commonly adjusted setting using the editor plugin.
define commonly adjusted settings using the editor plugin.
export the base as an .sqf using the editor plugin provided.
Define the above parameters (nu. AI groups, No AI, etc)
Add the name of the file (e.g., "newAImission" to the list of missions to be spawned of that class in ...\custom)server\missions\GMS_missionLists.sqf

View File

@ -45,7 +45,7 @@ http://www.exilemod.com/topic/9779-releasetool-bem-battleye-filter-manager-by-th
http://www.exilemod.com/topic/9256-battleye-filter-tool/
http://www.exilemod.com/topic/9708-battleye-filter-editor/
If you would let me know what exceptions you need to add I will start a list in this document.
If you would let me know what exceptions you needed to add I will start a list in this document.
11) Start your server and join. By default missions will start spawning in around 5-10 min.

View File

@ -1,11 +1,11 @@
Known issues
7.00
There is no consistent check for the case in which the call to createGroup returns grpNull because the max number of groups on that side has been spawned.
some AI vehicles may still wander some distance from the mission center.
The distribution of missions is a bit West-favored on Altis.
Mission spawning is broken on Namalsk
7.02
There is no consistent check for the case in which the call to createGroup returns grpNull which happens the max number of groups on that side has been spawned.
Some AI vehicles may still wander some distance from the mission center.

View File

@ -1,10 +1,23 @@
PLEASE NOTE!!!!!!!!!!!!!!!!!!!!!!!!!
I strongly recommend using GMS rather than blackeagls.
GMS is rewritten to use the most efficient coding available.
It is bug free as far as I known whereas blckeagls has some bugs to this day.
GMS is a lighter verision that lacks timeacceleration, mapaddons and other modules that crated confusion.
It can be downloaded here: https://github.com/Ghostrider-DbD-/GMS_RC
I have left this public release of blckeagls on github for historical reasons and for those who prefer it over GMS.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Blckegls mission system
Included is an updated version of blckeagls mission system. This began as an effort to fix bugs in and upgrade version 2.0.2 as updated by Narines and has now evolved to a complete reworking of almost all code.
* Installation: Please refer to Installation.txt for a detailed description of installation and what you need to add to BE filters.
* Loading crates on SDV at underwater missions. For epoch, please feel free to use the modified IgiLoad on my github.
* Loading crates on SDV at underwater missions. For epoch, please feel free to use R3F or the modified IgiLoad on my github.
For exile users, modify your misionfil.pbo/config.sys as described below.
http://www.exilemod.com/topic/17352-bigfoots-shipwrecks/
infiSTAR Users: you may need to whitelist _MainMarker depending on your settings.
@ -23,6 +36,8 @@ Included is an updated version of blckeagls mission system. This began as an eff
Bill (DBD Clan) for example compositions.
cyncrwler, Grahamme and many others for help with troubleshooting and testing
Brian Soanes for helpful bug fixes, testing, performance fixes and general guidance.
Porkeld for CBA compatibility fixes and texting.
Thomas_TKO for extensive testing of the editor plugin and many new missions.

View File

@ -10,6 +10,19 @@ Many thanks for new Coding and ideas from Grahame.
Significant Changes:
=====================
New: Player stats updated for each AI kill on Epoch.
New: added support for Mull of Kyntire.
Fixed: Launchers and Launcher rounds were not being deleted.
Fixed: AI at Turrets were spawned with scubba loadouts.
Fixed: Units at UMS missions (Pirate missions) now spawn with scuba gear if spawned over water .
Fixed: Mission Loot Vehicles were not being spawned.
Fixed: Missions that were aborted (hostage or leader killed, other reasons) were not being respawned.
Fixed: Money not being added to some mission crates.
Changed: Some improvements in coding efficiency were implemented for frequently called functions.
Changed: all constants used for searching for mission locations on land or at sea are defined in GMS_fnc_findWorld.sqf
Changed: maps without water have the search range for missions at sea set to 0.
Changed: No searches for missions at sea will be done when the search range is 0.
7.02 Build 230
New: Option to hide bushes and trees that happen to be under the location in which an enterable building is spawned