Updated for Build 155

This commit is contained in:
Chris Cardozo 2018-10-21 07:56:34 -04:00
parent 91ac249eeb
commit 8d06b9e851
29 changed files with 333 additions and 148 deletions

View File

@ -41,7 +41,7 @@ while {true} do
_timer5sec = diag_tickTime + 5;
[] call blck_fnc_missionGroupMonitor;
[] call blck_fnc_sm_missionPatrolMonitor;
//[] call blck_fnc_vehiclePatrolPlayerSensor;
//diag_log format["[blckeagls] _fnc_mainThread 5 Second Timer Handled | Timstamp %1",diag_tickTime];
};
if (diag_tickTime > _timer20sec) then
@ -49,6 +49,7 @@ while {true} do
[] call blck_fnc_cleanupAliveAI;
[] call blck_fnc_cleanupObjects;
[] call blck_fnc_cleanupDeadAI;
[] call blck_fnc_scanForPlayersNearVehicles;
//[] call blck_fnc_cleanEmptyGroups;
_timer20sec = diag_tickTime + 20;
//diag_log format["[blckeagls] _fnc_mainThread 20 Second Timer Handled | Timstamp %1",diag_tickTime];

View File

@ -1,10 +1,8 @@
params["_coords","range"];
//diag_log format["_fnc_nearestPlayers: _this = %1",_this];
params["_coords","_range"];
private["_return","_playerClassNames","_epochClasses","_exileClasses"];
_epochClasses = ["Epoch_Female_F","Epoch_Male_F"];
_exileClasses = ["Exile_Unit_Player"];
if (blck_modType isEqualTo "Epoch") then {_playerClassNames = _epochClasses};
if (blck_modType isEqualTo "Exile") then {_playerClassNames = _exileClasses};
if (blck_modType isEqualTo "Epoch") then {_playerClassNames = ["Epoch_Female_F","Epoch_Male_F"]};
if (blck_modType isEqualTo "Exile") then {_playerClassNames = ["Exile_Unit_Player"]};
_return = nearestObjects[_coords,_playerClassNames,_range];
_return

View File

@ -16,9 +16,11 @@ private["_groupSpawned"];
_groupSpawned = createGroup [blck_AI_Side, true];
//_groupSpawned setVariable["groupVehicle",objNull];
#ifdef useDynamicSimulation
_groupSpawned enableDynamicSimulation true;
#endif
if (blck_simulationManager == blck_useDynamicSimulationManagement) then
{
_groupSpawned enableDynamicSimulation true;
};
_groupSpawned setcombatmode "RED";
_groupSpawned setBehaviour "COMBAT";
_groupSpawned allowfleeing 0;

View File

