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\