From 4c94e9e42ce0b998650be913dbcb0b08e3841dbc Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Thu, 22 Nov 2018 04:31:36 -0500 Subject: [PATCH] Build 164 More bug fixes and code cleanup. --- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 3 - .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 16 +-- .../Compiles/Units/GMS_fnc_processAIKill.sqf | 5 +- .../Compiles/Units/GMS_fnc_rewardKiller.sqf | 7 +- .../GMS_fnc_releaseVehicleToPlayers.sqf | 2 +- .../Vehicles/GMS_fnc_spawnMissionHeli.sqf | 35 +++---- .../custom_server/Compiles/blck_functions.sqf | 5 - .../custom_server/Configs/blck_configs.sqf | 27 ++--- .../Configs/blck_configs_epoch.sqf | 6 +- .../Configs/blck_configs_exile.sqf | 12 +-- .../Configs/blck_configs_exile_mil.sqf | 2 - .../Configs/blck_configs_mil.sqf | 99 ++----------------- .../custom_server/Configs/blck_defines.hpp | 5 +- .../Configs/blck_dynamicConfigs.sqf | 24 +---- .../init/GMS_fnc_getTraderCites.sqf | 2 - .../custom_server/init/blck_init_server.sqf | 48 ++------- @GMS/addons/custom_server/init/build.sqf | 5 +- 17 files changed, 75 insertions(+), 228 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index ce9de82..208a2d4 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -25,9 +25,6 @@ while {true} do if (diag_tickTime > _timer1sec) then { [] call blck_fnc_vehicleMonitor; - #ifdef GRGserver - [] call blck_fnc_broadcastServerFPS; - #endif _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf index 3b81704..c5ff54e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -14,7 +14,7 @@ params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]]; private["_objects","_wreck","_dir","_dirOffset"]; #define maxObjectSpawnRadius 25 -#define minObjectSpawnRadius 10 +#define minObjectSpawnRadius 15 private _objectSpawnRange = maxObjectSpawnRadius - minObjectSpawnRadius; _objects = []; @@ -25,21 +25,15 @@ _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; _objects pushBack _wreck; { - //Random Position Objects based on distance in array - // https://community.bistudio.com/wiki/BIS_fnc_findSafePos - private _posX = ((_coords select 0) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); - private _posY = ((_coords select 1) + ((random(_objectSpawnRange) + minObjectSpawnRadius) * (selectRandom[1,-1]))); - _pos = [_coords,_min,_max,_nearest,0,5,0] call BIS_fnc_findSafePos; - _wreck = createVehicle[_x, _pos, [], 2]; + private _dir = random(360); + private _radius = minObjectSpawnRadius + random(maxObjectSpawnRadius); + _wreck = createVehicle[_x, _coords getPos[_radius,_dir], [], 2]; //diag_log format["_fnc_spawnRandomLandscape: _x = %1 | _wreck = %2",_x,_wreck]; _wreck allowDamage true; _wreck enableSimulation false; _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; - _dirOffset = random(30) * ([1,-1] call BIS_fnc_selectRandom); - _dir = _dirOffset +([_wreck,_coords] call BIS_fnc_dirTo); - _wreck setDir _dir; - //_wreck setDir (_wreck relativeDir _coords); + _wreck setDir (_wreck getRelDir _coords); _objects pushback _wreck; sleep 0.1; } forEach _missionLandscape; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 1f6cdbc..ef8c6da 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -65,10 +65,10 @@ if (blck_useKillMessages) then _message = format["[blck] %1 killed with %2 from %3 meters",name _killer,getText(configFile >> "CfgWeapons" >> _weapon >> "DisplayName"), round(_unit distance _killer)]; }; _message =_message + _killstreakMsg; - //diag_log format["[blck] unit killed message is %1",_message,""]; + diag_log format["[blck] unit killed message is %1",_message,""]; [["aikilled",_message,"victory"],allPlayers] call blck_fnc_messageplayers; }; - +//diag_log format["calling blck_fnc_rewardKiller for death of unit %1 and killer %2",_unit,_killer]; [_unit,_killer] call blck_fnc_rewardKiller; if (blck_showCountAliveAI) then { @@ -77,6 +77,5 @@ if (blck_showCountAliveAI) then //diag_log format["_fnc_processAIKills: blck_missionMarkers itm %1 = %2",_forEachIndex,_x]; [_x select 0, _x select 1, _x select 2] call blck_fnc_updateMarkerAliveCount; } forEach blck_missionMarkers; - //call blck_fnc_updateAllMarkerAliveCounts; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf index bb9f714..0ea971a 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf @@ -15,7 +15,7 @@ params["_unit","_killer"]; private["_reward","_maxReward","_dist","_killstreakReward","_distanceBonus","_newKillerScore","_newKillerFrags","_money"]; -if (toLower(blck_modType) isEqualTo "Epoch") then +if (toLower(blck_modType) isEqualTo "epoch") then { if ( (vehicle _killer) in blck_forbidenVehicles || (currentWeapon _killer) in blck_forbidenVehicleGuns ) then { @@ -31,7 +31,8 @@ if (toLower(blck_modType) isEqualTo "Epoch") then if (_dist < 100) then { _reward = _maxReward - (_maxReward / 1.5); _reward }; if (_dist < 800) then { _reward = _maxReward - (_maxReward / 2); _reward }; if (_dist > 800) then { _reward = _maxReward - (_maxReward / 4); _reward }; - + //diag_log format["_fnc_rewardPlayer: _killer %1 | _dist %2 | _reward %3 ",_killer,_dist,_reward]; + //diag_log format["_fnc_rewardPlayer: blck_addAIMoney %1 | blck_useKillScoreMessage %2",blck_addAIMoney,blck_useKillScoreMessage]; private _killstreakReward=+(_kills*2); if (blck_addAIMoney) then { @@ -44,7 +45,7 @@ if (toLower(blck_modType) isEqualTo "Epoch") then }; }; -if (toLower(blck_modType) isEqualTo "Exile") then +if (toLower(blck_modType) isEqualTo "exile") then { private["_distanceBonus","_overallRespectChange","_newKillerScore","_newKillerFrags","_maxReward","_money","_message"]; if ( (isPlayer _killer) && (_killer getVariable["ExileHunger",0] > 0) && (_killer getVariable["ExileThirst",0] > 0) ) then diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf index 582afd3..581ab7d 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf @@ -28,7 +28,7 @@ // a bit of bandwidth seems worth ensuring that vehicles do in fact get unlocked. uiSleep 0.1; _count = _count + 1; - diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; + //diag_log format["_fnc_releaseVehicleToPlayersl: locked state of vehicle %1 = ^%2",_veh, locked _veh]; //if ((_veh locked) isEqualTo "UNLOCKED" || (diag_tickTime - _timeIn) > 5) then {_locked = false}; }; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf index 5ec87e3..045f918 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf @@ -21,12 +21,6 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms}; -/* -{ - diag_log format["_fnc_spawnMissionHeli: parameter %1 = %2",_foreachIndex,_x]; -}forEach [_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms]; -*/ - #ifdef blck_debugMode if (blck_debugLevel > 0) then { @@ -44,20 +38,6 @@ if (isNull _grpPilot) then if !(isNull _grpPilot) then { - _grpPilot setBehaviour "COMBAT"; - _grpPilot setCombatMode "RED"; - _grpPilot setSpeedMode "NORMAL"; - _grpPilot allowFleeing 0; - _grpPilot setVariable["patrolCenter",_coords]; - _grpPilot setVariable["minDis",15]; - _grpPilot setVariable["maxDis",30]; - _grpPilot setVariable["timeStamp",diag_tickTime]; - _grpPilot setVariable["arc",0]; - _grpPilot setVariable["wpRadius",30]; - _grpPilot setVariable["wpMode","SAD"]; - diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; - diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; - [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; switch (toLower(_skillAI)) do { case "blue": {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisBlue}; @@ -66,6 +46,21 @@ if !(isNull _grpPilot) then case "orange" : {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisOrange}; default {_minDist = 150; _maxDist = 500}; }; + _grpPilot setBehaviour "COMBAT"; + _grpPilot setCombatMode "RED"; + _grpPilot setSpeedMode "NORMAL"; + _grpPilot allowFleeing 0; + _grpPilot setVariable["patrolCenter",_coords]; + _grpPilot setVariable["minDis",_minDist]; + _grpPilot setVariable["maxDis",_maxDist]; + _grpPilot setVariable["timeStamp",diag_tickTime]; + _grpPilot setVariable["arc",0]; + _grpPilot setVariable["wpRadius",30]; + _grpPilot setVariable["wpMode","SAD"]; + //diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; + //diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; + [_coords,_minDist,_maxDist,_grpPilot,"random","SAD","pilot"] call blck_fnc_setupWaypoints; + blck_monitoredMissionAIGroups pushBack _grpPilot; //create helicopter and spawn it diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 78c76c8..ff4a433 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -163,11 +163,6 @@ private _functions = [ missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; } foreach _functions; -#ifdef GRGserver -blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf"; -diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; -#endif - onPlayerDisconnected {[_name,_owner] call blck_fnc_onPlayerDisconnected;}; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 3e6db71..e68f46c 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -20,10 +20,13 @@ blck_debugON = false; // Do not touch ... blck_debugLevel = 0; // Do not touch ... #ifdef blck_milServer - if (true) exitWith {execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf";}; + if (true) exitWith + { + diag_log format["[blckeagls] Running configs for militarized servers build %1",blck_buildNumber]; + execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf"; + }; #endif - - //diag_log "[blckeagls] Loading configurations for Non-militarized servers: blck_configs.sqf"; + diag_log format["[blckeagls] Loading configurations for Non-militarized servers build %1",blck_buildNumber]; /* ************************************** Configurations begin here @@ -104,7 +107,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.999999; // The mission will complete if this fraction of the total AI spawned has been killed. + blck_killPercentage = 0.999999999; // 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. @@ -173,7 +176,7 @@ _blck_armed_hurons = ["B_Heli_Transport_03_F","B_Heli_Transport_03_black_F"]; _blck_armed_attackHelis = ["B_Heli_Attack_01_F"]; _blck_armed_heavyAttackHelis = ["O_Heli_Attack_02_F","O_Heli_Attack_02_black_F"]; - _blck_fighters = [ + _blck_fighters = [ "O_Plane_CAS_02_F", // /ti-199 Neophron (CAS) "I_Plane_Fighter_03_AA_F", // A-143 Buzzard (AA) "I_Plane_Fighter_04_F", // A-149 Gryphon @@ -294,13 +297,13 @@ blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions - - /**************************************************************** GENERAL AI SETTINGS ****************************************************************/ + // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files + blck_useConfigsGeneratedLoadouts = true; blck_groupBehavior = "SENTRY"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes. @@ -318,7 +321,7 @@ blck_maximumPatrolRadius = 35; //This defines how long after an AI dies that it's body disappears. - blck_bodyCleanUpTimer = 60*40; // time in seconds after which dead AI bodies are deleted + blck_bodyCleanUpTimer = 60*60; // time in seconds after which dead AI bodies are deleted // 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]; blck_AliveAICleanUpTimer = 60*20; // Time after mission completion at which any remaining live AI are deleted. @@ -433,17 +436,19 @@ if (toLower(blck_modType) isEqualTo "epoch") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",_modType]; + diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; }; + waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; + waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}; if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagles] Dynamic Configs Enabled"]; + diag_log format["[blckeagls] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; }; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index 0573079..7ba3b50 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -11,7 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - +diag_log format["[blckeagls] loading configurations for Epoch for blckeagls build %1",blck_buildNumber]; //////////// // Epoch-specific settings //////////// @@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 100; _blck_lightlyArmed_ARMA3 = [ @@ -1100,4 +1098,4 @@ 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. diag_log "[blckeagls] Configurations for Epoch Loaded"; -blck_configsEpochLoaded = true; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 4fa6433..0dfe582 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -15,10 +15,12 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #ifdef blck_milServer -execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; -if (true) exitWith {}; +if (true) exitWith +{ + diag_log "[blckeagls] running blck_configs_exile_mil for militarized servers"; + execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; +}; #endif - diag_log "[blckeagls] Loading Exile-specific configs for Non-militarized servers: blck_configs_exile.sqf"; //////////// // Exile-specific settings @@ -54,9 +56,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; - - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; + blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index ac66b67..773eb0e 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -47,8 +47,6 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; blck_maximumItemPriceInAI_Loadouts = 1000; _blck_armed_vehicles_Exile = [ diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index 1b67fe0..a9a8500 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -11,8 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - - diag_log "[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers"; + diag_log format["[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers for blckeagls build %1",blck_buildNumber]; /*************************************************************** BLCKEAGLS SUPPLEMENTAL MODULES @@ -83,7 +82,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 = "playerNear"; // 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.99999999999; // 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 = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","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. @@ -203,12 +202,8 @@ //////////////////// // Maximum number of missions shown on the map at any one time. - #ifdef GRGserver - blck_maxSpawnedMissions = 15; - #else // Change this value to reduce the number of spawned missions at any one time. blck_maxSpawnedMissions = 4; - #endif //Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups. blck_enableOrangeMissions = 1; @@ -217,12 +212,6 @@ blck_enableBlueMissions = 2; blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned. - #ifdef GRGserver - blck_enableHunterMissions = 1; - blck_enableScoutsMissions = 2; - blck_maxcrashsites = 3; - #endif - //////////////////// // MISSION TIMERS //////////////////// @@ -233,24 +222,13 @@ blck_TMin_Blue = 120; blck_TMin_Red = 150; blck_TMin_UMS = 180; - #ifdef GRGserver - blck_TMin_Hunter = 120; - blck_TMin_Scouts = 115; - blck_TMin_Crashes = 115; - #endif - //Maximum Spawn time between missions in seconds blck_TMax_Orange = 360; blck_TMax_Green = 300; blck_TMax_Blue = 200; blck_TMax_Red = 250; blck_TMax_UMS = 200; - #ifdef GRGserver - blck_TMax_Hunter = 200; - blck_TMax_Scouts = 200; - blck_TMax_Crashes = 200; - #endif /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -290,7 +268,8 @@ GENERAL AI SETTINGS ****************************************************************/ - + // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files + blck_useConfigsGeneratedLoadouts = true; blck_groupBehavior = "SAD"; // Suggested choices are "SAD", "SENTRY", "AWARE" https://community.bistudio.com/wiki/ArmA:_AI_Combat_Modes blck_combatMode = "RED"; // Change this to "YELLOW" if the AI wander too far from missions for your tastes. blck_groupFormation = "WEDGE"; // Possibilities include "WEDGE","VEE","FILE","DIAMOND" @@ -307,12 +286,7 @@ blck_maximumPatrolRadius = 35; //This defines how long after an AI dies that it's body disappears. - blck_bodyCleanUpTimer = 40*60; // time in seconds after which dead AI bodies are deleted - #ifdef GRGserver - #ifdef blck_milServer - blck_bodyCleanUpTimer = 40*60; // Trying to reduce lag with player counts > 20 - #endif - #endif + blck_bodyCleanUpTimer = 80*60; // time in seconds after which dead AI bodies are deleted // 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]; @@ -372,79 +346,24 @@ blck_maxMoneyRed = 30; blck_maxMoneyBlue = 20; - #ifdef GRGserver - blck_AIAlertDistance = [250,425,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]; - // How precisely player locations will be revealed to AI after an AI kill - // values are ordered as follows [blue, red, green, orange]; - blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; - - blck_baseSkill = 1; // The overal skill of the AI - range 0.1 to 1.0. - - /*************************************************************** - - MISSION TYPE SPECIFIC AI SETTINGS - - **************************************************************/ - //This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type - // Orange Missions - blck_MinAI_Orange = 30; - blck_MaxAI_Orange = 35; - blck_AIGrps_Orange = 5; - blck_SkillsOrange = [ - ["aimingAccuracy",0.6],["aimingShake",0.9],["aimingSpeed",0.9],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00] - ]; - - // Green Missions - blck_MinAI_Green = 26; - blck_MaxAI_Green = 31; - blck_AIGrps_Green = 4; - blck_SkillsGreen = [ - ["aimingAccuracy",0.55],["aimingShake",0.75],["aimingSpeed",0.85],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75] - ]; - - // Red Missions - blck_MinAI_Red = 12; - blck_MaxAI_Red = 18; - blck_AIGrps_Red = 3; - blck_SkillsRed = [ - ["aimingAccuracy",0.4],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70] - ]; - - // Blue Missions - blck_MinAI_Blue = 8; - blck_MaxAI_Blue = 14; - blck_AIGrps_Blue = 2; - blck_SkillsBlue = [ - ["aimingAccuracy",0.12],["aimingShake",0.3],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60] - ]; - - // Add some money to AI; only works with Exile for now. - blck_maxMoneyOrange = 25; - blck_maxMoneyGreen = 20; - blck_maxMoneyRed = 15; - blck_maxMoneyBlue = 10; - #endif - - if (toLower(blck_modType) isEqualTo "epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf"; waitUntil {(isNil "blck_configsEpochLoaded") isEqualTo false;}; waitUntil{blck_configsEpochLoaded}; blck_configsEpochLoaded = nil; - //diag_log "[blckeagls] Running getTraderCitiesEpoch to get location of trader cities"; - //execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesEpoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; - //if (blck_blacklistTraderCities || blck_blacklistSpawns || blck_listConcreteMixerZones) then {execVM "\q\addons\custom_server\Compiles\Functions\GMS_fnc_getTraderCitesExile.sqf";}; }; + waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}: + waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}: if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagles] Dynamic Configs Enabled"]; + diag_log format["[blckeagls] Dynamic Configs Enabled"]; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; }; diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 099bb72..1f4ad4f 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -11,7 +11,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ - +#define blck_buildNumber 164 #define useAPEX //#define blck_milServer //#define blck_useCUP @@ -21,10 +21,7 @@ // 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 diff --git a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf index c75c9ae..23a9dd3 100644 --- a/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_dynamicConfigs.sqf @@ -94,7 +94,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; @@ -103,25 +103,23 @@ if (toLower(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; _itemCategory = _temp select 0; _itemType = _temp select 1; _price = blck_maximumItemPriceInAI_Loadouts; - if (blck_modType isEqualTo "Epoch") then + if (toLower(blck_modType) isEqualTo "epoch") then { _price = getNumber(missionConfigFile >> "CfgPricing" >> _x >> "price"); }; - if (blck_modType isEqualTo "Exile") then + if (toLower(blck_modType) isEqualTo "exile") then { _price = getNumber(missionConfigFile >> "CfgExileArsenal" >> _x >> "price"); }; - //diag_log format["_fnc_dynamicConfigsConfigurator: _price = %1",_price]; if (_price < blck_maximumItemPriceInAI_Loadouts) then { - //if (_itemCategory != "") then {diag_log format["_fnc_dynamicConfigsConfigurator: _itemCategory = %1 | _itemType = %2",_itemCategory,_itemType]}; if (_itemCategory isEqualTo "Weapon") then { switch (_itemType) do @@ -136,14 +134,11 @@ diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",cou case "Launcher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}}; case "RocketLauncher": {if !(_x in blck_blacklistedLaunchersAndSwingWeapons) then {_wpnLauncher pushBack _x}}; case "Throw": {if !(_x in blck_blacklistedItems) then {_wpnThrow pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; }; }; if (_itemCategory isEqualTo "Item") then { - //diag_log format["Evaluating Item class name %1",_x]; switch (_itemType) do { case "AccessoryMuzzle": {if !(_x in blck_blacklistedAttachments) then {_wpnMuzzles pushBack _x}}; @@ -153,22 +148,13 @@ diag_log format["_fnc_dynamicConfigsConfigurator: count _classnameList = %1",cou case "Binocular": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; case "Compass": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; case "GPS": {if !(_x in blck_blacklistedItems) then {_misc pushBack _x}}; - case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; - //case "": {if !(_x in ) then { pushBack _x}}; + case "NVGoggles": {if !(_x in blck_blacklistedItems) then {_NVG pushBack _x}}; }; }; if (_itemCategory isEqualTo "Equipment") then { - //diag_log format["Evaluating Equipment class name %1",_x]; switch (_itemType) do { case "Glasses": {if !(_x in blck_blacklistedItems) then {_glasses pushBack _x}}; diff --git a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf index 40d0267..9d3429c 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf @@ -22,8 +22,6 @@ if ((tolower blck_modType) isEqualTo "epoch") then if (blck_debugON) then {diag_log format["[blckeagls] _fnc_getTraderCitiesEpoch:: -- >> Added epoch trader city location at %1", (_x select 3)];}; #endif } foreach _telePos; - diag_log format["[blckeagls] blckListPrior = %1",_blckListPrior]; - diag_log format["[blckeagls] ] blck_locationBlackList = %1",blck_locationBlackList]; }; if ((tolower blck_modType) isEqualTo "exile") then diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index 1e9c53d..de1317d 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -28,20 +28,20 @@ if ((toLower blck_modType) isEqualTo "exile") then private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] Loading Server Mission System Version"]; +diag_log format["[blckeagls] Loading Server Mission System Version",blck_buildNumber]; // compile functions call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; diag_log format["[blckeagls] functions compiled in %1 seconds",diag_tickTime-_blck_loadingStartTime]; call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; -uiSleep 10; +waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn")}; 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]; +//diag_log format["[blckeagls] configurations loaded at %1",diag_tickTime]; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; @@ -80,37 +80,26 @@ switch (blck_simulationManager) do case 0: {diag_log "[blckeagls] simulation management disabled"}; }; - -#ifdef GRGserver -// start the dynamic loot crate system -compile preprocessfilelinenumbers "\q\addons\custom_server\DLS\DLS_init.sqf"; -#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 ---- >>>>"]; -#ifdef GRGserver -diag_log "[blckeagls] Running GhostriderGaming Version"; -#endif -if !(blck_debugON || (blck_debugLevel isEqualTo 0)) then +if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then { waitUntil{{isPlayer _x}count allPlayers > 0}; diag_log "[blckeagls] Player Connected, spawning missions"; } else { - diag_log "[blckeagls] spawning Missions"; + diag_log "[blckeagls] Debug mode ON, proceding without players"; }; if (blck_spawnStaticLootCrates) then { - // Start the static loot crate spawner - //diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Started"; call compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init.sqf"; diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Done"; }else{ diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled"; }; -if (true /*blck_blacklistTraderCities*/) then +if (blck_blacklistTraderCities) then { call compile preprocessfilelinenumbers "\q\addons\custom_server\init\GMS_fnc_getTraderCites.sqf"; }; @@ -137,31 +126,6 @@ if (blck_enableBlueMissions > 0) then [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; -#ifdef GRGserver - -diag_log format["[blckeagls] _init_server: blck_enableScoutsMissions = %1",blck_enableScoutsMissions]; -if (blck_enableScoutsMissions > 0) then -{ - //[_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts] spawn blck_fnc_missionTimer; - [_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts,blck_enableScoutsMissions,false] call blck_fnc_addMissionToQue; -}; - -diag_log format["[blckeagls] _init_server: blck_enableHunterMissions = %1",blck_enableHunterMissions]; -if (blck_enableHunterMissions > 0) then -{ - //[_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter] spawn blck_fnc_missionTimer; - // params["_missionList","_path","_marker","_difficulty","_tMin","_tMax","_noMissions"]; - [_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter,blck_enableHunterMissions,false] call blck_fnc_addMissionToQue; -}; - -// Running new version of Crash sites. -diag_log format["[blckeagls] _init_server: blck_maxCrashSites = %1",blck_maxCrashSites]; -if (blck_maxCrashSites > 0) then -{ - [] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf"; -}; -#endif - // start the main thread for the mission system which monitors missions running and stuff to be cleaned up [] spawn blck_fnc_mainThread; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 3158029..06be3d7 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,6 +1,7 @@ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; private ["_version","_versionDate"]; -blck_version = "6.88 Build 163"; +blck_version = format["6.88 Build %1",blck_buildNumber]; _blck_version = blck_version; -_blck_versionDate = "11-19-18 4:00 PM"; +_blck_versionDate = "11-21-18 4:00 PM"; blck_pvs_version = _blck_version; publicVariable blck_pvs_version;