@ -164,28 +164,22 @@ _fn_simulationMonitor = {
}else{
_playerType = ["Epoch_Male_F","Epoch_Female_F"];
};
//diag_log format["_fn_simulationMonitor:: _playerType = %1",_playerType];
{
// player nearEntities [["Car", "Motorcycle", "Tank"], 50];
_players = (leader _x) nearEntities [_playerType, 1800];
_players = (leader _x) nearEntities [_playerType, blck_simulationEnabledDistance];
if (count _players > 0) then
{
// Be sure simulation is on for all units in the group
if !(_x getVariable["blck_simulationStatus",false]) then
if !(simulationEnabled _x) then
{
_x setVariable["blck_simulationStatus",true];
{
_x enableSimulationGlobal true;
}forEach (units _x);
{
_x enableSimulationGlobal true;
(_players select 0) reveal _x; // Force simulation on
}forEach (units _x);
};
}else{
// Be sure simulation is off for all units in the group.
if !(_x getVariable["blck_simulationStatus",true]) then
if (simulationEnabled _x) then
{
_x setVariable["blck_simulationStatus",false];
{
_x enableSimulationGlobal false;
}forEach (units _x);
{_x enableSimulationGlobal false}forEach (units _x);
};
};
} forEach blck_monitoredMissionAIGroups;
@ -200,6 +194,5 @@ if (blck_debugLevel > 2) then {diag_log format["_fnc_missionGroupMonitor: execut
uiSleep 0.1;
[] call _fn_monitorGroupWaypoints;
#ifndef useDynamicSimulation
[] call _fn_simulationMonitor;
#endif
if (blck_simulationManager == blck_useBlckeaglsSimulationManagement) then {[] call _fn_simulationMonitor};

View File

@ -41,9 +41,9 @@ _staticsSpawned = [];
_group = call blck_fnc_create_AI_Group;
{
_g = _x;
{
diag_log format["_g %1 = %2",_forEachIndex,_g select _forEachIndex];
}forEach _g;
//{
//diag_log format["_g %1 = %2",_forEachIndex,_g select _forEachIndex];
//}forEach _g;
// ["Land_Unfinished_Building_02_F",[-28.3966,34.8145,-0.00268841],0,true,true,[["B_HMG_01_high_F",[-5.76953,1.16504,7.21168],360]],[]],
_x params["_bldClassName","_bldRelPos","_bldDir","_s","_d","_statics","_men"];
//diag_log format["_bldClassName = %1 | _bldRelPos = %2 | _bldDir = %3",_bldClassName,_bldRelPos,_bldDir];
@ -53,8 +53,8 @@ _group = call blck_fnc_create_AI_Group;
_buildingsSpawned pushBack _building;
_staticsSpawned = [_building,_group,_statics,_men,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,"none",_weaponList,_sideArms] call blck_fnc_spawnGarrisonInsideBuilding_ATL;
}forEach _garrisonedBuilding_ATLsystem;
{
diag_log format["__fnc_garrisonBuilding_ATLsystem: %2 = %1",_x select 1, _x select 0];
}forEach [ [_buildingsSpawned,"Buildings"],[_staticsSpawned,"Statics"]];
//{
//diag_log format["__fnc_garrisonBuilding_ATLsystem: %2 = %1",_x select 1, _x select 0];
//}forEach [ [_buildingsSpawned,"Buildings"],[_staticsSpawned,"Statics"]];
_return = [_group,_buildingsSpawned,_staticsSpawned];
_return

View File

@ -64,6 +64,7 @@ _blck_AllMissionAI = [];
_AI_Vehicles = [];
_blck_localMissionMarker = [_markerClass,_coords,"","",_markerColor,_markerType];
#define delayTime 1
#define useRelativePos true
#ifdef blck_debugMode
diag_log "_missionSpawner: All variables initialized";
@ -174,14 +175,6 @@ if (blck_debugLevel > 0) then
};
#endif
uiSleep delayTime;;
if (count _missionLootVehicles > 0) then
{
_temp = [_coords,_missionLootVehicles,_loadCratesTiming] call blck_fnc_spawnMissionLootVehicles;
_crates append _temp;
};
uiSleep delayTime;
_abort = false;
@ -364,7 +357,6 @@ if (_abort) exitWith
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
{
#define useRelativePos true
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_missionPatrolVehicles,useRelativePos,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionVehiclePatrols;
if (typeName _temp isEqualTo "ARRAY") then
@ -395,6 +387,13 @@ if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then
_objects append _crates;
};
};
uiSleep delayTime;;
if (count _missionLootVehicles > 0) then
{
_temp = [_coords,_missionLootVehicles,_loadCratesTiming] call blck_fnc_spawnMissionLootVehicles;
_crates append _temp;
};
if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then
{
diag_log format["_fnc_missionSpawner (436): spawning %1 paraunits at mission spawn",_noPara];
@ -459,6 +458,7 @@ while {_missionComplete isEqualTo -1} do
#ifdef blck_debugMode
if (blck_debugLevel > 2) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";};
#endif
if (_endIfPlayerNear) then
{
if ([_locations,20,true] call blck_fnc_playerInRangeArray) then {_missionComplete = 1};

View File

@ -16,7 +16,7 @@
private ["_unit","_instigator","_group","_wp"];
_unit = _this select 0 select 0;
_instigator = _this select 0 select 3;
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
#ifdef blck_debugMode
if (blck_debugLevel >= 2) then
{
@ -47,8 +47,11 @@ if ((damage _unit) > 0.1 ) then
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
};
_unit setVariable["hasHealed",true,true];
/*
_unit addMagazine "SmokeShellOrange";
_unit fire "SmokeShellMuzzle";
*/
"SmokeShellRed" createVehicle ((position _unit) getPos[3,_unit getRelDir _instigator];
_unit addItem "FAK";
_unit action ["HealSoldierSelf", _unit];
_unit setDamage 0;

View File

@ -25,10 +25,8 @@ _unit setVariable ["blck_cleanupAt", (diag_tickTime) + blck_bodyCleanUpTimer, tr
blck_deadAI pushback _unit;
_group = group _unit;
[_unit] joinSilent grpNull;
if (count(units _group) < 1) then {
#ifdef useDynamicSimulation
_group enableDynamicSimulation false;
#endif
if (count(units _group) < 1) then
{
deleteGroup _group;
};
if (blck_launcherCleanup) then {[_unit] spawn blck_fnc_removeLaunchers;};

View File

@ -0,0 +1,52 @@
/*
algorhytm one: pure chance base on inverse of distance. More efficient.
algorhythm two: based on canSee. More detailed.
*/
params["_vehicle","_searchRadius","_detectionOdds"];
private["_player","_detectionOdds","_nearbyPlayers","_knowsAbout","_cansee","_knowledgeGained"];
_nearbyPlayers = [position _vehicle, _vehicle getVariable["blck_vehicleSearchRange",500]] call blck_fnc_nearestPlayers;
if (blck_revealMode isEqualTo "detailed") then
{
private["_crew","_group"];
_crew = crew _vehicle;
_group = group(_crew select 0);
{
if (random(1) < _detectionOdds) then
{
_player = _x;
{
_cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, position _player];
if (_cansee > 0) then
{
_knowledgeGained = _cansee;
} else {
_knowledgeGained = _x knowsAbout _player;
if (_knowledgeGained == 0) then {_knowledgeGained = 0.1};
};
_x reveal[_player,_knowledgeGained];
//diag_log format["_fnc_revealNearbyPlayers: player %1 revealed to unit %2",_player,_x];
}forEach _crew;
};
}forEach _nearbyPlayers;
};
if (blck_revealMode isEqualTo "basic") then
{
{
_player = _x;
if (random(1) < _detectionOdds) then
{
_knowsAbout = (_vehicle) knowsAbout _player;
if (_knowsAbout > 0) then
{
_knowledgeGained = _knowsAbout;
} else {
_knowledgeGained = (_searchRadius - (_x distance _vehicle))/_searchRadius;
};
_x reveal[_player, _knowledgeGained];
};
}forEach _nearbyPlayers;
};

View File

@ -0,0 +1,9 @@
// GMS_fnc_vehiclePlayerSensingLogic.sqf
// No params
private["_searchRadius","_detectionOdds"];
{
_searchRadius = _x getVariable["blck_vehicleSearchRadius",800];
_detectionOdds = _x getVariable["blck_vehiclePlayerDetectionOdds",0.5];
[_x,_searchRadius,_detectionOdds] call blck_fnc_revealNearbyPlayers;
}forEach blck_monitoredVehicles;

View File

@ -21,6 +21,8 @@ if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1
_veh = createVehicle[_vehType, _pos, [], 0, "NONE"];
_veh setVariable["blck_vehicle",true];
_veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeSurfaceVehicle];
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
[_veh] call blck_fnc_protectVehicle;
#ifdef blck_debugMode

View File

@ -72,7 +72,9 @@ if !(isNull _grpPilot) then
#endif
_patrolHeli = createVehicle [_chopperType, _coords, [], 90, "FLY"];
//_grpPilot setVariable["groupVehicle",_patrolHeli];
_patrolHeli setVariable["blck_vehicle",true];
_patrolHeli setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeAir];
_patrolHeli setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
[_patrolHeli] call blck_fnc_protectVehicle;
_patrolHeli setFuel 1;
_patrolHeli engineOn true;

View File

@ -22,6 +22,8 @@ if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1
_veh = createVehicle[_vehType, _pos, [], 0, "NONE"];
_veh setVariable["blck_vehicle",true];
[_veh] call blck_fnc_protectVehicle;
_veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeSubs];
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf:: vehicle spawned is %1",_veh];};

View File

@ -40,6 +40,9 @@ if !(isNull _group) then
_veh = [_vehType,_pos] call blck_fnc_spawnVehicle;
// _veh addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
_veh addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleHit}];
_veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeGroundVehicle];
_veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds];
//_group setVariable["groupVehicle",_veh];
#ifdef blck_debugMode
if (blck_debugLevel > 1) then

