diff --git a/@epochhive/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf b/@epochhive/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf index 6143be1..d6f94ef 100644 --- a/@epochhive/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf +++ b/@epochhive/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf @@ -1,9 +1,9 @@ //This script sends Message Information to allplayers -// Last modified 11/14/15 by Ghostrider-DBD- +// Last modified 1/4/17 by Ghostrider-DBD- //blck_Message = _this; params["_msg",["_players",playableUnits]]; -//diag_log format["AIM.sqf ===] _this = %1 | _msg = %2 | _players = %3",_this,_msg, _players]; +diag_log format["AIM.sqf ===] _this = %1 | _msg = %2 | _players = %3",_this,_msg, _players]; blck_Message = _msg; { //diag_log format["AIM.sqf ===] _ = %2, and (owner _x) = %1", (owner _x), _x]; diff --git a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 6b00757..0c86833 100644 --- a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -1,6 +1,6 @@ /* Handle AI Deaths - Last Modified 11/20/16 + Last Modified 1/4/17 By Ghostrider-DBD- Copyright 2016 */ @@ -33,18 +33,21 @@ if ((diag_tickTime - _lastkill) < 240) then _killer setVariable["blck_kills",0]; }; -_weapon = currentWeapon _killer; -_killstreakMsg = format[" %1X KILLSTREAK",_kills]; - -if (blck_useKilledAIName) then +if (blck_useKillMessages) then { - _message = format["[blck] %2: killed by %1 from %3m",name _killer,name _unit,round(_unit distance _killer)]; -}else{ - _message = format["[blck] %1 killed with %2 from %3 meters",name _killer,getText(configFile >> "CfgWeapons" >> _weapon >> "DisplayName"), round(_unit distance _killer)]; + _weapon = currentWeapon _killer; + _killstreakMsg = format[" %1X KILLSTREAK",_kills]; + + if (blck_useKilledAIName) then + { + _message = format["[blck] %2: killed by %1 from %3m",name _killer,name _unit,round(_unit distance _killer)]; + }else{ + _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,""]; + [["aikilled",_message,"victory"],playableUnits] call blck_fnc_messageplayers; }; -_message =_message + _killstreakMsg; -//diag_log format["[blck] unit killed message is %1",_message,""]; -[["aikilled",_message,"victory"]] call blck_fnc_messageplayers; [_unit,_killer,_kills] call blck_fnc_rewardKiller; { _unit removeAllEventHandlers _x; diff --git a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf index ce5fbf7..03fe3c5 100644 --- a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf +++ b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf @@ -1,6 +1,6 @@ /* by Ghostrider - 11-7-16 + 1-4-17 */ private["_missionType","_wasRunover","_launcher","_legal"]; @@ -9,7 +9,7 @@ params["_unit","_killer"]; _launcher = _unit getVariable ["Launcher",""]; _legal = true; -fn_targetVehicle = { // force AI to fire on the vehicle with launchers if equiped +_fn_targetVehicle = { // force AI to fire on the vehicle with launchers if equiped params["_vk","_unit"]; { if (((position _x) distance (position _unit)) <= 350) then @@ -28,7 +28,7 @@ fn_targetVehicle = { // force AI to fire on the vehicle with launchers if equip } forEach allUnits; }; -fn_applyVehicleDamage = { // apply a bit of damage +_fn_applyVehicleDamage = { // apply a bit of damage private["_vd"]; params["_vk"]; //_vk = _this select 0; @@ -36,13 +36,13 @@ fn_applyVehicleDamage = { // apply a bit of damage _vk setDamage (_vd + blck_RunGearDamage); }; -fn_deleteAIGear = { +_fn_deleteAIGear = { params["_ai"]; {deleteVehicle _x}forEach nearestObjects [(getPosATL _ai), ['GroundWeaponHolder','WeaponHolderSimulated','WeaponHolder'], 3]; //Adapted from the AI cleanup logic by KiloSwiss [_ai] call blck_fnc_removeGear; }; -fn_msgIED = { +_fn_msgIED = { params["_killer"]; diag_log format["fn_msgIED:: -- >> msg = %1 and owner _killer = %2",blck_Message, (owner _killer)]; [["IED","",0,0],[_killer]] call blck_fnc_MessagePlayers; @@ -53,19 +53,18 @@ if (typeOf _killer != typeOf (vehicle _killer)) then // AI was killed by a vehi { if(_killer == driver(vehicle _killer))then{ // The AI was runover if(blck_RunGear) then { // If we are supposed to delete gear from AI that were run over then lets do it. - [_unit] call fn_deleteAIGear; + [_unit] call _fn_deleteAIGear; if (blck_debugON) then { diag_log format["<<--->> Unit %1 was run over by %2",_unit,_killer]; }; }; if (blck_VK_RunoverDamage) then {//apply vehicle damage - [vehicle _killer] call fn_applyVehicleDamage; + [vehicle _killer] call _fn_applyVehicleDamage; if (blck_debugON) then{diag_log format[">>---<< %1's vehicle has had damage applied",_killer];}; - [_killer] call fn_msgIED; + [_killer] call _fn_msgIED; }; - [_unit, vehicle _killer] call fn_targetVehicle; - + [_unit, vehicle _killer] call _fn_targetVehicle; _legal = false; }; }; @@ -76,11 +75,11 @@ if ( blck_VK_GunnerDamage &&((typeOf vehicle _killer) in blck_forbidenVehicles o diag_log format["!!---!! Unit was killed by a forbidden vehicle or gun",_unit]; }; - if (blck_VK_Gear) then {[_unit] call fn_deleteAIGear;}; - [_unit, vehicle _killer] call fn_targetVehicle; - [vehicle _killer] call fn_applyVehicleDamage; + if (blck_VK_Gear) then {[_unit] call _fn_deleteAIGear;}; + [_unit, vehicle _killer] call _fn_targetVehicle; + [vehicle _killer] call _fn_applyVehicleDamage; - [_killer] call fn_msgIED; + [_killer] call _fn_msgIED; _legal = false; }; diff --git a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf index 1c7a02a..f9ff99b 100644 --- a/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf +++ b/@epochhive/addons/custom_server/Compiles/Units/GMS_fnc_rewardKiller.sqf @@ -3,7 +3,7 @@ calculate a reward player for AI Kills in crypto. Code fragment adapted from VEMF call as [_unit,_killer] call blck_fnc_rewardKiller; - NOTE the dependency on HALV_server_takegive_crypto !! + Last modified 1/4/17 */ params["_unit","_killer","_kills"]; @@ -37,7 +37,10 @@ if (_modType isEqualTo "Epoch") then private _killstreakReward=+(_kills*2); //diag_log format["fnd_rewardKiller:: _bonus returned will be %1",_reward]; [_killer,_reward + _killstreakReward] call blck_fnc_giveTakeCrypto; - [["showScore",[_reward,"",_kills],""],[_killer]] call blck_fnc_messageplayers; + if (blck_useKillScoreMessage) then + { + [["showScore",[_reward,"",_kills],""],[_killer]] call blck_fnc_messageplayers; + }; }; }; @@ -61,7 +64,9 @@ if (_modType isEqualTo "Exile") then format["setAccountMoney:%1:%2", _money, (getPlayerUID _killer)] call ExileServer_system_database_query_fireAndForget; _message = ["showFragRequest",_overallRespectChange]; _killer call ExileServer_object_player_sendStatsUpdate; - [["showScore",[50,_distanceBonus,_kills]], [_killer]] call blck_fnc_messageplayers; + if (blck_useKillScoreMessage) then + { + [["showScore",[50,_distanceBonus,_kills]], [_killer]] call blck_fnc_messageplayers; + }; }; - //_reward diff --git a/@epochhive/addons/custom_server/Compiles/blck_variables.sqf b/@epochhive/addons/custom_server/Compiles/blck_variables.sqf index 300ba4f..7621305 100644 --- a/@epochhive/addons/custom_server/Compiles/blck_variables.sqf +++ b/@epochhive/addons/custom_server/Compiles/blck_variables.sqf @@ -6,7 +6,7 @@ Last modified 10/25/16 */ //blck_variablesLoaded = false; -blck_debugON = false; +blck_debugON = true; blck_debugLevel = 0; // Reserved for certain testing modes. blck_minFPS = 10; diff --git a/@epochhive/addons/custom_server/Configs/blck_configs_epoch.sqf b/@epochhive/addons/custom_server/Configs/blck_configs_epoch.sqf index a29f77a..319d6b0 100644 --- a/@epochhive/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@epochhive/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -56,6 +56,11 @@ Last modified 8/1/15 // Headless Client Configurations blck_useHC = false; // Not Yet Working + // Kill message configurations + blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed. + blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information + blck_useIEDMessages = true; + // MISSION MARKER CONFIGURATION // blck_labelMapMarkers: Determines if when the mission composition provides text labels, map markers with have a text label indicating the mission type //When set to true,"arrow", text will be to the right of an arrow below the mission marker. @@ -212,6 +217,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR **********************************************************************************/ + #define useAPEX 1 + // Blacklisted itesm blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; @@ -241,8 +248,11 @@ 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 + blck_Optics_Apex; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + #ifdef useAPEX + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif blck_bipods = [ "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", //Apex @@ -301,14 +311,23 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG + blck_apexWeapons; 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_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + blck_baseBackpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; 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" ]; - blck_backpacks = blck_baseBackpacks + blck_ApexBackpacks; + + #ifdef useAPEX + blck_backpacks = blck_baseBackpacks + blck_ApexBackpacks; + #endif blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. @@ -584,6 +603,12 @@ for examples of how you can do this see \Major\Compositions.sqf [ [// Weapons + #ifdef useAPEX + "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", + #endif ["MultiGun","EnergyPackLg"], ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], @@ -623,11 +648,8 @@ for examples of how you can do this see \Major\Compositions.sqf ["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"], - "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" + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + ], [//Magazines ["3rnd_HE_Grenade_Shell",3,6], @@ -695,6 +717,12 @@ for examples of how you can do this see \Major\Compositions.sqf [ [// Weapons // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "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", + #endif ["MultiGun","EnergyPackLg"], ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], @@ -723,11 +751,8 @@ for examples of how you can do this see \Major\Compositions.sqf ["srifle_DMR_03_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"], - "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" + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], [//Magazines // Format is ["Magazine name, Minimum number to add, Maximum number to add], diff --git a/@epochhive/addons/custom_server/Configs/blck_configs_exile.sqf b/@epochhive/addons/custom_server/Configs/blck_configs_exile.sqf index 5ea82e3..24a6912 100644 --- a/@epochhive/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@epochhive/addons/custom_server/Configs/blck_configs_exile.sqf @@ -55,6 +55,10 @@ Last modified 8/1/15 //////// // Headless Client Configurations blck_useHC = false; // Not Yet Working + + // Kill message configurations + blck_useKillMessages = false; // when true a message will be broadcast to all players each time an AI is killed. + blck_useKillScoreMessage = true; // when true a tile is displayed to the killer with the kill score information // MISSION MARKER CONFIGURATION // blck_labelMapMarkers: Determines if when the mission composition provides text labels, map markers with have a text label indicating the mission type @@ -218,6 +222,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR **********************************************************************************/ + #define useAPEX 1 + // Blacklisted itesm blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; @@ -247,7 +253,11 @@ 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 + blck_Optics_Apex; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + + #ifdef useAPEX + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif blck_bipods = [ "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", @@ -310,15 +320,22 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG + blck_apexWeapons; 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_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + blck_baseBackpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; 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_baseBackpacks + blck_ApexBackpacks; - + #endif blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. blck_headgear = [ @@ -669,6 +686,12 @@ for examples of how you can do this see \Major\Compositions.sqf [ [// Weapons + #ifdef useAPEX + "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", + #endif ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], ["srifle_DMR_01_F","10Rnd_762x51_Mag"], @@ -695,11 +718,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["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"], - "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" + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] ], [//Magazines ["3rnd_HE_Grenade_Shell",3,6], @@ -757,6 +776,12 @@ for examples of how you can do this see \Major\Compositions.sqf [ [// Weapons // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "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", + #endif ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], ["arifle_MX_F","30Rnd_65x39_caseless_mag"], @@ -778,11 +803,7 @@ for examples of how you can do this see \Major\Compositions.sqf ["srifle_DMR_03_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"], - "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" + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] ], [//Magazines // Format is ["Magazine name, Minimum number to add, Maximum number to add], diff --git a/@epochhive/addons/custom_server/changeLog.sqf b/@epochhive/addons/custom_server/changeLog.sqf index 8e4fe61..47ade67 100644 --- a/@epochhive/addons/custom_server/changeLog.sqf +++ b/@epochhive/addons/custom_server/changeLog.sqf @@ -4,6 +4,16 @@ Loosely based on the AI mission system by blckeagls ver 2.0.2 Contributions by Narines: bug fixes, testing, 'fired' event handler Ideas or code from that by Vampire and KiloSwiss have been used for certain functions. +1/3/17 Version 6.51 Build 22 +Moved configuration for the client from debug\blckclient.sqf to debug\blckconfig.sqf. +Added a setting blck_useKillMessages = true/false; (line 60 of the config. when true, kill messages will be send to all players when a player kills an AI. The style of the message is controlled client-side (debug\blck_config.sqf) +Added a setting blck_useKillScoreMessage = true/false; // (line 61 of the config) when true a tile is displayed to the killer with the kill score information +Added a setting blck_useIEDMessages = true/false; // when true players will receive a message that their vehicle was damaged when AI are killed in a forbidden way (Run over Or Killed with vehicle-mounted weapons) +Fixed: Messages that a nearby IED was detonated are now properly displayed when players illegally kill AI. +Added a way to easily include / exclude APEX items. To exclude them comment out the line + #define useAPEX 1 + at approximately line 219 in the config. + 12/21/16 Version 6.50 Build 21 Added a check for mod type to the routine that deletes empty groups as this is only needed for Epoch. Added back the code that (a) eliminates the mission timers and (b) allows multiple instances of a mission to be spawned. diff --git a/@epochhive/addons/custom_server/init/build.sqf b/@epochhive/addons/custom_server/init/build.sqf index 3fc874a..1578948 100644 --- a/@epochhive/addons/custom_server/init/build.sqf +++ b/@epochhive/addons/custom_server/init/build.sqf @@ -1,3 +1,3 @@ private ["_version","_versionDate"]; -_blck_version = "6.50 Build 22"; -_blck_versionDate = "1-3-17 7:00 PM"; +_blck_version = "6.51 Build 23"; +_blck_versionDate = "1-4-17 9:00 PM"; diff --git a/MPMissions/epoch.Altis/debug/blckClient.sqf b/MPMissions/epoch.Altis/debug/blckClient.sqf index b5e3481..4d396a0 100644 --- a/MPMissions/epoch.Altis/debug/blckClient.sqf +++ b/MPMissions/epoch.Altis/debug/blckClient.sqf @@ -1,29 +1,18 @@ //////////////////////////////////////////// // Start Server-side functions and Create, Display Mission Messages for blckeagls mission system for Arma 3 Epoch -// Last Updated 11/20/16 +// Last Updated 1/4/17 // by Ghostrider-DbD- ////////////////////////////////////////// -if (hasInterface) then -{ - //diag_log "[blckeagls] initializing client variables"; - blck_MarkerPeristTime = 300; - blck_useHint = false; - blck_useSystemChat = true; - blck_useTitleText = false; - blck_useDynamic = true; - blck_useToast = false; // Exile only - blck_aiKilluseSystemChat = true; - blck_aiKilluseDynamic = false; - blck_aiKilluseTitleText = false; - blck_processingMsg = -1; - blck_processingKill = -1; - blck_message = ""; +if (isServer || (!hasInterface)) exitWith {}; + #include "blckconfigs.sqf"; + + blck_message = ""; fn_killScoreNotification = { params["_bonus","_distanceBonus","_killStreak"]; //diag_log format["fn_killScoreNotification:: -- >> _bonus = %1 | _distanceBonus = %2 | _killStreak = %3",_bonus,_distanceBonus,_killStreak]; - _msg2 = format["AI Killed
"]; + private _msg2 = format["AI Killed
"]; if (typeName _bonus isEqualTo "SCALAR") then // add message for the bonus { if (_bonus > 0) then @@ -45,7 +34,7 @@ if (hasInterface) then _msg2 = _msg2 + format["Killstreak %1X
",_killStreak]; }; }; - [parseText _msg2,[0.0823437 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.0812109 * safezoneW,0.253 * safezoneH], nil, 7, 0.3, 0] spawn BIS_fnc_textTiles; + [parseText _msg2,[0.0823437 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.0812109 * safezoneW,0.253 * safezoneH], nil, 3, 0.3, 0] spawn BIS_fnc_textTiles; }; fn_dynamicNotification = { @@ -100,7 +89,7 @@ if (hasInterface) then fn_AI_KilledNotification = { private["_message","_text","_screentime","_xcoord","_ycoord"]; _message = _this select 0; - //diag_log format["_fn_AI_KilledNotification ====] Paremeters _event %1 _message %2 _mission %3",_message]; + //diag_log format["_fn_AI_KilledNotification ====] Paremeters: _message= %1", _message]; if (blck_aiKilluseSystemChat) then {systemChat format["%1",_message];}; if (blck_aiKilluseTitleText) then {titleText [_message, "PLAIN DOWN",5];uiSleep 5; titleText ["", "PLAIN DOWN",5]}; if (blck_aiKilluseDynamic) then { @@ -121,25 +110,25 @@ if (hasInterface) then fn_handleMessage = { //private["_event","_msg","_mission"]; - diag_log format["blck_Message ====] Paremeters = _this = %1",_this]; + //diag_log format["fn_handleMessage ====] Paremeters = _this = %1",_this]; params["_event","_message",["_mission",""]]; - - diag_log format["blck_Message ====] Paremeters _event %1 _message %2 paramter #3 %3",_event,_message,_mission]; - diag_log format["blck_Message ====] _message isEqualTo %1",_message]; + private _timer = 0; + //diag_log format["fn_handleMessage ====] Paremeters _event= %1 _message= %2 paramter #3= %3",_event,_message,_mission]; + //diag_log format["fn_handleMessage ====] _message isEqualTo %1",_message]; switch (_event) do { case "start": { playSound "UAV_05"; - diag_log "switch start"; + //diag_log "switch start"; //_mission = _this select 1 select 2; [_event,_message,_mission] spawn fn_missionNotification; }; case "end": { playSound "UAV_03"; - diag_log "switch end"; + //diag_log "switch end"; //_mission = _this select 1 select 2; [_event,_message,_mission] spawn fn_missionNotification; }; @@ -155,14 +144,15 @@ if (hasInterface) then case "reinforcements": { if ( (player distance _mission) < 1000) then {playsound "AddItemOK"; ["Alert",_message] call fn_dynamicNotification;}; - diag_log "---->>>> Reinforcements Spotted"; + //diag_log "---->>>> Reinforcements Spotted"; }; case "IED": { - [1] call BIS_fnc_Earthquake; - //["IED","Bandits targeted your vehicle with an IED"] call fn_dynamicNotification; - ["Bandits targeted your vehicle with an IED.", 5] call Epoch_message; - for "_i" from 1 to 3 do {playSound "BattlefieldExplosions3_3D";uiSleep 0.3;}; + //[1] spawn BIS_fnc_Earthquake; + private _msg = format["IED Detonated %1
"," **Vehicle Damaged** "]; + systemChat "IED Detonated Nearby: Vehicle Damaged"; + [parseText _msg,[0.314375 * safezoneW + safezoneX,0.687 * safezoneH + safezoneY,0.37125 * safezoneW,0.044 * safezoneH], nil, 3, 0.1, 0] spawn BIS_fnc_textTiles; + playSound "BattlefieldExplosions3_3D"; }; case "showScore": { @@ -178,7 +168,7 @@ if (hasInterface) then if (!isNil "blck_RedMarker") then {[blck_RedMarker] execVM "debug\spawnMarker.sqf"}; if (!isNil "blck_BlueMarker") then {[blck_BlueMarker] execVM "debug\spawnMarker.sqf"}; - diag_log "blck client loaded ver 8/14/16 1.0 7:47 AM"; + diag_log "blck client loaded ver 1/4/17 9 PM"; //diag_log "[blckeagls] starting client loop"; private["_start"]; _start = diag_tickTime; @@ -196,6 +186,5 @@ if (hasInterface) then uiSleep 0.3; }; }; -}; diff --git a/MPMissions/epoch.Altis/debug/blckconfigs.sqf b/MPMissions/epoch.Altis/debug/blckconfigs.sqf new file mode 100644 index 0000000..1b1ce57 --- /dev/null +++ b/MPMissions/epoch.Altis/debug/blckconfigs.sqf @@ -0,0 +1,20 @@ +//////////////////////////////////////////// +// Define configurations for the client-side of the mission system +// Last Updated 11/20/16 +// by Ghostrider-DbD- +////////////////////////////////////////// + +//diag_log "[blckeagls] initializing client variables"; +blck_MarkerPeristTime = 300; +blck_useHint = true; +blck_useSystemChat = false; +blck_useTitleText = false; +blck_useDynamic = false; +blck_useToast = false; // Exile only +blck_aiKilluseSystemChat = true; +blck_aiKilluseDynamic = false; +blck_aiKilluseTitleText = false; +blck_processingMsg = -1; +blck_processingKill = -1; + + diff --git a/changeLog.sqf b/changeLog.sqf index 6c1923d..47ade67 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -4,25 +4,27 @@ Loosely based on the AI mission system by blckeagls ver 2.0.2 Contributions by Narines: bug fixes, testing, 'fired' event handler Ideas or code from that by Vampire and KiloSwiss have been used for certain functions. -12/4-16 Version 6.45 Build 19 -Added Option to display mission information in Toasts (Exile Only). -Fixed several issues related to the update to Arma 1.66 -Known Issues: Need a patch so you can loot AI bodies in Epoch. +1/3/17 Version 6.51 Build 22 +Moved configuration for the client from debug\blckclient.sqf to debug\blckconfig.sqf. +Added a setting blck_useKillMessages = true/false; (line 60 of the config. when true, kill messages will be send to all players when a player kills an AI. The style of the message is controlled client-side (debug\blck_config.sqf) +Added a setting blck_useKillScoreMessage = true/false; // (line 61 of the config) when true a tile is displayed to the killer with the kill score information +Added a setting blck_useIEDMessages = true/false; // when true players will receive a message that their vehicle was damaged when AI are killed in a forbidden way (Run over Or Killed with vehicle-mounted weapons) +Fixed: Messages that a nearby IED was detonated are now properly displayed when players illegally kill AI. +Added a way to easily include / exclude APEX items. To exclude them comment out the line + #define useAPEX 1 + at approximately line 219 in the config. -11/16/16 Version 6.44 Build 15 -Added parameters - blck_blacklistTraderCities=true; // the locations of the Epoch/Exile trader cities will be pulled from the config and added to the location blacklist for the mission system. - blcklistConcreteMixerZones = true; // Locations of the concrete mixers will be pulled from the configs; no missions will be spawned within 1000 m of these locations. - blck_blacklistSpawns = true; // Locations of Exile spawns will be pulled from the config. No missions will spawn within 1000 m of these locations. -Added: the main thread now runs a function that checks for empty groups. -Fixed: The mission system would hang on epoch after a while because createGroup returned nullGroup. this appeared to occur because the maximum number of active groups had been reached. Deleting empty groups periodically solved the issue on a test machine. -Teaked: code to check whether a possible mission spawn location is near a flag or plot pole. Still needs work. -Added: Completed adding EDEN weapons, optics, bipods, optics to AI configurations and mission loot crates. -Added APEX headgear and uniforms. (Note, you would need to add any of these you wished for players to sell to Epoch\\epoch_config\CfgPricing.hpp on Epoch) -Changed: Definitions of blacklist locations such as spawns moved from GMS_findWorld.sqf to the blck_configs_(epoch|exile). -Changed: Divided rifles and optics into subcategories to better enable assigning weapons to AI difficulties in a sort of class-based way, e.g., 556, 6.5, or LMG are separate classes. -Changed: DLS crate loader (not publically available yet) now uses blck_fnc_loadLootItemsFromArray rather than the prior approach for which specific crate loading functions were called depending on the loadout type (weapons, building supplies, foord etc). -Fixed: You can now loot AI bodies in Epoch. +12/21/16 Version 6.50 Build 21 +Added a check for mod type to the routine that deletes empty groups as this is only needed for Epoch. +Added back the code that (a) eliminates the mission timers and (b) allows multiple instances of a mission to be spawned. + +12/20/16 Version 6.46 Buid 20 +Moved Variables for time acceleration to the config files. +Reworked code for time acceleration to use timeDay and BIS_fnc_sunriseSunsetTime. + +11/20/16 Build 6.45 Build 19 +Added Option to display mission information in Toasts (Exile Only). +Fixed an issue related to bugs in Arma 1.66 11/16/16 Version 6.44 Build 15 Added parameters