Added Settings, Bug Fixes

This commit is contained in:
Ghostrider-DbD- 2017-01-05 02:23:38 -05:00
parent c83eebe513
commit 1581856cec
12 changed files with 184 additions and 110 deletions

View File

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

View File

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

View File

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

View File

@ -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

View File

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

View File

@ -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],

View File

@ -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],

View File

@ -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.

View File

@ -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";

View File

@ -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["<t color ='#7CFC00' size = '1.4' align='right'>AI Killed</t><br/>"];
private _msg2 = format["<t color ='#7CFC00' size = '1.4' align='right'>AI Killed</t><br/>"];
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["<t color = '#7CFC00' size = '1.4' align = 'right'>Killstreak <t color = '#ffffff'>%1X<br/>",_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["<t color = '#ce2029' size ='1.4' align='center'>IED Detonated <t color = '#ffffff'>%1<br/>"," **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;
};
};
};

View File

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

View File

@ -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\<Map Name>\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