View File

@ -41,7 +41,7 @@ blck_fnc_spawnMissionLootBoxesRelative = compileFinal preprocessFileLineNumbers
blck_fnc_spawnSingleObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnSingleObject.sqf";
blck_fnc_emptyObjectInventory = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObjectInventory.sqf";
blck_fnc_spawnMissionLandscapeRelative = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMissionLandscapeRelative.sqf";
blck_fnc_nearestPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf";
//blck_fnc_getTraderCitiesEpoch = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitiesEpoch.sqf";
//blck_fnc_getTraderCitesExile = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";
@ -123,6 +123,8 @@ blck_fnc_releaseVehicleToPlayers = compileFinal preprocessFileLineNumbers "\q\ad
blck_fnc_deleteAIVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf";
blck_fnc_destroyVehicleAndCrew = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf";
blck_fnc_reloadVehicleAmmo = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf";
blck_fnc_scanForPlayersNearVehicles = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf";
blck_fnc_revealNearbyPlayers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf";
// functions to support Units
blck_fnc_removeGear = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"; // Strip an AI unit of all gear.

View File

@ -12,8 +12,10 @@
*/
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
blck_debugON = true;
blck_debugLevel = 0; // Sets level of detail for debugging info - WIP.
diag_log "[blckeagls] loading variables";
// blck_debugON = false; Moved to blck_configs.sqf because of script loading order issues.
// blck_debugLevel = 0; Moved to blck_configs.sqf because of script loading order issues.
blck_minFPS = 8;
////////////////////////////////////////////////
@ -22,7 +24,6 @@ blck_minFPS = 8;
blck_townLocations = []; //nearestLocations [blck_mapCenter, ["NameCity","NameCityCapital"], 30000];
blck_ActiveMissionCoords = [];
blck_recentMissionCoords = [];
blck_locationBlackList = [];
blck_monitoredVehicles = [];
blck_livemissionai = [];
blck_monitoredMissionAIGroups = []; // Used to track groups in active missions for whatever purpose
@ -34,20 +35,26 @@ blck_activeMissions = [];
blck_deadAI = [];
blck_connectedHCs = [];
blck_missionMarkers = [];
blck_groupsOnHC = [];
blck_vehiclesOnHC = [];
//blck_groupsOnHC = [];
//blck_vehiclesOnHC = [];
//blck_HC_monitoredVehicles = [];
//blck_HC_monitoredGroups = [];
#ifdef useDynamicSimulation
"Group" setDynamicSimulationDistance 1800;
enableDynamicSimulationSystem true;
#endif
if (blck_simulationManager == 2) then
{
"Group" setDynamicSimulationDistance 1800;
enableDynamicSimulationSystem true;
};
blck_heliCrashSites = [];
// radius within whih missions are triggered. The trigger causes the crate and AI to spawn.
blck_TriggerDistance = 1000;
#ifdef blck_milServer
blck_TriggerDistance = 1500;
#else
blck_TriggerDistance = 1500;
#endif
blck_mainThreadUpdateInterval = 60;
//blck_missionSpawning = false;
blck_revealMode = "detailed"; //""basic" /*group or vehicle level reveals*/,detailed /*unit by unit reveals*/";
diag_log "[blckeagls] Variables Loaded";
blck_variablesLoaded = true;

View File

@ -13,12 +13,23 @@
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
/*
changing any of these variables may break the mission systemChat
*/
blck_locationBlackList = []; // Do not touch ...
blck_debugON = false; // Do not touch ...
blck_debugLevel = 0; // Do not touch ...
#ifdef blck_milServer
execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";
if (true) exitWith {};
#endif
diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf";
//diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf";
/*
**************************************
Configurations begin here
**************************************
*/
/***************************************************************
BLCKEAGLS SUPPLEMENTAL MODULES
****************************************************************
@ -31,6 +42,13 @@
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
blck_simulationManager = blck_useBlckeaglsSimulationManagement;
diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager];
/*
blck_simulationManagementOff - no simulation management occurs
blck_useBlckeaglsSimulationManager - simulation is enabled/disabled by periodic checks for nearby players; a 'wake' function is included when a units simulation is turned on
blck_useDynamicSimulationManagement 2 - arma dynamic simulation is used
*/
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
@ -87,7 +105,7 @@
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"
blck_killPercentage = 0.9; // The mission will complete if this fraction of the total AI spawned has been killed.
blck_killPercentage = 0.999999; // The mission will complete if this fraction of the total AI spawned has been killed.
// This facilitates mission completion when one or two AI are spawned into objects.
blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir".
// Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute.
@ -367,8 +385,8 @@
{
diag_log format["[blckeagles] Dynamic Configs Enabled"];
execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf";
waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
waitUntil{blck_dynamicConfigsLoaded};
blck_dynamicConfigsLoaded = nil;
//waitUntil {(isNil "blck_configsExileLoaded") isEqualTo false;};
//waitUntil{blck_dynamicConfigsLoaded};
//blck_dynamicConfigsLoaded = nil;
};
blck_configsLoaded = true;

View File

@ -538,7 +538,10 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch"];
blck_specialItems = blck_throwableExplosives + blck_medicalItems;
blck_NVG = ["NVG_EPOCH"];
blck_epochValuables = ["PartOreGold","PartOreSilver","PartOre","ItemGoldBar","ItemGoldBar2oz","ItemGoldBar3oz","ItemGoldBar4oz","ItemGoldBar5oz","ItemGoldBar6oz","ItemGoldBar7oz","ItemGoldBar8oz","ItemGoldBar9oz","ItemGoldBar10oz","ItemSilverBar","ItemSilverBar2oz","ItemSilverBar3oz","ItemSilverBar4oz","ItemSilverBar5oz","ItemSilverBar6oz","ItemSilverBar7oz","ItemSilverBar8oz","ItemSilverBar9oz","ItemSilverBar10oz","ItemAluminumBar","ItemAluminumBar10oz","ItemCopperBar","ItemCopperBar10oz","ItemTinBar","ItemTinBar10oz","ItemTopaz","ItemOnyx","ItemSapphire","ItemAmethyst","ItemEmerald","ItemCitrine","ItemRuby","ItemQuartz","ItemJade","ItemGarnet","ItemKiloHemp"];
blck_epochValuables = ["PartOreGold","PartOreSilver","PartOre","ItemGoldBar","ItemSilverBar",
"ItemGoldBar10oz","ItemTopaz","ItemOnyx","ItemSapphire","ItemAmethyst",
"ItemEmerald","ItemCitrine","ItemRuby","ItemQuartz","ItemJade",
"ItemGarnet","ItemKiloHemp"];
blck_epochBuildingSupplies = ["PartPlankPack","ItemPlywoodPack","CinderBlocks","MortarBucket","ItemScraps",
"ItemCorrugated","ItemCorrugatedLg","CircuitParts","WoodLog_EPOCH","ItemRope","ItemStick","ItemRock","ItemBurlap","ItemBulb","ItemSolar","ItemCables","ItemBattery","Pelt_EPOCH","JackKit","ItemCanvas","ItemSeedBag","ItemPipe"];
blck_epochVehicleRepair = ["EngineParts","FuelTank","SpareTire","ItemGlass",
@ -594,9 +597,9 @@ for examples of how you can do this see \Major\Compositions.sqf
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
["MMG_01_hex_F","150Rnd_93x64_Mag"],
["MMG_01_tan_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","150Rnd_93x64_Mag"],
["MMG_02_camo_F","150Rnd_93x64_Mag"],
["MMG_02_sand_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","130Rnd_338_Mag"],
["MMG_02_camo_F","130Rnd_338_Mag"],
["MMG_02_sand_F","130Rnd_338_Mag"],
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
["srifle_DMR_02_F","10Rnd_338_Mag"],
["srifle_DMR_02_sniper_F","10Rnd_338_Mag"],
@ -629,8 +632,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["10Rnd_127x54_Mag" ,1,4],
["10Rnd_127x54_Mag",1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4]
["10Rnd_93x64_DMR_05_Mag" ,1,4],
// Apex Ammo
["130Rnd_338_Mag",1,3],
["150Rnd_93x64_Mag",1,3]
],
[ // Optics
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3],
@ -662,7 +667,7 @@ for examples of how you can do this see \Major\Compositions.sqf
["ItemAluminumBar",1,3],
["ItemTinBar",1,3],
["ItemCanvas",2,4],
//"SeedPacket_Hemp","SeedPacket_GoldenSeal","SeedPacket_Poppy","SeedPacket_Pumpkin","SeedPacket_Sunflower"
//"SeedPacket_Hemp","SeedPacket_GoldenSeal","SeedPacket_Poppy","SeedPacket_Pumpkin","SeedPacket_Sunflower"
["ItemKiloHemp",1,3],
["ItemRope",1,3],
["ItemBurlap",1,3],
@ -682,7 +687,7 @@ for examples of how you can do this see \Major\Compositions.sqf
["ItemKiloHemp",1,2],["ItemRuby",1,2],["ItemSilverBar",1,2],["ItemEmerald",1,2],["ItemTopaz",1,2],["ItemOnyx",1,2],["ItemSapphire",1,2],["ItemAmethyst",1,2],
["ItemSodaRbull",1,3],["ItemSodaOrangeSherbet",1,3],["ItemSodaPurple",1,3],["ItemSodaMocha",1,3],["ItemSodaBurst",1,3],
["CookedChicken_EPOCH",1,3],["CookedGoat_EPOCH",1,3],["CookedSheep_EPOCH",1,3],["FoodSnooter",1,3],["FoodMeeps",1,3],["FoodBioMeat",1,3],["ItemTuna",1,3],["ItemSeaBass",1,3],["ItemTrout",1,3],
"Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty",
"ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator",
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch"
@ -730,11 +735,22 @@ for examples of how you can do this see \Major\Compositions.sqf
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
["MMG_01_hex_F","150Rnd_93x64_Mag"],
["MMG_01_tan_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","130Rnd_338_Mag"],
["MMG_02_camo_F","130Rnd_338_Mag"],
["MMG_02_sand_F","130Rnd_338_Mag"],
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
["srifle_DMR_02_F","10Rnd_338_Mag"],
["srifle_DMR_02_sniper_F","10Rnd_338_Mag"],
["srifle_DMR_03_F","10Rnd_338_Mag"],
["srifle_DMR_03_tan_F","10Rnd_338_Mag"],
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
["srifle_DMR_05_hex_F","10Rnd_338_Mag"],
["srifle_DMR_06_camo_F","10Rnd_338_Mag"]
["srifle_DMR_05_tan_F","10Rnd_338_Mag"],
["srifle_DMR_06_camo_F","10Rnd_338_Mag"],
["srifle_DMR_04_F","10Rnd_127x54_Mag"],
["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"],
["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"]
],
[//Magazines
@ -757,7 +773,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["10Rnd_127x54_Mag" ,1,4],
["10Rnd_127x54_Mag",1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4]
["10Rnd_93x64_DMR_05_Mag" ,1,4],
// Apex Ammo
["130Rnd_338_Mag",1,3],
["150Rnd_93x64_Mag",1,3]
],
[ // Optics
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3],
@ -789,7 +808,7 @@ for examples of how you can do this see \Major\Compositions.sqf
["ItemAluminumBar",1,3],
["ItemTinBar",1,3],
["ItemCanvas",2,4],
//"SeedPacket_Hemp","SeedPacket_GoldenSeal","SeedPacket_Poppy","SeedPacket_Pumpkin","SeedPacket_Sunflower"
//"SeedPacket_Hemp","SeedPacket_GoldenSeal","SeedPacket_Poppy","SeedPacket_Pumpkin","SeedPacket_Sunflower"
["ItemKiloHemp",1,3],
["ItemRope",1,3],
["ItemBurlap",1,3],
@ -810,7 +829,7 @@ for examples of how you can do this see \Major\Compositions.sqf
["ItemKiloHemp",1,2],["ItemRuby",1,2],["ItemSilverBar",1,2],["ItemGoldBar10oz",1,2],
["ItemSodaRbull",1,3],["ItemSodaOrangeSherbet",1,3],["ItemSodaPurple",1,3],["ItemSodaMocha",1,3],["ItemSodaBurst",1,3],
["CookedChicken_EPOCH",1,3],["CookedGoat_EPOCH",1,3],["CookedSheep_EPOCH",1,3],["FoodSnooter",1,3],["FoodMeeps",1,3],["FoodBioMeat",1,3],["ItemTuna",1,3],["ItemSeaBass",1,3],["ItemTrout",1,3],
"Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty",
"ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator",
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch"
@ -935,10 +954,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["Heal_EPOCH",1,2],["Defib_EPOCH",1,2],["Repair_EPOCH",1,2],["FAK",1,5],["VehicleRepair",1,5],
["ItemSodaRbull",1,3],["ItemSodaOrangeSherbet",1,3],["ItemSodaPurple",1,3],["ItemSodaMocha",1,3],["ItemSodaBurst",1,3],
["CookedChicken_EPOCH",1,3],["CookedGoat_EPOCH",1,3],["CookedSheep_EPOCH",1,3],["FoodSnooter",1,3],["FoodMeeps",1,3],["FoodBioMeat",1,3],["ItemTuna",1,3],["ItemSeaBass",1,3],["ItemTrout",1,3],
"Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty",
"ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator",
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch"
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch"
],
[ // Backpacks
["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2],
@ -1058,7 +1077,7 @@ for examples of how you can do this see \Major\Compositions.sqf
["CookedChicken_EPOCH",1,3],["CookedGoat_EPOCH",1,3],["CookedSheep_EPOCH",1,3],
["FoodSnooter",1,3],["FoodMeeps",1,3],["FoodBioMeat",1,3],["ItemTuna",1,3],["ItemSeaBass",1,3],["ItemTrout",1,3],["ItemPowderMilk",1,3],["ItemRicebox",1,3],
["ItemCereals",1,3],["krypto_candy_epoch",1,3],["ItemBakedBeans",1,3],["HotAxeSauce_epoch",1,3],
"Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"FAK" , "Towelette" , "ItemVitamins", "morphine_epoch", "iodide_pills_epoch", "adrenaline_epoch",
"caffeinepills_epoch", "orlistat_epoch", "ItemCanteen_Empty", "ItemCanteen_Clean", "ItemBottlePlastic_Empty",
"ItemBottlePlastic_Clean", "atropine_epoch", "ItemWaterPurificationTablets", "ItemPainKillers", "ItemDefibrillator",
"ItemBloodBag_Empty", "ItemBloodBag_Full", "ItemAntibiotic", "nanite_cream_epoch", "nanite_pills_epoch"
@ -1077,7 +1096,7 @@ blck_highPoweredLoot = blck_BoxLoot_Orange;
blck_supportLoot = blck_BoxLoot_Orange;
blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type.
blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type.
diag_log "[blckeagls] Configurations for Epoch Loaded";
blck_configsEpochLoaded = true;
diag_log "[blckeagls] Configurations for Epoch Loaded";
blck_configsEpochLoaded = true;

View File

@ -710,9 +710,9 @@ for examples of how you can do this see \Major\Compositions.sqf
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
["MMG_01_hex_F","150Rnd_93x64_Mag"],
["MMG_01_tan_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","150Rnd_93x64_Mag"],
["MMG_02_camo_F","150Rnd_93x64_Mag"],
["MMG_02_sand_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","130Rnd_338_Mag"],
["MMG_02_camo_F","130Rnd_338_Mag"],
["MMG_02_sand_F","130Rnd_338_Mag"],
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
["srifle_DMR_02_F","10Rnd_338_Mag"],
["srifle_DMR_02_sniper_F","10Rnd_338_Mag"],
@ -743,7 +743,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["10Rnd_127x54_Mag" ,1,5],
["10Rnd_127x54_Mag",1,5],
["10Rnd_93x64_DMR_05_Mag" ,1,5],
["10Rnd_93x64_DMR_05_Mag" ,1,5]
["10Rnd_93x64_DMR_05_Mag" ,1,5],
// Apex Ammo
["130Rnd_338_Mag",1,3],
["150Rnd_93x64_Mag",1,3]
],
[ // Optics
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],
@ -805,6 +808,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"],
["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"],
["MMG_01_hex_F","150Rnd_93x64_Mag"],
["MMG_01_tan_F","150Rnd_93x64_Mag"],
["MMG_02_black_F","130Rnd_338_Mag"],
["MMG_02_camo_F","130Rnd_338_Mag"],
["MMG_02_sand_F","130Rnd_338_Mag"],
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
["srifle_DMR_03_F","10Rnd_338_Mag"],
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
@ -830,7 +837,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["10Rnd_127x54_Mag" ,1,4],
["10Rnd_127x54_Mag",1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4]
["10Rnd_93x64_DMR_05_Mag" ,1,4],
// Apex Ammo
["130Rnd_338_Mag",1,3],
["150Rnd_93x64_Mag",1,3]
],
[ // Optics
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3],
@ -1035,10 +1045,10 @@ blck_contructionLootExile = [
["Exile_Item_Sand",4,10],["Exile_Item_Cement",4,10],["Exile_Item_WaterCanisterDirtyWater",1,3],["Exile_Item_FuelCanisterFull",1,3]
],
[//Items
["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer",
"Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer",
"Exile_Item_CordlessScrewdriver","Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_Shovel","Exile_Item_Wrench","Exile_Item_CordlessScrewdriver",
"Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_DuctTape","Binocular","Rangefinder","ItemGPS","ItemMap","ItemCompass","ItemRadio","ItemWatch",
"Exile_Item_XM8"]
"Exile_Item_XM8"
],
[ // Backpacks

View File

@ -675,6 +675,13 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
"Exile_Item_InstantCoffee"
];
#ifdef useCUP
#endif
#ifdef useRHS
#endif
blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food;
blck_throwableExplosives = ["HandGrenade","MiniGrenade"];
blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"];
@ -846,7 +853,10 @@ for examples of how you can do this see \Major\Compositions.sqf
["10Rnd_127x54_Mag",1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4],
["10Rnd_93x64_DMR_05_Mag" ,1,4],
["130Rnd_338_Mag",3,5]
["130Rnd_338_Mag",3,5],
// Apex Ammo
["130Rnd_338_Mag",1,3],
["150Rnd_93x64_Mag",1,3]
],
[ // Optics
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3],
@ -1051,10 +1061,10 @@ blck_contructionLootExile = [
["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_MetalScrews",3,10]
],
[//Items
["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer",
"Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer",
"Exile_Item_CordlessScrewdriver","Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_Shovel","Exile_Item_Wrench","Exile_Item_CordlessScrewdriver",
"Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_DuctTape","Binocular","Rangefinder","ItemGPS","ItemMap","ItemCompass","ItemRadio","ItemWatch",
"Exile_Item_XM8"]
"Exile_Item_XM8"
],
[ // Backpacks

View File

@ -26,7 +26,8 @@
blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
blck_simulationManager = blck_useBlckeaglsSimulationManagement;
diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager];
// 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_timeAccelerationDay = 2; // Daytime time accelearation

View File

@ -11,14 +11,22 @@
http://creativecommons.org/licenses/by-nc-sa/4.0/
*/
#define useAPEX
//#define useDynamicSimulation
//#define blck_debugMode
//#define blck_milServer
#define blck_milServer
#define blck_useCUP
#define blck_useRHS
////////////////////////////
// Do not touch anything below this line
///////////////////////////
//#define useDynamicSimulation
//#define blck_debugMode
//#define GRG_TestServer
#define GRGserver
#define blck_triggerLoopCompleteTime 40*60
#define onFoot 1
#define inVehicle 2
@ -29,5 +37,15 @@
#define groupSpawned 2
#define timesSpawned 3
#define respawnAt 4
#define blck_playerDetectionRangeAir 800
#define blck_playerDetectionRangeGroundVehicle 400
#define blck_vehiclePlayerDetectionOdds 0.6
#define blck_playerDetectionRangeSubs 100
#define blck_playerDetectionRangeSurfaceVehicle 150
#define blck_simulationEnabledDistance 2500
#define blck_simulationManagementOff 0
#define blck_useBlckeaglsSimulationManager 1
#define blck_useDynamicSimulationManagement 2
#define blck_simulationManagementOff 0
#define blck_useBlckeaglsSimulationManagement 1
#define blck_useDynamicSimulationManagement 2

View File

@ -103,7 +103,7 @@ if (blck_modType isEqualTo "Exile") then
{
_classnameList = (missionConfigFile >> "CfgExileArsenal" ) call BIS_fnc_getCfgSubClasses;
};
diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
//diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",count _classnameList];
{
private _temp = [_x] call bis_fnc_itemType;
//diag_log _temp;

View File

@ -79,7 +79,7 @@ private _addedLandscape = ["Land_FoodSacks_01_cargo_brown_F","Land_FoodSacks_01_
"Land_BarrelTrash_grey_F","Land_WoodenTable_large_F","Land_BagFence_Short_F","Land_WoodPile_F"]
*/
_missionLandscape = ["Flag_AAF_F","Land_TentDome_F","Land_TentDome_F","Land_TentDome_F","Land_TentDome_F","Land_FieldToilet_F","Campfire_burning_F"]; // list of objects to spawn as landscape
_missionLandscape = [/*"Flag_AAF_F",*/"Land_TentDome_F","Land_TentDome_F","Land_TentDome_F","Land_TentDome_F","Land_FieldToilet_F","Campfire_burning_F"]; // list of objects to spawn as landscape
for "_i" from 1 to 8 do
{
_missionLandscape pushBack selectRandom [

View File

@ -47,15 +47,14 @@ blck_configsLoaded = nil;
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
#ifdef GRGserver
diag_log "[blckegls] Running Ghostridergaming Version";
diag_log "[blckeagls] Running GRG Version";
#endif
#ifdef useDynamicSimulation
diag_log "[blckegls] dynamic simulation manager enabled";
#else
diag_log "[blckegls] blckegls simulation manager enabled";
#endif
//_marker = createMarker ["HomeBase",[24000,18000,0]];
//_marker setMarkerColor "ColorBlack";
//_marker setMarkerType "hd_flag";
switch (blck_simulationManager) do
case 1: {diag_log "[blckeagls] dynamic simulation manager enabled"};
case 2: {diag_log "[blckeagls] blckeagls simulation manager enabled"};
case 0: {diag_log "[blckeagls] simulation management disabled"};
};
diag_log format["[blckeagls] for HC version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
[] spawn blck_fnc_HC_monitor;

View File

@ -11,24 +11,19 @@
if ( !(isServer) || hasInterface) exitWith{};
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
#include "blck_defines.hpp";
if !(isNil "blck_Initialized") exitWith{};
private _blck_loadingStartTime = diag_tickTime;
#include "\q\addons\custom_server\init\build.sqf";
diag_log format["[blckeagls] Loading Server Mission System Version %2 Build Date %1",_blck_versionDate,_blck_version];
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;};
waitUntil{blck_variablesLoaded};
blck_variablesLoaded = nil;
// compile functions
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf";
waitUntil {(isNil "blck_functionsCompiled") isEqualTo false;};
waitUntil{blck_functionsCompiled};
blck_functionsCompiled = nil;
diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel];
diag_log format["[blckeagls] functions compiled at %1",diag_tickTime];
blck_modType = call blck_fnc_getModType;
publicVariable "blck_modType";
@ -37,16 +32,26 @@ execVM "\q\addons\custom_server\Configs\blck_configs.sqf";
waitUntil {(isNil "blck_configsLoaded") isEqualTo false;};
waitUntil{blck_configsLoaded};
blck_configsLoaded = nil;
diag_log format["[blckeagls] blck_useHC = %1",blck_useHC];
diag_log format["[blckeagls] blck_useHC = %1 | blck_simulationManager = %2 ",blck_useHC,blck_simulationManager];
diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 blck_debugLevel = %2",blck_debugON,blck_debugLevel];
// Load any user-defined specifications or overrides
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime];
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf";
waitUntil {(isNil "blck_variablesLoaded") isEqualTo false;};
waitUntil{blck_variablesLoaded};
blck_variablesLoaded = nil;
diag_log format["[blckeagls] blck_variables loaded at %1",diag_tickTime];
// spawn map addons to give the server time to position them before spawning in crates etc.
if (blck_spawnMapAddons) then
{
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\MapAddons\MapAddons_init.sqf";
}else{
diag_log "[blckegls] Map Addons disabled";
diag_log "[blckeagls] Map Addons disabled";
};
blck_spawnMapAddons = nil;
@ -63,13 +68,24 @@ diag_log "[blckeagls] Mission Lists Loaded Successfully";
[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf";
[] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions.
diag_log "blck_init_server: ->> Static and UMS systems initialized.";
diag_log "[blckeagls] blck_init_server: ->> Static and UMS systems initialized.";
#ifdef useDynamicSimulation
diag_log "[blckegls] dynamic simulation manager enabled";
#else
diag_log "[blckegls] blckegls simulation manager enabled";
switch (blck_simulationManager) do
{
case 2: {diag_log "[blckeagls] dynamic simulation manager enabled"};
case 1: {diag_log "[blckeagls] blckeagls simulation manager enabled"};
case 0: {diag_log "[blckeagls] simulation management disabled"};
};
#ifdef GRGserver
// start the dynamic loot crate system
[] execVM "\q\addons\custom_server\DLS\DLS_init.sqf";
waitUntil {(isNil "blck_DLSComplete") isEqualTo false;};
waitUntil{blck_DLSComplete};
blck_DLSComplete = nil;
#endif
diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
diag_log format["blckeagls] waiting for players to join ---- >>>>"];

View File

@ -1,6 +1,6 @@
private ["_version","_versionDate"];
blck_version = "6.84 Build 149";
blck_version = "6.86 Build 155";
_blck_version = blck_version;
_blck_versionDate = "8-5-18 5:00 PM";
_blck_versionDate = "10-20-18 1:30 AM";
blck_pvs_version = _blck_version;
publicVariable blck_pvs_version;

View File

@ -199,6 +199,7 @@ systemChat _logging;
//diag_log format["_cb = %1%2",endl,_cb];
_configuredStatics = [];
_configuredStaticsPositions = [];
_configuredUnits = [];
/*
This bit will set up the garrison for each building having units and / or statics inside it or on top.
@ -222,7 +223,7 @@ _fn_configureGarrisonForBuildingATL = {
if (_b isEqualTo _building) then
{
_configuredStatics pushBackUnique _x;
//_configuredStaticsPositions pushBack (getPosATL _x) vectorDiff CENTER;
if (_staticsText isEqualTo "") then
{
_staticsText = format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x];
@ -285,7 +286,7 @@ _cb = _cb + "_garrisonedBuilding_ATLsystem = [";
};
};
} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects unitMarkerObject));
} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects "Man") + (allMissionObjects unitMarkerObject));
_cb = _cb + format["%1];%1%1",endl];
///////////////////
@ -415,20 +416,24 @@ _cb = _cb + format["%1];%1%1",endl];
///////////////////
// Setup info for remaining static/emplaced weapons
///////////////////
_count = 0;
_cb = _cb + format["_missionEmplacedWeapons = ["];
{
if !(_x in _configuredStatics) then
//if !(_x in _configuredStatics) then
private _isInside = [_x] call _fn_isInside;
if !(_isInside) then
{
// ["B_HMG_01_high_F",[22883.5,16757.6,6.31652],"blue",0,10]
_line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true'];
systemChat _line;
if (_forEachIndex == 0) then
if (_count == 0) then
{
_cb = _cb + format["%1%2",endl,_line];
} else {
_cb = _cb + format[",%1%2",endl,_line];
};
_count = _count + 1;
};
}forEach allMissionObjects "StaticWeapon";

View File

@ -2,34 +2,49 @@
blck Mission system by Ghostrider [GRG]
Loosely based on the AI mission system by blckeagls ver 2.0.2
Contributions by Narines: bug fixes, testing, infinite ammo fix.
Ideas or code from that by Vampire and KiloSwiss have been used for certain functions.
Ideas or code from that by He-Man, Vampire and KiloSwiss have been used for certain functions.
Many thanks for new Coding and ideas from Grahame.
Significant Changes:
=====================
6.86 (Experimental)
6.86 Build 155
Added support for spawning infantry and statics inside buildings for forming a garrison using either of two methods.
1. by placing a marker object such as a sphere in the building you define it as having units/statics inside
2. by placing units or statics in it you determine the garrison to be placed at mission spawn.
Added tools to facilitate grabbing data from missions in the editor (see the new TOOLS folders for more information).
Added additional error checks for missing mission parameters.
Fixed: issues that prevented completion of capture/hostage missions on exile servers
Added: code that forces air, land and sea vehicles to detect nearby players which should help with frozen AI _noChoppers
Changed: code for blckeagls simulation manager to force simulation when groups are awoken.
Added: additional settings for simulation management (see blck_configs.sqf for details)
Changed: Simulation management is now set using the new variable blck_simulationManager which is defined in blck_configs.sqf
Fixed: issues with AI not throwing smoke when healing themselves.
Build 153.
Added: tools to pull data from mission.sqm pre-formated for use in static or dynamic blckeagls missions.
Added: functions that allow you to spawn units, statics inside or on top of buildings.
Fixed: an issue that caused vehicles to be destroyed by buildings upon mission spawn.
Fixed: an issue that prevented completion of capture/hostage missions on Exile servers (Thanks to MGTDB).
6.84
Added Option to load weapons, pistols, uniforms, headgear, vests and backpacks from CfgPricing or the Arsenal Pricing and exclude items above a certain price
6.84 Build 145
Added Option to load weapons, pistols, uniforms, headgear, vests and backpacks from CfgPricing (Epoch) or the Arsenal (Exile) and exclude items above a certain price
Add details on configs for enabling this and setting the maximum price
To use this new feature
Set blck_useConfigsGeneratedLoadouts = true;
To specify the maximum price for items added to AI, change:
blck_maximumItemPriceInAI_Loadouts = 100;
NOTE: this function overides any loadouts you specify in blck_config.sqf etc.
Added functions to despawn static patrols invehicles on on foot when no players are nearby. This tracks the number of infantry alive in a group and respawns only the number alive when the group was despawned.
Added functions to despawn static patrols of all types when no players are nearby. This tracks the number of infantry alive in a group and respawns only the number alive when the group was despawned.
Added: Static units will now be spawned with gear specific to difficulty level (blue, red, green, orange) as specified in blck_config.sqf etc.
Added: AI now have a chance of spawning with binocs or range finders.
Added: a lit road cone spawns at the center of the mission to help find it and aid in triggering mission completion.
Changed: Hostage missions redesigned to reduce chances of AI being glitched into containers and of mission objects flying about when spawned in.
Changed: Units are spawned with greater dispersion.
Changed: method for spawning random landscapes has been changed. Note the added randomization in missions\blue\default.sqf
Fixed: Collisions between objects at missions caused issues.
Fixed: Attempted a fix to reduce the chance that AI will spawn inside or under objects like rocks or containers.
Fixed: Captive missions now complete properly.
Fixed: Hostage missions now complete properly.
Fixed: Paratroops spawned at UMS missions now spawn with scuba gear.
Version 1.82 Build 134
Added: configs for blue, red, green and orange pistol, vest, backpack and uniforms (with thanks to Grahame for suggesting this change and doing most of the coding)