From dfca7b2f4426ecf049fb6eeac60a44d1ab9a8dfa Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 15 Jul 2015 05:51:13 +0200 Subject: [PATCH 001/268] Split UI configs, Removed Vignette, Initial work on selective UI --- addons/ui/$PBOPREFIX$ | 2 +- addons/ui/ACE_Settings.hpp | 37 +++++++++++++++ addons/ui/CfgEventHandlers.hpp | 11 +++++ addons/ui/CfgVehicles.hpp | 58 ++++++++++++++++++++++++ addons/ui/README.md | 3 +- addons/ui/RscChat.hpp | 15 ++++++ addons/ui/RscVignette.hpp | 4 ++ addons/ui/XEH_clientInit.sqf | 63 ++++++++++++++++++++++++++ addons/ui/XEH_preInit.sqf | 7 +++ addons/ui/config.cpp | 24 +++------- addons/ui/functions/fnc_moduleInit.sqf | 29 ++++++++++++ addons/ui/stringtable.xml | 50 ++++++++++++++++++++ 12 files changed, 284 insertions(+), 19 deletions(-) create mode 100644 addons/ui/ACE_Settings.hpp create mode 100644 addons/ui/CfgEventHandlers.hpp create mode 100644 addons/ui/CfgVehicles.hpp create mode 100644 addons/ui/RscChat.hpp create mode 100644 addons/ui/RscVignette.hpp create mode 100644 addons/ui/XEH_clientInit.sqf create mode 100644 addons/ui/XEH_preInit.sqf create mode 100644 addons/ui/functions/fnc_moduleInit.sqf create mode 100644 addons/ui/stringtable.xml diff --git a/addons/ui/$PBOPREFIX$ b/addons/ui/$PBOPREFIX$ index 601bbd5f601..9b6ac48f4fd 100644 --- a/addons/ui/$PBOPREFIX$ +++ b/addons/ui/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\Addons\ui \ No newline at end of file +z\ace\addons\ui \ No newline at end of file diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp new file mode 100644 index 00000000000..09bdb476348 --- /dev/null +++ b/addons/ui/ACE_Settings.hpp @@ -0,0 +1,37 @@ +class ACE_Settings { + class GVAR(weaponInfo) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(WeaponInfo); + }; + class GVAR(weaponName) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(WeaponName); + }; + /*class GVAR(ammoCount) { // Disabled in config by ace_reload + value = 1; + typeName = "BOOL"; + displayName = CSTRING(AmmoCount); + };*/ + class GVAR(magCount) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(MagCount); + }; + class GVAR(grenadeName) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(GrenadeName); + }; + class GVAR(grenadeCount) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(GrenadeCount); + }; + class GVAR(zeroing) { + value = 1; + typeName = "BOOL"; + displayName = CSTRING(Zeroing); + }; +}; diff --git a/addons/ui/CfgEventHandlers.hpp b/addons/ui/CfgEventHandlers.hpp new file mode 100644 index 00000000000..423993f757d --- /dev/null +++ b/addons/ui/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); + }; +}; diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp new file mode 100644 index 00000000000..f918360518e --- /dev/null +++ b/addons/ui/CfgVehicles.hpp @@ -0,0 +1,58 @@ +class CfgVehicles { + class ACE_Module; + class ACE_ModuleUI: ACE_Module { + author = ECSTRING(common,ACETeam); + category = "ACE"; + displayName = CSTRING(ModuleDisplayName); + function = QFUNC(moduleInit); + scope = 2; + isGlobal = 1; + //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); + class Arguments { + class weaponInfo { + displayName = CSTRING(WeaponInfo); + description = CSTRING(WeaponInfoDesc); + typeName = "BOOL"; + defaultValue = 1; + }; + class weaponName { + displayName = CSTRING(WeaponName); + description = CSTRING(WeaponNameDesc); + typeName = "BOOL"; + defaultValue = 1; + }; + /*class ammoCount { // Disabled in config by ace_reload + displayName = CSTRING(AmmoCount); + description = CSTRING(AmmoCountDesc); + typeName = "BOOL"; + defaultValue = 1; + };*/ + class magCount { + displayName = CSTRING(MagCount); + description = CSTRING(MagCountDesc); + typeName = "BOOL"; + defaultValue = 1; + }; + class grenadeName { + displayName = CSTRING(GrenadeName); + description = CSTRING(GrenadeNameDesc); + typeName = "BOOL"; + defaultValue = 1; + }; + class grenadeCount { + displayName = CSTRING(GrenadeCount); + description = CSTRING(GrenadeCountDesc); + typeName = "BOOL"; + defaultValue = 1; + }; + class zeroing { + displayName = CSTRING(Zeroing); + typeName = "BOOL"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = CSTRING(ModuleDescription); + }; + }; +}; diff --git a/addons/ui/README.md b/addons/ui/README.md index f11027038f5..b3c2b3acb70 100644 --- a/addons/ui/README.md +++ b/addons/ui/README.md @@ -1,9 +1,10 @@ ace_ui ======= -Changes the chat contrast on the map to allow easier reading +Changes the chat contrast on the map to allow easier reading, removes vignette and provides settings to toggle different UI elements unavailable in Vanilla. ## Maintainers The people responsible for merging changes to this component or answering potential questions. +- [Jonpas] (https://github.com/jonpas) diff --git a/addons/ui/RscChat.hpp b/addons/ui/RscChat.hpp new file mode 100644 index 00000000000..6b091d73bc1 --- /dev/null +++ b/addons/ui/RscChat.hpp @@ -0,0 +1,15 @@ +class RscText; +class RscDisplayChat { + class controls { + delete Line; + delete Background; + class CA_Background: RscText { + colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker + }; + }; +}; + +class RscChatListDefault { + colorBackground[] = {0,0,0,0.5}; // Make the chat background darker + colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter +}; diff --git a/addons/ui/RscVignette.hpp b/addons/ui/RscVignette.hpp new file mode 100644 index 00000000000..118fad96e62 --- /dev/null +++ b/addons/ui/RscVignette.hpp @@ -0,0 +1,4 @@ +class RscPicture; +class RscVignette: RscPicture { + colorText[] = {0, 0, 0, 0}; // Hide Vignette +}; diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf new file mode 100644 index 00000000000..fec845d49a6 --- /dev/null +++ b/addons/ui/XEH_clientInit.sqf @@ -0,0 +1,63 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +// Exit on Headless +if !(hasInterface) exitWith {}; + +["SettingsInitialized", { + // On load and entering/exiting a vehicle + ["infoDisplayChanged", { + LOG("UI infoDisplayChanged"); + + private ["_elements", "_display"]; + + // All elements with their show/hide, IDD and IDC + _elements = [ + [GVAR(weaponInfo), 300, 2302], + [GVAR(weaponName), 300, 118], + //[GVAR(ammoCount), 300, 184], // Disabled in config by ace_reload + [GVAR(magCount), 300, 185], + [GVAR(grenadeName), 300, 152], + [GVAR(grenadeCount), 300, 151], + [GVAR(zeroing), 300, 168] + ]; + + disableSerialization; + { + _display = _x; + { + EXPLODE_3_PVT(_x,_show,_idd,_idc); + + //_idd = 300; //debug + //_idc = 122; //debug + if (_idd == ctrlIDD _display) then { + _show = if (_show) then {0} else {1}; + + (_display displayCtrl _idc) ctrlSetFade _show; + (_display displayCtrl _idc) ctrlCommit 0; + }; + } forEach _elements; + } forEach (uiNamespace getVariable "IGUI_displays"); // Those displays can be present several times for some reason + }] call EFUNC(common,addEventHandler); +}] call EFUNC(common,addEventHandler); + + +/* +RscUnitInfo = 300 +-------- +Alt = 122 (UNKNOWN) +Ammo = 119 (UNKNOWN) +AmmoCount = 184 (Ammo Count) +MagCount = 185 (Magazine Count) +CA_TextFlares = 151 (Grenade Count) +CA_TextFlaresMode = 152 (Grenade Name) +CA_Zeroing = 168 (Zeroing) +Weapon = 118 (Weapon Name) +WeaponInfoControlsGroupLeft = 2302 (entire Weapon Info without Zeroing and Stance) +WeaponInfoControlsGroupRight = 2303 (UNKNOWN) + + +RscStanceInfo = 303 +------- +StanceIndicator = 188 (UNKNOWN) +*/ diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf new file mode 100644 index 00000000000..7e1c3ec9ed0 --- /dev/null +++ b/addons/ui/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(moduleInit); + +ADDON = true; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index e7ea4b32eb8..fa104202776 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -6,25 +6,15 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"VKing"}; - authorUrl = "https://github.com/ACEMod/"; + author[] = {"VKing", "Jonpas"}; + authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; }; }; -class RscText; +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" +#include "ACE_Settings.hpp" -class RscDisplayChat { - class controls { - delete Line; - delete Background; - class CA_Background: RscText { - colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker - }; - }; -}; - -class RscChatListDefault { - colorBackground[] = {0,0,0,0.5}; // Make the chat background darker - colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter -}; +#include "RscChat.hpp" +#include "RscVignette.hpp" diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf new file mode 100644 index 00000000000..02d9c2ecbfd --- /dev/null +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -0,0 +1,29 @@ +/* + * Author: Jonpas + * Initializes the UI module. + * + * Arguments: + * 0: Module Logic + * 1: Units + * 2: Activated + * + * Return Value: + * None + */ +#include "script_component.hpp" + +if !(isServer) exitWith {}; + +PARAMS_3(_logic,_units,_activated); + +if !(_activated) exitWith {}; + +[_logic, QGVAR(weaponInfo), "weaponInfo"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); +//[_logic, QGVAR(ammoCount), "ammoCount"] call EFUNC(common,readSettingFromModule); // Disabled in config by ace_reload +[_logic, QGVAR(magCount), "magCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(grenadeName), "grenadeName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(grenadeCount), "grenadeCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); + +diag_log text "[ACE]: UI Module Initialized."; diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml new file mode 100644 index 00000000000..b33c28292d5 --- /dev/null +++ b/addons/ui/stringtable.xml @@ -0,0 +1,50 @@ + + + + + Weapon Info + + + Entire weapon info interface (weapon name, firing mode, magazine info, ammo count, magazine count, grenade count) except zeroing. + + + Weapon Name + + + Requires enabled Weapon Info + + + Ammo Count + + + Requires enabled Weapon Info + + + Magazine Count + + + Requires enabled Weapon Info + + + Grenade Name + + + Requires enabled Weapon Info + + + Grenade Count + + + Requires enabled Weapon Info + + + Zeroing + + + User Interface + + + This module allows hiding of specific user interface parts. + + + \ No newline at end of file From 7d792f9d1471ba99e25e125be7573524b5c5355d Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 20 Jul 2015 04:50:25 +0200 Subject: [PATCH 002/268] Proper Vignette removal, Fixed stringtable typo --- addons/ui/RscVignette.hpp | 2 +- addons/ui/XEH_clientInit.sqf | 2 +- addons/ui/stringtable.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/ui/RscVignette.hpp b/addons/ui/RscVignette.hpp index 118fad96e62..1da39c2118a 100644 --- a/addons/ui/RscVignette.hpp +++ b/addons/ui/RscVignette.hpp @@ -1,4 +1,4 @@ class RscPicture; class RscVignette: RscPicture { - colorText[] = {0, 0, 0, 0}; // Hide Vignette + text = ""; // Remove Vignette Texture }; diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index fec845d49a6..d6b0883d4d4 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -53,7 +53,7 @@ CA_TextFlares = 151 (Grenade Count) CA_TextFlaresMode = 152 (Grenade Name) CA_Zeroing = 168 (Zeroing) Weapon = 118 (Weapon Name) -WeaponInfoControlsGroupLeft = 2302 (entire Weapon Info without Zeroing and Stance) +WeaponInfoControlsGroupLeft = 2302 (entire RscUnitInfo without Zeroing) WeaponInfoControlsGroupRight = 2303 (UNKNOWN) diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index b33c28292d5..daabe804532 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -10,7 +10,7 @@ Weapon Name - + Requires enabled Weapon Info From 02faf0a10453b78fcbc9c074ee767cfce337a3d0 Mon Sep 17 00:00:00 2001 From: alganthe Date: Wed, 16 Sep 2015 06:20:05 +0200 Subject: [PATCH 003/268] fixed zeus addobjects The module part in CfgVehicles.hpp was missing. Signed-off-by: alganthe --- addons/zeus/ACE_Settings.hpp | 4 +--- addons/zeus/CfgVehicles.hpp | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 6488a23e4e4..73d92b95cb2 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -21,9 +21,7 @@ class ACE_Settings { values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(revealMines_partial), CSTRING(revealMines_full)}; }; class GVAR(autoAddObjects) { - displayName = CSTRING(AddObjectsToCurator); - description = CSTRING(AddObjectsToCurator_desc); - value = 0; typeName = "BOOL"; + value = 0; }; }; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index e110970ae3d..f8ca85511b5 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -70,6 +70,12 @@ class CfgVehicles { }; }; }; + class GVAR(autoAddObjects) { + displayName = CSTRING(AddObjectsToCurator); + description = CSTRING(AddObjectsToCurator_desc); + typeName = "BOOL"; + defaultValue = 0; + }; }; class ModuleDescription { description = CSTRING(Settings_Description); From 38fe56472e46db4454ea67b776f68ff9c78b77ae Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 27 Sep 2015 15:35:32 +0200 Subject: [PATCH 004/268] ace setting string added for ace_zeus_autoAddObjects --- addons/zeus/ACE_Settings.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 73d92b95cb2..708e37d85b6 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -23,5 +23,7 @@ class ACE_Settings { class GVAR(autoAddObjects) { typeName = "BOOL"; value = 0; + displayName = CSTRING(AddObjectsToCurator); + description = CSTRING(AddObjectsToCurator_desc); }; }; From 94ce49fedc8e37e3f408be0cd43a9d6a152729ca Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 28 Oct 2015 23:23:02 +0100 Subject: [PATCH 005/268] Add selective UI --- addons/ui/ACE_Settings.hpp | 161 +++++++++++++++++- addons/ui/CfgVehicles.hpp | 136 +++++++++++++-- addons/ui/XEH_clientInit.sqf | 82 ++++----- addons/ui/XEH_preInit.sqf | 3 + addons/ui/functions/fnc_moduleInit.sqf | 25 +-- .../ui/functions/fnc_moduleInitAdvanced.sqf | 42 +++++ .../ui/functions/fnc_setAdvancedElement.sqf | 43 +++++ addons/ui/functions/fnc_setElements.sqf | 44 +++++ addons/ui/functions/script_component.hpp | 1 + addons/ui/script_component.hpp | 72 ++++++++ addons/ui/stringtable.xml | 101 ++++++++--- 11 files changed, 599 insertions(+), 111 deletions(-) create mode 100644 addons/ui/functions/fnc_moduleInitAdvanced.sqf create mode 100644 addons/ui/functions/fnc_setAdvancedElement.sqf create mode 100644 addons/ui/functions/fnc_setElements.sqf create mode 100644 addons/ui/functions/script_component.hpp diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp index 09bdb476348..53e1496b38e 100644 --- a/addons/ui/ACE_Settings.hpp +++ b/addons/ui/ACE_Settings.hpp @@ -1,37 +1,182 @@ class ACE_Settings { - class GVAR(weaponInfo) { +// BASIC + class GVAR(soldierVehicleWeaponInfo) { value = 1; typeName = "BOOL"; - displayName = CSTRING(WeaponInfo); + isClientSettable = 1; + displayName = CSTRING(SoldierVehicleWeaponInfo); + category = CSTRING(Category); }; + class GVAR(vehicleRadar) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleRadar); + category = CSTRING(Category); + }; + class GVAR(vehicleCompass) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleCompass); + category = CSTRING(Category); + }; + class GVAR(commandMenu) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(CommandMenu); + category = CSTRING(Category); + }; + class GVAR(groupBar) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(GroupBar); + category = CSTRING(Category); + }; + +// ADVANCED + // Upper Weapon Info class GVAR(weaponName) { value = 1; typeName = "BOOL"; + isClientSettable = 1; displayName = CSTRING(WeaponName); + category = CSTRING(Category); + }; + class GVAR(weaponNameBackground) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(WeaponNameBackground); + category = CSTRING(Category); }; - /*class GVAR(ammoCount) { // Disabled in config by ace_reload + class GVAR(firingMode) { value = 1; typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(FiringMode); + category = CSTRING(Category); + }; + + // Lower Weapon Info + class GVAR(ammoType) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(AmmoType); + category = CSTRING(Category); + }; + class GVAR(ammoCount) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; displayName = CSTRING(AmmoCount); - };*/ + description = CSTRING(AmmoCountDesc); + category = CSTRING(Category); + }; class GVAR(magCount) { value = 1; typeName = "BOOL"; + isClientSettable = 1; displayName = CSTRING(MagCount); + category = CSTRING(Category); }; - class GVAR(grenadeName) { + class GVAR(grenadeFlareType) { value = 1; typeName = "BOOL"; - displayName = CSTRING(GrenadeName); + isClientSettable = 1; + displayName = CSTRING(GrenadeFlareType); + category = CSTRING(Category); }; - class GVAR(grenadeCount) { + class GVAR(grenadeFlareCount) { value = 1; typeName = "BOOL"; - displayName = CSTRING(GrenadeCount); + isClientSettable = 1; + displayName = CSTRING(GrenadeFlareCount); + category = CSTRING(Category); }; class GVAR(zeroing) { value = 1; typeName = "BOOL"; + isClientSettable = 1; displayName = CSTRING(Zeroing); + category = CSTRING(Category); + }; + class GVAR(weaponLowerInfoBackground) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(WeaponLowerInfoBackground); //todo + category = CSTRING(Category); + }; + + // Stance + class GVAR(stance) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(Stance); + category = CSTRING(Category); + }; + + + // Vehicle + class GVAR(vehicleName) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleName); + category = CSTRING(Category); + }; + class GVAR(vehicleNameBackground) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleNameBackground); + category = CSTRING(Category); + }; + class GVAR(vehicleFuelBar) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleFuelBar); + category = CSTRING(Category); + }; + class GVAR(vehicleSpeed) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleSpeed); + category = CSTRING(Category); + }; + class GVAR(vehicleAltitude) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleAltitude); + category = CSTRING(Category); + }; + class GVAR(vehicleDamage) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleDamage); + category = CSTRING(Category); + }; + class GVAR(vehicleInfoBackground) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleInfoBackground); + category = CSTRING(Category); + }; + class GVAR(vehicleGunnerWeapon) { + value = 1; + typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(VehicleGunnerWeapon); + category = CSTRING(Category); }; }; diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index f918360518e..69f28f955e5 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -1,47 +1,98 @@ class CfgVehicles { class ACE_Module; + + // Basic class ACE_ModuleUI: ACE_Module { author = ECSTRING(common,ACETeam); category = "ACE"; - displayName = CSTRING(ModuleDisplayName); + displayName = CSTRING(ModuleName); function = QFUNC(moduleInit); scope = 2; isGlobal = 1; //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); class Arguments { - class weaponInfo { - displayName = CSTRING(WeaponInfo); - description = CSTRING(WeaponInfoDesc); + class soldierVehicleWeaponInfo { + displayName = CSTRING(SoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; + class vehicleRadar { + displayName = CSTRING(VehicleRadar); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleCompass { + displayName = CSTRING(VehicleCompass); + typeName = "BOOL"; + defaultValue = 1; + }; + class commandMenu { + displayName = CSTRING(CommandMenu); + typeName = "BOOL"; + defaultValue = 1; + }; + class groupBar { + displayName = CSTRING(GroupBar); + typeName = "BOOL"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = CSTRING(ModuleDescription); + }; + }; + + // Advanced + class ACE_ModuleUI_Advanced: ACE_Module { + author = ECSTRING(common,ACETeam); + category = "ACE"; + displayName = CSTRING(ModuleName_Advanced); + function = QFUNC(moduleInitAdvanced); + scope = 2; + isGlobal = 1; + //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); + class Arguments { + // Upper Weapon Info class weaponName { displayName = CSTRING(WeaponName); - description = CSTRING(WeaponNameDesc); typeName = "BOOL"; defaultValue = 1; }; - /*class ammoCount { // Disabled in config by ace_reload + class weaponNameBackground { + displayName = CSTRING(WeaponNameBackground); + typeName = "BOOL"; + defaultValue = 1; + }; + class firingMode { + displayName = CSTRING(FiringMode); + typeName = "BOOL"; + defaultValue = 1; + }; + + // Lower Weapon Info + class ammoType { + displayName = CSTRING(AmmoType); + typeName = "BOOL"; + defaultValue = 1; + }; + class ammoCount { displayName = CSTRING(AmmoCount); description = CSTRING(AmmoCountDesc); typeName = "BOOL"; defaultValue = 1; - };*/ + }; class magCount { displayName = CSTRING(MagCount); - description = CSTRING(MagCountDesc); typeName = "BOOL"; defaultValue = 1; }; - class grenadeName { - displayName = CSTRING(GrenadeName); - description = CSTRING(GrenadeNameDesc); + class grenadeFlareType { + displayName = CSTRING(GrenadeFlareType); typeName = "BOOL"; defaultValue = 1; }; - class grenadeCount { - displayName = CSTRING(GrenadeCount); - description = CSTRING(GrenadeCountDesc); + class grenadeFlareCount { + displayName = CSTRING(GrenadeFlareCount); typeName = "BOOL"; defaultValue = 1; }; @@ -50,9 +101,64 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 1; }; + class weaponLowerInfoBackground { + displayName = CSTRING(WeaponLowerInfoBackground); + typeName = "BOOL"; + defaultValue = 1; + }; + + // Stance + class stance { + displayName = CSTRING(Stance); + typeName = "BOOL"; + defaultValue = 1; + }; + + + // Vehicle + class vehicleName { + displayName = CSTRING(VehicleName); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleNameBackground { + displayName = CSTRING(VehicleNameBackground); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleFuelBar { + displayName = CSTRING(VehicleFuelBar); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleSpeed { + displayName = CSTRING(VehicleSpeed); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleAltitude { + displayName = CSTRING(VehicleAltitude); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleDamage { + displayName = CSTRING(VehicleDamage); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleInfoBackground { + displayName = CSTRING(VehicleInfoBackground); + typeName = "BOOL"; + defaultValue = 1; + }; + class vehicleGunnerWeapon { + displayName = CSTRING(VehicleGunnerWeapon); + typeName = "BOOL"; + defaultValue = 1; + }; }; class ModuleDescription { - description = CSTRING(ModuleDescription); + description = CSTRING(ModuleDescription_Advanced); }; }; }; diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index d6b0883d4d4..d778fb27461 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -1,63 +1,41 @@ -#define DEBUG_MODE_FULL +//#define DEBUG_MODE_FULL #include "script_component.hpp" // Exit on Headless -if !(hasInterface) exitWith {}; +if (!hasInterface) exitWith {}; ["SettingsInitialized", { + // Selective UI Basic + call FUNC(setElements); + + // On load and entering/exiting a vehicle ["infoDisplayChanged", { - LOG("UI infoDisplayChanged"); - - private ["_elements", "_display"]; - - // All elements with their show/hide, IDD and IDC - _elements = [ - [GVAR(weaponInfo), 300, 2302], - [GVAR(weaponName), 300, 118], - //[GVAR(ammoCount), 300, 184], // Disabled in config by ace_reload - [GVAR(magCount), 300, 185], - [GVAR(grenadeName), 300, 152], - [GVAR(grenadeCount), 300, 151], - [GVAR(zeroing), 300, 168] - ]; - - disableSerialization; + // Selective UI Advanced { - _display = _x; - { - EXPLODE_3_PVT(_x,_show,_idd,_idc); - - //_idd = 300; //debug - //_idc = 122; //debug - if (_idd == ctrlIDD _display) then { - _show = if (_show) then {0} else {1}; - - (_display displayCtrl _idc) ctrlSetFade _show; - (_display displayCtrl _idc) ctrlCommit 0; - }; - } forEach _elements; - } forEach (uiNamespace getVariable "IGUI_displays"); // Those displays can be present several times for some reason + _x call FUNC(setAdvancedElement); + } forEach ELEMENTS_ADVANCED; }] call EFUNC(common,addEventHandler); -}] call EFUNC(common,addEventHandler); -/* -RscUnitInfo = 300 --------- -Alt = 122 (UNKNOWN) -Ammo = 119 (UNKNOWN) -AmmoCount = 184 (Ammo Count) -MagCount = 185 (Magazine Count) -CA_TextFlares = 151 (Grenade Count) -CA_TextFlaresMode = 152 (Grenade Name) -CA_Zeroing = 168 (Zeroing) -Weapon = 118 (Weapon Name) -WeaponInfoControlsGroupLeft = 2302 (entire RscUnitInfo without Zeroing) -WeaponInfoControlsGroupRight = 2303 (UNKNOWN) - - -RscStanceInfo = 303 -------- -StanceIndicator = 188 (UNKNOWN) -*/ + ["SettingChanged", { + params ["_name"]; + + // Selective UI Basic + if (_name in ELEMENTS_BASIC) then { + call FUNC(setElements); + }; + + // Selective UI Advanced + { + _x params ["_element"]; + + if (_name == _element) then { + _x call FUNC(setAdvancedElement); + TRACE_2("Setting Changed",_name,_element); + }; + } forEach ELEMENTS_ADVANCED; + + }] call EFUNC(common,addEventHandler); + +}] call EFUNC(common,addEventHandler); diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index 7e1c3ec9ed0..8a86e3ec327 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -3,5 +3,8 @@ ADDON = false; PREP(moduleInit); +PREP(moduleInitAdvanced); +PREP(setAdvancedElement); +PREP(setElements); ADDON = true; diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf index 02d9c2ecbfd..f4a57831c89 100644 --- a/addons/ui/functions/fnc_moduleInit.sqf +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -12,18 +12,21 @@ */ #include "script_component.hpp" -if !(isServer) exitWith {}; +if (!isServer) exitWith {}; -PARAMS_3(_logic,_units,_activated); +params ["_logic", "_units", "_activated"]; -if !(_activated) exitWith {}; +if (!_activated) exitWith {}; -[_logic, QGVAR(weaponInfo), "weaponInfo"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); -//[_logic, QGVAR(ammoCount), "ammoCount"] call EFUNC(common,readSettingFromModule); // Disabled in config by ace_reload -[_logic, QGVAR(magCount), "magCount"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(grenadeName), "grenadeName"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(grenadeCount), "grenadeCount"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); +// Exit if HUD visibility is hardcoded in mission config and showHUD command is overriden +if (isArray (missionConfigFile >> "showHUD")) exitWith { + ACE_LOGINFO("User Interface (Basic) Module Failed to Initialize - showHUD overriden in mission config!"); +}; -diag_log text "[ACE]: UI Module Initialized."; +[_logic, QGVAR(soldierVehicleWeaponInfo), "soldierVehicleWeaponInfo"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleRadar), "vehicleRadar"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleCompass), "vehicleCompass"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(commandMenu), "commandMenu"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(groupBar), "groupBar"] call EFUNC(common,readSettingFromModule); + +ACE_LOGINFO("User Interface (Basic) Module Initialized."); diff --git a/addons/ui/functions/fnc_moduleInitAdvanced.sqf b/addons/ui/functions/fnc_moduleInitAdvanced.sqf new file mode 100644 index 00000000000..ab5666af69c --- /dev/null +++ b/addons/ui/functions/fnc_moduleInitAdvanced.sqf @@ -0,0 +1,42 @@ +/* + * Author: Jonpas + * Initializes the UI module. + * + * Arguments: + * 0: Module Logic + * 1: Units + * 2: Activated + * + * Return Value: + * None + */ +#include "script_component.hpp" + +if (!isServer) exitWith {}; + +params ["_logic", "_units", "_activated"]; + +if (!_activated) exitWith {}; + +[_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(weaponNameBackground), "weaponNameBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(firingMode), "firingMode"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ammoType), "ammoType"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ammoCount), "ammoCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(magCount), "magCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(grenadeFlareType), "grenadeFlareType"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(grenadeFlareCount), "grenadeFlareCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(weaponLowerInfoBackground), "weaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(stance), "stance"] call EFUNC(common,readSettingFromModule); + +[_logic, QGVAR(vehicleName), "vehicleName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleNameBackground), "vehicleNameBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleFuelBar), "vehicleFuelBar"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleSpeed), "vehicleSpeed"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleAltitude), "vehicleAltitude"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleDamage), "vehicleDamage"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleInfoBackground), "vehicleInfoBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleGunnerWeapon), "vehicleGunnerWeapon"] call EFUNC(common,readSettingFromModule); + +ACE_LOGINFO("User Interface (Advanced) Module Initialized."); diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf new file mode 100644 index 00000000000..c87a79ffae9 --- /dev/null +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -0,0 +1,43 @@ +/* + * Author: Jonpas + * Sets advanced visible element of the UI using displays and controls. + * + * Arguments: + * 0: Show/Hide Element OR Element Variable + * 1: Element IDD + * 2: Element IDCs + * + * Return Value: + * None + * + * Example: + * [show, 303, [188] ] call ace_ui_fnc_setAdvancedElement + * + * Public: No + */ +#include "script_component.hpp" + +params ["_show", "_idd", "_elements"]; + + +// Get show/hide boolean from mission namespace if it's a string +if (typeName _show == "STRING") then { + _show = missionNamespace getVariable _show; +}; +_show = [1, 0] select _show; + + +// Disable/Enable elements +{ + local _idc = _x; + + // Loop through IGUI displays as they can be present several times for some reason + { + if (_idd == ctrlIDD _x) then { + TRACE_3("Setting Element Visibility",_show,_idd,_idc); + + (_x displayCtrl _idc) ctrlSetFade _show; + (_x displayCtrl _idc) ctrlCommit 0; + }; + } forEach (uiNamespace getVariable "IGUI_displays"); +} forEach _elements; diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf new file mode 100644 index 00000000000..3952d8e337d --- /dev/null +++ b/addons/ui/functions/fnc_setElements.sqf @@ -0,0 +1,44 @@ +/* + * Author: Jonpas + * Sets basic visible elements of the UI using showHUD setter. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_ui_fnc_setBasicElements + * + * Public: No + */ +#include "script_component.hpp" + +//@todo - change to EFUNC(common,showHud) setter + +local _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] + +showHUD [ + _shownHUD select 0, + GVAR(soldierVehicleWeaponInfo), + GVAR(vehicleRadar), + GVAR(vehicleCompass), + _shownHUD select 4, + GVAR(commandMenu), + GVAR(groupBar), + _shownHUD select 7 +]; + +/* +["UIselective", [ + _shownHUD select 0, + _shownHUD select 1, + _shownHUD select 2, + _shownHUD select 3, + _shownHUD select 4, + GVAR(commandMenu), + _shownHUD select 6, + _shownHUD select 7 +]] call EFUNC(common,showHud); +*/ diff --git a/addons/ui/functions/script_component.hpp b/addons/ui/functions/script_component.hpp new file mode 100644 index 00000000000..656228f7424 --- /dev/null +++ b/addons/ui/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\ui\script_component.hpp" diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index a0fa713f9fb..2a9e5823063 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -10,3 +10,75 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + + +// Elements +#define ELEMENTS_BASIC [QGVAR(soldierVehicleWeaponInfo), QGVAR(vehicleRadar), QGVAR(vehicleCompass), QGVAR(commandMenu), QGVAR(groupBar)] + +// Element, IDD, IDC +#define ELEMENTS_ADVANCED [ \ + [QGVAR(weaponName), 300, [118] ], \ + [QGVAR(weaponNameBackground), 300, [1001, 1008] ], \ + [QGVAR(firingMode), 300, [187, 1203] ], \ + [QGVAR(ammoType), 300, [155] ], \ + [QGVAR(ammoCount), 300, [184] ], \ + [QGVAR(magCount), 300, [185] ], \ + [QGVAR(grenadeName), 300, [152] ], \ + [QGVAR(grenadeCount), 300, [151] ], \ + [QGVAR(weaponLowerInfoBackground), 300, [1202] ], \ + [QGVAR(zeroing), 300, [168] ], \ + [QGVAR(stance), 303, [188, 1201] ], \ + [QGVAR(vehicleName), 300, [120] ], \ + [QGVAR(vehicleNameBackground), 300, [1000, 1013] ], \ + [QGVAR(vehicleFuelBar), 300, [113, 1202] ], \ + [QGVAR(vehicleSpeed), 300, [121, 1004, 1006] ], \ + [QGVAR(vehicleAltitude), 300, [122, 1005, 1014] ], \ + [QGVAR(vehicleDamage), 300, [111] ], \ + [QGVAR(vehicleInfoBackground), 300, [1200] ], \ + [QGVAR(vehicleGunnerWeapon), 300, [150] ] \ +] + + +/* +RscUnitInfo = 300 +-------------------- +118 (Weapon Name) ++ 1001 (Weapon Name Background 1/2) ++ 1008 (Weapon Name Background 2/2) + +187 (Firing Mode) ++ 1203 (Firing Mode Background) + +155 (Ammo Type) +184 (Ammo Count) - disabled in config by ace_reload +185 (Magazine Count) +152 (Grenade/Flare Type) +151 (Grenade/Flare Count) +1202 (Lower Weapon Info Background) +168 (Zeroing) + + +120 (Vehicle Name) +1000 (Vehicle Name Background 1/2) ++ 1013 (Vehicle Name Background 2/2) + +113 (Vehicle Fuel Bar) ++ 1202 (Vehicle Fuel Bar Background) + +121 (Vehicle Speed Number) ++ 1004 (Vehicle Speed Unit) ++ 1006 (Vehicle Speed Background) +122 (Vehicle Altitude Number) ++ 1005 (Vehicle Altitude Units) ++ 1014 (Vehicle Altitude Background) +111 (Vehicle Damage) +1200 (Vehicle Info Background) + +150 (Vehicle Gunner Weapon) + + +RscStanceInfo = 303 +-------------------- +188 (Stance) ++ 1201 (Stance Background) +*/ diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index daabe804532..e320d3ce395 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -1,50 +1,101 @@ - + - - Weapon Info + + User Interface + + + + User Interface (Basic) + + + This module allows hiding of basic user interface parts. Makes some User Interface (Advanced) settings inoperable. + + + + Soldier/Vehicle/Weapon Information + + + Vehicle Radar - - Entire weapon info interface (weapon name, firing mode, magazine info, ammo count, magazine count, grenade count) except zeroing. + + Vehicle Compass + + Command Menu + + + Group Bar + + + + + User Interface (Advanced) + + + This module allows hiding of specific user interface parts, more detailed than basic. User Interface (Basic) settings will make some of the settings inoperable. + + Weapon Name - - Requires enabled Weapon Info + + Weapon Name Background + + + Firing Mode + + + Ammo Type Ammo Count - Requires enabled Weapon Info + Always disabled on foot by ace_reload. Magazine Count - - Requires enabled Weapon Info + + Grenade/Flare Type - - Grenade Name + + Grenade/Flare Count - - Requires enabled Weapon Info + + Zeroing - - Grenade Count + + Weapon Lower Info Background - - Requires enabled Weapon Info + + Stance - - Zeroing + + + Vehicle Name - - User Interface + + Vehicle Name Background - - This module allows hiding of specific user interface parts. + + Vehicle Fuel Bar + + + Vehicle Speed + + + Vehicle Altitude + + + Vehicle Damage + + + Vehicle Info Background + + + Vehicle Gunner Weapon - \ No newline at end of file + From e9505523451810d3edd100d5d473a2f4e2cd8bfa Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 27 Feb 2016 00:29:30 -0300 Subject: [PATCH 006/268] Track temperatures of spare barrels --- addons/overheating/CfgMagazines.hpp | 11 ++++ addons/overheating/CfgVehicles.hpp | 5 +- addons/overheating/CfgWeapons.hpp | 11 ---- addons/overheating/XEH_PREP.hpp | 2 + addons/overheating/XEH_postInit.sqf | 40 +++++++++++++ addons/overheating/config.cpp | 2 + .../functions/fnc_calculateCooling.sqf | 58 +++++++++++++++++++ .../functions/fnc_swapBarrelCallback.sqf | 12 +++- ...c_updateSpareBarrelsTemperaturesThread.sqf | 40 +++++++++++++ .../functions/fnc_updateTemperature.sqf | 44 +------------- 10 files changed, 167 insertions(+), 58 deletions(-) create mode 100644 addons/overheating/CfgMagazines.hpp create mode 100644 addons/overheating/functions/fnc_calculateCooling.sqf create mode 100644 addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf diff --git a/addons/overheating/CfgMagazines.hpp b/addons/overheating/CfgMagazines.hpp new file mode 100644 index 00000000000..ad381ff30e9 --- /dev/null +++ b/addons/overheating/CfgMagazines.hpp @@ -0,0 +1,11 @@ +class CfgMagazines { + class CA_Magazine; + class ACE_SpareBarrel: CA_Magazine { + descriptionshort = CSTRING(SpareBarrelDescription); + picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); + displayName = "ACE Spare Barrel"; //!!!CANNOT be localized!!!: because it is used as part of the magazineDetail string + count = 1; + mass = 40; + ACE_isUnique = 1; + }; +}; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index c7d9c6790a6..4911fcb7f64 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -15,7 +15,7 @@ class CfgVehicles { }; class ACE_SwapBarrel { displayName = CSTRING(SwapBarrel); - condition = QUOTE( 'ACE_SpareBarrel' in items _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); + condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(swapBarrel); ); showDisabled = 0; priority = 3; @@ -99,7 +99,7 @@ class CfgVehicles { MACRO_ADDITEM(ACE_SpareBarrel,6); }; }; - +/* // Add ACE_SpareBarrel to every machine gunner. #define MACRO_ADDSPAREBARREL \ items[] = {"FirstAidKit", "ACE_SpareBarrel"}; \ @@ -124,4 +124,5 @@ class CfgVehicles { // Czech class I_Soldier_02_F; class I_Soldier_AR_F:I_Soldier_02_F {MACRO_ADDSPAREBARREL}; class I_Soldier_support_base_F; class I_Soldier_AAR_F:I_Soldier_support_base_F {MACRO_ADDSPAREBARREL}; +*/ }; diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index f59c4d79112..c7a83eec6e5 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -2,17 +2,6 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - class ACE_SpareBarrel: ACE_ItemCore { - displayname = CSTRING(SpareBarrelName); - descriptionshort = CSTRING(SpareBarrelDescription); - //model = ""; - picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); - scope = 2; - class ItemInfo: InventoryItem_Base_F { - mass = 30; - }; - }; - class RifleCore; class Rifle: RifleCore { //Mean Rounds Between Stoppages (this will be scaled based on the barrel temp) diff --git a/addons/overheating/XEH_PREP.hpp b/addons/overheating/XEH_PREP.hpp index 312b8bb0c5e..26366b98968 100644 --- a/addons/overheating/XEH_PREP.hpp +++ b/addons/overheating/XEH_PREP.hpp @@ -1,4 +1,5 @@ +PREP(calculateCooling); PREP(canUnjam); PREP(checkTemperature); PREP(clearJam); @@ -10,5 +11,6 @@ PREP(jamWeapon); PREP(overheat); PREP(swapBarrel); PREP(swapBarrelCallback); +PREP(updateSpareBarrelsTemperaturesThread); PREP(updateTemperature); PREP(updateTemperatureThread); diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 0bb2da22cae..b19b96272d5 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -8,6 +8,46 @@ if (isServer) then { GVAR(pseudoRandomList) pushBack [-1 + random 2, -1 + random 2]; }; publicVariable QGVAR(pseudoRandomList); + + // Keep track of the temperature of stored spare barrels + GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; + ["spareBarrelLoadedCoolest", { + params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; + TRACE_4("spareBarrelLoadedCoolest1",_unit,_weapon,_weaponTemp,_barrelMass); + + // Find all spare barrel the player has + private _allMags = magazinesDetail _unit; + TRACE_1("spareBarrelLoadedCoolest2",_allMags); + _allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; + TRACE_1("spareBarrelLoadedCoolest3",_allMags); + if ((count _allMags) < 1) exitWith {}; + + // Determine which on is coolest + private _coolestTemp = 10000; + private _coolestMag = _allMags select 0; + { + private _temp = 0; + if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { + _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; + }; + TRACE_2("spareBarrelLoadedCoolest4",_x,_temp); + if (_temp < _coolestTemp) then { + _coolestTemp = _temp; + _coolestMag = _x; + }; + } forEach _allMags; + TRACE_3("spareBarrelLoadedCoolest5",_coolestTemp,_coolestMag,_weaponTemp); + + // The new weapon temperature is similar to the coolest barrel + // Publish the new temperature value + _unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; + + // Heat up the coolest barrel to the former weapon temperature + [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; + }] call EFUNC(common,addEventHandler); + + // Schedule cool down calculation of stored spare barrels + [] call FUNC(updateSpareBarrelsTemperaturesThread); }; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index c57e55913dc..673edcf77f0 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -18,6 +18,8 @@ class CfgPatches { #include "CfgVehicles.hpp" +#include "CfgMagazines.hpp" + #include "CfgWeapons.hpp" #include "ACE_Settings.hpp" diff --git a/addons/overheating/functions/fnc_calculateCooling.sqf b/addons/overheating/functions/fnc_calculateCooling.sqf new file mode 100644 index 00000000000..955c41441e8 --- /dev/null +++ b/addons/overheating/functions/fnc_calculateCooling.sqf @@ -0,0 +1,58 @@ +/* + * Author: esteldunedain + * Calculate the cooling down of a weapon over a time interval. + * + * Argument: + * 0: Initial temperature + * 1: Barrel mass + * 2: Time interval + * + * Return value: + * Final temperature + * + * Example: + * [_temperature, _barrelMass, _totalTime] call ace_overheating_fnc_calculateCooling + * + * Public: No + */ +#include "script_component.hpp" + +params ["_temperature", "_barrelMass", "_totalTime"]; + +// If a long time passed since the last shot, there's no need to calculate anything; the weapon should be cool +if (_totalTime > 1800) exitWith {0}; + +//AR-15 (0.00570m bullet diameter) (barrel diameter usually 0.75" or 0.008255m radius) +//Steel Denisty = 7850 m^3 / kg +//Area of a cylinder (2/r)*(Pi * r^3 + V) - for a 0.008255m radius barrel -> Area = 210(1/meters) * Volume +//Adjusted volume for being hollowed out is ~1.1x +//So Area = 210 * 1.1 * (mass / 7850) = mass * 0.029427 (for steel near that diameter) + +private _barrelSurface = _barrelMass * 0.029427; + +TRACE_4("cooling",_temperature,_totalTime,_barrelMass,_barrelSurface); + +private _time = 0; +while {true} do { + private _deltaTime = (_totalTime - _time) min 20; + + _temperature = _temperature - ( + // Convective cooling + 25 * _barrelSurface * _temperature + // Radiative cooling + + 0.4 * 5.67e-8 * _barrelSurface * + ( (_temperature + 273.15)*(_temperature + 273.15) + * (_temperature + 273.15)*(_temperature + 273.15) + - 273.15 * 273.15 * 273.15 *273.15 ) + ) * _deltaTime / (_barrelMass * 466); + + if (_temperature < 1) exitWith {0}; + + if (isNil "_temperature") exitWith { + diag_log text format ["[ACE] ERROR: _totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]; + 0 + }; + + _time = _time + _deltaTime; + if (_time >= _totalTime) exitWith { _temperature max 0 }; +}; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 9c62e77f21b..8bd63e48744 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -14,6 +14,7 @@ * * Public: No */ +#define DEBUG_MODE_FULL #include "script_component.hpp" params ["_player", "_weapon"]; @@ -26,7 +27,14 @@ playSound "ACE_BarrelSwap"; // don't consume the barrel, but rotate through them. [localize LSTRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); -// Publish the temperature variable -_player setVariable [format [QGVAR(%1_temp), _weapon], 0, true]; +private _temp = _player getVariable [format [QGVAR(%1_temp), _weapon], 0]; +private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; + +// Instruct the server to load the coolest spare barrel into the weapon and +// store the removed barrel with the former weapon temperature. The server +// also updates the current weapon temperature to match that of the new +// loaded barrel. +["spareBarrelLoadedCoolest", [_player, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); + // Store the update time _player setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; diff --git a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf new file mode 100644 index 00000000000..852cb1c580b --- /dev/null +++ b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf @@ -0,0 +1,40 @@ +/* + * Author: esteldunedain + * Calculate cooldown of all the stored spare barrels. + * + * Argument: + * None + * + * Return value: + * None + * + * Example: + * [] call ace_overheating_fnc_updateSpareBarrelsTemperaturesThread + * + * Public: No + */ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +private _pairs = []; +TRACE_1("updateSpareBarrelsTemperaturesThread1",GVAR(storedSpareBarrels)); +[GVAR(storedSpareBarrels), {_pairs pushBack [_key, _value];}] call CBA_fnc_hashEachPair; +TRACE_1("updateSpareBarrelsTemperaturesThread2",_pairs); +{ + _x params ["_barrelMagazineID","_value"]; + _value params ["_initialTemp","_initialTime", "_barrelMass"]; + + // Calculate cooling + private _finalTemp = [_initialTemp, _barrelMass, ACE_time - _initialTime] call FUNC(calculateCooling); + TRACE_4("updateSpareBarrelsTemperaturesThread3",_barrelMagazineID,_initialTemp,_finalTemp,_barrelMass); + if (_finalTemp < 5) then { + // The barrel is cool enough to keep calculating. Remove it from the hash + [GVAR(storedSpareBarrels), _barrelMagazineID] call CBA_fnc_hashRem; + } else { + // Store the new temp + [GVAR(storedSpareBarrels), _barrelMagazineID, [_finalTemp, ACE_time, _barrelMass]] call CBA_fnc_hashSet; + }; +} forEach _pairs; + +// Schedule for execution again after 10 seconds +[DFUNC(updateSpareBarrelsTemperaturesThread), [], 10] call EFUNC(common,waitAndExecute); diff --git a/addons/overheating/functions/fnc_updateTemperature.sqf b/addons/overheating/functions/fnc_updateTemperature.sqf index 89d59750242..1643fe55b41 100644 --- a/addons/overheating/functions/fnc_updateTemperature.sqf +++ b/addons/overheating/functions/fnc_updateTemperature.sqf @@ -29,50 +29,8 @@ private _lastTime = _unit getVariable [_timeVarName, 0]; private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; -_fnc_cooling = { - params ["_temperature", "_barrelMass", "_totalTime"]; - - // If a long time passed since the last shot, there's no need to calculate anything; the weapon should be cool - if (_totalTime > 1800) exitWith {0}; - - //AR-15 (0.00570m bullet diameter) (barrel diameter usually 0.75" or 0.008255m radius) - //Steel Denisty = 7850 m^3 / kg - //Area of a cylinder (2/r)*(Pi * r^3 + V) - for a 0.008255m radius barrel -> Area = 210(1/meters) * Volume - //Adjusted volume for being hollowed out is ~1.1x - //So Area = 210 * 1.1 * (mass / 7850) = mass * 0.029427 (for steel near that diameter) - - private _barrelSurface = _barrelMass * 0.029427; - - TRACE_4("cooling",_temperature,_totalTime,_barrelMass,_barrelSurface); - - private _time = 0; - while {true} do { - private _deltaTime = (_totalTime - _time) min 20; - - _temperature = _temperature - ( - // Convective cooling - 25 * _barrelSurface * _temperature - // Radiative cooling - + 0.4 * 5.67e-8 * _barrelSurface * - ( (_temperature + 273.15)*(_temperature + 273.15) - * (_temperature + 273.15)*(_temperature + 273.15) - - 273.15 * 273.15 * 273.15 *273.15 ) - ) * _deltaTime / (_barrelMass * 466); - - if (_temperature < 1) exitWith {0}; - - if (isNil "_temperature") exitWith { - diag_log text format ["[ACE] ERROR: _totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]; - 0 - }; - - _time = _time + _deltaTime; - if (_time >= _totalTime) exitWith { _temperature max 0 }; - }; -}; - // Calculate cooling -_temperature = [_temperature, _barrelMass, ACE_time - _lastTime] call _fnc_cooling; +_temperature = [_temperature, _barrelMass, ACE_time - _lastTime] call FUNC(calculateCooling); TRACE_1("cooledTo",_temperature); // Calculate heating // Steel Heat Capacity = 466 J/(Kg.K) From b8f955468cc4b255eba4d922c03d8d2e972dc66b Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 27 Feb 2016 01:46:27 -0300 Subject: [PATCH 007/268] First version of "Check spare barrel temperatures" action --- addons/overheating/CfgVehicles.hpp | 9 +++++ addons/overheating/XEH_postInit.sqf | 61 +++++++++++++++++++++++++++++ addons/overheating/stringtable.xml | 18 +++++++++ 3 files changed, 88 insertions(+) diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 4911fcb7f64..61b619a79bf 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -30,6 +30,15 @@ class CfgVehicles { priority = 2.9; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); }; + class ACE_CheckTemperatureSpareBarrels { + displayName = CSTRING(CheckTemperatureSpareBarrelsShort); + condition = QUOTE( 'ACE_SpareBarrel' in magazines _player); + exceptions[] = {"isNotInside", "isNotSitting"}; + statement = QUOTE([ARR_2('spareBarrelsCheckTemperatures',[ARR_2(_player,_player)])] call EFUNC(common,serverEvent);); + showDisabled = 0; + priority = 2.8; + icon = QUOTE(PATHTOF(UI\temp_ca.paa)); + }; }; }; }; diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index b19b96272d5..f29a1c624cc 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -11,6 +11,67 @@ if (isServer) then { // Keep track of the temperature of stored spare barrels GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; + + ["spareBarrelsCheckTemperatures", { + params ["_player","_unit"]; + // Find all spare barrel the player has + private _allMags = magazinesDetail _unit; + _allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; + if ((count _allMags) < 1) exitWith {}; + + // Determine the temp of each barrel + private _temps = []; + { + private _temp = 0; + if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { + _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; + }; + _temps pushBack _temp; + } forEach _allMags; + TRACE_1("_temps",_temps); + + // Count cool + private _countCool = {_x < 20} count _temps; + private _countWarm = {(_x >= 20) && (_x < 100)} count _temps; + private _countHot = {(_x >= 100) && (_x < 200)} count _temps; + private _countVeryHot = {(_x >= 200) && (_x < 600)} count _temps; + private _countExtremelyHot = {_x >= 600} count _temps; + private _output = ["%1 %2%3%4 %5%6%7 %8%9%10 %11%12%13 %14"]; + private _size = 1.0; + if (_countCool > 0) then { + _output pushBack _countCool; + _output pushBack LSTRING(BarrelCool); + _output pushBack "
"; + _size = _size + 0.5; + }; + if (_countWarm > 0) then { + _output pushBack _countWarm; + _output pushBack LSTRING(BarrelWarm); + _output pushBack "
"; + _size = _size + 0.5; + }; + if (_countHot > 0) then { + _output pushBack _countHot; + _output pushBack LSTRING(BarrelHot); + _output pushBack "
"; + _size = _size + 0.5; + }; + if (_countVeryHot > 0) then { + _output pushBack _countVeryHot; + _output pushBack LSTRING(BarrelVeryHot); + _output pushBack "
"; + _size = _size + 0.5; + }; + if (_countExtremelyHot > 0) then { + _output pushBack _countExtremelyHot; + _output pushBack LSTRING(BarrelExtremelyHot); + _size = _size + 0.5; + }; + + TRACE_1("_output",_output); + ["displayTextStructured", [_player], [_output, _size, _player]] call EFUNC(common,targetEvent); + }] call EFUNC(common,addEventHandler); + ["spareBarrelLoadedCoolest", { params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; TRACE_4("spareBarrelLoadedCoolest1",_unit,_weapon,_weaponTemp,_barrelMass); diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 57a9fee5660..1e2490ea525 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -224,6 +224,9 @@ Sto controllando la temperatura... Проверка температуры...
+ + Check spare barrel temperatures + Temperature Temperatur @@ -236,5 +239,20 @@ Temperatura Температура + + Cool Spare Barrel/s + + + Warm Spare Barrel/s + + + Hot Spare Barrel/s + + + Very Hot Spare Barrel/s + + + Extremele Hot Spare Barrel/s + \ No newline at end of file From 3bbabac2d71c918b7b36cbdfa70f20d3b801f111 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:12:56 -0300 Subject: [PATCH 008/268] Rename and add comments to the function that tracks the units vital loop. Use waitAndExecute instead of a pfh for better performance. --- addons/medical/XEH_PREP.hpp | 3 +- .../functions/fnc_addToInjuredCollection.sqf | 59 ------------------- addons/medical/functions/fnc_addVitalLoop.sqf | 30 ++++++++++ .../medical/functions/fnc_adjustPainLevel.sqf | 2 +- addons/medical/functions/fnc_handleDamage.sqf | 4 +- addons/medical/functions/fnc_handleLocal.sqf | 3 +- .../fnc_treatmentTourniquetLocal.sqf | 3 +- .../functions/fnc_treatment_success.sqf | 2 +- addons/medical/functions/fnc_vitalLoop.sqf | 48 +++++++++++++++ 9 files changed, 88 insertions(+), 66 deletions(-) delete mode 100644 addons/medical/functions/fnc_addToInjuredCollection.sqf create mode 100644 addons/medical/functions/fnc_addVitalLoop.sqf create mode 100644 addons/medical/functions/fnc_vitalLoop.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index 4184f096f7c..6cbce0df78e 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -11,11 +11,11 @@ PREP(actionLoadUnit); PREP(actionUnloadUnit); PREP(addDamageToUnit); PREP(addHeartRateAdjustment); -PREP(addToInjuredCollection); PREP(addToLog); PREP(addToTriageCard); PREP(addUnconsciousCondition); PREP(addUnloadPatientActions); +PREP(addVitalLoop); PREP(adjustPainLevel); PREP(canAccessMedicalEquipment); PREP(canTreat); @@ -96,6 +96,7 @@ PREP(treatmentTourniquet); PREP(treatmentTourniquetLocal); PREP(useItem); PREP(useItems); +PREP(vitalLoop); PREP(displayPatientInformation); PREP(displayTriageCard); PREP(dropDownTriageCard); diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf deleted file mode 100644 index aa545f491eb..00000000000 --- a/addons/medical/functions/fnc_addToInjuredCollection.sqf +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Author: Glowbal - * Enabled the vitals loop for a unit. - * - * Arguments: - * 0: The Unit - * - * ReturnValue: - * None - * - * Public: Yes - */ - -#include "script_component.hpp" - -params ["_unit", ["_force", false]]; - -if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { - - if !(local _unit) exitWith { - ["addToInjuredCollection", _unit, [_unit, _force]] call EFUNC(common,targetEvent); - }; - - if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{}; - _unit setVariable [QGVAR(addedToUnitLoop), true, true]; - - [{ - params ["_args", "_idPFH"]; - _args params ["_unit", "_interval"]; - _interval = ACE_time - _interval; - (_this select 0) set [1, ACE_time]; - - if (!alive _unit || !local _unit) then { - [_idPFH] call CBA_fnc_removePerFrameHandler; - if (!local _unit) then { - if (GVAR(level) >= 2) then { - _unit setVariable [QGVAR(heartRate), _unit getVariable [QGVAR(heartRate), 80], true]; - _unit setVariable [QGVAR(bloodPressure), _unit getVariable [QGVAR(bloodPressure), [80, 120]], true]; - }; - _unit setVariable [QGVAR(bloodVolume), _unit getVariable [QGVAR(bloodVolume), 100], true]; - }; - } else { - [_unit, _interval] call FUNC(handleUnitVitals); - - private "_pain"; - _pain = _unit getVariable [QGVAR(pain), 0]; - if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { - // This introduces wierd unconscious behaviour for basic medical and possibly also advanced. - // TODO This is disabled as it's considered non critical code. - // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely. - /*if (_pain > 0.7 && {random(1) > 0.6}) then { - [_unit] call FUNC(setUnconscious); - };*/ - - [_unit, _pain] call FUNC(playInjuredSound); - }; - }; - }, 1, [_unit, ACE_time]] call CBA_fnc_addPerFrameHandler; -}; diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf new file mode 100644 index 00000000000..f3c8c380bbb --- /dev/null +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -0,0 +1,30 @@ +/* + * Author: Glowbal + * Enabled the vitals loop for a unit. + * + * Arguments: + * 0: The Unit + * + * ReturnValue: + * None + * + * Public: Yes + */ + +#include "script_component.hpp" + +params ["_unit", ["_force", false]]; + +if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {}; + +if !(local _unit) exitWith { + ["addVitalLoop", _unit, [_unit, _force]] call EFUNC(common,targetEvent); +}; + +// Quit if the unit already has a vital loop, or is dead, unless it's forced +if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{}; + +// Schedule the loop to be executed again later +// @todo: should the loop be started righ away instead? +_unit setVariable [QGVAR(addedToUnitLoop), true, true]; +[DFUNC(vitalLoop), 1, [_unit, ACE_time]] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_adjustPainLevel.sqf b/addons/medical/functions/fnc_adjustPainLevel.sqf index df82e06823d..7b97cdc48f5 100644 --- a/addons/medical/functions/fnc_adjustPainLevel.sqf +++ b/addons/medical/functions/fnc_adjustPainLevel.sqf @@ -35,6 +35,6 @@ _pain = _pain max 0; _unit setVariable [QGVAR(pain), _pain]; //Start up the vital watching (if not already running) -[_unit] call FUNC(addToInjuredCollection); +[_unit] call FUNC(addVitalLoop); _pain diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index cd0b4b1b275..b46ffcf1ad5 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -102,8 +102,8 @@ if ((_minLethalDamage <= _newDamage) && {[_unit, [_effectiveSelectionName] call _damageReturn = _damageReturn min 0.89; }; - -[_unit] call FUNC(addToInjuredCollection); +// Start the loop that tracks the unit vitals +[_unit] call FUNC(addVitalLoop); if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith { private _delayedUnconsicous = false; diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf index 91689f311f5..270a993b438 100644 --- a/addons/medical/functions/fnc_handleLocal.sqf +++ b/addons/medical/functions/fnc_handleLocal.sqf @@ -17,8 +17,9 @@ params ["_unit", "_local"]; if (_local) then { + // If the unit had a loop tracking its vitals, restart it locally if (_unit getVariable[QGVAR(addedToUnitLoop),false]) then { - [_unit, true] call FUNC(addToInjuredCollection); + [_unit, true] call FUNC(addVitalLoop); }; if ((_unit getVariable ["ACE_isUnconscious",false]) && {count (_unit getVariable [QGVAR(unconsciousArguments), []]) >= 6}) then { diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index be9b03c9f1a..3b181b23877 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -16,7 +16,8 @@ private ["_tourniquets", "_part", "_applyingTo"]; params ["_target", "_tourniquetItem", "_selectionName"]; -[_target] call FUNC(addToInjuredCollection); +//If we're not already tracking vitals, start: +[_target] call FUNC(addVitalLoop); _part = [_selectionName] call FUNC(selectionNameToNumber); diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index d8a4d3b3366..a9ef534346f 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -92,7 +92,7 @@ _args call FUNC(createLitter); //If we're not already tracking vitals, start: if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { - [_target] call FUNC(addToInjuredCollection); + [_target] call FUNC(addVitalLoop); }; ["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call EFUNC(common,localEvent); diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf new file mode 100644 index 00000000000..fcfb638143e --- /dev/null +++ b/addons/medical/functions/fnc_vitalLoop.sqf @@ -0,0 +1,48 @@ +/* + * Author: Glowbal, esteldunedain + * Vital loop for a unit. + * + * Arguments: + * 0: The Unit + * 1: Time of last computation + * + * ReturnValue: + * None + * + * Public: Yes + */ + +#include "script_component.hpp" + +params ["_unit", "_lastTime"]; + +// If the unit died the loop is finished +if (!alive _unit) exitWith {}; + +// If locality changed, broadcast the last medical state and finish the local loop +if (!local _unit) exitWith { + if (GVAR(level) >= 2) then { + _unit setVariable [QGVAR(heartRate), _unit getVariable [QGVAR(heartRate), 80], true]; + _unit setVariable [QGVAR(bloodPressure), _unit getVariable [QGVAR(bloodPressure), [80, 120]], true]; + }; + _unit setVariable [QGVAR(bloodVolume), _unit getVariable [QGVAR(bloodVolume), 100], true]; +}; + +// Handle unit vitals +[_unit, ACE_time - _lastTime] call FUNC(handleUnitVitals); + +// Play injured sounds +private _pain = _unit getVariable [QGVAR(pain), 0]; +if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { + // This introduces wierd unconscious behaviour for basic medical and possibly also advanced. + // TODO This is disabled as it's considered non critical code. + // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely. + /*if (_pain > 0.7 && {random(1) > 0.6}) then { + [_unit] call FUNC(setUnconscious); + };*/ + + [_unit, _pain] call FUNC(playInjuredSound); +}; + +// Schedule the loop to be executed again later +[DFUNC(vitalLoop), 1, [_unit, ACE_time]] call EFUNC(common,waitAndExecute); From bed51ac8a4c9a121f3cdff554e8be9adf43af220 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:26:05 -0300 Subject: [PATCH 009/268] Fix waitAndExecute syntax --- addons/medical/functions/fnc_addVitalLoop.sqf | 4 ++-- addons/medical/functions/fnc_vitalLoop.sqf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index f3c8c380bbb..52b2cc11f91 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -24,7 +24,7 @@ if !(local _unit) exitWith { // Quit if the unit already has a vital loop, or is dead, unless it's forced if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force) exitWith{}; -// Schedule the loop to be executed again later +// Schedule the loop to be executed again 1 sec later // @todo: should the loop be started righ away instead? _unit setVariable [QGVAR(addedToUnitLoop), true, true]; -[DFUNC(vitalLoop), 1, [_unit, ACE_time]] call EFUNC(common,waitAndExecute); +[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf index fcfb638143e..d555f00a751 100644 --- a/addons/medical/functions/fnc_vitalLoop.sqf +++ b/addons/medical/functions/fnc_vitalLoop.sqf @@ -44,5 +44,5 @@ if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { [_unit, _pain] call FUNC(playInjuredSound); }; -// Schedule the loop to be executed again later -[DFUNC(vitalLoop), 1, [_unit, ACE_time]] call EFUNC(common,waitAndExecute); +// Schedule the loop to be executed again 1 sec later +[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); From 085860c7709c2e99bf4d6a25a21fd08e95e1f914 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:32:02 -0300 Subject: [PATCH 010/268] Restore addToInjuredCollection as a deprecated function --- addons/medical/XEH_PREP.hpp | 1 + .../functions/fnc_addToInjuredCollection.sqf | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 addons/medical/functions/fnc_addToInjuredCollection.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index 6cbce0df78e..8383b7ad8af 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -11,6 +11,7 @@ PREP(actionLoadUnit); PREP(actionUnloadUnit); PREP(addDamageToUnit); PREP(addHeartRateAdjustment); +PREP(addToInjuredCollection); PREP(addToLog); PREP(addToTriageCard); PREP(addUnconsciousCondition); diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf new file mode 100644 index 00000000000..77d2378d0d4 --- /dev/null +++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf @@ -0,0 +1,17 @@ +/* + * Author: Glowbal + * Enabled the vitals loop for a unit. + * + * Arguments: + * 0: The Unit + * + * ReturnValue: + * None + * + * Deprecated + */ +#include "script_component.hpp" + +ACE_DEPRECATED("ace_medical_fnc_addToInjuredCollection","3.7.0","ace_medical_fnc_addVitalLoop"); + +_this call FUNC(addVitalLoop); From bbb84ec7d14d27536be99408fcea22e51d2534b8 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:50:28 -0300 Subject: [PATCH 011/268] Move the tourniquet loop to handleUnitVitals. Makes the tourniquet pain compatible with swapping localities --- .../functions/fnc_handleUnitVitals.sqf | 13 +++++++++++ .../fnc_treatmentTourniquetLocal.sqf | 23 +------------------ 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 6159351cc95..d161bbb3850 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -110,6 +110,19 @@ if (GVAR(level) >= 2) then { }; }; + // Handle toruniquets + private _tourniquets = _unit getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; + { + private _appliedTime = _x; + if (_appliedTime > 0) then { + // There's a tourniquet applied at time _appliedTime + if (CBA_missionTime - _appliedTime > 120) then { + // Increase pain at a rate of 0.001 units/s + _unit setVariable [QGVAR(pain), (_unit getVariable [QGVAR(pain), 0]) + 0.001]; + }; + } + } forEach _tourniquets; + // Set the vitals _heartRate = (_unit getVariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval); _unit setVariable [QGVAR(heartRate), _heartRate max 0, _syncValues]; diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index 3b181b23877..b8acc27c74a 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -23,26 +23,5 @@ _part = [_selectionName] call FUNC(selectionNameToNumber); // Place a tourniquet on the bodypart _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; -_applyingTo = (_tourniquets select _part) + 1 + round(random(100)); -_tourniquets set[_part, _applyingTo]; +_tourniquets set [_part, CBA_missionTime]; _target setVariable [QGVAR(tourniquets), _tourniquets, true]; - -[{ - params ["_args", "_idPFH"]; - _args params ["_target", "_applyingTo", "_part", "_time"]; - - if (!alive _target) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; - if !((_tourniquets select _part) == _applyingTo) exitWith { - // Tourniquet has been removed - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - if (ACE_time - _time > 120) then { - _target setVariable [QGVAR(pain), (_target getVariable [QGVAR(pain), 0]) + 0.005]; - }; -}, 5, [_target, _applyingTo, _part, ACE_time] ] call CBA_fnc_addPerFrameHandler; - -true From 35e13d535710645e116c659554e6d926b87dfde3 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:55:05 -0300 Subject: [PATCH 012/268] Fixes --- addons/medical/functions/fnc_handleUnitVitals.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index d161bbb3850..a76fa9a0983 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -110,7 +110,7 @@ if (GVAR(level) >= 2) then { }; }; - // Handle toruniquets + // Handle tourniquets private _tourniquets = _unit getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; { private _appliedTime = _x; @@ -120,7 +120,7 @@ if (GVAR(level) >= 2) then { // Increase pain at a rate of 0.001 units/s _unit setVariable [QGVAR(pain), (_unit getVariable [QGVAR(pain), 0]) + 0.001]; }; - } + }; } forEach _tourniquets; // Set the vitals From 21d4939abb1bee8d66c0ed01a1a54cf2e5af93fb Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 22:08:59 -0300 Subject: [PATCH 013/268] Optimize the computation of tourniquet pain. Fix pain not being able to decrease when above 10 --- .../functions/fnc_handleUnitVitals.sqf | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index a76fa9a0983..23272f0890c 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -110,18 +110,10 @@ if (GVAR(level) >= 2) then { }; }; - // Handle tourniquets - private _tourniquets = _unit getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; - { - private _appliedTime = _x; - if (_appliedTime > 0) then { - // There's a tourniquet applied at time _appliedTime - if (CBA_missionTime - _appliedTime > 120) then { - // Increase pain at a rate of 0.001 units/s - _unit setVariable [QGVAR(pain), (_unit getVariable [QGVAR(pain), 0]) + 0.001]; - }; - }; - } forEach _tourniquets; + // Handle pain due tourniquets, that have been applied more than 120 s ago + private _oldTourniquets = (_unit getVariable [QGVAR(tourniquets), []]) select {_x > 0 && {CBA_missionTime - _x > 120}}; + // Increase pain at a rate of 0.001 units/s per old tourniquet + _painStatus = _painStatus + (count _oldTourniquets) * 0.001 * _interval; // Set the vitals _heartRate = (_unit getVariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval); @@ -130,10 +122,11 @@ if (GVAR(level) >= 2) then { _bloodPressure = [_unit] call FUNC(getBloodPressure); _unit setVariable [QGVAR(bloodPressure), _bloodPressure, _syncValues]; - if (_painStatus > 0 && {_painStatus < 10}) then { - _painReduce = if (_painStatus > 5) then {0.002} else {0.001}; - _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues]; - }; + _painReduce = if (_painStatus > 5) then {0.002} else {0.001}; + + // @todo: replace this and the rest of the setVariable with EFUNC(common,setApproximateVariablePublic) + _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues]; + TRACE_8("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_painReduce,_heartRate,_bloodVolume,_bloodPressure,_interval,_syncValues,_unit); // TODO Disabled until implemented fully // Handle airway From 0e82cdfe8208a6ab1d9c8af7481181365aa554f3 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 22:50:04 -0300 Subject: [PATCH 014/268] Move to a function and comments the function that tracks the effects of medications over time. Use waitAndExecute instead of a pfh for better performance. --- addons/medical/XEH_PREP.hpp | 1 + .../functions/fnc_medicationEffectLoop.sqf | 42 +++++++++++++++++++ .../functions/fnc_onMedicationUsage.sqf | 21 +--------- 3 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 addons/medical/functions/fnc_medicationEffectLoop.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index 8383b7ad8af..906f4e18f7e 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -57,6 +57,7 @@ PREP(isMedic); PREP(isMedicalVehicle); PREP(isInStableCondition); PREP(itemCheck); +PREP(medicationEffectLoop); PREP(modifyMedicalAction); PREP(onMedicationUsage); PREP(onWoundUpdateRequest); diff --git a/addons/medical/functions/fnc_medicationEffectLoop.sqf b/addons/medical/functions/fnc_medicationEffectLoop.sqf new file mode 100644 index 00000000000..5ba54bfc9f2 --- /dev/null +++ b/addons/medical/functions/fnc_medicationEffectLoop.sqf @@ -0,0 +1,42 @@ +/* + * Author: Glowbal, esteldunedain + * Medication effect loop for an injection. + * + * Arguments: + * 0: Unit + * 1: Name of the Variable that is affected + * 2: Proportion of the effect applied + * 3: Rate at which the effect is applied + * 4: Viscosity adjustment rate + * 5: Pain reduction rate + * + * ReturnValue: + * None + * + * Public: Yes + */ + +#include "script_component.hpp" + +params ["_unit", "_variableName", "_amountDecreased","_decreaseRate", "_viscosityAdjustmentRate", "_painReduceRate"]; + +// If the unit died the loop is finished +if (!alive _unit) exitWith {}; + +// If locality changed finish the local loop +if (!local _unit) exitWith {}; + +// Apply medicinal effect +private _usedMeds = (_unit getVariable [_variableName, 0]) - _decreaseRate; +_unit setVariable [_variableName, _usedMeds]; + +// Restore the viscosity while the medication is leaving the system +_unit setVariable [QGVAR(peripheralResistance), ((_unit getVariable [QGVAR(peripheralResistance), 100]) - _viscosityAdjustmentRate) max 0]; +_unit setVariable [QGVAR(painSuppress), ((_unit getVariable [QGVAR(painSuppress), 0]) - _painReduceRate) max 0]; + +// Exit if the medication has finished it's effect +_amountDecreased = _amountDecreased + _decreaseRate; +if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _unit) exitWith {}; + +// Schedule the loop to be executed again 1 sec later +[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_onMedicationUsage.sqf b/addons/medical/functions/fnc_onMedicationUsage.sqf index fc7e8daa2df..2f2b9b63636 100644 --- a/addons/medical/functions/fnc_onMedicationUsage.sqf +++ b/addons/medical/functions/fnc_onMedicationUsage.sqf @@ -77,22 +77,5 @@ if (_hasOverDosed > 0 && GVAR(enableOverdosing)) then { _decreaseAmount = 1 / _timeInSystem; _viscosityAdjustment = _viscosityChange / _timeInSystem; -[{ - params ["_args", "_idPFH"]; - _args params ["_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_viscosityAdjustment", "_painReduce"]; - private "_usedMeds"; - _usedMeds = _target getVariable [_variable, 0]; - _usedMeds = _usedMeds - _decreaseAmount; - _target setVariable [_variable, _usedMeds]; - - _amountDecreased = _amountDecreased + _decreaseAmount; - - // Restoring the viscosity while the medication is leaving the system - _target setVariable [QGVAR(peripheralResistance), ((_target getVariable [QGVAR(peripheralResistance), 100]) - _viscosityAdjustment) max 0]; - _target setVariable [QGVAR(painSuppress), ((_target getVariable [QGVAR(painSuppress), 0]) - _painReduce) max 0]; - - if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _target) then { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - _args set [3, _amountDecreased]; -}, 1, [_target, _timeInSystem, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] ] call CBA_fnc_addPerFrameHandler; +// Run the loop that computes the effect of the medication over time +[_target, _timeInSystem, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] call FUNC(medicationEffectLoop); From 12895e798309352f7c032fc2c05f551e45a75263 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 22:58:09 -0300 Subject: [PATCH 015/268] Remove unneeded parameter --- addons/medical/functions/fnc_onMedicationUsage.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_onMedicationUsage.sqf b/addons/medical/functions/fnc_onMedicationUsage.sqf index 2f2b9b63636..28b1d4dd0bf 100644 --- a/addons/medical/functions/fnc_onMedicationUsage.sqf +++ b/addons/medical/functions/fnc_onMedicationUsage.sqf @@ -78,4 +78,4 @@ _decreaseAmount = 1 / _timeInSystem; _viscosityAdjustment = _viscosityChange / _timeInSystem; // Run the loop that computes the effect of the medication over time -[_target, _timeInSystem, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] call FUNC(medicationEffectLoop); +[_target, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] call FUNC(medicationEffectLoop); From 94e8bee3483911619de7bd92984f2e13f310d992 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 23:08:25 -0300 Subject: [PATCH 016/268] Move the pfh from setDead to a waitAndExecute loop: reviveStepLoop --- addons/medical/XEH_PREP.hpp | 1 + .../medical/functions/fnc_reviveStateLoop.sqf | 56 +++++++++++++++++++ addons/medical/functions/fnc_setDead.sqf | 37 +----------- 3 files changed, 59 insertions(+), 35 deletions(-) create mode 100644 addons/medical/functions/fnc_reviveStateLoop.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index 906f4e18f7e..b9ad6ba5463 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -64,6 +64,7 @@ PREP(onWoundUpdateRequest); PREP(onPropagateWound); PREP(parseConfigForInjuries); PREP(playInjuredSound); +PREP(reviveStateLoop); PREP(selectionNameToNumber); PREP(serverRemoveBody); PREP(setCardiacArrest); diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf new file mode 100644 index 00000000000..3e55f7b7ce4 --- /dev/null +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -0,0 +1,56 @@ +/* + * Author: Glowbal, esteldunedain + * Loop that handles a unit in the revive state. + * + * Arguments: + * 0: Unit + * + * ReturnValue: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_unit"] + +// If locality changed finish the local loop +// @todo: reinitiate the loop elsewhere +if (!local _unit) exitWith {}; + +private _startTime = _unit getVariable [QGVAR(reviveStartTime), 0]; + +// Remove heartbeat +if (GVAR(level) >= 2) then { + if (_unit getVariable [QGVAR(heartRate), 60] > 0) then { + _unit setVariable [QGVAR(heartRate), 0]; + }; +}; + +// If we are in revive state in a blown up vehicle, try to unload so that people can access the body +if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then { + TRACE_2("Unloading", _unit, vehicle _unit); + [_unit] call EFUNC(common,unloadPerson); +}; + +// If the timer run out, let the unit die and exit the loop +if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { + _unit setVariable [QGVAR(inReviveState), nil, true]; + _unit setVariable [QGVAR(reviveStartTime), nil]; + [_unit, true] call FUNC(setDead); +}; + +// If the unit was taken out from revive state, exit the loop +if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith { + // Revived without dieing, so in case we have lifes, remove one. + if (GVAR(amountOfReviveLives) > 0) then { + _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)]; + _unit setVariable [QGVAR(amountOfReviveLives), _lifesLeft - 1, true]; + }; + + _unit setVariable [QGVAR(reviveStartTime), nil]; +}; + +// Schedule the loop to be executed again 1 sec later +[DFUNC(reviveStateLoop), [_unit], 1] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 913431ccac9..061a28c081b 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -41,41 +41,8 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == _unit setVariable [QGVAR(reviveStartTime), ACE_time]; [_unit, true] call FUNC(setUnconscious); - [{ - private "_startTime"; - params ["_args", "_idPFH"]; - _args params ["_unit"]; - _startTime = _unit getVariable [QGVAR(reviveStartTime), 0]; - - //If we are in reivie state in a blown up vehicle, try to unload so that people can access the body - if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) then { - TRACE_2("Unloading", _unit, vehicle _unit); - [_unit] call EFUNC(common,unloadPerson); - }; - - if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - _unit setVariable [QGVAR(inReviveState), nil, true]; - _unit setVariable [QGVAR(reviveStartTime), nil]; - [_unit, true] call FUNC(setDead); - }; - - if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith { - // revived without dieing, so in case we have lifes, remove one. - if (GVAR(amountOfReviveLives) > 0) then { - _lifesLeft = _unit getVariable[QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)]; - _unit setVariable [QGVAR(amountOfReviveLives), _lifesLeft - 1, true]; - }; - - _unit setVariable [QGVAR(reviveStartTime), nil]; - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - if (GVAR(level) >= 2) then { - if (_unit getVariable [QGVAR(heartRate), 60] > 0) then { - _unit setVariable [QGVAR(heartRate), 0]; - }; - }; - }, 1, [_unit] ] call CBA_fnc_addPerFrameHandler; + // Run the loop that tracks the revive state + [_unit ] call FUNC(reviveStateLoop); false; }; From 4b702f68dfac6a89212b909e15231ae9668438c9 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 23:10:15 -0300 Subject: [PATCH 017/268] Make loops non public --- addons/medical/functions/fnc_medicationEffectLoop.sqf | 2 +- addons/medical/functions/fnc_vitalLoop.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_medicationEffectLoop.sqf b/addons/medical/functions/fnc_medicationEffectLoop.sqf index 5ba54bfc9f2..6d89675d8ae 100644 --- a/addons/medical/functions/fnc_medicationEffectLoop.sqf +++ b/addons/medical/functions/fnc_medicationEffectLoop.sqf @@ -13,7 +13,7 @@ * ReturnValue: * None * - * Public: Yes + * Public: No */ #include "script_component.hpp" diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf index d555f00a751..c9df4c6e91e 100644 --- a/addons/medical/functions/fnc_vitalLoop.sqf +++ b/addons/medical/functions/fnc_vitalLoop.sqf @@ -9,7 +9,7 @@ * ReturnValue: * None * - * Public: Yes + * Public: No */ #include "script_component.hpp" From 90a54397ae69ea5b6d1ca9812d92481f2716bb88 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 23:20:26 -0300 Subject: [PATCH 018/268] Move the litter cleanup PFH to a loop using waitAndExecute --- addons/medical/XEH_PREP.hpp | 1 + .../functions/fnc_handleCreateLitter.sqf | 19 ++--------- .../functions/fnc_litterCleanupLoop.sqf | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+), 17 deletions(-) create mode 100644 addons/medical/functions/fnc_litterCleanupLoop.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index b9ad6ba5463..7c030ecf986 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -117,3 +117,4 @@ PREP(unconsciousPFH); // Networked litter PREP(createLitter); PREP(handleCreateLitter); +PREP(litterCleanupLoop); diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index c87d51a7e1c..971342affbc 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -44,22 +44,7 @@ if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { GVAR(allCreatedLitter) pushBack [ACE_time, [_litterObject]]; if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then { + // Start the litter cleanup loop GVAR(litterPFHRunning) = true; - [{ - { - _x params ["_time", "_objects"]; - if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then { - { - deleteVehicle _x; - } forEach _objects; - GVAR(allCreatedLitter) set[_forEachIndex, objNull]; - }; - } forEach GVAR(allCreatedLitter); - GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull]; - - if ( (count GVAR(allCreatedLitter)) == 0) exitWith { - [(_this select 1)] call CBA_fnc_removePerFrameHandler; - GVAR(litterPFHRunning) = false; - }; - }, 30, []] call CBA_fnc_addPerFrameHandler; + call FUNC(litterCleanupLoop); }; diff --git a/addons/medical/functions/fnc_litterCleanupLoop.sqf b/addons/medical/functions/fnc_litterCleanupLoop.sqf new file mode 100644 index 00000000000..ac102d5d59d --- /dev/null +++ b/addons/medical/functions/fnc_litterCleanupLoop.sqf @@ -0,0 +1,33 @@ +/* + * Author: Glowbal, esteldunedain + * Loop that cleans up litter + * + * Arguments: + * None + * + * ReturnValue: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +{ + _x params ["_time", "_objects"]; + if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then { + { + deleteVehicle _x; + } forEach _objects; + GVAR(allCreatedLitter) set[_forEachIndex, objNull]; + }; +} forEach GVAR(allCreatedLitter); +GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull]; + +// If no more litter remaining, exit the loop +if ( (count GVAR(allCreatedLitter)) == 0) exitWith { + GVAR(litterPFHRunning) = false; +}; + +// Schedule the loop to be executed again 30 sec later +[DFUNC(litterCleanupLoop), [], 30] call EFUNC(common,waitAndExecute); From 9e682253f39f1e369f2163cd8912b95c3f71e4af Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 23:33:51 -0300 Subject: [PATCH 019/268] Move the dead body cleanup PFH to a loop using waitAndExecute --- addons/medical/XEH_PREP.hpp | 1 + .../medical/functions/fnc_bodyCleanupLoop.sqf | 30 +++++++++++++++++++ .../functions/fnc_serverRemoveBody.sqf | 20 ++----------- 3 files changed, 34 insertions(+), 17 deletions(-) create mode 100644 addons/medical/functions/fnc_bodyCleanupLoop.sqf diff --git a/addons/medical/XEH_PREP.hpp b/addons/medical/XEH_PREP.hpp index 7c030ecf986..d7322082c67 100644 --- a/addons/medical/XEH_PREP.hpp +++ b/addons/medical/XEH_PREP.hpp @@ -18,6 +18,7 @@ PREP(addUnconsciousCondition); PREP(addUnloadPatientActions); PREP(addVitalLoop); PREP(adjustPainLevel); +PREP(bodyCleanupLoop); PREP(canAccessMedicalEquipment); PREP(canTreat); PREP(canTreatCached); diff --git a/addons/medical/functions/fnc_bodyCleanupLoop.sqf b/addons/medical/functions/fnc_bodyCleanupLoop.sqf new file mode 100644 index 00000000000..03c12347132 --- /dev/null +++ b/addons/medical/functions/fnc_bodyCleanupLoop.sqf @@ -0,0 +1,30 @@ +/* + * Author: Glowbal, esteldunedain + * Loop that cleans up litter + * + * Arguments: + * None + * + * ReturnValue: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +{ + TRACE_2("body",_x,isPlayer _x); + if ((!isNull _x) && {!isPlayer _x}) then {deleteVehicle _x}; +} forEach GVAR(bodiesToDelete); + +// deleteVehicle doesn't have instant results so it won't usualy be filtered until next run +GVAR(bodiesToDelete) = GVAR(bodiesToDelete) - [objNull]; + +// If no more bodies remain, exit the loop +if (GVAR(bodiesToDelete) isEqualTo []) exitWith { + TRACE_1("array emptied - rem PFEH",GVAR(bodiesToDelete)); +}; + +// Schedule the loop to be executed again 20 sec later +[DFUNC(bodyCleanupLoop), [], 20] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf index de089b199b3..311199b1b80 100644 --- a/addons/medical/functions/fnc_serverRemoveBody.sqf +++ b/addons/medical/functions/fnc_serverRemoveBody.sqf @@ -26,23 +26,9 @@ TRACE_2("",_target,isPlayer _target); if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];}; GVAR(bodiesToDelete) pushBack _target; -//Start up PFEH to wait for bodies to be free to delete -if ((count GVAR(bodiesToDelete)) == 1) then { - TRACE_1("starting PFEH",GVAR(bodiesToDelete)); - [{ - { - TRACE_2("body",_x,isPlayer _x); - if ((!isNull _x) && {!isPlayer _x}) then {deleteVehicle _x}; - } forEach GVAR(bodiesToDelete); - - //deleteVehicle doesn't have instant results so it won't usualy be filtered until next run - GVAR(bodiesToDelete) = GVAR(bodiesToDelete) - [objNull]; - - if (GVAR(bodiesToDelete) isEqualTo []) then { - TRACE_1("array emptied - rem PFEH",GVAR(bodiesToDelete)); - [_this select 1] call CBA_fnc_removePerFrameHandler; - }; - }, 20, []] call CBA_fnc_addPerFrameHandler; +// Start up a loop to wait for bodies to be free to delete +if ((count GVAR(bodiesToDelete)) > 0) then { + [] call FUNC(bodyCleanupLoop); }; nil From 309f48ee0b4849705db91d0dc0eca0cc2a21d0c6 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Tue, 1 Mar 2016 08:56:43 -0300 Subject: [PATCH 020/268] Added remaining PT-BR translarions --- addons/cargo/stringtable.xml | 3 +++ addons/common/stringtable.xml | 1 + addons/explosives/stringtable.xml | 8 +++++++- addons/fastroping/stringtable.xml | 12 ++++++++++-- addons/frag/stringtable.xml | 4 +++- addons/gestures/stringtable.xml | 4 ++++ addons/headless/stringtable.xml | 7 +++++++ addons/hearing/stringtable.xml | 1 + addons/interaction/stringtable.xml | 5 ++++- addons/inventory/stringtable.xml | 7 +++++++ addons/medical/stringtable.xml | 18 ++++++++++++++++++ addons/mk6mortar/stringtable.xml | 21 +++++++++++++++++++++ addons/overheating/stringtable.xml | 13 ++++++++++++- addons/repair/stringtable.xml | 3 ++- addons/switchunits/stringtable.xml | 3 ++- addons/tagging/stringtable.xml | 13 +++++++++++++ addons/trenches/stringtable.xml | 12 ++++++++++++ 17 files changed, 127 insertions(+), 8 deletions(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index b4210a7755e..2b6ce0be173 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -175,6 +175,7 @@ Rendi oggetto caricabile Hacer objeto cargable Rendre l'objet chargeable + Fazer objeto carregável Sets the synced object as loadable by the cargo system. @@ -183,6 +184,7 @@ Imposta l'oggetto sincronizzato come caricabile dal sistema cargo Sincronizar un objecto para hacerlo cargable. Rend l'objet synchronisé chargeable par le système de cargaison. + Seta o objeto sincronizado como carregável Object's Size @@ -191,6 +193,7 @@ Dimensioni dell'oggetto Tamaño del objeto Taille de l'objet + Tamanho do objeto \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 7e9cba98027..9ff98bf95ff 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -802,6 +802,7 @@ Non c'è spazio per scaricare No hay espacio para descargar. Pas de place pour décharger + Sem espaço para descarregar \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index c63c990a160..80962d12ddc 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -647,6 +647,7 @@ Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Ataque Inferior) Mine M6 SLAM (Par le bas) + Mina M6 SLAM (Ataque Inferior) M6 SLAM Mine (Side Attack) @@ -661,6 +662,7 @@ Mina M6 SLAM (atak od boku) Mina M6 SLAM (Ataque Lateral) Mine M6 SLAM (De flanc) + Mina M6 SLAM (Ataque Lateral) Large IED (Urban, Pressure Plate) @@ -675,6 +677,7 @@ Duży IED (miejski, płyta naciskowa) IED Grande (Urbano, Placa de presión) Grand EEI (Urbain, plaque de pression) + IED Grande (Urbano, Placa de pressão) Large IED (Dug-in, Pressure Plate) @@ -689,6 +692,7 @@ Duży IED (zakopany, płyta naciskowa) IED Grande (Enterrado, Placa de presión) Grand EEI (Enterré, plaque de pression) + IED Grande (Enterrado, Placa de pressão) Small IED (Urban, Pressure Plate) @@ -703,6 +707,7 @@ Mały IED (miejski, płyta naciskowa) IED Pequeño (Urbano, Placa de presión) Petit EEI (Urbain, plaque de pression) + IED Pequeno(Urbano, Placa de pressão) Small IED (Dug-in, Pressure Plate) @@ -717,6 +722,7 @@ Mały IED (zakopany, płyta naciskowa) IED Pequeño (Enterrado, Placa de presión) Petit EEI (Enterré, plaque de pression) + IED Pequeno (Enterrado, Placa de pressão) Connect to %1 @@ -731,4 +737,4 @@ Conectar à %1 - + \ No newline at end of file diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index b65169b273d..997ff32ecfa 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -6,48 +6,56 @@ Rüste FRIES aus Wyposaż FRIES Equiper le FRIES + Equipar FRIES Equips compatible helicopters with a Fast Rope Insertion Extraction System. Rüstet kompatible Helikopter mit einem Fast Rope Insertion Extraction System aus. Wyposaża kompatybilne helikoptery w zestaw Fast Rope Insertion Extraction System. Equipe les hélicoptères compatibles avec un Module Fast Rope Insertion Extraction System. + Equipa um helicóptero compatível com o Fast Rope Insertion Exctraction System. Prepare fast roping system Bereite Fast Roping System vor Przygotuj system zjazdu na linach Préparer le système de corde lisse + Prepara sistema de descida rápida Deploy ropes Seile auswerfen Wypuść liny Déployer les cordes + Jogar cordas Fast rope Abseilen Zjedź na linie Descendre à la corde + Descida rápida Cut ropes Seile abwerfen Odetnij liny Détacher les cordes + Cortar cordas Equip helicopter with FRIES Rüste Helicopter mit FRIES aus Wyposaż helikopter w FRIES Equiper l'hélicoptère avec le FRIED + Equipar helicóptero com FRIES Equips the selected helicopter with a Fast Rope Insertion Extraction System Rüstet den ausgewählten Helicopter mit einem Fast Rope Insertion Extraction System aus Wyposaża wybrany helikopter w zestaw Fast Rope Insertion Extraction System Equipe l'hélicoptère sélectionné avec un Fast Rope Insertion Extraction System + Equipa o helicóptero selecionado com o Fast Rope Insertion Extraction System - + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 40b25f4aa60..9bd159ab4f7 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -67,6 +67,7 @@ Simulazione Riflessi Esplosioni Druckwellensimulation Activar simulación de reflexiones + Simulação de reflexo de explosão Enable the ACE Explosion Reflection Simulation @@ -74,6 +75,7 @@ Abilita la Simulazione Riflessi Esplosioni di ACE Aktiviere die ACE-Druckwellensimulation Activa la simulación de reflexiones para las explosiones. + Ativa a simulação de reflexo de explosão do ACE Maximum Projectiles Tracked @@ -148,4 +150,4 @@ (Solo SP) Richiede un restart editor/missione. Abilita il tracciamento visivo di schegge da frammentazione/spalling in modalità Giocatore Singolo. - + \ No newline at end of file diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 442f10482d4..d554ee8fa0d 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -238,6 +238,7 @@ Mostra Gesti su Menù Interazione Mostrar gestos en el menú de interacción Afficher les signaux dans le menu d'interaction + Mostrar gestos no menu de interação Show gestures on the self interaction menu, or just use keybinds, or disable completely @@ -247,6 +248,7 @@ Mostra Gesti nel Menù Interazione Personale, o usa solamente Hotkey, o disabilita completamente Muestror los gestos en el menú de interacción propia, utilizar solo combinación de teclas o desactivarlos completamente Affiche les signaux dans le menu d'interaction personnel, ou seulement par raccourcis, ou encore les désactiver complètement + Mostra gestos no menu de interação, ou utilize um dos atalhos de teclado ou desative completamente Just Keybinds @@ -256,6 +258,7 @@ Solo Hotkey Solo mediante teclas Juste par raccourcis + Somente atalhos de teclado Keybinds + Interaction Menu @@ -265,6 +268,7 @@ Hotkey + Menù Interazione Teclas y Menú de Interacción Raccourcis et menu d'interaction + Atalhos + Menu de Interação \ No newline at end of file diff --git a/addons/headless/stringtable.xml b/addons/headless/stringtable.xml index 6ef7452611e..bc0acd8481b 100644 --- a/addons/headless/stringtable.xml +++ b/addons/headless/stringtable.xml @@ -8,6 +8,7 @@ Headless Headless Headless + Headless This module allows you to setup automatic transferring of AI to Headless Clients. (Default: No) @@ -16,6 +17,7 @@ Questo modulo ti consente di impostare il trasferimento automatico di IA all'Headless Client (Default: No) Éste módulo permite activar la transferencia automática de IA al Headless Client. (Por defecto: No) Ce module permet de configurer le trasnfert automatique des IA vers les Headless Client. (Défaut : Non) + Este módulo permite que você configure a transferência de AI's de forma automática para os Headless Clients (Padrão: Não) Enables transferring of AI to Headless Clients. @@ -24,6 +26,7 @@ Abilita trasferimento di IA a Headless Client Habilita la transferencia de IA al Headless Client. Autorise le transfert d'IA vers les Headless Clients. + Ativa a transferência de AI para os Headless Clients Delay @@ -32,6 +35,7 @@ Ritardo Retardo Délai + Atraso Minimal delay between transfers, in seconds. (Default: 15) @@ -40,6 +44,7 @@ Ritardo minimo tra trasferimenti, in secondi. (Default: 15) Retardo mínimo entre transferencias, en segundos (Por defecto: 15) Délai minimum entre les transferts, en secondes. (Défaut : 15) + Atraso mínimo entre transferências, em segundos. (Padrão: 15) Log @@ -48,6 +53,7 @@ Log Registro Journal + Registro Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No) @@ -56,6 +62,7 @@ Logga statistiche trasferimenti e (dis)connessioni di Headless Client su RPT. (Default: No) Registrar transferencias y (des)conexiones del Headless Client en el RPT. (Por defecto: No) Enregistre les statistiques de transfert et les (dé)connections du Headless Client vers le RPT. (Défaut : Non) + Registra as estatísticas de transferências e (des)conexões dos Headless Clients para o RPT. (Padrão: Não) \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index aa6f114f0e0..ef36f3737cd 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -115,6 +115,7 @@ Desactiva el efecto de zumbido cuando el jugador recibe daño auditivo. Usuń szum w uszach przy chwilowej utracie słuchu. Enlève l'effet de bourdonnement lorsque le joueur subis des traumatismes sonores + Remove o efeito de zunido quando o jogador recebe dano na audição Hearing diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index fcbeebb9721..4417c11f758 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -355,6 +355,7 @@ Esci Aussteigen! Sal del vehículo! + Saia Team Management @@ -709,12 +710,14 @@ Aktivieren Włącz Encender + Ligar Turn off Deaktivieren Wyłącz Apagar + Desligar Pass magazine @@ -767,4 +770,4 @@ Mostrar "Pasar cargador" en el menú de interacción - + \ No newline at end of file diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 60cc8723c23..60bb41681dd 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -32,6 +32,7 @@ Plecaki Zaini Mochilas + Mochilas Headgear @@ -40,6 +41,7 @@ Hełmy Copricapi Cascos + Capacetes Glasses @@ -48,6 +50,7 @@ Gogle Occhiali Gafas + Óculos Uniforms @@ -56,6 +59,7 @@ Uniformy Uniformi Uniformes + Uniformes Vests @@ -64,6 +68,7 @@ Kamizelki Vests Chalecos + Coletes Grenades @@ -72,6 +77,7 @@ Granaty Granate Granadas + Granadas Medical @@ -80,6 +86,7 @@ Medyczne Medico Médico + Médico \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 94cad2f7900..cee500b5d52 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -54,6 +54,7 @@ Adenosin injizieren Inyectar Adenosina Wstrzyknij adenozynę + Injetar Adenosina Inject Atropine @@ -252,6 +253,7 @@ Adenosin injizieren... Inyectando Adenosina... Wstrzykiwanie adenozyny... + Injetando Adenosina... Injecting Atropine... @@ -966,18 +968,21 @@ Adenosin-Autoinjektor Asenosina auto-inyectable Autostrzykawka z adenozyną + Auto-injetor de Adenosina Used to counter effects of Epinephrine Wird verwendet um die Symptome von Epiniphrin zu lindern Utilizada para contrarrestar los effectos de la Epinefrina Adenozyna. Stosowana do zwalczania efektów działania adrenaliny. + Usado para combater os efeitos da Epinefrina A drug used to counter the effects of Epinephrine Ein Medikament, das die Symptome von Epiniphrin bekämpft. Medicamento usado para contrarrestar los efectos de la Epinefrina. Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne. + Uma droga usada para combater os efeitos da Epinefrina Atropine autoinjector @@ -2898,6 +2903,7 @@ Örtliche Trainingssteigerung Ubicación mejora entrenamiento. Miejsca zwiększają wyszkolenie + Localização melhora treinamento Boost medic rating in medical vehicles or near medical facilities [untrained becomes medic, medic becomes doctor] @@ -2906,6 +2912,7 @@ Steigert die medizinische Einstufung eines Soldaten in Sanitätsfarhzeugen oder in der Nähe von Sanitätseinrichtungen [untrainiert wird zu Sanitäter, Sanitäter zu Doktor] Mejora el entrenamiento médico dentro de vehículos médicos o cerca de instalaciones médicas (no entrenados se convierten en médicos, médicos se convierten en doctores) Zwiększa poziom wyszkolenia medyków wewnątrz pojazdów medycznych lub w pobliżu budynków medycznych [niedoświadczony zostaje medykiem, medyk zostaje doktorem] + Aumenta a classificação do médico dentro de veículos médicos ou perto de instalações médicas [sem treinamento vira médico, médico vira doutor] Disable medics @@ -3200,6 +3207,7 @@ Standard Sanitätseinstellungen [ACE] Podstawowe ustawienia medyczne Ajustes médicos básicos [ACE] + Ajustes médicos básicos [ACE] Advanced Medical Settings [ACE] @@ -3314,12 +3322,14 @@ Erlaube Epiniphrin Permitir Epinefrina Ograniczenia adrenaliny + Permitir Epinefrina Who can use Epinephrine for full heal? (Basic medical only) Wer darf Epiniphrin zur vollständigen Heilung benutzen? (Standard Sanitätseinstellungen) Configura quienes pueden usar Epinefrina (Solo sistema médico básico) Kto może skorzystać z adrenaliny w celu pełnego uleczenia? (Tylko podstawowy system medyczny) + Quem pode usar Epinefrina para cura completa? (Somente sistema médico básico) Allow PAK @@ -3410,12 +3420,14 @@ Orte für Epiniphrin Ubicaciones epinefrina Ograniczenia adrenaliny + Localizações de Epinefrina Where can the Epinephrine be used? (Basic Medical) Wo kann Epiniphrin verwendet werden? (Standard Sanitätseinstellungen) Configura donde puede usarse Epinefrina (Solo sistema médico básico) Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny) + Onde pode-se usar a Epinefrina? (Somente sistema médico básico) Locations PAK @@ -3658,6 +3670,7 @@ Behandlungseinstellungen der Standard ACE-Medizin konfigurieren Configure las opciones de tratamiento del sistema médico básico de ACE Skonfiguruj ustawienia leczenia podstawowego systemu medycznego ACE + Configura as opções de tratamento do sistema médico básico do ACE Configure the treatment settings from ACE Advanced Medical @@ -4103,6 +4116,7 @@ Addestramento Medico Sanitätsausbildung Entrenamiento médico + Treino médico Whether or not the object will be a medical vehicle. @@ -4110,20 +4124,24 @@ L'oggetto in questione sarà un veicolo medico o meno. Legt fest, ob das Objekt ein Sanitätsfahrzeug ist. Es un vehículo médico? + Se o objeto será ou não um veículo médico Delay cease fire of AI during medical unconsciousness Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit Demora antes de volverse neutral al caer inconsciente Opóźnij status captive u nieprzytomnych osób + Atraso durante cessar fogo da AI durante inconsciência médica Delay cease fire of AI while player is unconscious for medical reasons. Verzögert das Ende des KI-Beschusses auf einen Spieler, wenn dieser aus medizinischen Gründen bewustlos wird. + Atraso durante cessar fogo da AI enquanto o jogador estiver inconsciente por motivos médicos Delay cease fire of AI for unconsciousness Verzögert Ende des KI-Beschusses bei medizinischer Bewustlosigkeit + Atraso durante cessar fogo da AI durante inconsciência \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 99891932328..b6f7ef719de 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -149,126 +149,147 @@ Aktiviere Munitionshandhabung Usar manejo de munición. Aktywuj obsługę amunicji + Usar manejo de munição Removes mortar magazines, requiring individual rounds to be loaded by the gunner or loader. Does not affect AI mortars. Enfernt das Magzin des Mörsers. Es ist nun erforderlich, die einzelnen Patronen manuell zu laden. Dies beeinflusst nicht die KI-Truppen. Elimina los cargadores del mortero, requiriendo al artillero o cargador la carga manual de cada rondas. No afecta morteros controlados por IA. Usuwa magazynki moździerza, wymagając ładowania pojedynczych pocisków przez strzelca lub ładowniczego. Nie dotyczy moździerzy AI. + Elimina os carregadores do morteiro, requerendo que o atirador ou carregador utilize de forma individual a munição. Não afeta os morteiros controlados pela IA. Remove Round Entferne Patrone Extraer ronda Wyładuj pocisk + Remover munição Load Mortar Lade Mörser Cargar mortero Załaduj moździerz + Carregar morteiro Unloading Round Mörser entladen Descargando ronda Rozładowywanie moździerza + Descarregar munição Preparing Round Patrone vorbereiten Preparando ronda Przygotowywanie pocisku + Preparar munição Load HE Lade Sprengpatrone Cargar HE Załaduj pocisk wybuchowy + Carregar HE Load Smoke Lade Nebelpatrone Cargar Humo Załaduj pocisk dymny + Carregar Fumaça Load Illumination Lade Leuchtpatrone Cargar Iluminación Załaduj pocisk oświetlający + Carregar Iluminação Load Guided HE Lade gelenkte Sprengpatrone Cagar HE Guiada Załaduj kierowany pocisk wybuchowy + Carregar HE Guiada Load Laser Guided HE Lade lasergelenkte Sprengpatrone Cargar HE Guiada por Laser Załaduj laserowo napr. pocisk wybuchowy + Carregar HE Guiada por Laser 82mm HE Round 82mm Sprengpatrone Ronda 82mm HE Pocisk wybuchowy kal. 82mm + Munição 82mm HE 82mm Smoke Round 82mm Nebelpatrone Ronda 82mm Humo Pocisk dymny kal. 82mm + Munição 82mm Fumaça 82mm Illumination Round 82mm Leuchtpatrone Ronda 82mm Iluminación Pocisk oświetlający kal. 82mm + Munição 82mm Iluminação 82mm Guided HE Round 82mm gelenkte Sprengpatrone Ronda 82mm Guiada Kierowany pocisk wybuchowy kal. 82mm + Munição 82mm HE Guiada 82mm Laser Guided HE Round 82mm lasergelenkte Sprengpatrone Ronda 82mm Guiada por Laser Laserowo napr. pocisk wybuchowy kal. 82mm + Munição 82mm HE Guiada por Laser Used in Mk6 mortar Wird im Mk6 Mörser verwendet Usada en el mortero Mk6 Używany w moździerzu Mk6 + Usada no Morteiro MK6 [ACE] 82mm HE Rounds Box [ACE] 82mm Sprengpatronenkiste [ACE] Caja de municiones 82mm HE [ACE] Skrzynka amunicji wybuchowej 82mm + [ACE] Caixa de Munição 82mm HE [ACE] 82mm Smoke Rounds Box [ACE] 82mm Nebelpatronenkiste [ACE] Caja de municiones 82mm Humo [ACE] Skrzynka amunicji dymnej 82mm + [ACE] Caixa de Munição 82mm Fumaça [ACE] 82mm Illumination Rounds Box [ACE] 82mm Leuchtpatronenkiste [ACE] Caja de municiones 82mm Iluminacion [ACE] Skrzynka amunicji oświetlającej 82mm + [ACE] Caixa de Munição 82mm Iluminação [ACE] 82mm Default Loadout Box [ACE] 82mm Standardkiste [ACE] Caja de municiones 82mm por defecto [ACE] Skrzynka amunicji standardowej 82mm + [ACE] Caixa de Munição 82mm Padrão \ No newline at end of file diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index e41f9342d40..492edd35aea 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -31,6 +31,7 @@ Efekty cząsteczkowe przegrzania Effetti Particelle Surriscaldamento Efectos de partículas + Efeito de parícula de superaquecimento Show particle effects when weapon overheats @@ -38,6 +39,7 @@ Pokaż efekty cząsteczkowe kiedy broń się przegrzeje Mostra effetti particellari quando l'arma si surriscalda Muestra efectos de partículas cuando el arma del jugador se sobreacalienta + Mostra efeitos de párticula quando a arma superaquece Overheating Particle Effects for everyone @@ -45,6 +47,7 @@ Pokaż efekty cząsteczkowe dla wszystkich Effetti Particellari Surriscaldamento per tutti Efectos de partículas para todos + Efeito de partícula de superaquecimento para todos Show particle effects when other players weapon overheats @@ -52,6 +55,7 @@ Pokazuje efekty cząsteczkowe kiedy broń innego gracza się przegrzeje Mostra effetti particellari quando l'arma di altri giocatori si surriscalda Muestra efectos de partículas cuando el arma de jugadores cercanos se sobreacalienta + Mostra efeito de partículas quando a arma de outros jogadores superaquece Overheating Dispersion @@ -59,6 +63,7 @@ Wpływ na rozrzut Dispersione Surriscaldamento Dispersión + Disperção de superaquecimento Overheated weapons will be less accurate and have decreased muzzle velocity. Applys for all players. @@ -66,30 +71,35 @@ Przegrzane bronie będą mniej celne oraz będą miały zmniejszoną prędkość pocisku. Wpływa na wszystkich graczy. Armi surriscaldate saranno meno precise ed avranno una ridotta velocità alla volata. Applica per tutti i giocatori. Las armas sobrecalentadas pierden precisión y tienen una velocidad de disparo reducida. Se aplica a todos los jugadores. + Armas superaquecidas irão ser menos precisas e ter velocidade de disparo reduzidas. Aplica a todos os jogadores. Unjam weapon on reload Behebt Ladehemmung beim Nachladen Desencasquillar el arma al recargar. Usuń zacięcie przy przeładowaniu + Desemperrar arma no recarregamento Reloading clears a weapon jam. Nachladen behebt eine Ladehemmung. Recargar el arma la desencasquilla. Przeładowywanie usuwa zacięcie + Recarregar desemperra arma. Chance of unjam failing Wahrscheinlichkeit, dass Ladehemmung nicht behoben wird Probabilidad de falla al desencasquillar. Szansa na porażkę usuw. zacięcia + Chance de falha de desemperramento Probability that an unjam action might fail, requiring to be repeated. Wahrscheinlichkeit, dass der Versuch eine Ladehemmung zu beheben fehl schlägt und erneut durchgeführt werden muss. Probabilidad de que el proceso de desencasquille falle, teniendo que repetirlo. Szansa na to, że przy przeładowaniu broni zacięcie nie zostanie usunięte, przez co czynność będzie musiała zostać powtórzona ponownie. + Probabilidade que uma ação de desemperramento falhe, tendo que ser repetida Spare barrel @@ -156,6 +166,7 @@ Ladehemmung nicht behoben Falló el desencasquillado Porażka przy usuwaniu zacięcia + Falha no desemperramento Swap barrel @@ -242,4 +253,4 @@ Температура - + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index de640ff48c2..2a73fec0af9 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -728,6 +728,7 @@ ERA Reaktivpanzerung ERA + ERA Repair Settings @@ -1230,4 +1231,4 @@ Oggetti richiesti per riparare/rimuovere ruote - + \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 26be64dccb1..1ccd4abe904 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -20,6 +20,7 @@ Próba zmiany Sto provando a cambiare Intentando cambiar + Tentando trocar This unit is too close to the enemy. @@ -201,4 +202,4 @@ El módulo permite a las unidades cambiar de bando durante el juego. - + \ No newline at end of file diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 6dbbcddff12..a6a2ac4ae34 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -6,78 +6,91 @@ Schwarz markieren Marcar en negro Oznakuj na czarno + Marcar em preto Tag red Rot markieren Marcar en rojo Oznakuj na czerwono + Marcar em vermelho Tag green Grün markieren Marcar en verde Oznakuj na zielono + Marcar em verde Tag blue Blau markieren Marcar en azul Oznakuj na niebiesko + Marcar em azul Tag ground black Boden schwarz markieren Oznakuj ziemię na czarno Marcar suelo en negro + Marcar chão em preto Tag ground red Boden rot markieren Oznakuj ziemię na czerwono Marcar suelo en rojo + Marcar chão em vermelho Tag ground green Boden grün markieren Oznakuj ziemię na zielono Marcar suelo en verde + Marcar chão em verde Tag ground blue Boden blau markieren Oznakuj ziemię na niebiesko Marcar suelo en azul + Marcar chão em azul Black spray paint Schwarze Sprühfarbe Pintura negra Czarna farba w sprayu + Spray de tinta preta Red spray paint Rote Sprühfarbe Pintura roja Czerwona farba w sprayu + Spray de tinta vermelha Green spray paint Grüne Sprühfarbe Pintura verde Zielona farba w sprayu + Spray de tinta verde Blue spray paint Blaue Sprühfarbe Pintura azul Niebieska farba w sprayu + Spray de tinta azul A can of spray paint for tagging walls. Eine Farbsprühdose um Wände zu markieren. Lata de pintura en aerosol para marcar. Farba w sprayu, służy do oznakowywania terenu. + Uma lata de tinta spray para marcar paredes. \ No newline at end of file diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 1ed6e1fd7b8..9140dff9070 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -7,6 +7,7 @@ Saperka Pala Pala para trincheras + Ferramenta de trincheira Entrenching Tool @@ -14,6 +15,7 @@ Mit Schanzzeug können Erdwälle oder Gräben ausgehoben werden. Pala Pala para trincheras + Ferramenta de trincheira Envelope - Small @@ -21,6 +23,7 @@ Wnęka - mała Fascia - Piccola Trinchera pequeña + Trincheira - Pequena Small Personal Trench @@ -28,6 +31,7 @@ Mała jednoosobowa wnęka Piccola Trincea Personale Trinchera personal pequeña + Trincheira pessoal pequena Dig Small Trench @@ -35,6 +39,7 @@ Kop małą wnękę Scava Trincea Piccola Cavar trinchera pequeña + Cavar trincheira pequena Envelope - Big @@ -42,6 +47,7 @@ Wnęka - duża Fascia - Grande Trinchera grande + Trincheira - Grande Large Personal Trench @@ -49,6 +55,7 @@ Duża jednoosobowa wnęka Grande Trincea Personale Trinchera personal grande + Trincheira pessoal grande Dig Big Trench @@ -56,6 +63,7 @@ Kop dużą wnękę Scava Trincea Grande Cavar trinchera grande + Cavar trincheira grande Confirm Dig @@ -63,6 +71,7 @@ Potwierdź kopanie Conferma Scava Confirmar cavado + Confirmar excavação Cancel Dig @@ -70,6 +79,7 @@ Anuluj kopanie Cancella Scava Cancelar cavado + Cancelar excavação +Ctrl rotate @@ -77,6 +87,7 @@ +Ctrl obrót +Ctrl ruota +Ctrl rotar + +Ctrl rotaciona Digging Trench @@ -84,6 +95,7 @@ Kopanie okopu Sto Scavando la Trincea Cavando trinchera + Cavando trincheira \ No newline at end of file From 46a96dd5da73e12c8b337c1fe121bd28db81566a Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 18:14:36 -0300 Subject: [PATCH 021/268] Move spare barrel event handlers out of postInit --- addons/overheating/XEH_PREP.hpp | 2 + addons/overheating/XEH_postInit.sqf | 97 +------------------ .../functions/fnc_loadCoolestSpareBarrel.sqf | 51 ++++++++++ .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 75 ++++++++++++++ .../functions/fnc_swapBarrelCallback.sqf | 2 +- 5 files changed, 132 insertions(+), 95 deletions(-) create mode 100644 addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf create mode 100644 addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf diff --git a/addons/overheating/XEH_PREP.hpp b/addons/overheating/XEH_PREP.hpp index 26366b98968..8f584ef6e66 100644 --- a/addons/overheating/XEH_PREP.hpp +++ b/addons/overheating/XEH_PREP.hpp @@ -8,7 +8,9 @@ PREP(firedEH); PREP(getWeaponData); PREP(handleTakeEH); PREP(jamWeapon); +PREP(loadCoolestSpareBarrel); PREP(overheat); +PREP(sendSpareBarrelsTemperaturesHint); PREP(swapBarrel); PREP(swapBarrelCallback); PREP(updateSpareBarrelsTemperaturesThread); diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index f29a1c624cc..0e8eaad7c40 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -12,100 +12,9 @@ if (isServer) then { // Keep track of the temperature of stored spare barrels GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; - ["spareBarrelsCheckTemperatures", { - params ["_player","_unit"]; - // Find all spare barrel the player has - private _allMags = magazinesDetail _unit; - _allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; - if ((count _allMags) < 1) exitWith {}; - - // Determine the temp of each barrel - private _temps = []; - { - private _temp = 0; - if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { - _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; - }; - _temps pushBack _temp; - } forEach _allMags; - TRACE_1("_temps",_temps); - - // Count cool - private _countCool = {_x < 20} count _temps; - private _countWarm = {(_x >= 20) && (_x < 100)} count _temps; - private _countHot = {(_x >= 100) && (_x < 200)} count _temps; - private _countVeryHot = {(_x >= 200) && (_x < 600)} count _temps; - private _countExtremelyHot = {_x >= 600} count _temps; - private _output = ["%1 %2%3%4 %5%6%7 %8%9%10 %11%12%13 %14"]; - private _size = 1.0; - if (_countCool > 0) then { - _output pushBack _countCool; - _output pushBack LSTRING(BarrelCool); - _output pushBack "
"; - _size = _size + 0.5; - }; - if (_countWarm > 0) then { - _output pushBack _countWarm; - _output pushBack LSTRING(BarrelWarm); - _output pushBack "
"; - _size = _size + 0.5; - }; - if (_countHot > 0) then { - _output pushBack _countHot; - _output pushBack LSTRING(BarrelHot); - _output pushBack "
"; - _size = _size + 0.5; - }; - if (_countVeryHot > 0) then { - _output pushBack _countVeryHot; - _output pushBack LSTRING(BarrelVeryHot); - _output pushBack "
"; - _size = _size + 0.5; - }; - if (_countExtremelyHot > 0) then { - _output pushBack _countExtremelyHot; - _output pushBack LSTRING(BarrelExtremelyHot); - _size = _size + 0.5; - }; - - TRACE_1("_output",_output); - ["displayTextStructured", [_player], [_output, _size, _player]] call EFUNC(common,targetEvent); - }] call EFUNC(common,addEventHandler); - - ["spareBarrelLoadedCoolest", { - params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; - TRACE_4("spareBarrelLoadedCoolest1",_unit,_weapon,_weaponTemp,_barrelMass); - - // Find all spare barrel the player has - private _allMags = magazinesDetail _unit; - TRACE_1("spareBarrelLoadedCoolest2",_allMags); - _allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; - TRACE_1("spareBarrelLoadedCoolest3",_allMags); - if ((count _allMags) < 1) exitWith {}; - - // Determine which on is coolest - private _coolestTemp = 10000; - private _coolestMag = _allMags select 0; - { - private _temp = 0; - if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { - _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; - }; - TRACE_2("spareBarrelLoadedCoolest4",_x,_temp); - if (_temp < _coolestTemp) then { - _coolestTemp = _temp; - _coolestMag = _x; - }; - } forEach _allMags; - TRACE_3("spareBarrelLoadedCoolest5",_coolestTemp,_coolestMag,_weaponTemp); - - // The new weapon temperature is similar to the coolest barrel - // Publish the new temperature value - _unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; - - // Heat up the coolest barrel to the former weapon temperature - [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; - }] call EFUNC(common,addEventHandler); + // Install event handlers for spare barrels + ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler); + ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler); // Schedule cool down calculation of stored spare barrels [] call FUNC(updateSpareBarrelsTemperaturesThread); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf new file mode 100644 index 00000000000..97fe9d88834 --- /dev/null +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -0,0 +1,51 @@ +/* + * Author: esteldunedain + * Collect the temperature of all the spare barrels a unit has and load the + * coolest on the unit weapon. Runs on the server. + * + * Argument: + * 0: Unit + * 1: Weapon + * 2: Weapon temp before switching + * 3: Mass of the removed barrel + * + * Return value: + * None + * + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; +TRACE_4("loadCoolestSpareBarrel1",_unit,_weapon,_weaponTemp,_barrelMass); + +// Find all spare barrel the player has +private _allMags = magazinesDetail _unit; +TRACE_1("loadCoolestSpareBarrel2",_allMags); +_allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; +TRACE_1("loadCoolestSpareBarrel3",_allMags); +if ((count _allMags) < 1) exitWith {}; + +// Determine which on is coolest +private _coolestTemp = 10000; +private _coolestMag = _allMags select 0; +{ + private _temp = 0; + if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { + _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; + }; + TRACE_2("loadCoolestSpareBarrel4",_x,_temp); + if (_temp < _coolestTemp) then { + _coolestTemp = _temp; + _coolestMag = _x; + }; +} forEach _allMags; +TRACE_3("loadCoolestSpareBarrel5",_coolestTemp,_coolestMag,_weaponTemp); + +// The new weapon temperature is similar to the coolest barrel +// Publish the new temperature value +_unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; + +// Heat up the coolest barrel to the former weapon temperature +[GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf new file mode 100644 index 00000000000..01a6ecc0a4b --- /dev/null +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -0,0 +1,75 @@ +/* + * Author: esteldunedain + * Collect the temperature of all the spare barrels a unit has and send a hint + * to a client. Runs on the server. + * + * Argument: + * 0: Target unit of the hint + * 1: Unit that has the spare barrels + * + * Return value: + * None + * + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player","_unit"]; + +// Find all spare barrel the player has +private _allMags = magazinesDetail _unit; +_allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; +if ((count _allMags) < 1) exitWith {}; + +// Determine the temp of each barrel +private _temps = []; +{ + private _temp = 0; + if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { + _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; + }; + _temps pushBack _temp; +} forEach _allMags; +TRACE_1("_temps",_temps); + +// Count cool +private _countCool = {_x < 20} count _temps; +private _countWarm = {(_x >= 20) && (_x < 100)} count _temps; +private _countHot = {(_x >= 100) && (_x < 200)} count _temps; +private _countVeryHot = {(_x >= 200) && (_x < 600)} count _temps; +private _countExtremelyHot = {_x >= 600} count _temps; +private _output = ["%1 %2%3%4 %5%6%7 %8%9%10 %11%12%13 %14"]; +private _size = 1.0; +if (_countCool > 0) then { + _output pushBack _countCool; + _output pushBack LSTRING(BarrelCool); + _output pushBack "
"; + _size = _size + 0.5; +}; +if (_countWarm > 0) then { + _output pushBack _countWarm; + _output pushBack LSTRING(BarrelWarm); + _output pushBack "
"; + _size = _size + 0.5; +}; +if (_countHot > 0) then { + _output pushBack _countHot; + _output pushBack LSTRING(BarrelHot); + _output pushBack "
"; + _size = _size + 0.5; +}; +if (_countVeryHot > 0) then { + _output pushBack _countVeryHot; + _output pushBack LSTRING(BarrelVeryHot); + _output pushBack "
"; + _size = _size + 0.5; +}; +if (_countExtremelyHot > 0) then { + _output pushBack _countExtremelyHot; + _output pushBack LSTRING(BarrelExtremelyHot); + _size = _size + 0.5; +}; + +TRACE_1("_output",_output); +["displayTextStructured", [_player], [_output, _size, _player]] call EFUNC(common,targetEvent); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 8bd63e48744..6eba2146178 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -34,7 +34,7 @@ private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon > // store the removed barrel with the former weapon temperature. The server // also updates the current weapon temperature to match that of the new // loaded barrel. -["spareBarrelLoadedCoolest", [_player, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); +["spareBarrelsLoadCoolest", [_player, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); // Store the update time _player setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; From a041555381376834bb4d482e6b927080a731fb85 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 18:16:14 -0300 Subject: [PATCH 022/268] Add an animation and progressbar to the "Check spare barrels temperatures" action --- addons/overheating/CfgVehicles.hpp | 2 +- addons/overheating/XEH_PREP.hpp | 1 + .../fnc_checkSpareBarrelsTemperatures.sqf | 36 +++++++++++++++++++ addons/overheating/stringtable.xml | 5 ++- 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 61b619a79bf..928a22420a7 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -34,7 +34,7 @@ class CfgVehicles { displayName = CSTRING(CheckTemperatureSpareBarrelsShort); condition = QUOTE( 'ACE_SpareBarrel' in magazines _player); exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE([ARR_2('spareBarrelsCheckTemperatures',[ARR_2(_player,_player)])] call EFUNC(common,serverEvent);); + statement = QUOTE( [ARR_1(_player)] call FUNC(checkSpareBarrelsTemperatures); ); showDisabled = 0; priority = 2.8; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); diff --git a/addons/overheating/XEH_PREP.hpp b/addons/overheating/XEH_PREP.hpp index 8f584ef6e66..cc1948e6bd3 100644 --- a/addons/overheating/XEH_PREP.hpp +++ b/addons/overheating/XEH_PREP.hpp @@ -1,6 +1,7 @@ PREP(calculateCooling); PREP(canUnjam); +PREP(checkSpareBarrelsTemperatures); PREP(checkTemperature); PREP(clearJam); PREP(displayTemperature); diff --git a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf new file mode 100644 index 00000000000..b7509671bb3 --- /dev/null +++ b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf @@ -0,0 +1,36 @@ +/* + * Author: esteldunedain + * Make the player check the temperature of his spare barrels + * + * Arguments: + * 0: Player + * + * Return Value: + * None + * + * + * Public: No + */ +#include "script_component.hpp" + +params ["_player"]; + +// Check canInteractWith: +if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; + +// Make the unit go kneeling +[_unit] call EFUNC(common,goKneeling); + +// Spawn a progress bar +[ + 5.0, + [_player], + { + // Time has enlapsed, ask the server to send the hint + ['spareBarrelsSendTemperatureHint', [_unit, _unit]] call EFUNC(common,serverEvent); + }, + {}, + (localize LSTRING(CheckingSpareBarrelsTemperatures)), + {true}, + ["isNotInside", "isNotSitting"] +] call EFUNC(common,progressBar); diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index ace5806f617..fc38ae0054a 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -230,7 +230,10 @@ Проверка температуры... - Check spare barrel temperatures + Check spare barrels temperatures + + + Checking spare barrels temperatures... Temperature From b8c8c21a02de54fbe9081376fee72db6943ccba0 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 18:17:23 -0300 Subject: [PATCH 023/268] Remove spare barrels from starting equipments --- addons/overheating/CfgVehicles.hpp | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 928a22420a7..8981c907f7a 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -108,30 +108,4 @@ class CfgVehicles { MACRO_ADDITEM(ACE_SpareBarrel,6); }; }; -/* - // Add ACE_SpareBarrel to every machine gunner. - #define MACRO_ADDSPAREBARREL \ - items[] = {"FirstAidKit", "ACE_SpareBarrel"}; \ - respawnitems[] = {"FirstAidKit", "ACE_SpareBarrel"}; - - // NATO - class B_Soldier_02_f; class B_soldier_AR_F:B_Soldier_02_f {MACRO_ADDSPAREBARREL}; - class B_Soldier_support_base_F; class B_soldier_AAR_F:B_Soldier_support_base_F {MACRO_ADDSPAREBARREL}; - class B_Soldier_base_F; class B_CTRG_soldier_AR_A_F:B_Soldier_base_F {MACRO_ADDSPAREBARREL}; - - // Guerrilla - class I_G_Soldier_base_F; class I_G_Soldier_AR_F:I_G_Soldier_base_F {MACRO_ADDSPAREBARREL}; - class B_G_Soldier_AR_F:I_G_Soldier_AR_F {MACRO_ADDSPAREBARREL}; - class O_G_Soldier_AR_F:I_G_Soldier_AR_F {MACRO_ADDSPAREBARREL}; - - // Iran - class O_Soldier_base_F; class O_Soldier_AR_F:O_Soldier_base_F {MACRO_ADDSPAREBARREL}; - class O_Soldier_support_base_F; class O_Soldier_AAR_F:O_Soldier_support_base_F {MACRO_ADDSPAREBARREL}; - class O_Soldier_Urban_base; class O_soldierU_AR_F:O_Soldier_Urban_base {MACRO_ADDSPAREBARREL}; - class O_soldierU_AAR_F:O_Soldier_Urban_base {MACRO_ADDSPAREBARREL}; - - // Czech - class I_Soldier_02_F; class I_Soldier_AR_F:I_Soldier_02_F {MACRO_ADDSPAREBARREL}; - class I_Soldier_support_base_F; class I_Soldier_AAR_F:I_Soldier_support_base_F {MACRO_ADDSPAREBARREL}; -*/ }; From f130d6c2530cac2bc6fae3d73744e6bdd2909c02 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 18:17:58 -0300 Subject: [PATCH 024/268] Increase spare barrel mass to 60 (2.7 Kg) --- addons/overheating/CfgMagazines.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overheating/CfgMagazines.hpp b/addons/overheating/CfgMagazines.hpp index ad381ff30e9..d9b3ee2bdc1 100644 --- a/addons/overheating/CfgMagazines.hpp +++ b/addons/overheating/CfgMagazines.hpp @@ -5,7 +5,7 @@ class CfgMagazines { picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); displayName = "ACE Spare Barrel"; //!!!CANNOT be localized!!!: because it is used as part of the magazineDetail string count = 1; - mass = 40; + mass = 60; ACE_isUnique = 1; }; }; From e6a2ca71026a090a1f63018c8e93be2fc9573391 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 19:25:45 -0300 Subject: [PATCH 025/268] Fix typos --- addons/overheating/CfgVehicles.hpp | 2 +- .../functions/fnc_checkSpareBarrelsTemperatures.sqf | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 8981c907f7a..61052553a43 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -34,7 +34,7 @@ class CfgVehicles { displayName = CSTRING(CheckTemperatureSpareBarrelsShort); condition = QUOTE( 'ACE_SpareBarrel' in magazines _player); exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE( [ARR_1(_player)] call FUNC(checkSpareBarrelsTemperatures); ); + statement = QUOTE( [_player] call FUNC(checkSpareBarrelsTemperatures); ); showDisabled = 0; priority = 2.8; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); diff --git a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf index b7509671bb3..e8dbaabec0b 100644 --- a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf +++ b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf @@ -19,15 +19,17 @@ params ["_player"]; if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; // Make the unit go kneeling -[_unit] call EFUNC(common,goKneeling); +[_player] call EFUNC(common,goKneeling); // Spawn a progress bar [ 5.0, [_player], { + params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; + _args params ["_player"]; // Time has enlapsed, ask the server to send the hint - ['spareBarrelsSendTemperatureHint', [_unit, _unit]] call EFUNC(common,serverEvent); + ['spareBarrelsSendTemperatureHint', [_player, _player]] call EFUNC(common,serverEvent); }, {}, (localize LSTRING(CheckingSpareBarrelsTemperatures)), From 850a499c0e246fbd70b10a90c0e04cc9abf1364d Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 19:26:20 -0300 Subject: [PATCH 026/268] Localize spare barrel's displayName --- addons/overheating/CfgMagazines.hpp | 2 +- addons/overheating/XEH_preInit.sqf | 10 ++++++++++ .../functions/fnc_loadCoolestSpareBarrel.sqf | 13 ++++++------- .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 9 +++++---- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/addons/overheating/CfgMagazines.hpp b/addons/overheating/CfgMagazines.hpp index d9b3ee2bdc1..cc040eca0fd 100644 --- a/addons/overheating/CfgMagazines.hpp +++ b/addons/overheating/CfgMagazines.hpp @@ -1,9 +1,9 @@ class CfgMagazines { class CA_Magazine; class ACE_SpareBarrel: CA_Magazine { + displayName = CSTRING(SpareBarrelName); descriptionshort = CSTRING(SpareBarrelDescription); picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); - displayName = "ACE Spare Barrel"; //!!!CANNOT be localized!!!: because it is used as part of the magazineDetail string count = 1; mass = 60; ACE_isUnique = 1; diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index a7feade1c39..54bc392273d 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -4,4 +4,14 @@ ADDON = false; #include "XEH_PREP.hpp" +FakeCBA_fnc_getMagazineIds = { + params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; + + private _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); + + if (_displayName isEqualTo "") exitWith {[]}; + + magazinesDetail _unit select {_x find _displayName == 0} apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; +}; + ADDON = true; diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index 97fe9d88834..23d2c7959e8 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -21,15 +21,13 @@ params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; TRACE_4("loadCoolestSpareBarrel1",_unit,_weapon,_weaponTemp,_barrelMass); // Find all spare barrel the player has -private _allMags = magazinesDetail _unit; -TRACE_1("loadCoolestSpareBarrel2",_allMags); -_allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; -TRACE_1("loadCoolestSpareBarrel3",_allMags); -if ((count _allMags) < 1) exitWith {}; +private _allBarrels = [_unit, "ACE_SpareBarrel"] call FakeCBA_fnc_getMagazineIds; +TRACE_1("_allBarrels",_allBarrels); +if ((count _allBarrels) < 1) exitWith {}; // Determine which on is coolest private _coolestTemp = 10000; -private _coolestMag = _allMags select 0; +private _coolestMag = _allBarrels select 0; { private _temp = 0; if ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashHasKey) then { @@ -40,7 +38,7 @@ private _coolestMag = _allMags select 0; _coolestTemp = _temp; _coolestMag = _x; }; -} forEach _allMags; +} forEach _allBarrels; TRACE_3("loadCoolestSpareBarrel5",_coolestTemp,_coolestMag,_weaponTemp); // The new weapon temperature is similar to the coolest barrel @@ -49,3 +47,4 @@ _unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; // Heat up the coolest barrel to the former weapon temperature [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; + diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index 01a6ecc0a4b..9f286832c6b 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -18,9 +18,10 @@ params ["_player","_unit"]; // Find all spare barrel the player has -private _allMags = magazinesDetail _unit; -_allMags = _allMags select {_x find "ACE Spare Barrel" == 0}; -if ((count _allMags) < 1) exitWith {}; +TRACE_2("sendSpareBarrelsTemperatureHunt",_player,_unit); +private _allBarrels = [_unit, "ACE_SpareBarrel"] call FakeCBA_fnc_getMagazineIds; +TRACE_1("_allBarrels",_allBarrels); +if ((count _allBarrels) < 1) exitWith {}; // Determine the temp of each barrel private _temps = []; @@ -30,7 +31,7 @@ private _temps = []; _temp = ([GVAR(storedSpareBarrels), _x] call CBA_fnc_hashGet) select 0; }; _temps pushBack _temp; -} forEach _allMags; +} forEach _allBarrels; TRACE_1("_temps",_temps); // Count cool From d8862897163ee46c23a4e3caf382a735eeab6c2e Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 19:27:39 -0300 Subject: [PATCH 027/268] Display the new weapon temperature right after swapping barrels --- addons/overheating/XEH_postInit.sqf | 5 +++++ addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf | 2 ++ addons/overheating/functions/fnc_swapBarrelCallback.sqf | 3 --- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 0e8eaad7c40..831c2c23483 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -55,3 +55,8 @@ GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; ["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler); }; }] call EFUNC(common,addEventHandler); + +// Install event handlers to display temp when a barrel was swapped +["barrelSwapped", { + _this call FUNC(displayTemperature); +}] call EFUNC(common,addEventHandler); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index 23d2c7959e8..dd58d58207e 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -48,3 +48,5 @@ _unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; // Heat up the coolest barrel to the former weapon temperature [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; +// Send an event so the local machine can show the hint +["barrelSwapped", _unit, [_unit, _weapon]] call EFUNC(common,objectEvent); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 6eba2146178..62a3b13ef62 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -24,9 +24,6 @@ TRACE_2("params",_player,_weapon); _player playAction QGVAR(GestureMountMuzzle); playSound "ACE_BarrelSwap"; -// don't consume the barrel, but rotate through them. -[localize LSTRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); - private _temp = _player getVariable [format [QGVAR(%1_temp), _weapon], 0]; private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; From 467075ad67fdcd4189302ca56df2f1aaf86d9e22 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Mar 2016 11:01:39 +0100 Subject: [PATCH 028/268] replace timePFH with CBA_missionTime --- addons/advanced_ballistics/XEH_postInit.sqf | 2 +- .../functions/fnc_handleFirePFH.sqf | 4 +- .../functions/fnc_handleFired.sqf | 4 +- .../fnc_initializeTerrainExtension.sqf | 4 +- .../fnc_target_speed_assist_timer.sqf | 6 +- .../captives/functions/fnc_setSurrendered.sqf | 4 +- addons/common/XEH_PREP.hpp | 2 - addons/common/XEH_postInit.sqf | 2 +- addons/common/XEH_preInit.sqf | 15 ---- .../functions/fnc__handleSyncedEvent.sqf | 2 +- addons/common/functions/fnc_cachedCall.sqf | 4 +- addons/common/functions/fnc_displayIcon.sqf | 4 +- addons/common/functions/fnc_displayText.sqf | 2 +- addons/common/functions/fnc_hashHasKey.sqf | 2 +- addons/common/functions/fnc_hashSet.sqf | 2 +- addons/common/functions/fnc_progressBar.sqf | 4 +- .../common/functions/fnc_receiveRequest.sqf | 4 +- .../common/functions/fnc_syncedEventPFH.sqf | 4 +- .../functions/fnc_throttledPublicVariable.sqf | 6 +- addons/common/functions/fnc_timePFH.sqf | 40 ----------- .../common/functions/fnc_waitAndExecute.sqf | 2 +- addons/dagr/functions/fnc_menuInit.sqf | 72 +++++++++---------- .../functions/fnc_disarmDropItems.sqf | 6 +- .../functions/fnc_eventCallerFinish.sqf | 2 +- .../functions/fnc_eventTargetFinish.sqf | 2 +- addons/dragging/functions/fnc_carryObject.sqf | 2 +- .../dragging/functions/fnc_carryObjectPFH.sqf | 6 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- .../dragging/functions/fnc_dragObjectPFH.sqf | 6 +- addons/dragging/functions/fnc_startCarry.sqf | 4 +- .../dragging/functions/fnc_startCarryPFH.sqf | 16 ++--- addons/dragging/functions/fnc_startDrag.sqf | 2 +- .../dragging/functions/fnc_startDragPFH.sqf | 14 ++-- addons/fcs/functions/fnc_keyDown.sqf | 2 +- addons/fcs/functions/fnc_keyUp.sqf | 4 +- .../finger/functions/fnc_incomingFinger.sqf | 2 +- addons/finger/functions/fnc_keyPress.sqf | 4 +- addons/finger/functions/fnc_perFrameEH.sqf | 2 +- addons/frag/functions/fnc_addTrack.sqf | 2 +- addons/frag/functions/fnc_frago.sqf | 4 +- .../functions/fnc_pfhUpdateGForces.sqf | 4 +- .../goggles/functions/fnc_applyDustEffect.sqf | 2 +- addons/goggles/functions/fnc_handleFired.sqf | 4 +- addons/hearing/functions/fnc_updateVolume.sqf | 4 +- addons/huntir/functions/fnc_cam.sqf | 2 +- addons/huntir/functions/fnc_handleFired.sqf | 2 +- addons/huntir/functions/fnc_huntir.sqf | 4 +- addons/interact_menu/XEH_preInit.sqf | 6 +- .../interact_menu/functions/fnc_keyDown.sqf | 8 +-- addons/interact_menu/functions/fnc_render.sqf | 10 +-- .../functions/fnc_renderActionPoints.sqf | 4 +- .../functions/fnc_renderMenu.sqf | 4 +- addons/interaction/functions/fnc_openDoor.sqf | 4 +- addons/javelin/functions/fnc_onOpticDraw.sqf | 16 ++--- addons/javelin/functions/fnc_onOpticLoad.sqf | 2 +- addons/kestrel4500/XEH_postInit.sqf | 2 +- .../functions/fnc_buttonPressed.sqf | 12 ++-- .../functions/fnc_displayKestrel.sqf | 4 +- .../functions/fnc_generateOutputData.sqf | 2 +- addons/laser/functions/fnc_laserOn.sqf | 8 +-- .../functions/fnc_laserHudDesignateOn.sqf | 6 +- addons/main/script_macros.hpp | 3 - addons/map/XEH_postInitClient.sqf | 2 +- addons/map/functions/fnc_updateMapEffects.sqf | 6 +- addons/medical/XEH_postInit.sqf | 18 ++--- .../functions/fnc_addToInjuredCollection.sqf | 6 +- .../medical/functions/fnc_addToTriageCard.sqf | 4 +- .../functions/fnc_getCardiacOutput.sqf | 2 +- .../functions/fnc_handleCreateLitter.sqf | 4 +- addons/medical/functions/fnc_handleLocal.sqf | 2 +- .../functions/fnc_handleUnitVitals.sqf | 4 +- .../functions/fnc_isInMedicalFacility.sqf | 4 +- .../functions/fnc_setCardiacArrest.sqf | 4 +- addons/medical/functions/fnc_setDead.sqf | 4 +- .../medical/functions/fnc_setUnconscious.sqf | 2 +- .../fnc_treatmentAdvanced_CPRLocal.sqf | 2 +- .../fnc_treatmentTourniquetLocal.sqf | 4 +- .../medical/functions/fnc_unconsciousPFH.sqf | 4 +- addons/medical_menu/XEH_postInit.sqf | 2 +- .../functions/fnc_handleUI_DisplayOptions.sqf | 2 +- .../medical_menu/functions/fnc_openMenu.sqf | 2 +- .../functions/fnc_guidancePFH.sqf | 4 +- .../missileguidance/functions/fnc_onFired.sqf | 2 +- .../functions/fnc_moduleAmbianceSound.sqf | 6 +- .../fnc_dev_simulateCalcRangeTableLine.sqf | 4 +- .../mk6mortar/functions/fnc_handleFired.sqf | 6 +- addons/nametags/XEH_postInit.sqf | 2 +- addons/nametags/functions/fnc_onDraw3d.sqf | 4 +- addons/overheating/functions/fnc_firedEH.sqf | 4 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- .../functions/fnc_updateTemperature.sqf | 4 +- addons/parachute/functions/fnc_doLanding.sqf | 4 +- .../parachute/functions/fnc_showAltimeter.sqf | 4 +- addons/scopes/functions/fnc_showZeroing.sqf | 4 +- addons/tacticalladder/XEH_postInit.sqf | 2 +- .../functions/fnc_positionTL.sqf | 2 +- addons/vector/functions/fnc_onKeyDown.sqf | 44 ++++++------ addons/vector/functions/fnc_onKeyHold.sqf | 30 ++++---- addons/vehicles/functions/fnc_startEngine.sqf | 4 +- addons/weather/XEH_postInit.sqf | 16 ++--- addons/weather/functions/fnc_getWind.sqf | 2 +- .../functions/fnc_updateAceWeather.sqf | 4 +- addons/weather/functions/fnc_updateRain.sqf | 4 +- .../functions/fnc_updateTrajectoryPFH.sqf | 6 +- addons/yardage450/functions/fnc_turnOn.sqf | 4 +- .../zeus/functions/fnc_bi_moduleCurator.sqf | 2 +- .../functions/fnc_bi_moduleProjectile.sqf | 4 +- 107 files changed, 289 insertions(+), 349 deletions(-) delete mode 100644 addons/common/functions/fnc_timePFH.sqf diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index a541d30ce87..08270b0a310 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -5,7 +5,7 @@ GVAR(currentbulletID) = -1; GVAR(Protractor) = false; -GVAR(ProtractorStart) = ACE_time; +GVAR(ProtractorStart) = CBA_missionTime; GVAR(allBullets) = []; GVAR(currentGrid) = 0; diff --git a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf index fc8dc1b8a23..6bc6e234ae7 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -private _aceTimeSecond = floor ACE_time; +private _aceTimeSecond = floor CBA_missionTime; { private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"]; @@ -31,7 +31,7 @@ private _aceTimeSecond = floor ACE_time; drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""]; }; - call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, ACE_time - _aceTimeSecond]); + call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, CBA_missionTime - _aceTimeSecond]); }; nil } count +GVAR(allBullets); diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 9646f065d48..b8deb1a487b 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -110,8 +110,8 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000; -_aceTimeSecond = floor ACE_time; -"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, ACE_time - _aceTimeSecond]; +_aceTimeSecond = floor CBA_missionTime; +"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, CBA_missionTime - _aceTimeSecond]; GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)]; diff --git a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf index 02468d03493..d3fd5522672 100644 --- a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf +++ b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf @@ -18,7 +18,7 @@ if (!GVAR(extensionAvailable)) exitWith {}; private ["_initStartTime", "_mapSize", "_mapGrids", "_gridCells", "_x", "_y", "_gridCenter", "_gridHeight", "_gridNumObjects", "_gridSurfaceIsWater"]; -_initStartTime = ACE_time; +_initStartTime = CBA_missionTime; _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize"); if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith { @@ -38,7 +38,7 @@ GVAR(currentGrid) = 0; if (GVAR(currentGrid) >= _gridCells) exitWith { #ifdef DEBUG_MODE_FULL - systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(ACE_time - _initStartTime)]; + systemChat format["AdvancedBallistics: Finished terrain initialization in %1 seconds", ceil(CBA_missionTime - _initStartTime)]; #endif [_idPFH] call CBA_fnc_removePerFrameHandler; }; diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf index 0f42f9637c6..ac64bdcbb7a 100644 --- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf +++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf @@ -30,7 +30,7 @@ if !(ctrlVisible 9000) then { if (!(GVAR(speedAssistTimer))) exitWith { GVAR(speedAssistTimer) = true; - ctrlSetText [8006, Str(Round((ACE_time - _startTime) * 10) / 10)]; + ctrlSetText [8006, Str(Round((CBA_missionTime - _startTime) * 10) / 10)]; [] call FUNC(calculate_target_speed_assist); @@ -40,7 +40,7 @@ if !(ctrlVisible 9000) then { [_this select 1] call CBA_fnc_removePerFrameHandler; }; - ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)]; + ctrlSetText [9001, Str(Round((CBA_missionTime - _startTime) * 10) / 10)]; - }, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler; + }, 0.1, [CBA_missionTime]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index ffc3c35081e..45ee4317300 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -103,7 +103,7 @@ if (_state) then { params ["_args", "_pfID"]; _args params ["_unit", "_maxTime"]; //If waited long enough or they re-surrendered or they are unconscious, exit loop - if ((ACE_time > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith { + if ((CBA_missionTime > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith { [_pfID] call CBA_fnc_removePerFrameHandler; }; //Only break animation if they are actualy the "hands up" animation (because we are using switchmove there won't be an transition) @@ -112,7 +112,7 @@ if (_state) then { //Break out of hands up animation loop [_unit, "ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); }; - }, 0, [_unit, (ACE_time + 20)]] call CBA_fnc_addPerFrameHandler; + }, 0, [_unit, (CBA_missionTime + 20)]] call CBA_fnc_addPerFrameHandler; }; }; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 0b125af1aaf..e6f96bd4a72 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -276,5 +276,3 @@ PREP(hashListCreateHash); PREP(hashListSelect); PREP(hashListSet); PREP(hashListPush); - -PREP(timePFH); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 58e674dd8dc..f74b83916d1 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -13,7 +13,7 @@ BEGIN_COUNTER(waitAndExec); //Handle the waitAndExec array: - while {!(GVAR(waitAndExecArray) isEqualTo []) && {GVAR(waitAndExecArray) select 0 select 0 <= ACE_Time}} do { + while {!(GVAR(waitAndExecArray) isEqualTo []) && {GVAR(waitAndExecArray) select 0 select 0 <= CBA_missionTime}} do { private _entry = GVAR(waitAndExecArray) deleteAt 0; (_entry select 2) call (_entry select 1); }; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 20b3692b9f8..e5043d38021 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -69,21 +69,6 @@ if (hasInterface) then { }, 0, []] call CBA_fnc_addPerFrameHandler; }; - -////////////////////////////////////////////////// -// Time handling -////////////////////////////////////////////////// - -ACE_time = diag_tickTime; -ACE_realTime = diag_tickTime; -ACE_virtualTime = diag_tickTime; -ACE_diagTime = diag_tickTime; -ACE_gameTime = time; -ACE_pausedTime = 0; -ACE_virtualPausedTime = 0; - -[FUNC(timePFH), 0, []] call CBA_fnc_addPerFrameHandler; - // Init toHex [0] call FUNC(toHex); diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf index f8fe21d760d..05266c21681 100644 --- a/addons/common/functions/fnc__handleSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleSyncedEvent.sqf @@ -29,7 +29,7 @@ if (isServer) then { _internalData = HASH_GET(GVAR(syncedEvents),_name); _internalData params ["", "_eventLog"]; - _eventLog pushBack [ACE_diagTime, _args, _ttl]; + _eventLog pushBack [diag_tickTime, _args, _ttl]; }; }; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 2c7cdd4b277..6160dfd0902 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -19,8 +19,8 @@ params ["_params", "_function", "_namespace", "_uid", "_duration", "_event"]; -if ((_namespace getVariable [_uid, [-99999]]) select 0 < ACE_diagTime) then { - _namespace setVariable [_uid, [ACE_diagTime + _duration, _params call _function]]; +if ((_namespace getVariable [_uid, [-99999]]) select 0 < diag_tickTime) then { + _namespace setVariable [_uid, [diag_tickTime + _duration, _params call _function]]; // Does the cache needs to be cleared on an event? if (!isNil "_event") then { diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf index c51b3bd4548..4c03b117682 100644 --- a/addons/common/functions/fnc_displayIcon.sqf +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -89,11 +89,11 @@ private _refresh = { if (_show) then { if ({_x select 0 == _iconId} count _list == 0) then { - _list pushBack [_iconId, _icon, _color, ACE_time]; + _list pushBack [_iconId, _icon, _color, CBA_missionTime]; } else { { if (_x select 0 == _iconId) exitWith { - _list set [_forEachIndex, [_iconId, _icon, _color, ACE_time]]; + _list set [_forEachIndex, [_iconId, _icon, _color, CBA_missionTime]]; }; } forEach _list; }; diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf index 3c683275352..fdbe912be9e 100644 --- a/addons/common/functions/fnc_displayText.sqf +++ b/addons/common/functions/fnc_displayText.sqf @@ -25,7 +25,7 @@ if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text}; GVAR(lastHint) params ["_lastHintTime", "_lastHintPriority"]; -private _time = ACE_time; +private _time = CBA_missionTime; if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then { hintSilent _text; diff --git a/addons/common/functions/fnc_hashHasKey.sqf b/addons/common/functions/fnc_hashHasKey.sqf index b2978f9cc47..97998c1298c 100644 --- a/addons/common/functions/fnc_hashHasKey.sqf +++ b/addons/common/functions/fnc_hashHasKey.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -// diag_log text format["%1 HASH HAS KEY: %2", ACE_diagTime, _this]; +// diag_log text format["%1 HASH HAS KEY: %2", diag_tickTime, _this]; params ["_hash", "_key"]; diff --git a/addons/common/functions/fnc_hashSet.sqf b/addons/common/functions/fnc_hashSet.sqf index 10e2881c10c..0890578857c 100644 --- a/addons/common/functions/fnc_hashSet.sqf +++ b/addons/common/functions/fnc_hashSet.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -// diag_log text format["%1 HASH SET: %2", ACE_diagTime, _this]; +// diag_log text format["%1 HASH SET: %2", diag_tickTime, _this]; params ["_hash", "_key", "_val"]; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index e842590f357..434a2c3e4b4 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -46,7 +46,7 @@ _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / [{ (_this select 0) params ["_args", "_onFinish", "_onFail", "_condition", "_player", "_startTime", "_totalTime", "_exceptions"]; - private _elapsedTime = ACE_time - _startTime; + private _elapsedTime = CBA_missionTime - _startTime; private _errorCode = -1; // this does not check: target fell unconscious, target died, target moved inside vehicle / left vehicle, target moved outside of players range, target moves at all. @@ -97,4 +97,4 @@ _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / //Update Progress Bar (ratio of elepased:total) (uiNamespace getVariable QGVAR(ctrlProgressBar)) progressSetPosition (_elapsedTime / _totalTime); }; -}, 0, [_args, _onFinish, _onFail, _condition, _player, ACE_time, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler; +}, 0, [_args, _onFinish, _onFail, _condition, _player, CBA_missionTime, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/functions/fnc_receiveRequest.sqf b/addons/common/functions/fnc_receiveRequest.sqf index 75f684f5dd8..1bb48428df5 100644 --- a/addons/common/functions/fnc_receiveRequest.sqf +++ b/addons/common/functions/fnc_receiveRequest.sqf @@ -45,7 +45,7 @@ GVAR(RECIEVE_REQUEST_ADD_ACTION_DECLINE) = _target addAction ["Decline", compile GVAR(RECIEVE_REQUEST_ID_KEY_BINDING) = _requestID; -GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [ACE_time, _target, _requestID] spawn { // @todo +GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [CBA_missionTime, _target, _requestID] spawn { // @todo params ["_time", "_target", "_requestID"]; _time = _time + 40; @@ -55,7 +55,7 @@ GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [ACE_time, _target, _requestID] spawn { waitUntil { _id = _target getVariable _requestID; - (ACE_time > _time || isNil "_id") + (CBA_missionTime > _time || isNil "_id") }; _target setVariable [_requestID, nil]; diff --git a/addons/common/functions/fnc_syncedEventPFH.sqf b/addons/common/functions/fnc_syncedEventPFH.sqf index 62df8f10a7e..d5a2623cd8d 100644 --- a/addons/common/functions/fnc_syncedEventPFH.sqf +++ b/addons/common/functions/fnc_syncedEventPFH.sqf @@ -34,7 +34,7 @@ if (!isServer) exitWith {false}; if (_globalEventTTL isEqualType {}) then { _ttlReturn = [_eventTime, _eventEntry] call _globalEventTTL; } else { - _ttlReturn = call {_globalEventTTL < 1 || {ACE_diagTime < (_eventEntry select 0) + _globalEventTTL}}; + _ttlReturn = call {_globalEventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _globalEventTTL}}; }; if (_ttlReturn) then { @@ -44,7 +44,7 @@ if (!isServer) exitWith {false}; if (_eventTTL isEqualType {}) then { _ttlReturn = [_eventTime, _eventEntry] call _eventTTL; } else { - _ttlReturn = call {_eventTTL < 1 || {ACE_diagTime < _time + _eventTTL}}; + _ttlReturn = call {_eventTTL < 1 || {diag_tickTime < _time + _eventTTL}}; }; }; diff --git a/addons/common/functions/fnc_throttledPublicVariable.sqf b/addons/common/functions/fnc_throttledPublicVariable.sqf index 67cfc50f9a6..3aaa3c8f471 100644 --- a/addons/common/functions/fnc_throttledPublicVariable.sqf +++ b/addons/common/functions/fnc_throttledPublicVariable.sqf @@ -25,7 +25,7 @@ if (isNil QGVAR(publishSchedId)) then { GVAR(publishNextTime) = 1e7; GVAR(publishSchedId) = [{ - if (ACE_diagTime > GVAR(publishNextTime)) then { + if (diag_tickTime > GVAR(publishNextTime)) then { { _x params [_unit, _varName]; _unit setVariable [_varName, _unit getVariable _varName, true]; @@ -41,8 +41,8 @@ if (isNil QGVAR(publishSchedId)) then { // If the variable is not on the list if (GVAR(publishVarNames) find [_unit, _varName] == -1) exitWith { GVAR(publishVarNames) pushBack [_unit, _varName]; - GVAR(publishNextTime) = GVAR(publishNextTime) min (ACE_diagTime + _maxDelay); + GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay); }; // If the variable is on the list -GVAR(publishNextTime) = GVAR(publishNextTime) min (ACE_diagTime + _maxDelay); +GVAR(publishNextTime) = GVAR(publishNextTime) min (diag_tickTime + _maxDelay); diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf deleted file mode 100644 index e5366d331ed..00000000000 --- a/addons/common/functions/fnc_timePFH.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Author: jaynus - * PFEH to set all Ace Time Variables - * - * Arguments: - * None - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -BEGIN_COUNTER(timePFH); - -private _lastTickTime = ACE_diagTime; -private _lastGameTime = ACE_gameTime; - -ACE_gameTime = time; -ACE_diagTime = diag_tickTime; - -private _delta = ACE_diagTime - _lastTickTime; - -if (ACE_gameTime <= _lastGameTime) then { - TRACE_1("paused",_delta); - ACE_paused = true; - // Game is paused or not running - ACE_pausedTime = ACE_pausedTime + _delta; - ACE_virtualPausedTime = ACE_pausedTime + (_delta * accTime); -} else { - TRACE_1("live",_delta); - ACE_paused = false; - // Time is updating - ACE_realTime = ACE_realTime + _delta; - ACE_virtualTime = ACE_virtualTime + (_delta * accTime); - ACE_time = ACE_virtualTime; -}; - -END_COUNTER(timePFH); diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf index 6f282ba656a..6180598a5a3 100644 --- a/addons/common/functions/fnc_waitAndExecute.sqf +++ b/addons/common/functions/fnc_waitAndExecute.sqf @@ -19,5 +19,5 @@ params ["_func", "_params", "_delay"]; -GVAR(waitAndExecArray) pushBack [ACE_time + _delay, _func, _params]; +GVAR(waitAndExecArray) pushBack [CBA_missionTime + _delay, _func, _params]; GVAR(waitAndExecArray) sort true; diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index e4fb3415372..7e6bec9575d 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -134,19 +134,19 @@ GVAR(menuRun) = true; GVAR(vectorConnected) = false; if (!GVAR(busy)) then { GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; (__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data."; - if (ACE_time - GVAR(busyTimer) > 0.5) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.5) then { (__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data.."; }; - if (ACE_time - GVAR(busyTimer) > 1.0) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.0) then { (__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data..."; }; - if (ACE_time - GVAR(busyTimer) > 1.5) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.5) then { (__dsp displayCtrl __mainText) ctrlSetText "Position Acquired"; }; - if (ACE_time - GVAR(busyTimer) > 3.0) then { + if (CBA_missionTime - GVAR(busyTimer) > 3.0) then { GVAR(busy) = false; }; }; @@ -156,7 +156,7 @@ GVAR(menuRun) = true; if (!GVAR(busy)) then { GVAR(showNoWaypointsFound) = true; GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; } else { GVAR(menu) = "goto_wp"; GVAR(numSelections) = GVAR(numWaypoints); GVAR(selection) = 0; @@ -168,7 +168,7 @@ GVAR(menuRun) = true; }; }; if (GVAR(busy) && GVAR(showNoWaypointsFound)) then { - if (ACE_time - GVAR(busyTimer) > 2) then { + if (CBA_missionTime - GVAR(busyTimer) > 2) then { GVAR(showNoWaypointsFound) = false; GVAR(busy) = false; }; @@ -206,21 +206,21 @@ GVAR(menuRun) = true; if (!GVAR(busy)) then { GVAR(showInfoUpdating) = true; GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; }; if (GVAR(busy) && GVAR(showInfoUpdating)) then { (__dsp displayCtrl __mainText) ctrlSetText "Info Update."; - if (ACE_time - GVAR(busyTimer) > 1) then { + if (CBA_missionTime - GVAR(busyTimer) > 1) then { (__dsp displayCtrl __mainText) ctrlSetText "Info Update.."; }; - if (ACE_time - GVAR(busyTimer) > 1.2) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.2) then { (__dsp displayCtrl __mainText) ctrlSetText "Info Update..."; }; - if (ACE_time - GVAR(busyTimer) > 1.4) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.4) then { (__dsp displayCtrl __mainText) ctrlSetText "Info Updated"; }; - if (ACE_time - GVAR(busyTimer) > 2.9) then { + if (CBA_missionTime - GVAR(busyTimer) > 2.9) then { GVAR(showInfoUpdating) = false; GVAR(busy) = false; }; @@ -289,21 +289,21 @@ GVAR(menuRun) = true; GVAR(numSelections) = GVAR(numWaypoints); GVAR(showDeleting) = true; GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; }; if (GVAR(busy) && GVAR(showDeleting)) then { (__dsp displayCtrl __mainText) ctrlSetText "Deleting."; - if (ACE_time - GVAR(busyTimer) > 1) then { + if (CBA_missionTime - GVAR(busyTimer) > 1) then { (__dsp displayCtrl __mainText) ctrlSetText "Deleting.."; }; - if (ACE_time - GVAR(busyTimer) > 1.2) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.2) then { (__dsp displayCtrl __mainText) ctrlSetText "Deleting..."; }; - if (ACE_time - GVAR(busyTimer) > 1.4) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.4) then { (__dsp displayCtrl __mainText) ctrlSetText "Waypoint Deleted"; }; - if (ACE_time - GVAR(busyTimer) > 2.9) then { + if (CBA_missionTime - GVAR(busyTimer) > 2.9) then { GVAR(showDeleting) = false; GVAR(busy) = false; }; @@ -313,7 +313,7 @@ GVAR(menuRun) = true; if (!GVAR(busy)) then { GVAR(showOutOfSpace) = true; GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; } else { GVAR(digit1) = 0; @@ -330,7 +330,7 @@ GVAR(menuRun) = true; }; if (GVAR(busy) && GVAR(showOutOfSpace)) then { (__dsp displayCtrl __mainText) ctrlSetText "Out of Space"; - if (ACE_time - GVAR(busyTimer) > 2.5) then { + if (CBA_missionTime - GVAR(busyTimer) > 2.5) then { GVAR(showOutOfSpace) = false; GVAR(busy) = false; }; @@ -425,22 +425,22 @@ GVAR(menuRun) = true; }; }; GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; (__dsp displayCtrl __F1) ctrlSetText ""; (__dsp displayCtrl __F2) ctrlSetText ""; (__dsp displayCtrl __F3) ctrlSetText ""; (__dsp displayCtrl __mainText) ctrlSetText "Saving."; - if (ACE_time - GVAR(busyTimer) > 1) then { + if (CBA_missionTime - GVAR(busyTimer) > 1) then { (__dsp displayCtrl __mainText) ctrlSetText "Saving.."; }; - if (ACE_time - GVAR(busyTimer) > 1.2) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.2) then { (__dsp displayCtrl __mainText) ctrlSetText "Saving..."; }; - if (ACE_time - GVAR(busyTimer) > 1.4) then { + if (CBA_missionTime - GVAR(busyTimer) > 1.4) then { (__dsp displayCtrl __mainText) ctrlSetText "Waypoint Saved"; }; - if (ACE_time - GVAR(busyTimer) > 2.9) then { + if (CBA_missionTime - GVAR(busyTimer) > 2.9) then { GVAR(edit) = false; GVAR(add) = false; GVAR(busy) = false; @@ -464,7 +464,7 @@ GVAR(menuRun) = true; if (GVAR(F3)) then { if (!GVAR(busy)) then { GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; } else { (__dsp displayCtrl __F1) ctrlSetText "Save"; (__dsp displayCtrl __F2) ctrlSetText "Vector"; @@ -472,7 +472,7 @@ GVAR(menuRun) = true; GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8); (__dsp displayCtrl __mainText) ctrlSetText GVAR(output); }; - if (ACE_time - GVAR(busyTimer) > 0.1) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.1) then { GVAR(add) = false; GVAR(edit) = false; GVAR(busy) = false; @@ -512,16 +512,16 @@ GVAR(menuRun) = true; if (GVAR(SEL)) then { if (!GVAR(busy)) then { GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; (__dsp displayCtrl __mainText) ctrlSetText "Connecting."; - if (ACE_time - GVAR(busyTimer) > 0.2) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.2) then { (__dsp displayCtrl __mainText) ctrlSetText "Connecting.."; }; - if (ACE_time - GVAR(busyTimer) > 0.4) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.4) then { (__dsp displayCtrl __mainText) ctrlSetText "Connecting..."; }; - if (ACE_time - GVAR(busyTimer) > 0.6) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.6) then { if (ACE_player hasWeapon "ACE_Vector") then { GVAR(displaySelection) = "VECTOR"; (__dsp displayCtrl __mainText) ctrlSetText "Vector Connected"; @@ -531,7 +531,7 @@ GVAR(menuRun) = true; GVAR(vectorConnected) = false; }; }; - if (ACE_time - GVAR(busyTimer) > 3.1) then { + if (CBA_missionTime - GVAR(busyTimer) > 3.1) then { GVAR(busy) = false; if (GVAR(vectorConnected)) then { GVAR(menu) = "main"; GVAR(numSelections) = 5; @@ -556,19 +556,19 @@ GVAR(menuRun) = true; GVAR(updateInterval) = GVAR(tmpUpdateRate); if (!GVAR(busy)) then { GVAR(busy) = true; - GVAR(busyTimer) = ACE_time; + GVAR(busyTimer) = CBA_missionTime; }; (__dsp displayCtrl __mainText) ctrlSetText "Updating."; - if (ACE_time - GVAR(busyTimer) > 0.2) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.2) then { (__dsp displayCtrl __mainText) ctrlSetText "Updating.."; }; - if (ACE_time - GVAR(busyTimer) > 0.4) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.4) then { (__dsp displayCtrl __mainText) ctrlSetText "Updating..."; }; - if (ACE_time - GVAR(busyTimer) > 0.6) then { + if (CBA_missionTime - GVAR(busyTimer) > 0.6) then { (__dsp displayCtrl __mainText) ctrlSetText "Update Success"; }; - if (ACE_time - GVAR(busyTimer) > 2.1) then { + if (CBA_missionTime - GVAR(busyTimer) > 2.1) then { GVAR(busy) = false; GVAR(menu) = "options"; GVAR(numSelections) = 2; }; diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf index be2f9320285..f0614bda6c2 100644 --- a/addons/disarming/functions/fnc_disarmDropItems.sqf +++ b/addons/disarming/functions/fnc_disarmDropItems.sqf @@ -177,7 +177,7 @@ if (_holderIsEmpty) then { _needToRemoveVest = ((vest _target) != "") && {(vest _target) in _listOfItemsToRemove}; _needToRemoveUniform = ((uniform _target) != "") && {(uniform _target) in _listOfItemsToRemove}; - if ((ACE_time < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then { + if ((CBA_missionTime < _maxWaitTime) && {[_target] call FUNC(canBeDisarmed)} && {_needToRemoveWeapon || _needToRemoveMagazines || _needToRemoveBackpack}) then { //action drop weapons (keeps loaded magazine and attachements) { if (_x in _listOfItemsToRemove) then { @@ -233,7 +233,7 @@ if (_holderIsEmpty) then { clearItemCargoGlobal _holder; }; //Verify we didn't timeout waiting on drop action - if (ACE_time >= _maxWaitTime) exitWith { + if (CBA_missionTime >= _maxWaitTime) exitWith { _holder setVariable [QGVAR(holderInUse), false]; [_caller, _target, "Debug: Drop Actions Timeout"] call FUNC(eventTargetFinish); }; @@ -263,4 +263,4 @@ if (_holderIsEmpty) then { [_caller, _target, ""] call FUNC(eventTargetFinish); }; -}, 0.0, [_caller,_target, _listOfItemsToRemove, _holder, _holderIsEmpty, (ACE_time + TIME_MAX_WAIT), _doNotDropAmmo, _targetMagazinesEnd]] call CBA_fnc_addPerFrameHandler; +}, 0.0, [_caller,_target, _listOfItemsToRemove, _holder, _holderIsEmpty, (CBA_missionTime + TIME_MAX_WAIT), _doNotDropAmmo, _targetMagazinesEnd]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/disarming/functions/fnc_eventCallerFinish.sqf b/addons/disarming/functions/fnc_eventCallerFinish.sqf index e1376f40522..bf1daee2f01 100644 --- a/addons/disarming/functions/fnc_eventCallerFinish.sqf +++ b/addons/disarming/functions/fnc_eventCallerFinish.sqf @@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"]; if (_caller != ACE_player) exitWith {}; systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg]; -ACE_LOGINFO_2("%1 - eventCallerFinish: %2",ACE_time,_this); +ACE_LOGINFO_2("%1 - eventCallerFinish: %2",CBA_missionTime,_this); diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index b7364a8f40a..9af811adc77 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -22,6 +22,6 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { - ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this); + ACE_LOGINFO_2("%1 - eventTargetFinish: %2",CBA_missionTime,_this); ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); }; diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index ec006938255..2624bbf05c7 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -64,7 +64,7 @@ if (_target isKindOf "CAManBase") then { }; // check everything -[FUNC(carryObjectPFH), 0.5, [_unit, _target, ACE_time]] call CBA_fnc_addPerFrameHandler; +[FUNC(carryObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; // reset current dragging height. GVAR(currentHeightChange) = 0; diff --git a/addons/dragging/functions/fnc_carryObjectPFH.sqf b/addons/dragging/functions/fnc_carryObjectPFH.sqf index 948af158912..963921efa7c 100644 --- a/addons/dragging/functions/fnc_carryObjectPFH.sqf +++ b/addons/dragging/functions/fnc_carryObjectPFH.sqf @@ -20,7 +20,7 @@ #include "script_component.hpp" #ifdef DEBUG_ENABLED_DRAGGING - systemChat format ["%1 carryObjectPFH running", ACE_time]; + systemChat format ["%1 carryObjectPFH running", CBA_missionTime]; #endif params ["_args", "_idPFH"]; @@ -34,10 +34,10 @@ if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith { // drop if the crate is destroyed OR (target moved away from carrier (weapon disasembled)) if (!alive _target || {_unit distance _target > 10}) then { TRACE_2("dead/distance",_unit,_target); - if ((_unit distance _target > 10) && {(ACE_time - _startTime) < 1}) exitWith { + if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith { //attachTo seems to have some kind of network delay and target can return an odd position durring the first few frames, //so wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos) - TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,ACE_time); + TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime); }; [_unit, _target] call FUNC(dropObject_carry); [_idPFH] call CBA_fnc_removePerFrameHandler; diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index 3237ddbb071..751baccf060 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -53,7 +53,7 @@ _unit setVariable [QGVAR(ReleaseActionID), [ [localize LSTRING(Drop), ""] call EFUNC(interaction,showMouseHint); // check everything -[FUNC(dragObjectPFH), 0.5, [_unit, _target, ACE_time]] call CBA_fnc_addPerFrameHandler; +[FUNC(dragObjectPFH), 0.5, [_unit, _target, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; // reset current dragging height. GVAR(currentHeightChange) = 0; diff --git a/addons/dragging/functions/fnc_dragObjectPFH.sqf b/addons/dragging/functions/fnc_dragObjectPFH.sqf index ab117e90fd1..08aeba738bb 100644 --- a/addons/dragging/functions/fnc_dragObjectPFH.sqf +++ b/addons/dragging/functions/fnc_dragObjectPFH.sqf @@ -20,7 +20,7 @@ #include "script_component.hpp" #ifdef DEBUG_ENABLED_DRAGGING - systemChat format ["%1 dragObjectPFH running", ACE_time]; + systemChat format ["%1 dragObjectPFH running", CBA_missionTime]; #endif params ["_args", "_idPFH"]; @@ -34,10 +34,10 @@ if !(_unit getVariable [QGVAR(isDragging), false]) exitWith { // drop if the crate is destroyed OR (target moved away from carrier (weapon disasembled)) if (!alive _target || {_unit distance _target > 10}) then { TRACE_2("dead/distance",_unit,_target); - if ((_unit distance _target > 10) && {(ACE_time - _startTime) < 1}) exitWith { + if ((_unit distance _target > 10) && {(CBA_missionTime - _startTime) < 1}) exitWith { //attachTo seems to have some kind of network delay and target can return an odd position durring the first few frames, //so wait a full second to exit if out of range (this is critical as we would otherwise detach and set it's pos to weird pos) - TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,ACE_time); + TRACE_3("ignoring bad distance at start",_unit distance _target,_startTime,CBA_missionTime); }; [_unit, _target] call FUNC(dropObject); [_idPFH] call CBA_fnc_removePerFrameHandler; diff --git a/addons/dragging/functions/fnc_startCarry.sqf b/addons/dragging/functions/fnc_startCarry.sqf index fd528b0104e..1890dbac1a7 100644 --- a/addons/dragging/functions/fnc_startCarry.sqf +++ b/addons/dragging/functions/fnc_startCarry.sqf @@ -26,7 +26,7 @@ if (_weight > missionNamespace getVariable ["ACE_maxWeightCarry", 1E11]) exitWit [localize LSTRING(UnableToDrag)] call EFUNC(common,displayTextStructured); }; -private _timer = ACE_time + 5; +private _timer = CBA_missionTime + 5; // handle objects vs persons if (_target isKindOf "CAManBase") then { @@ -46,7 +46,7 @@ if (_target isKindOf "CAManBase") then { [_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2, true] call EFUNC(common,doAnimation); [_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2, true] call EFUNC(common,doAnimation); - _timer = ACE_time + 15; + _timer = CBA_missionTime + 15; } else { diff --git a/addons/dragging/functions/fnc_startCarryPFH.sqf b/addons/dragging/functions/fnc_startCarryPFH.sqf index 4d39672a9e3..007469d960c 100644 --- a/addons/dragging/functions/fnc_startCarryPFH.sqf +++ b/addons/dragging/functions/fnc_startCarryPFH.sqf @@ -20,7 +20,7 @@ #include "script_component.hpp" #ifdef DEBUG_ENABLED_DRAGGING - systemChat format ["%1 startCarryPFH running", ACE_time]; + systemChat format ["%1 startCarryPFH running", CBA_missionTime]; #endif params ["_args", "_idPFH"]; @@ -28,28 +28,28 @@ _args params ["_unit", "_target", "_timeOut"]; // handle aborting carry if !(_unit getVariable [QGVAR(isCarrying), false]) exitWith { - TRACE_4("carry false",_unit,_target,_timeOut,ACE_time); + TRACE_4("carry false",_unit,_target,_timeOut,CBA_missionTime); [_idPFH] call CBA_fnc_removePerFrameHandler; }; // same as dragObjectPFH, checks if object is deleted or dead OR (target moved away from carrier (weapon disasembled)) if (!alive _target || {_unit distance _target > 10}) then { - TRACE_4("dead/distance",_unit,_target,_timeOut,ACE_time); + TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime); [_unit, _target] call FUNC(dropObject); [_idPFH] call CBA_fnc_removePerFrameHandler; }; // handle persons vs objects if (_target isKindOf "CAManBase") then { - if (ACE_time > _timeOut) exitWith { - TRACE_4("Start carry person",_unit,_target,_timeOut,ACE_time); + if (CBA_missionTime > _timeOut) exitWith { + TRACE_4("Start carry person",_unit,_target,_timeOut,CBA_missionTime); [_unit, _target] call FUNC(carryObject); [_idPFH] call CBA_fnc_removePerFrameHandler; }; } else { - if (ACE_time > _timeOut) exitWith { - TRACE_4("timeout",_unit,_target,_timeOut,ACE_time); + if (CBA_missionTime > _timeOut) exitWith { + TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime); [_idPFH] call CBA_fnc_removePerFrameHandler; // drop if in timeout @@ -59,7 +59,7 @@ if (_target isKindOf "CAManBase") then { // wait for the unit to stand up if (stance _unit == "STAND") exitWith { - TRACE_4("Start carry object",_unit,_target,_timeOut,ACE_time); + TRACE_4("Start carry object",_unit,_target,_timeOut,CBA_missionTime); [_unit, _target] call FUNC(carryObject); [_idPFH] call CBA_fnc_removePerFrameHandler; diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 24a279e7a74..04c536cbd8c 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -52,4 +52,4 @@ if (_target isKindOf "CAManBase") then { // prevents draging and carrying at the same time _unit setVariable [QGVAR(isDragging), true, true]; -[FUNC(startDragPFH), 0.2, [_unit, _target, ACE_time + 5]] call CBA_fnc_addPerFrameHandler; +[FUNC(startDragPFH), 0.2, [_unit, _target, CBA_missionTime + 5]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/dragging/functions/fnc_startDragPFH.sqf b/addons/dragging/functions/fnc_startDragPFH.sqf index cfa84fe2799..c7843cfdc97 100644 --- a/addons/dragging/functions/fnc_startDragPFH.sqf +++ b/addons/dragging/functions/fnc_startDragPFH.sqf @@ -20,7 +20,7 @@ #include "script_component.hpp" #ifdef DEBUG_ENABLED_DRAGGING - systemChat format ["%1 startDragPFH running", ACE_time]; + systemChat format ["%1 startDragPFH running", CBA_missionTime]; #endif params ["_args", "_idPFH"]; @@ -28,20 +28,20 @@ _args params ["_unit", "_target", "_timeOut"]; // handle aborting drag if !(_unit getVariable [QGVAR(isDragging), false]) exitWith { - TRACE_4("drag false",_unit,_target,_timeOut,ACE_time); + TRACE_4("drag false",_unit,_target,_timeOut,CBA_missionTime); [_idPFH] call CBA_fnc_removePerFrameHandler; }; // same as dragObjectPFH, checks if object is deleted or dead OR (target moved away from carrier (weapon disasembled)) if (!alive _target || {_unit distance _target > 10}) then { - TRACE_4("dead/distance",_unit,_target,_timeOut,ACE_time); + TRACE_4("dead/distance",_unit,_target,_timeOut,CBA_missionTime); [_unit, _target] call FUNC(dropObject); [_idPFH] call CBA_fnc_removePerFrameHandler; }; -// timeout. Do nothing. Quit. ACE_time, because anim length is linked to ingame time. -if (ACE_time > _timeOut) exitWith { - TRACE_4("timeout",_unit,_target,_timeOut,ACE_time); +// timeout. Do nothing. Quit. CBA_missionTime, because anim length is linked to ingame time. +if (CBA_missionTime > _timeOut) exitWith { + TRACE_4("timeout",_unit,_target,_timeOut,CBA_missionTime); [_idPFH] call CBA_fnc_removePerFrameHandler; // drop if in timeout @@ -51,7 +51,7 @@ if (ACE_time > _timeOut) exitWith { // unit is ready to start dragging if (animationState _unit in DRAG_ANIMATIONS) exitWith { - TRACE_4("Start Dragging",_unit,_target,_timeOut,ACE_time); + TRACE_4("Start Dragging",_unit,_target,_timeOut,CBA_missionTime); [_unit, _target] call FUNC(dragObject); [_idPFH] call CBA_fnc_removePerFrameHandler; diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index e61baed1363..3c4943badf8 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -29,7 +29,7 @@ private _distance = [ if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {}; GVAR(Enabled) = true; -GVAR(time) = ACE_time; +GVAR(time) = CBA_missionTime; private _weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 919ac3a58ed..b35c74383ed 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -41,10 +41,10 @@ private _angleTarget = asin (_weaponDirection select 2); private _movingAzimuth = 0; -if (ACE_time - GVAR(time) > 1 && GVAR(time) != -1 && isNil {_this select 2}) then { +if (CBA_missionTime - GVAR(time) > 1 && GVAR(time) != -1 && isNil {_this select 2}) then { // calculate speed of target private _posTarget = (getPosASL _vehicle) vectorAdd (_weaponDirection vectorMultiply _distance); - private _velocityTarget = (_posTarget vectorDiff GVAR(position)) vectorMultiply (1 / (ACE_time - GVAR(time))); + private _velocityTarget = (_posTarget vectorDiff GVAR(position)) vectorMultiply (1 / (CBA_missionTime - GVAR(time))); // estimate time to target private _magazine = _vehicle currentMagazineTurret _turret; diff --git a/addons/finger/functions/fnc_incomingFinger.sqf b/addons/finger/functions/fnc_incomingFinger.sqf index 02c870a5195..0b21bd4930c 100644 --- a/addons/finger/functions/fnc_incomingFinger.sqf +++ b/addons/finger/functions/fnc_incomingFinger.sqf @@ -27,7 +27,7 @@ _fingerPos = if (_sourceUnit == ACE_player) then { _fingerPosPrecise vectorAdd [random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_Y) - FP_RANDOMIZATION_Y] }; -_data = [ACE_diagTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName))]; +_data = [diag_tickTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName))]; HASH_SET(GVAR(fingersHash), _sourceUnit, _data); if (GVAR(pfeh_id) == -1) then { diff --git a/addons/finger/functions/fnc_keyPress.sqf b/addons/finger/functions/fnc_keyPress.sqf index 1ce83d62dc5..f569331eb71 100644 --- a/addons/finger/functions/fnc_keyPress.sqf +++ b/addons/finger/functions/fnc_keyPress.sqf @@ -25,9 +25,9 @@ if ((ACE_player != vehicle ACE_player) && {!((vehicle ACE_player) isKindOf "Stat //Check camera view (not in GUNNER) if !(cameraView in ["INTERNAL", "EXTERNAL"]) exitWith {false}; //Exit if run recently (run every 1 seconds) -if (ACE_diagTime < (GVAR(lastFPTime) + FP_ACTION_TIMEOUT)) exitWith {true}; +if (diag_tickTime < (GVAR(lastFPTime) + FP_ACTION_TIMEOUT)) exitWith {true}; -GVAR(lastFPTime) = ACE_diagTime; +GVAR(lastFPTime) = diag_tickTime; _fingerPosPrecise = positionCameraToWorld [0, 0, FP_DISTANCE]; _playerEyePos = eyePos ACE_player; diff --git a/addons/finger/functions/fnc_perFrameEH.sqf b/addons/finger/functions/fnc_perFrameEH.sqf index 61c8f077aba..12b06de946f 100644 --- a/addons/finger/functions/fnc_perFrameEH.sqf +++ b/addons/finger/functions/fnc_perFrameEH.sqf @@ -31,7 +31,7 @@ _iconSize = BASE_SIZE * _fovCorrection; { _data = HASH_GET(GVAR(fingersHash), _x); _data params ["_lastTime", "_pos", "_name"]; - _timeLeftToShow = _lastTime + FP_TIMEOUT - ACE_diagTime; + _timeLeftToShow = _lastTime + FP_TIMEOUT - diag_tickTime; if (_timeLeftToShow <= 0) then { HASH_REM(GVAR(fingersHash), _x); } else { diff --git a/addons/frag/functions/fnc_addTrack.sqf b/addons/frag/functions/fnc_addTrack.sqf index 680dc31c374..922e37e7190 100644 --- a/addons/frag/functions/fnc_addTrack.sqf +++ b/addons/frag/functions/fnc_addTrack.sqf @@ -20,4 +20,4 @@ _positions set[(count _positions), [(getPos _obj), _objSpd]]; _data = [_origin, typeOf _origin, typeOf _obj, _objSpd, _positions, _color]; GVAR(traces) set[_index, _data]; -[DFUNC(trackTrace), 0, [_obj, _index, ACE_time]] call CBA_fnc_addPerFrameHandler; +[DFUNC(trackTrace), 0, [_obj, _index, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index 8c72ae8bacd..64e82b6f837 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -9,7 +9,7 @@ if(!isServer) exitWith { }; BEGIN_COUNTER(frago); -// _startTime = ACE_diagTime; +// _startTime = diag_tickTime; private ["_startTime", "_round", "_lastPos", "_lastVel", "_shellType", "_gun", "_fragTypes", "_warn", "_atlPos", "_isArmed", "_fuseDist", "_indirectHitRange", "_fragRange", "_c", "_m", "_k", "_gC", "_fragPower", "_fragPowerRandom", "_manObjects", "_objects", "_crew", "_fragCount", "_fragArcs", "_doRandom", "_boundingBox", "_targetPos", "_distance", "_add", "_bbX", "_bbY", "_bbZ", "_cubic", "_targetVel", "_baseVec", "_dir", "_currentCount", "_count", "_vecVar", "_vec", "_fp", "_vel", "_fragType", "_fragObj", "_randomCount", "_sectorSize", "_sectorOffset", "_i", "_randomDir", "_endTime", "_target"]; @@ -214,5 +214,5 @@ if(_isArmed && (count _objects) > 0) then { // ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)]; // ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))]; // #endif -// _endTime = ACE_diagTime; +// _endTime = diag_tickTime; END_COUNTER(frago); \ No newline at end of file diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index dd569781e7e..84497b78be9 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -16,8 +16,8 @@ EXPLODE_2_PVT(_this,_params,_pfhId); // Update the g-forces at constant mission time intervals (taking accTime into account) -if ((ACE_time - GVAR(lastUpdateTime)) < INTERVAL) exitWith {}; -GVAR(lastUpdateTime) = ACE_time; +if ((CBA_missionTime - GVAR(lastUpdateTime)) < INTERVAL) exitWith {}; +GVAR(lastUpdateTime) = CBA_missionTime; if (isNull ACE_player || !(alive ACE_player)) exitWith {}; diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf index 944b98f1276..9b17fe1d1f3 100644 --- a/addons/goggles/functions/fnc_applyDustEffect.sqf +++ b/addons/goggles/functions/fnc_applyDustEffect.sqf @@ -50,7 +50,7 @@ SETDUST(DBULLETS,0); GVAR(DustHandler) = -1; GVAR(DustHandler) = [{ - if (ACE_diagTime >= GETDUSTT(DTIME) + 3) then { + if (diag_tickTime >= GETDUSTT(DTIME) + 3) then { SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); private _amount = 1 - (GETDUSTT(DAMOUNT) * 0.125); diff --git a/addons/goggles/functions/fnc_handleFired.sqf b/addons/goggles/functions/fnc_handleFired.sqf index dcfcc51becb..066bc040f79 100644 --- a/addons/goggles/functions/fnc_handleFired.sqf +++ b/addons/goggles/functions/fnc_handleFired.sqf @@ -60,14 +60,14 @@ if (!GVAR(surfaceCacheIsDust)) exitWith {true}; // increment dust value with type bullet _bullets = GETDUSTT(DBULLETS); -if (ACE_diagTime - GETDUSTT(DTIME) > 1) then { +if (diag_tickTime - GETDUSTT(DTIME) > 1) then { _bullets = 0; }; _bullets = _bullets + 1; SETDUST(DBULLETS,_bullets); -SETDUST(DTIME,ACE_diagTime); +SETDUST(DTIME,diag_tickTime); // apply dust effect if the amount of fired bullets is over the threshold if (GETDUSTT(DAMOUNT) < 2) then { diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index 58eedc7b39d..0e6e1e1cb74 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -27,8 +27,8 @@ if (!_justUpdateVolume) then { if (GVAR(deafnessDV) - GVAR(deafnessPrior) > 1 || GVAR(deafnessDV) > 10) then { - if (ACE_time - GVAR(time3) < 3) exitWith {}; - GVAR(time3) = ACE_time; + if (CBA_missionTime - GVAR(time3) < 3) exitWith {}; + GVAR(time3) = CBA_missionTime; if (GVAR(deafnessDV) > 19.75) then { playSound (["ACE_Combat_Deafness_Heavy", "ACE_Combat_Deafness_Heavy_NoRing"] select GVAR(DisableEarRinging)); diff --git a/addons/huntir/functions/fnc_cam.sqf b/addons/huntir/functions/fnc_cam.sqf index 2eb7611a6ac..80d5e33043b 100644 --- a/addons/huntir/functions/fnc_cam.sqf +++ b/addons/huntir/functions/fnc_cam.sqf @@ -145,7 +145,7 @@ GVAR(no_cams) sort true; ctrlSetText [1, format["%1 m", round(GVAR(pos) select 2)]]; ctrlSetText [2, format["%1", GVAR(cur_cam) + 1]]; - _cam_time = ACE_time - (GVAR(huntIR) getVariable [QGVAR(startTime), ACE_time]); + _cam_time = CBA_missionTime - (GVAR(huntIR) getVariable [QGVAR(startTime), CBA_missionTime]); ctrlSetText [3, format["%1 s", round(_cam_time)]]; _cam_pos = getPosVisual GVAR(huntIR); _cam_pos = format ["X = %1, Y = %2", round (_cam_pos select 0), round (_cam_pos select 1)]; diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf index 551b9975b69..cef500a7a22 100644 --- a/addons/huntir/functions/fnc_handleFired.sqf +++ b/addons/huntir/functions/fnc_handleFired.sqf @@ -34,7 +34,7 @@ if (!hasInterface) exitWith {}; params ["_position"]; _huntir = createVehicle ["ACE_HuntIR", _position, [], 0, "FLY"]; _huntir setPosATL _position; - _huntir setVariable [QGVAR(startTime), ACE_time, true]; + _huntir setVariable [QGVAR(startTime), CBA_missionTime, true]; [{ params ["_args", "_idPFH"]; _args params ["_huntir"]; diff --git a/addons/huntir/functions/fnc_huntir.sqf b/addons/huntir/functions/fnc_huntir.sqf index e06ada87eac..8abf8e1b57a 100644 --- a/addons/huntir/functions/fnc_huntir.sqf +++ b/addons/huntir/functions/fnc_huntir.sqf @@ -30,7 +30,7 @@ createDialog "ace_huntir_cam_dialog_off"; createDialog "ace_huntir_cam_dialog_inactive"; uiNameSpace setVariable ["ace_huntir_monitor", findDisplay 18881]; [{ - GVAR(startTime) = ACE_time; + GVAR(startTime) = CBA_missionTime; GVAR(done) = false; GVAR(connectionDelay) = 5; GVAR(state) = "searching"; @@ -44,7 +44,7 @@ createDialog "ace_huntir_cam_dialog_off"; }; private ["_elapsedTime", "_nearestHuntIRs"]; - _elapsedTime = ACE_time - GVAR(startTime); + _elapsedTime = CBA_missionTime - GVAR(startTime); _nearestHuntIRs = ACE_player nearEntities ["ACE_HuntIR", HUNTIR_MAX_TRANSMISSION_RANGE]; if ((!dialog) || GVAR(done)) exitWith { diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index ac3ee9b0f5e..1ef6f0a411a 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -24,7 +24,7 @@ GVAR(keyDownSelfAction) = false; GVAR(keyDownTime) = 0; GVAR(openedMenuType) = -1; -GVAR(lastTime) = ACE_diagTime; +GVAR(lastTime) = diag_tickTime; GVAR(rotationAngle) = 0; GVAR(selectedAction) = [[],[]]; @@ -40,8 +40,8 @@ GVAR(lastPath) = []; GVAR(expanded) = false; -GVAR(startHoverTime) = ACE_diagTime; -GVAR(expandedTime) = ACE_diagTime; +GVAR(startHoverTime) = diag_tickTime; +GVAR(expandedTime) = diag_tickTime; GVAR(iconCtrls) = []; GVAR(iconCount) = 0; diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index b71130a2481..4d9f0af4db5 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -32,7 +32,7 @@ if (_menuType == 0) then { GVAR(keyDown) = false; GVAR(keyDownSelfAction) = true; }; -GVAR(keyDownTime) = ACE_diagTime; +GVAR(keyDownTime) = diag_tickTime; GVAR(openedMenuType) = _menuType; GVAR(lastTimeSearchedActions) = -1000; GVAR(ParsedTextCached) = []; @@ -83,21 +83,21 @@ if (GVAR(openedMenuType) == 0) then { if (vehicle ACE_player != ACE_player) then { GVAR(menuDepthPath) = [["ACE_SelfActions", (vehicle ACE_player)]]; GVAR(expanded) = true; - GVAR(expandedTime) = ACE_diagTime; + GVAR(expandedTime) = diag_tickTime; GVAR(lastPath) = +GVAR(menuDepthPath); GVAR(startHoverTime) = -1000; }; } else { GVAR(menuDepthPath) = [["ACE_ZeusActions", (getAssignedCuratorLogic player)]]; GVAR(expanded) = true; - GVAR(expandedTime) = ACE_diagTime; + GVAR(expandedTime) = diag_tickTime; GVAR(lastPath) = +GVAR(menuDepthPath); GVAR(startHoverTime) = -1000; }; } else { GVAR(menuDepthPath) = [["ACE_SelfActions", ACE_player]]; GVAR(expanded) = true; - GVAR(expandedTime) = ACE_diagTime; + GVAR(expandedTime) = diag_tickTime; GVAR(lastPath) = +GVAR(menuDepthPath); GVAR(startHoverTime) = -1000; }; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 117a828b0bb..ff7687b78b8 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -51,7 +51,7 @@ if (GVAR(openedMenuType) >= 0) then { private _closest = GVAR(currentOptions) select _closestSelection; _closest params ["_action", "_sPos", "_hoverPath"]; - private _cTime = ACE_diagTime; + private _cTime = diag_tickTime; private _delta = _cTime - GVAR(lastTime); GVAR(lastTime) = _cTime; @@ -65,17 +65,17 @@ if (GVAR(openedMenuType) >= 0) then { private _misMatch = !(GVAR(lastPath) isEqualTo _hoverPath); - if(_misMatch && {ACE_diagTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { - GVAR(startHoverTime) = ACE_diagTime; + if(_misMatch && {diag_tickTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { + GVAR(startHoverTime) = diag_tickTime; GVAR(lastPath) = _hoverPath; GVAR(expanded) = false; } else { - if(!GVAR(expanded) && {ACE_diagTime-GVAR(startHoverTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { + if(!GVAR(expanded) && {diag_tickTime-GVAR(startHoverTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { GVAR(expanded) = true; // Start the expanding menu animation only if the user is not going up the menu if !([GVAR(menuDepthPath),GVAR(lastPath)] call FUNC(isSubPath)) then { - GVAR(expandedTime) = ACE_diagTime; + GVAR(expandedTime) = diag_tickTime; }; GVAR(menuDepthPath) = +GVAR(lastPath); diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 1d42f38c6cc..b5fc4f81fab 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -24,7 +24,7 @@ private _fnc_renderNearbyActions = { #define MAXINTERACTOBJECTS 3 GVAR(foundActions) = []; - GVAR(lastTimeSearchedActions) = ACE_diagTime; + GVAR(lastTimeSearchedActions) = diag_tickTime; private _numInteractObjects = 0; private _nearestObjects = nearestObjects [ACE_player, ["All"], 13]; @@ -127,7 +127,7 @@ GVAR(collectedActionPoints) resize 0; if (GVAR(openedMenuType) == 0) then { if (isNull curatorCamera) then { if (vehicle ACE_player == ACE_player) then { - if (ACE_diagTime > GVAR(lastTimeSearchedActions) + 0.20) then { + if (diag_tickTime > GVAR(lastTimeSearchedActions) + 0.20) then { // Once every 0.2 secs, collect nearby objects active and visible action points and render them call _fnc_renderNearbyActions; } else { diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 6abb9806200..f975db17f12 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -99,8 +99,8 @@ if (GVAR(UseListMenu)) then { // Animate menu scale if (_menuInSelectedPath && {_menuDepth == count _path}) then { - _scaleX = _scaleX * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); - _scaleY = _scaleY * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); + _scaleX = _scaleX * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); + _scaleY = _scaleY * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); }; private _target = _actionObject; diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf index b2249d15891..180c01fba9d 100644 --- a/addons/interaction/functions/fnc_openDoor.sqf +++ b/addons/interaction/functions/fnc_openDoor.sqf @@ -62,10 +62,10 @@ GVAR(usedScrollWheel) = false; }; // this allows for holding the door in it's current state. - if (ACE_time > _time && {diag_frameno > _frame}) then { + if (CBA_missionTime > _time && {diag_frameno > _frame}) then { GVAR(usedScrollWheel) = true; }; // do incremental door opening {_house animate [_x, GVAR(doorTargetPhase)]; false} count _animations; -}, 0.1, [_house, _animations, getPosASL ACE_player, ACE_time + 0.2, diag_frameno + 2]] call CBA_fnc_addPerFrameHandler; +}, 0.1, [_house, _animations, getPosASL ACE_player, CBA_missionTime + 0.2, diag_frameno + 2]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index f561806eaa7..04a5e1d04c9 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -20,7 +20,7 @@ _currentShooter = (vehicle ACE_player); _args = uiNamespace getVariable[QGVAR(arguments), [] ]; if( (count _args) > 0) then { _lastTick = _args select 0; - if(ACE_diagTime - _lastTick > 1) then { + if(diag_tickTime - _lastTick > 1) then { [] call FUNC(onOpticLoad); }; }; @@ -184,12 +184,12 @@ if (isNull _newTarget) then { // Lock on after 3 seconds if(_currentTarget != _newTarget) then { TRACE_1("New Target, reseting locking", _newTarget); - _lockTime = ACE_diagTime; + _lockTime = diag_tickTime; _currentTarget = _newTarget; playSound "ACE_Javelin_Locking"; } else { - if(ACE_diagTime - _lockTime > __LOCKONTIME + _randomLockInterval) then { + if(diag_tickTime - _lockTime > __LOCKONTIME + _randomLockInterval) then { TRACE_2("LOCKED!", _currentTarget, _lockTime); __JavelinIGUISeek ctrlSetTextColor __ColorGreen; @@ -231,9 +231,9 @@ if (isNull _newTarget) then { // Allow fire _fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire); - if(ACE_diagTime > _soundTime) then { + if(diag_tickTime > _soundTime) then { playSound "ACE_Javelin_Locked"; - _soundTime = ACE_diagTime + 0.25; + _soundTime = diag_tickTime + 0.25; }; } else { __JavelinIGUITargeting ctrlShow true; @@ -265,9 +265,9 @@ if (isNull _newTarget) then { {_x ctrlCommit __TRACKINTERVAL} forEach [__JavelinIGUITargetingGateTL,__JavelinIGUITargetingGateTR,__JavelinIGUITargetingGateBL,__JavelinIGUITargetingGateBR]; - if(ACE_diagTime > _soundTime) then { + if(diag_tickTime > _soundTime) then { playSound "ACE_Javelin_Locking"; - _soundTime = ACE_diagTime + 0.25; + _soundTime = diag_tickTime + 0.25; }; // Disallow fire _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire); @@ -294,7 +294,7 @@ if (isNull _newTarget) then { //TRACE_2("", _newTarget, _currentTarget); // Save arguments for next run -_args set[0, ACE_diagTime]; +_args set[0, diag_tickTime]; _args set[1, _currentTarget]; _args set[2, _runTime]; _args set[3, _lockTime]; diff --git a/addons/javelin/functions/fnc_onOpticLoad.sqf b/addons/javelin/functions/fnc_onOpticLoad.sqf index cb4eac74f94..85624712e3e 100644 --- a/addons/javelin/functions/fnc_onOpticLoad.sqf +++ b/addons/javelin/functions/fnc_onOpticLoad.sqf @@ -24,7 +24,7 @@ if(GVAR(pfehID) != -1) then { uiNameSpace setVariable [QGVAR(arguments), [ - ACE_diagTime, // Last runtime + diag_tickTime, // Last runtime objNull, // currentTargetObject 0, // Run Time 0, // Lock Time diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf index f22fc2228fc..9511041bd2b 100644 --- a/addons/kestrel4500/XEH_postInit.sqf +++ b/addons/kestrel4500/XEH_postInit.sqf @@ -11,7 +11,7 @@ GVAR(MinAvgMax) = false; GVAR(MinAvgMaxMode) = 0; GVAR(referenceHeadingMenu) = 0; GVAR(referenceHeadingAutoSet) = true; -GVAR(manualSetCooldown) = ACE_diagTime; +GVAR(manualSetCooldown) = diag_tickTime; GVAR(headingSetDisplayTimer) = 0; GVAR(Menu) = 1; diff --git a/addons/kestrel4500/functions/fnc_buttonPressed.sqf b/addons/kestrel4500/functions/fnc_buttonPressed.sqf index 83c471092a4..a051f6b1b65 100644 --- a/addons/kestrel4500/functions/fnc_buttonPressed.sqf +++ b/addons/kestrel4500/functions/fnc_buttonPressed.sqf @@ -33,12 +33,12 @@ switch (_this) do { case 2: { // Auto set GVAR(RefHeading) = (getDir ACE_player) % 360; GVAR(referenceHeadingMenu) = 0; - GVAR(headingSetDisplayTimer) = ACE_diagTime; + GVAR(headingSetDisplayTimer) = diag_tickTime; }; case 3: { // Manual set GVAR(RefHeading) = GVAR(TmpHeading); GVAR(referenceHeadingMenu) = 0; - GVAR(headingSetDisplayTimer) = ACE_diagTime; + GVAR(headingSetDisplayTimer) = diag_tickTime; }; }; }; @@ -73,13 +73,13 @@ switch (_this) do { GVAR(MinAvgMax) = !GVAR(MinAvgMax); } else { if (GVAR(referenceHeadingMenu) == 3) then { - if (ACE_diagTime - GVAR(manualSetCooldown) < 0.2) then { + if (diag_tickTime - GVAR(manualSetCooldown) < 0.2) then { GVAR(TmpHeading) = GVAR(TmpHeading) - 10; } else { GVAR(TmpHeading) = GVAR(TmpHeading) - 1; }; GVAR(TmpHeading) = (GVAR(TmpHeading) + 360) % 360; - GVAR(manualSetCooldown) = ACE_diagTime; + GVAR(manualSetCooldown) = diag_tickTime; }; }; }; @@ -88,13 +88,13 @@ switch (_this) do { GVAR(MinAvgMax) = !GVAR(MinAvgMax); } else { if (GVAR(referenceHeadingMenu) == 3) then { - if (ACE_diagTime - GVAR(manualSetCooldown) < 0.2) then { + if (diag_tickTime - GVAR(manualSetCooldown) < 0.2) then { GVAR(TmpHeading) = GVAR(TmpHeading) + 10; } else { GVAR(TmpHeading) = GVAR(TmpHeading) + 1; }; GVAR(TmpHeading) = (GVAR(TmpHeading) + 360) % 360; - GVAR(manualSetCooldown) = ACE_diagTime; + GVAR(manualSetCooldown) = diag_tickTime; }; }; }; diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf index 64d06fea1c9..0c25808f376 100644 --- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -59,8 +59,8 @@ GVAR(Overlay) = true; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - if (ACE_diagTime > GVAR(updateTimer)) then { - GVAR(updateTimer) = ACE_diagTime + 1; + if (diag_tickTime > GVAR(updateTimer)) then { + GVAR(updateTimer) = diag_tickTime + 1; private ["_outputData"]; _outputData = [] call FUNC(generateOutputData); diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf index 016baebef7d..c3bce5efa2d 100644 --- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf +++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf @@ -31,7 +31,7 @@ */ #include "script_component.hpp" -if (ACE_diagTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", " Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]}; +if (diag_tickTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", " Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]}; private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"]; diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf index 901fa04b9ad..12873b5ed06 100644 --- a/addons/laser/functions/fnc_laserOn.sqf +++ b/addons/laser/functions/fnc_laserOn.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" private ["_uuid", "_args"]; -_uuid = format["%1%2%3", floor ACE_diagTime, floor random 1000, floor random 10000]; -_args = [_uuid, _this]; -["laser_laserOn", _args] call EFUNC(common,globalEvent); -_uuid; +_uuid = format["%1%2%3", floor diag_tickTime, floor random 1000, floor random 10000]; +_args = [_uuid, _this]; +["laser_laserOn", _args] call EFUNC(common,globalEvent); +_uuid; diff --git a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf index e585a409ff7..24f19506fe4 100644 --- a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf +++ b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf @@ -32,7 +32,7 @@ FUNC(laserHudDesignatePFH) = { }; if( (count _args) < 4) then { - _args set[3, ACE_diagTime + FCS_UPDATE_DELAY]; + _args set[3, diag_tickTime + FCS_UPDATE_DELAY]; }; _forceUpdateTime = _args select 3; @@ -57,9 +57,9 @@ FUNC(laserHudDesignatePFH) = { }; */ - if(ACE_diagTime > _forceUpdateTime) then { + if(diag_tickTime > _forceUpdateTime) then { ["ace_fcs_forceUpdate", []] call ace_common_fnc_localEvent; - _args set[3, ACE_diagTime + FCS_UPDATE_DELAY]; + _args set[3, diag_tickTime + FCS_UPDATE_DELAY]; }; _this set[0, _args]; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a64c8e014d9..f394b0e17fc 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -101,9 +101,6 @@ #define HASHLIST_SET(hashList, index, value) ([hashList, index, value, __FILE__, __LINE__] call EFUNC(common,hashListSet)) #define HASHLIST_PUSH(hashList, value) ([hashList, value, __FILE__, __LINE__] call EFUNC(common,hashListPush)) -// Time functions for accuracy per frame -#define ACE_tickTime (ACE_time + (diag_tickTime - ACE_diagTime)) - #define ACE_isHC (!hasInterface && !isDedicated) #define IDC_STAMINA_BAR 193 diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index 00e9e737cfb..cf4b20c0322 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -29,7 +29,7 @@ call FUNC(determineZoom); if (isNull findDisplay 12) exitWith {}; GVAR(lastStillPosition) = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5]; - GVAR(lastStillTime) = ACE_time; + GVAR(lastStillTime) = CBA_missionTime; GVAR(isShaking) = false; //map sizes are multiples of 1280 diff --git a/addons/map/functions/fnc_updateMapEffects.sqf b/addons/map/functions/fnc_updateMapEffects.sqf index 0e36a6fdd67..b89a75aa322 100644 --- a/addons/map/functions/fnc_updateMapEffects.sqf +++ b/addons/map/functions/fnc_updateMapEffects.sqf @@ -44,8 +44,8 @@ if (GVAR(mapShake)) then { _amplitude = (_speed - 0.1) / 5 * (1000 * _mapScale); _time = 0.1; - _shakePos = [(GVAR(lastStillPosition) select 0) + sin((ACE_time + _time - GVAR(lastStillTime))*100) * _amplitude * 0.25, - (GVAR(lastStillPosition) select 1) + sin((ACE_time + _time - GVAR(lastStillTime))*260) * _amplitude]; + _shakePos = [(GVAR(lastStillPosition) select 0) + sin((CBA_missionTime + _time - GVAR(lastStillTime))*100) * _amplitude * 0.25, + (GVAR(lastStillPosition) select 1) + sin((CBA_missionTime + _time - GVAR(lastStillTime))*260) * _amplitude]; _mapCtrl ctrlMapAnimAdd [_time, _mapScale, _shakePos]; ctrlMapAnimCommit _mapCtrl; @@ -62,7 +62,7 @@ if (GVAR(mapShake)) then { } else { // The map is still, store state GVAR(lastStillPosition) = _mapCentre; - GVAR(lastStillTime) = ACE_time; + GVAR(lastStillTime) = CBA_missionTime; }; }; }; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 5d29d22cecc..ed12661379b 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -108,7 +108,7 @@ GVAR(effectPainCC) = [ // Initialize Other Variables GVAR(effectBlind) = false; -GVAR(effectTimeBlood) = ACE_time; +GVAR(effectTimeBlood) = CBA_missionTime; // MAIN EFFECTS LOOP [{ @@ -155,8 +155,8 @@ GVAR(effectTimeBlood) = ACE_time; _bleeding = [ACE_player] call FUNC(getBloodLoss); // Bleeding Indicator - if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < ACE_time) then { - GVAR(effectTimeBlood) = ACE_time; + if (_bleeding > 0 and GVAR(effectTimeBlood) + 3.5 < CBA_missionTime) then { + GVAR(effectTimeBlood) = CBA_missionTime; [600 * _bleeding] call BIS_fnc_bloodEffect; }; @@ -172,8 +172,8 @@ GVAR(effectTimeBlood) = ACE_time; }, 0.5, []] call CBA_fnc_addPerFrameHandler; -GVAR(lastHeartBeat) = ACE_time; -GVAR(lastHeartBeatSound) = ACE_time; +GVAR(lastHeartBeat) = CBA_missionTime; +GVAR(lastHeartBeatSound) = CBA_missionTime; // HEARTRATE BASED EFFECTS [{ @@ -193,8 +193,8 @@ GVAR(lastHeartBeatSound) = ACE_time; GVAR(effectPainCC) ppEffectEnable false; }; } else { - if ((ACE_time > GVAR(lastHeartBeat) + _interval)) then { - GVAR(lastHeartBeat) = ACE_time; + if ((CBA_missionTime > GVAR(lastHeartBeat) + _interval)) then { + GVAR(lastHeartBeat) = CBA_missionTime; // Pain effect, no pain effect in zeus camera if (isNull curatorCamera) then { @@ -251,8 +251,8 @@ GVAR(lastHeartBeatSound) = ACE_time; if (GVAR(level) >= 2 && {_heartRate > 0}) then { _minTime = 60 / _heartRate; - if (ACE_time - GVAR(lastHeartBeatSound) > _minTime) then { - GVAR(lastHeartBeatSound) = ACE_time; + if (CBA_missionTime - GVAR(lastHeartBeatSound) > _minTime) then { + GVAR(lastHeartBeatSound) = CBA_missionTime; // Heart rate sound effect if (_heartRate < 60) then { _sound = GVAR(heartBeatSounds_Normal) select (random((count GVAR(heartBeatSounds_Normal)) -1)); diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf index aa545f491eb..5114cc91fd9 100644 --- a/addons/medical/functions/fnc_addToInjuredCollection.sqf +++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf @@ -27,8 +27,8 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { [{ params ["_args", "_idPFH"]; _args params ["_unit", "_interval"]; - _interval = ACE_time - _interval; - (_this select 0) set [1, ACE_time]; + _interval = CBA_missionTime - _interval; + (_this select 0) set [1, CBA_missionTime]; if (!alive _unit || !local _unit) then { [_idPFH] call CBA_fnc_removePerFrameHandler; @@ -55,5 +55,5 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { [_unit, _pain] call FUNC(playInjuredSound); }; }; - }, 1, [_unit, ACE_time]] call CBA_fnc_addPerFrameHandler; + }, 1, [_unit, CBA_missionTime]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index ca54d8cd279..4fce53e0ab5 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -29,7 +29,7 @@ _amount = 1; private "_info"; _info = _log select _forEachIndex; _info set [1,(_info select 1) + 1]; - _info set [2, ACE_gameTime]; + _info set [2, CBA_missionTime]; _log set [_forEachIndex, _info]; _amount = (_info select 1); @@ -38,7 +38,7 @@ _amount = 1; } forEach _log; if (!_inList) then { - _log pushBack [_newItem, 1, ACE_gameTime]; + _log pushBack [_newItem, 1, CBA_missionTime]; }; _unit setVariable [QGVAR(triageCard), _log, true]; ["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call EFUNC(common,localEvent); diff --git a/addons/medical/functions/fnc_getCardiacOutput.sqf b/addons/medical/functions/fnc_getCardiacOutput.sqf index d07319e8b56..74da98012b6 100644 --- a/addons/medical/functions/fnc_getCardiacOutput.sqf +++ b/addons/medical/functions/fnc_getCardiacOutput.sqf @@ -14,7 +14,7 @@ #include "script_component.hpp" /* - Cardiac output (Q or or CO ) is the volume of blood being pumped by the heart, in particular by a left or right ventricle in the ACE_time interval of one minute. CO may be measured in many ways, for example dm3/min (1 dm3 equals 1 litre). + Cardiac output (Q or or CO ) is the volume of blood being pumped by the heart, in particular by a left or right ventricle in the CBA_missionTime interval of one minute. CO may be measured in many ways, for example dm3/min (1 dm3 equals 1 litre). Source: http://en.wikipedia.org/wiki/Cardiac_output */ diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index c87d51a7e1c..b1b31d9c5d7 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -41,14 +41,14 @@ if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { } forEach (_oldLitter select 1); }; -GVAR(allCreatedLitter) pushBack [ACE_time, [_litterObject]]; +GVAR(allCreatedLitter) pushBack [CBA_missionTime, [_litterObject]]; if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then { GVAR(litterPFHRunning) = true; [{ { _x params ["_time", "_objects"]; - if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then { + if (CBA_missionTime - _time >= GVAR(litterCleanUpDelay)) then { { deleteVehicle _x; } forEach _objects; diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf index 91689f311f5..e4485fae9f7 100644 --- a/addons/medical/functions/fnc_handleLocal.sqf +++ b/addons/medical/functions/fnc_handleLocal.sqf @@ -24,7 +24,7 @@ if (_local) then { if ((_unit getVariable ["ACE_isUnconscious",false]) && {count (_unit getVariable [QGVAR(unconsciousArguments), []]) >= 6}) then { private "_arguments"; _arguments = (_unit getVariable [QGVAR(unconsciousArguments), []]); - _arguments set [2, ACE_time]; + _arguments set [2, CBA_missionTime]; [DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 6159351cc95..1ae3f616cc1 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -19,9 +19,9 @@ TRACE_3("ACE_DEBUG",_unit,_interval,_unit); if (_interval == 0) exitWith {}; _lastTimeValuesSynced = _unit getVariable [QGVAR(lastMomentValuesSynced), 0]; -_syncValues = (ACE_time - _lastTimeValuesSynced >= (10 + floor(random(10))) && GVAR(keepLocalSettingsSynced)); +_syncValues = (CBA_missionTime - _lastTimeValuesSynced >= (10 + floor(random(10))) && GVAR(keepLocalSettingsSynced)); if (_syncValues) then { - _unit setVariable [QGVAR(lastMomentValuesSynced), ACE_time]; + _unit setVariable [QGVAR(lastMomentValuesSynced), CBA_missionTime]; }; _bloodVolume = (_unit getVariable [QGVAR(bloodVolume), 100]) + ([_unit] call FUNC(getBloodVolumeChange)); diff --git a/addons/medical/functions/fnc_isInMedicalFacility.sqf b/addons/medical/functions/fnc_isInMedicalFacility.sqf index f934978d2b1..313ee8eca43 100644 --- a/addons/medical/functions/fnc_isInMedicalFacility.sqf +++ b/addons/medical/functions/fnc_isInMedicalFacility.sqf @@ -19,7 +19,7 @@ params ["_unit"]; //Cache the results as this function could be called rapidly (_unit getVariable [QGVAR(cacheInFacility), [-9, false]]) params ["_expireTime", "_lastResult"]; -if (ACE_time < _expireTime) exitWith {_lastResult}; +if (CBA_missionTime < _expireTime) exitWith {_lastResult}; private _eyePos = eyePos _unit; private _isInBuilding = false; @@ -58,6 +58,6 @@ if (!_isInBuilding) then { }; //Save the results (with a 1 second expiry) -_unit setVariable [QGVAR(cacheInFacility), [ACE_time + 1, _isInBuilding]]; +_unit setVariable [QGVAR(cacheInFacility), [CBA_missionTime + 1, _isInBuilding]]; _isInBuilding; diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index 7b2c195f103..62254ffd9da 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -36,9 +36,9 @@ _timeInCardiacArrest = 120 + round(random(600)); [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setVariable [QGVAR(inCardiacArrest), nil,true]; }; - if (ACE_time - _startTime >= _timeInCardiacArrest) exitWith { + if (CBA_missionTime - _startTime >= _timeInCardiacArrest) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setVariable [QGVAR(inCardiacArrest), nil,true]; [_unit] call FUNC(setDead); }; -}, 1, [_unit, ACE_time, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler; +}, 1, [_unit, CBA_missionTime, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 913431ccac9..a67877eb332 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -38,7 +38,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == }; _unit setVariable [QGVAR(inReviveState), true, true]; - _unit setVariable [QGVAR(reviveStartTime), ACE_time]; + _unit setVariable [QGVAR(reviveStartTime), CBA_missionTime]; [_unit, true] call FUNC(setUnconscious); [{ @@ -53,7 +53,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == [_unit] call EFUNC(common,unloadPerson); }; - if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { + if (GVAR(maxReviveTime) > 0 && {CBA_missionTime - _startTime > GVAR(maxReviveTime)}) exitwith { [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setVariable [QGVAR(inReviveState), nil, true]; _unit setVariable [QGVAR(reviveStartTime), nil]; diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 25bc8aacb56..6fce00ebf45 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -115,7 +115,7 @@ _anim = [_unit] call EFUNC(common,getDeathAnim); }; }, [_unit, _anim], 0.5, 0] call EFUNC(common,waitAndExecute); -_startingTime = ACE_time; +_startingTime = CBA_missionTime; [DFUNC(unconsciousPFH), 0.1, [_unit, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index 07431ac66db..1a546dd8d04 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -20,7 +20,7 @@ params ["_caller","_target"]; if (_target getVariable [QGVAR(inReviveState), false]) then { _reviveStartTime = _target getVariable [QGVAR(reviveStartTime),0]; if (_reviveStartTime > 0) then { - _target setVariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min ACE_time]; + _target setVariable [QGVAR(reviveStartTime), (_reviveStartTime + random(20)) min CBA_missionTime]; }; }; diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index be9b03c9f1a..fcfd75f701c 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -39,9 +39,9 @@ _target setVariable [QGVAR(tourniquets), _tourniquets, true]; // Tourniquet has been removed [_idPFH] call CBA_fnc_removePerFrameHandler; }; - if (ACE_time - _time > 120) then { + if (CBA_missionTime - _time > 120) then { _target setVariable [QGVAR(pain), (_target getVariable [QGVAR(pain), 0]) + 0.005]; }; -}, 5, [_target, _applyingTo, _part, ACE_time] ] call CBA_fnc_addPerFrameHandler; +}, 5, [_target, _applyingTo, _part, CBA_missionTime] ] call CBA_fnc_addPerFrameHandler; true diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index e78c80f3ec8..055753a0f3d 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -130,13 +130,13 @@ if (_parachuteCheck) then { if (!local _unit) exitWith { TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _args, _startingTime, _minWaitingTime, _idPFH, _unit getVariable QGVAR(unconsciousArguments)); - _args set [3, _minWaitingTime - (ACE_time - _startingTime)]; + _args set [3, _minWaitingTime - (CBA_missionTime - _startingTime)]; _unit setVariable [QGVAR(unconsciousArguments), _args, true]; [_idPFH] call CBA_fnc_removePerFrameHandler; }; // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs -if ((ACE_time - _startingTime) >= _minWaitingTime) exitWith { +if ((CBA_missionTime - _startingTime) >= _minWaitingTime) exitWith { TRACE_2("ACE_DEBUG_Unconscious_Temp knock outs",_unit, [_unit] call FUNC(getUnconsciousCondition)); if (!([_unit] call FUNC(getUnconsciousCondition))) then { _unit setVariable ["ACE_isUnconscious", false, true]; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 92e2af341fd..8213e14770e 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -31,7 +31,7 @@ GVAR(pendingReopen) = false; false }, { - if (ACE_time - GVAR(lastOpenedOn) > 0.5) exitWith { + if (CBA_missionTime - GVAR(lastOpenedOn) > 0.5) exitWith { [objNull] call FUNC(openMenu); }; false diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf index 67e295e22e2..52fc28ba84c 100644 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -77,7 +77,7 @@ if (_name isEqualTo "triage") exitWith { _message = localize _message; }; }; - _triageCardTexts pushBack format["%1x - %2 (%3m)", _amount, _message, round((ACE_gameTime - _time) / 60)]; + _triageCardTexts pushBack format["%1x - %2 (%3m)", _amount, _message, round((CBA_missionTime - _time) / 60)]; nil; } count _log; diff --git a/addons/medical_menu/functions/fnc_openMenu.sqf b/addons/medical_menu/functions/fnc_openMenu.sqf index a8a51ff0281..e6ed7e61350 100644 --- a/addons/medical_menu/functions/fnc_openMenu.sqf +++ b/addons/medical_menu/functions/fnc_openMenu.sqf @@ -34,6 +34,6 @@ if (dialog || {isNull _interactionTarget}) exitWith { GVAR(INTERACTION_TARGET) = _interactionTarget; createDialog QGVAR(medicalMenu); -GVAR(lastOpenedOn) = ACE_time; +GVAR(lastOpenedOn) = CBA_missionTime; true diff --git a/addons/missileguidance/functions/fnc_guidancePFH.sqf b/addons/missileguidance/functions/fnc_guidancePFH.sqf index 122d690bae6..918d8c68e3c 100644 --- a/addons/missileguidance/functions/fnc_guidancePFH.sqf +++ b/addons/missileguidance/functions/fnc_guidancePFH.sqf @@ -24,7 +24,7 @@ _seekerParams = _args select 3; _stateParams = _args select 4; _lastRunTime = _stateParams select 0; -_runtimeDelta = ACE_diagTime - _lastRunTime; +_runtimeDelta = diag_tickTime - _lastRunTime; _adjustTime = 1; if(accTime > 0) then { @@ -100,7 +100,7 @@ _PS setDropInterval 3.0; hintSilent format["d: %1", _distanceToTarget]; #endif -_stateParams set[0, ACE_diagTime]; +_stateParams set[0, diag_tickTime]; _args set[4, _stateParams]; _this set[0, _args]; \ No newline at end of file diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf index 7fc77fdd566..057f07561df 100644 --- a/addons/missileguidance/functions/fnc_onFired.sqf +++ b/addons/missileguidance/functions/fnc_onFired.sqf @@ -89,7 +89,7 @@ _args = [_this, getNumber ( _config >> "seekerAccuracy" ), getNumber ( _config >> "seekerMaxRange" ) ], - [ ACE_diagTime, [], [] ] + [ diag_tickTime, [], [] ] ]; // Hand off to the guiding unit. We just use local player so local PFH fires for now diff --git a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf index 3ee45f324eb..eb44a68f15c 100644 --- a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf @@ -74,7 +74,7 @@ if (_activated && local _logic) then { [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; - if (ACE_time - _lastTimePlayed >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { + if (CBA_missionTime - _lastTimePlayed >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { // Find all players in session. _allUnits = if (isMultiplayer) then {playableUnits} else {[ACE_player]}; @@ -109,11 +109,11 @@ if (_activated && local _logic) then { // If no unit is to close to this position, we will play the sound. if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { playSound3D [selectRandom _ambianceSounds, objNull, false, _newPos, _volume, 1, 1000]; - _args set [8, ACE_time]; + _args set [8, CBA_missionTime]; }; }; }; - }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, ACE_time] ] call CBA_fnc_addPerFrameHandler; + }, 0.1, [_logic, _ambianceSounds, _minimalDistance, _maximalDistance, _minDelayBetweensounds, _maxDelayBetweenSounds, _volume, _followPlayers, CBA_missionTime] ] call CBA_fnc_addPerFrameHandler; }; true; diff --git a/addons/mk6mortar/functions/fnc_dev_simulateCalcRangeTableLine.sqf b/addons/mk6mortar/functions/fnc_dev_simulateCalcRangeTableLine.sqf index 9d8b2920708..d1e0a8dd05b 100644 --- a/addons/mk6mortar/functions/fnc_dev_simulateCalcRangeTableLine.sqf +++ b/addons/mk6mortar/functions/fnc_dev_simulateCalcRangeTableLine.sqf @@ -21,7 +21,7 @@ Example: private ["_startTime", "_muzzleVelocity", "_rangeToHit", "_airFriction", "_vacElevation", "_radicand", "_maxElev", "_minElev", "_error", "_solutionElevation", "_lastTestResult", "_numberOfAttempts", "_lineElevation", "_lineTimeOfFlight", "_lineHeightElevation", "_lineHeightTimeDelta", "_lineCrosswindDeg", "_lineHeadwindMeters", "_lineTailWindMeters", "_result"]; -_startTime = ACE_diagTime; +_startTime = diag_tickTime; _muzzleVelocity = _this select 0; _rangeToHit = _this select 1; @@ -74,6 +74,6 @@ _lineAirDensDec = (_rangeToHit - (_lastTestResult select 0)) / 10; _lastTestResult = [_lineElevation, _muzzleVelocity, _airFriction, 15, 1.1, 0, 0, 0, TIME_STEP] call FUNC(dev_simulateShot); _lineAirDensInc = (_rangeToHit - (_lastTestResult select 0)) / 10; -// systemChat format ["debug: Range %1 - in %2 sec", _rangeToHit, (ACE_diagTime - _startTime)]; +// systemChat format ["debug: Range %1 - in %2 sec", _rangeToHit, (diag_tickTime - _startTime)]; [_rangeToHit, _lineElevation, _lineHeightElevation, _lineHeightTimeDelta, _lineTimeOfFlight, _lineCrosswindDeg, _lineHeadwindMeters, _lineTailWindMeters, _lineTempDec, _lineTempInc, _lineAirDensDec, _lineAirDensInc] diff --git a/addons/mk6mortar/functions/fnc_handleFired.sqf b/addons/mk6mortar/functions/fnc_handleFired.sqf index e14fd77f6ae..483a69d42bf 100644 --- a/addons/mk6mortar/functions/fnc_handleFired.sqf +++ b/addons/mk6mortar/functions/fnc_handleFired.sqf @@ -70,8 +70,8 @@ if (_newMuzzleVelocityCoefficent != 1) then { [_pfID] call CBA_fnc_removePerFrameHandler; }; - _deltaT = ACE_time - _time; - _args set[2, ACE_time]; + _deltaT = CBA_missionTime - _time; + _args set[2, CBA_missionTime]; _bulletVelocity = velocity _shell; _bulletSpeed = vectorMagnitude _bulletVelocity; @@ -85,4 +85,4 @@ if (_newMuzzleVelocityCoefficent != 1) then { _shell setVelocity _bulletVelocity; -}, 0, [_projectile, MK6_82mm_AIR_FRICTION, ACE_time, _relativeDensity]] call CBA_fnc_addPerFrameHandler; +}, 0, [_projectile, MK6_82mm_AIR_FRICTION, CBA_missionTime, _relativeDensity]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 46d0e287d8a..0ef4fde96bb 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -14,7 +14,7 @@ GVAR(showNamesTime) = -10; if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Statement - GVAR(showNamesTime) = ACE_time; + GVAR(showNamesTime) = CBA_missionTime; if (call FUNC(canShow)) then{ call FUNC(doShow); }; // Return false so it doesn't block other actions false diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf index eed96b31013..d9d26cd0ac7 100644 --- a/addons/nametags/functions/fnc_onDraw3d.sqf +++ b/addons/nametags/functions/fnc_onDraw3d.sqf @@ -47,13 +47,13 @@ switch (GVAR(showPlayerNames)) do { }; case 3: { // Player names Only Keypress - _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - ACE_time); + _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); _enabledTagsNearby = (_onKeyPressAlphaMax) > 0 || (GVAR(showSoundWaves) == 2); _enabledTagsCursor = false; }; case 4: { // Player names Only Cursor and Keypress - _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - ACE_time); + _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); _enabledTagsNearby = (GVAR(showSoundWaves) == 2); _enabledTagsCursor = _onKeyPressAlphaMax > 0; }; diff --git a/addons/overheating/functions/fnc_firedEH.sqf b/addons/overheating/functions/fnc_firedEH.sqf index 2cf607945c8..5bd725b74d0 100644 --- a/addons/overheating/functions/fnc_firedEH.sqf +++ b/addons/overheating/functions/fnc_firedEH.sqf @@ -65,8 +65,8 @@ if (_unit != ACE_player && (!GVAR(showParticleEffectsForEveryone) || {_unit dist }; //Particle Effects: -if (GVAR(showParticleEffects) && {(ACE_time > ((_unit getVariable [QGVAR(lastDrop), -1000]) + 0.40)) && {_scaledTemperature > 0.1}}) then { - _unit setVariable [QGVAR(lastDrop), ACE_time]; +if (GVAR(showParticleEffects) && {(CBA_missionTime > ((_unit getVariable [QGVAR(lastDrop), -1000]) + 0.40)) && {_scaledTemperature > 0.1}}) then { + _unit setVariable [QGVAR(lastDrop), CBA_missionTime]; private _direction = (_unit weaponDirection _weapon) vectorMultiply 0.25; private _position = (position _projectile) vectorAdd (_direction vectorMultiply (4*(random 0.30))); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 9c62e77f21b..d0c9f4e70af 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -29,4 +29,4 @@ playSound "ACE_BarrelSwap"; // Publish the temperature variable _player setVariable [format [QGVAR(%1_temp), _weapon], 0, true]; // Store the update time -_player setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; +_player setVariable [format [QGVAR(%1_time), _weapon], CBA_missionTime]; diff --git a/addons/overheating/functions/fnc_updateTemperature.sqf b/addons/overheating/functions/fnc_updateTemperature.sqf index 89d59750242..4c2b07d3097 100644 --- a/addons/overheating/functions/fnc_updateTemperature.sqf +++ b/addons/overheating/functions/fnc_updateTemperature.sqf @@ -72,7 +72,7 @@ _fnc_cooling = { }; // Calculate cooling -_temperature = [_temperature, _barrelMass, ACE_time - _lastTime] call _fnc_cooling; +_temperature = [_temperature, _barrelMass, CBA_missionTime - _lastTime] call _fnc_cooling; TRACE_1("cooledTo",_temperature); // Calculate heating // Steel Heat Capacity = 466 J/(Kg.K) @@ -81,6 +81,6 @@ _temperature = _temperature + _heatIncrement / (_barrelMass * 466); // Publish the temperature variable [_unit, _tempVarName, _temperature, TEMP_TOLERANCE] call EFUNC(common,setApproximateVariablePublic); // Store the update time locally -_unit setVariable [_timeVarName, ACE_time]; +_unit setVariable [_timeVarName, CBA_missionTime]; _temperature diff --git a/addons/parachute/functions/fnc_doLanding.sqf b/addons/parachute/functions/fnc_doLanding.sqf index cc32724e9d3..213bf108878 100644 --- a/addons/parachute/functions/fnc_doLanding.sqf +++ b/addons/parachute/functions/fnc_doLanding.sqf @@ -20,8 +20,8 @@ GVAR(PFH) = false; [_unit, "AmovPercMevaSrasWrflDf_AmovPknlMstpSrasWrflDnon", 2] call EFUNC(common,doAnimation); _unit setVariable [QGVAR(chuteIsCut), false, true]; [{ - if (ACE_time >= ((_this select 0) select 0) + 1) then { + if (CBA_missionTime >= ((_this select 0) select 0) + 1) then { ((_this select 0) select 1) playActionNow "Crouch"; [(_this select 1)] call CALLSTACK(CBA_fnc_removePerFrameHandler); }; -}, 1, [ACE_time,_unit]] call CALLSTACK(CBA_fnc_addPerFrameHandler); +}, 1, [CBA_missionTime,_unit]] call CALLSTACK(CBA_fnc_addPerFrameHandler); diff --git a/addons/parachute/functions/fnc_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf index 466abfb77eb..b8ee8add6d3 100644 --- a/addons/parachute/functions/fnc_showAltimeter.sqf +++ b/addons/parachute/functions/fnc_showAltimeter.sqf @@ -37,7 +37,7 @@ GVAR(AltimeterActive) = true; _minute = floor ((daytime - _hour) * 60); _height = ((getPosASL _unit) select 2) + EGVAR(common,mapAltitude); - _curTime = ACE_time; + _curTime = CBA_missionTime; _timeDiff = _curTime - _prevTime; _descentRate = if(_timeDiff > 0) then {floor((_oldHeight - _height) / _timeDiff)} else {0}; @@ -47,4 +47,4 @@ GVAR(AltimeterActive) = true; (_this select 0) set [2, _height]; (_this select 0) set [3, _curTime]; -}, 0.2, [uiNamespace getVariable ["ACE_Altimeter", displayNull], _unit,floor ((getPosASL _unit) select 2), ACE_time]] call CALLSTACK(CBA_fnc_addPerFrameHandler); +}, 0.2, [uiNamespace getVariable ["ACE_Altimeter", displayNull], _unit,floor ((getPosASL _unit) select 2), CBA_missionTime]] call CALLSTACK(CBA_fnc_addPerFrameHandler); diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index 43595bde87b..eb47c692bf8 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -45,13 +45,13 @@ _vertical ctrlSetText (str _elevation); _horizontal ctrlSetText (str _windage); // Set the time when to hide the knobs -GVAR(timeToHide) = ACE_diagTime + 3.0; +GVAR(timeToHide) = diag_tickTime + 3.0; if !(isNil QGVAR(fadePFH)) exitWith {}; // Launch a PFH to wait and fade out the knobs GVAR(fadePFH) = [{ - if (ACE_diagTime >= GVAR(timeToHide)) exitWith { + if (diag_tickTime >= GVAR(timeToHide)) exitWith { private "_layer"; params ["", "_pfhId"]; _layer = [QGVAR(Zeroing)] call BIS_fnc_rscLayer; diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 8ebf776987d..0df2530cf21 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -8,7 +8,7 @@ GVAR(currentStep) = 3; GVAR(currentAngle) = 0; /*["interactMenuOpened", { - if ((ACE_time > GVAR(cancelTime)) && !isNull GVAR(ladder)) then { + if ((CBA_missionTime > GVAR(cancelTime)) && !isNull GVAR(ladder)) then { GVAR(ladder) call FUNC(cancelTLdeploy); }; }] call EFUNC(common,addEventHandler);*/ diff --git a/addons/tacticalladder/functions/fnc_positionTL.sqf b/addons/tacticalladder/functions/fnc_positionTL.sqf index 94e28dea336..be56e28b31a 100644 --- a/addons/tacticalladder/functions/fnc_positionTL.sqf +++ b/addons/tacticalladder/functions/fnc_positionTL.sqf @@ -37,7 +37,7 @@ _ladder animate ["rotate", 0]; } count ["extract_1", "extract_2", "extract_3"]; // Extract ladder at head height (extract_3) GVAR(ladder) = _ladder; -GVAR(cancelTime) = ACE_time + 1; // Workaround to prevent accidental canceling +GVAR(cancelTime) = CBA_missionTime + 1; // Workaround to prevent accidental canceling GVAR(currentStep) = 3; GVAR(currentAngle) = 0; diff --git a/addons/vector/functions/fnc_onKeyDown.sqf b/addons/vector/functions/fnc_onKeyDown.sqf index 9fa51e90681..feb706bc026 100644 --- a/addons/vector/functions/fnc_onKeyDown.sqf +++ b/addons/vector/functions/fnc_onKeyDown.sqf @@ -40,19 +40,19 @@ switch (_this select 0) do { // handle input in option menu if (GVAR(currentMode) == "settings") exitWith { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 1) exitWith {}; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 1) exitWith {}; - if (ACE_diagTime < GVAR(keyDownTimeAzimuth) + 0.5) then { + if (diag_tickTime < GVAR(keyDownTimeAzimuth) + 0.5) then { GVAR(keyDownTabCountAzimuth) = (GETGVAR(keyDownTabCountAzimuth,0)) + 1; } else { GVAR(keyDownTabCountAzimuth) = 1; }; - GVAR(keyDownTimeAzimuth) = ACE_diagTime; + GVAR(keyDownTimeAzimuth) = diag_tickTime; }; if (GVAR(currentMode) == "config") exitWith { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; ["config"] call FUNC(nextMode); }; @@ -66,30 +66,30 @@ switch (_this select 0) do { [false] call FUNC(showP1); // handle 5 times clicking - if (ACE_diagTime < GVAR(keyDownTimeAzimuth) + 0.5) then { + if (diag_tickTime < GVAR(keyDownTimeAzimuth) + 0.5) then { GVAR(keyDownTabCountAzimuth) = (GETGVAR(keyDownTabCountAzimuth,0)) + 1; - GVAR(keyDownTimeAzimuth) = ACE_diagTime; + GVAR(keyDownTimeAzimuth) = diag_tickTime; } else { GVAR(keyDownTabCountAzimuth) = 1; }; // open settings menu if (GVAR(keyDownTabCountAzimuth) == 5) exitWith { - GVAR(keyDownTimeMenu) = ACE_diagTime; - GVAR(keyDownTimeAzimuth) = ACE_diagTime; + GVAR(keyDownTimeMenu) = diag_tickTime; + GVAR(keyDownTimeAzimuth) = diag_tickTime; GVAR(keyDownTabCountAzimuth) = 0; GVAR(configTemp) = [GVAR(useFeet), GVAR(useMil)]; ["settings"] call FUNC(showText); "settings" call _fnc_setPFH; }; - if (ACE_diagTime < GVAR(keyDownTimeAzimuth) + 0.5) exitWith { + if (diag_tickTime < GVAR(keyDownTimeAzimuth) + 0.5) exitWith { "azimuth+inclination" call _fnc_setPFH; }; - GVAR(keyDownTimeAzimuth) = ACE_diagTime; + GVAR(keyDownTimeAzimuth) = diag_tickTime; - if (ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5) then { + if (diag_tickTime > GVAR(keyDownTimeDistance) + 0.5) then { if !(GETGVAR(isKeyDownDistance,false)) then { ["distance"] call FUNC(clearDisplay); "azimuth" call _fnc_setPFH; @@ -110,19 +110,19 @@ switch (_this select 0) do { // handle input in option menu if (GVAR(currentMode) == "config") exitWith { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; - if (ACE_diagTime < GVAR(keyDownTimeDistance) + 0.5) then { + if (diag_tickTime < GVAR(keyDownTimeDistance) + 0.5) then { GVAR(keyDownTabCountDistance) = (GETGVAR(keyDownTabCountDistance,0)) + 1; } else { GVAR(keyDownTabCountDistance) = 1; }; - GVAR(keyDownTimeDistance) = ACE_diagTime; + GVAR(keyDownTimeDistance) = diag_tickTime; }; if (GVAR(currentMode) == "settings") exitWith { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 0.5) exitWith {}; ["settings"] call FUNC(nextMode); }; @@ -141,30 +141,30 @@ switch (_this select 0) do { [false] call FUNC(showP1); // handle 5 times clicking - if (ACE_diagTime < GVAR(keyDownTimeDistance) + 0.5) then { + if (diag_tickTime < GVAR(keyDownTimeDistance) + 0.5) then { GVAR(keyDownTabCountDistance) = (GETGVAR(keyDownTabCountDistance,0)) + 1; - GVAR(keyDownTimeDistance) = ACE_diagTime; + GVAR(keyDownTimeDistance) = diag_tickTime; } else { GVAR(keyDownTabCountDistance) = 1; }; // open config menu if (GVAR(keyDownTabCountDistance) == 5) exitWith { - GVAR(keyDownTimeMenu) = ACE_diagTime; - GVAR(keyDownTimeDistance) = ACE_diagTime; + GVAR(keyDownTimeMenu) = diag_tickTime; + GVAR(keyDownTimeDistance) = diag_tickTime; GVAR(keyDownTabCountDistance) = 0; GVAR(configTemp) = GVAR(modeReticle); ["config"] call FUNC(showText); "config" call _fnc_setPFH; }; - if (ACE_diagTime < GVAR(keyDownTimeDistance) + 0.5) exitWith { + if (diag_tickTime < GVAR(keyDownTimeDistance) + 0.5) exitWith { "height+distance" call _fnc_setPFH; }; - GVAR(keyDownTimeDistance) = ACE_diagTime; + GVAR(keyDownTimeDistance) = diag_tickTime; - if (ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.5) then { + if (diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.5) then { if !(GETGVAR(isKeyDownAzimuth,false)) then { ["azimuth"] call FUNC(clearDisplay); "distance" call _fnc_setPFH; diff --git a/addons/vector/functions/fnc_onKeyHold.sqf b/addons/vector/functions/fnc_onKeyHold.sqf index ff4e5fc6adc..568ef2050c2 100644 --- a/addons/vector/functions/fnc_onKeyHold.sqf +++ b/addons/vector/functions/fnc_onKeyHold.sqf @@ -21,7 +21,7 @@ switch (_this select 0) do { case ("azimuth"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.2; + _isReady = diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.2; [false] call FUNC(showCenter); @@ -42,7 +42,7 @@ switch (_this select 0) do { case ("distance"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeDistance) + 0.5; [_isReady] call FUNC(showCenter); @@ -66,7 +66,7 @@ switch (_this select 0) do { call FUNC(showAzimuth); private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeDistance) + 0.5; [_isReady] call FUNC(showCenter); @@ -89,7 +89,7 @@ switch (_this select 0) do { case ("azimuth+inclination"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.2; + _isReady = diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.2; [false] call FUNC(showCenter); @@ -110,7 +110,7 @@ switch (_this select 0) do { case ("height+distance"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeDistance) + 0.5; [_isReady] call FUNC(showCenter); @@ -132,7 +132,7 @@ switch (_this select 0) do { case ("relative_distance"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.5; [_isReady] call FUNC(showCenter); @@ -155,7 +155,7 @@ switch (_this select 0) do { case ("relative_height+length"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.5; [_isReady] call FUNC(showCenter); @@ -178,7 +178,7 @@ switch (_this select 0) do { case ("relative_azimuth+distance"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeDistance) + 0.5; [_isReady] call FUNC(showCenter); @@ -201,7 +201,7 @@ switch (_this select 0) do { case ("fall_of_shot"): { private "_isReady"; - _isReady = ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5; + _isReady = diag_tickTime > GVAR(keyDownTimeDistance) + 0.5; [_isReady] call FUNC(showCenter); @@ -223,8 +223,8 @@ switch (_this select 0) do { }; case ("settings"): { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 1) exitWith { - GVAR(keyDownTimeAzimuth) = ACE_diagTime; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 1) exitWith { + GVAR(keyDownTimeAzimuth) = diag_tickTime; }; [["meter", "feet"] select (GVAR(configTemp) select 0)] call FUNC(showText); @@ -247,7 +247,7 @@ switch (_this select 0) do { }; }; - if (GVAR(keyDownTabCountAzimuth) > 0 && {ACE_diagTime > GVAR(keyDownTimeAzimuth) + 0.5}) exitWith { + if (GVAR(keyDownTabCountAzimuth) > 0 && {diag_tickTime > GVAR(keyDownTimeAzimuth) + 0.5}) exitWith { ["clear_left"] call FUNC(showText); ["clear_right"] call FUNC(showText); @@ -264,8 +264,8 @@ switch (_this select 0) do { }; case ("config"): { - if (ACE_diagTime < GVAR(keyDownTimeMenu) + 1) exitWith { - GVAR(keyDownTimeDistance) = ACE_diagTime; + if (diag_tickTime < GVAR(keyDownTimeMenu) + 1) exitWith { + GVAR(keyDownTimeDistance) = diag_tickTime; }; switch (GVAR(configTemp)) do { @@ -315,7 +315,7 @@ switch (_this select 0) do { }; }; - if (GVAR(keyDownTabCountDistance) > 0 && {ACE_diagTime > GVAR(keyDownTimeDistance) + 0.5}) exitWith { + if (GVAR(keyDownTabCountDistance) > 0 && {diag_tickTime > GVAR(keyDownTimeDistance) + 0.5}) exitWith { ["clear_left"] call FUNC(showText); ["clear_right"] call FUNC(showText); diff --git a/addons/vehicles/functions/fnc_startEngine.sqf b/addons/vehicles/functions/fnc_startEngine.sqf index e2c171e018c..8b0d0f17bbf 100644 --- a/addons/vehicles/functions/fnc_startEngine.sqf +++ b/addons/vehicles/functions/fnc_startEngine.sqf @@ -24,9 +24,9 @@ if (!_isEngineOn || {floor abs speed _vehicle > 0}) exitWith {}; params ["_args", "_idPFH"]; _args params ["_vehicle", "_time", "_direction"]; - if (ACE_time > _time) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; + if (CBA_missionTime > _time) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; _vehicle setVelocity [0, 0, 0]; _vehicle setVectorDirAndUp _direction; -} , 0, [_vehicle, ACE_time + STARTUP_DELAY, [vectorDir _vehicle, vectorUp _vehicle]]] call CBA_fnc_addPerFrameHandler; +} , 0, [_vehicle, CBA_missionTime + STARTUP_DELAY, [vectorDir _vehicle, vectorUp _vehicle]]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index a19e0003322..d971dc49f25 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -5,13 +5,13 @@ GVAR(temperatureShift) = 3 - random 6; GVAR(badWeatherShift) = (random 1) ^ 2 * 10; GVAR(humidityShift) = (5 - random 10) / 100; -GVAR(wind_period_start_time) = ACE_time; -GVAR(rain_period_start_time) = ACE_time; +GVAR(wind_period_start_time) = CBA_missionTime; +GVAR(rain_period_start_time) = CBA_missionTime; GVAR(ACE_rain) = rain; -"ACE_WIND_PARAMS" addPublicVariableEventHandler { GVAR(wind_period_start_time) = ACE_time; }; -"ACE_RAIN_PARAMS" addPublicVariableEventHandler { GVAR(rain_period_start_time) = ACE_time; }; +"ACE_WIND_PARAMS" addPublicVariableEventHandler { GVAR(wind_period_start_time) = CBA_missionTime; }; +"ACE_RAIN_PARAMS" addPublicVariableEventHandler { GVAR(rain_period_start_time) = CBA_missionTime; }; "ACE_MISC_PARAMS" addPublicVariableEventHandler { if (!isServer) then { TRACE_1("MISC PARAMS PVEH",ACE_MISC_PARAMS); @@ -65,14 +65,14 @@ simulWeatherSync; [] call FUNC(updateWind); //Every 1 second - if (ACE_time >= GVAR(nextUpdateRain)) then { + if (CBA_missionTime >= GVAR(nextUpdateRain)) then { [] call FUNC(updateRain); //Every 2 seconds - GVAR(nextUpdateRain) = 2 + ACE_time; + GVAR(nextUpdateRain) = 2 + CBA_missionTime; }; - if (ACE_time >= GVAR(nextUpdateTempAndHumidity)) then { + if (CBA_missionTime >= GVAR(nextUpdateTempAndHumidity)) then { [] call FUNC(updateTemperature); //Every 20 seconds [] call FUNC(updateHumidity); //Every 20 seconds - GVAR(nextUpdateTempAndHumidity) = 20 + ACE_time; + GVAR(nextUpdateTempAndHumidity) = 20 + CBA_missionTime; }; END_COUNTER(weatherPFEH); diff --git a/addons/weather/functions/fnc_getWind.sqf b/addons/weather/functions/fnc_getWind.sqf index c9ccd43ff97..7c08e813e14 100644 --- a/addons/weather/functions/fnc_getWind.sqf +++ b/addons/weather/functions/fnc_getWind.sqf @@ -20,7 +20,7 @@ if (isNil "ACE_WIND_PARAMS") exitWith { [0, 0, 0] }; ACE_WIND_PARAMS params ["_dir", "_dirChange", "_spd", "_spdChange", "_period"]; //Wind _dir is the "source" of the wind [eg: "northerly wind": _dir = 0 -> wind = [0,-1,0];] -private _periodPosition = (ACE_time - GVAR(wind_period_start_time)) min _period; +private _periodPosition = (CBA_missionTime - GVAR(wind_period_start_time)) min _period; private _periodPercent = _periodPosition / _period; _spd = _spd + _spdChange * _periodPercent; diff --git a/addons/weather/functions/fnc_updateAceWeather.sqf b/addons/weather/functions/fnc_updateAceWeather.sqf index 2eb264d91bb..3f2f9a356ca 100644 --- a/addons/weather/functions/fnc_updateAceWeather.sqf +++ b/addons/weather/functions/fnc_updateAceWeather.sqf @@ -48,7 +48,7 @@ if (GVAR(syncRain) && {GVAR(rain_period_count) > GVAR(rain_next_period)}) then { ACE_RAIN_PARAMS = [_lastRain, GVAR(current_rain), _transitionTime]; TRACE_4("",_lastRain,_rainOverCast,_transitionTime,overcast); - GVAR(rain_period_start_time) = ACE_time; + GVAR(rain_period_start_time) = CBA_missionTime; publicVariable "ACE_RAIN_PARAMS"; }; @@ -94,7 +94,7 @@ if (GVAR(syncWind) && {GVAR(wind_period_count) > GVAR(wind_next_period)}) then { GVAR(current_wind_direction) = _windDirection; GVAR(current_wind_speed) = _windSpeed; - GVAR(wind_period_start_time) = ACE_time; + GVAR(wind_period_start_time) = CBA_missionTime; publicVariable "ACE_WIND_PARAMS"; }; diff --git a/addons/weather/functions/fnc_updateRain.sqf b/addons/weather/functions/fnc_updateRain.sqf index 8fa18500e88..aaf7cff82c6 100644 --- a/addons/weather/functions/fnc_updateRain.sqf +++ b/addons/weather/functions/fnc_updateRain.sqf @@ -18,10 +18,10 @@ if (!isNil "ACE_RAIN_PARAMS") then { ACE_RAIN_PARAMS params ["_oldRain", "_newRain", "_period"]; - private _periodPosition = (ACE_time - GVAR(rain_period_start_time)) min _period; + private _periodPosition = (CBA_missionTime - GVAR(rain_period_start_time)) min _period; private _periodPercent = (_periodPosition / _period) min 1; - GVAR(ACE_Rain) = linearConversion [GVAR(rain_period_start_time), (GVAR(rain_period_start_time) + _period), ACE_time, _oldRain, _newRain]; + GVAR(ACE_Rain) = linearConversion [GVAR(rain_period_start_time), (GVAR(rain_period_start_time) + _period), CBA_missionTime, _oldRain, _newRain]; TRACE_3("Update Rain",rain,ACE_RAIN_PARAMS,GVAR(ACE_Rain)); }; diff --git a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf index 393a5cd7579..5ec512c9038 100644 --- a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf +++ b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf @@ -22,8 +22,8 @@ params ["_args"]; _args params ["_lastTime"]; - _deltaT = ACE_time - _lastTime; - _args set [0, ACE_time]; + _deltaT = CBA_missionTime - _lastTime; + _args set [0, CBA_missionTime]; _deleted = 0; _isWind = (vectorMagnitude ACE_wind > 0); @@ -53,4 +53,4 @@ nil } count +GVAR(trackedBullets); // END_COUNTER(pfeh); -}, GVAR(simulationInterval), [ACE_time]] call CBA_fnc_addPerFrameHandler; +}, GVAR(simulationInterval), [CBA_missionTime]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/yardage450/functions/fnc_turnOn.sqf b/addons/yardage450/functions/fnc_turnOn.sqf index 5f123b8cb26..901e6ce563b 100644 --- a/addons/yardage450/functions/fnc_turnOn.sqf +++ b/addons/yardage450/functions/fnc_turnOn.sqf @@ -23,14 +23,14 @@ if (currentWeapon ACE_player != "ACE_Yardage450" || cameraView != "GUNNER") exitWith {}; -GVAR(powerOnTime) = ACE_time; +GVAR(powerOnTime) = CBA_missionTime; if (GVAR(active)) exitWith {}; GVAR(active) = true; [{ - if (ACE_time - GVAR(powerOnTime) > 30) exitWith { + if (CBA_missionTime - GVAR(powerOnTime) > 30) exitWith { GVAR(active) = false; 74210 cutText ["", "PLAIN"]; [_this select 1] call CBA_fnc_removePerFrameHandler; diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index d10d36b8391..dc26f78bf64 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -113,7 +113,7 @@ if (_activated) then { if (_name == "") then {_name = localize "STR_A3_curator";}; //--- Wait until mission starts - waitUntil {time > 0}; // NOTE: DO NOT CHANGE TO ACE_TIME, IT BREAKS THE MODULE + waitUntil {time > 0}; // NOTE: DO NOT CHANGE TO CBA_missionTime, IT BREAKS THE MODULE //--- Refresh addon list, so it's broadcasted to clients _addons = curatoraddons _logic; diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf index 1143c304433..cdacd5ff0e2 100644 --- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf +++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf @@ -104,9 +104,9 @@ if (_activated) then { _side = side group _x; if (_side in [east,west,resistance,civilian]) then { //--- Play radio (only if it wasn't played recently) - if (ACE_time > _x getVariable ["BIS_fnc_moduleProjectile_radio",-_delay]) then { + if (CBA_missionTime > _x getVariable ["BIS_fnc_moduleProjectile_radio",-_delay]) then { [[_side,_radio,"side"],"bis_fnc_sayMessage",_x] call bis_fnc_mp; - _x setVariable ["BIS_fnc_moduleProjectile_radio",ACE_time + _delay]; + _x setVariable ["BIS_fnc_moduleProjectile_radio",CBA_missionTime + _delay]; }; }; }; From 730e79def089075b651ade6e70c45b703e3b3448 Mon Sep 17 00:00:00 2001 From: nomisum Date: Wed, 2 Mar 2016 22:17:49 +0100 Subject: [PATCH 029/268] added fastroping sounds --- addons/fastroping/CfgSounds.hpp | 12 ++++++++++++ addons/fastroping/data/sounds/LICENSE.md | 4 ++++ .../fastroping/data/sounds/fastroping_rope.ogg | Bin 0 -> 32290 bytes .../fastroping/data/sounds/fastroping_thud.ogg | Bin 0 -> 20522 bytes .../functions/fnc_fastRopeLocalPFH.sqf | 9 +++++++++ 5 files changed, 25 insertions(+) create mode 100644 addons/fastroping/CfgSounds.hpp create mode 100644 addons/fastroping/data/sounds/LICENSE.md create mode 100644 addons/fastroping/data/sounds/fastroping_rope.ogg create mode 100644 addons/fastroping/data/sounds/fastroping_thud.ogg diff --git a/addons/fastroping/CfgSounds.hpp b/addons/fastroping/CfgSounds.hpp new file mode 100644 index 00000000000..e6532146fe3 --- /dev/null +++ b/addons/fastroping/CfgSounds.hpp @@ -0,0 +1,12 @@ +class CfgSounds { + class ACE_Fastroping_Rope { + name = "ACE_Fastroping_Rope"; + sound[] = {PATHTOF(data\sounds\fastroping_rope.ogg), db0, 1.0}; + titles[] = {}; + }; + class ACE_Fastroping_Thud { + name = "ACE_Fastroping_Thud"; + sound[] = {PATHTOF(data\sounds\fastroping_thud.ogg), db0, 1.0}; + titles[] = {}; + }; +}; \ No newline at end of file diff --git a/addons/fastroping/data/sounds/LICENSE.md b/addons/fastroping/data/sounds/LICENSE.md new file mode 100644 index 00000000000..d6312034cab --- /dev/null +++ b/addons/fastroping/data/sounds/LICENSE.md @@ -0,0 +1,4 @@ +Uses a sound from Tessa Elieff (Freesound.org) +according to Creative Commons Attribution License. + +Also sounds from helenacm and Adam_N, both under CC 0. Thanks anyway. \ No newline at end of file diff --git a/addons/fastroping/data/sounds/fastroping_rope.ogg b/addons/fastroping/data/sounds/fastroping_rope.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ec68da29607a9c84d26a198b12a97b0ee3c1bdcc GIT binary patch literal 32290 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 literal 0 HcmV?d00001 diff --git a/addons/fastroping/data/sounds/fastroping_thud.ogg b/addons/fastroping/data/sounds/fastroping_thud.ogg new file mode 100644 index 0000000000000000000000000000000000000000..136a638ea9033a059138df2443eca54539344e4b GIT binary patch literal 20522 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μe}HDQd{7n!M`GY0`%{WW@pxt4 zP{YW5#@sknJ%3XBru{+^lk?{(fstA(bz!Z2rg}BagJJ_AF{*}stv2I=$rGD<=u$yC zrVqsZ>L;D)4bJZ3r^Qm)ih$RGF#^5qUE$PySO)W(Y+5Va)(h7X@kiInlEXVVWZ{!@ znakBF$hfX-ALR1(wHN&Jp1E<&`*P@O)mwP+A8ORFH=hr&W+u?gn9^ z(XWw>KBTF^f^3?Gvdvr!Tl>{0!K`Gp7-b-rX0jb#g&am9uEk-arUy>ej|cxlTx>b2 zIqH`+m%V@tJ~ourdmGsm{U>BG{P!o0`JS*ebH2lIs}gXbxV&=>dj5!K!q=_$c(qQu zSrit(w&UB`h8?Ab7?5m>>2`h^;tTqC=bUIv@HOx?o*FmnNJxu^rgf*idR7=4S8^1G zm5QW1Fgu^zn-x@sBubp;E|6sISlP%g)MNC6+!~F97fXWPriy5Md0}RMoV%cMy^^r9 zaU0IYt#YpS9QoDIfwmfLS!eC8n5LYa>i1*L+`Roq-MrQux4&|k7 zKO1>Qjgq3w8qPcU-9rBKmi43n6L?M|?~iUzo?&h+>%N#{z+6DhUs~<@E~Lm1c>jly zX(Vu-rMH=+CMf7%D8r;dn z&+Mz2PJ^GVn>W}+XT+T5eJvK7`fjHF400Om@BzQivZ#$`zT?+tc~SJ%5GfPtKUaa= zml%U^z3S60WV61di?y;V)(uPw-R$JCw_OvnJ zp(WTnud$imUTe3*dyRk2sJiQHSSd_>UeLDnIxgwl_ttyQX25p7*IS|~A>YN`c6-de})mqlOi8uWqg@?6Xd6$icV|;;lC#YQ7*C#-~rcxSh5s*?VZQpk7ZxY=x zN>cevZoZ7)o$rRuB=zT;wK;Adi9-tN&Pp@DXoiq;Drv=p0;k_k)k)N{`MFAW{NnAa zZpf?o$y_^K?o6kw=YjY#N%}4UP}kjFJGqdSd;!YN-BfGG7*DZ4v%L(Jl1P1&(wsl@ z21%ukr(PKatW?%*1_gUE$J}4g%>}YlVB)tdVCWn6$rwcW9QLEz<0s)Vod+o__2~qT z?J~#_w)7n^M(&{bhVZ#B7xziTFj(@robR7hO{T+_r?X+WnoS%*WlDh6U6LnV_$+Qc z9mmAwSNxspQ!EmP4lgNpD1ud{&_6caPE!^NV3bOjxur2@c=uii9^-$u&$Gc`FjXoU zDt*&f$0}Y$Q*aq&$`D81uv;~*MZvRL$~O3f&Nn)TgF!Q|;m=pWl0lVW+yax##?boL z2MznvavUjsM`G(Q2wr4I+ifH$TsV09YxnNv`93XVO->y`3>(fpQO(P865#@`pJB2s z<^g{$yT!CrEZ~U=6_2?nU_2z7#JK;R<48B{iSW+l4V1|~?e)jY!UfVz;f?Ufj^^nO z6Afxs#AH-Z<$EL(An%etnkY#W^t!jFrTL*;kul|LfUAr5bx@1;{D|WAk2`Z#x1Ln| zz>R}H{`x-W!XF6czF*GAP{Pp$qGHZBvndHBD@}=J(Jv-f5 zOY{T-bF|b<`Te$T0A1EaaJB_~11hb}%(Cp)r>x&drho6@Lc&iU00X~-El@FpVelekZF$JY<<5oqOTB};$W zpU=Pjfs+$hw8E_xQdGstHJ7?K8(~$?6;0Bxi6ndDWS+3r^o;X09tt#^f9t~r5nAli zd?M_O9j83KTORE?vwGv_nZ0oZ8)OB&pXIK;o~a-fsShHSA2Tl?Mo<9;H1byH_JJ6j zG~2RUqM}wj6ZJC!i?W|CLmOnuDiYBF_ly<=rQ=fKOjnN`{ta!r&-d(P<%fA2Dg!9$ zV>t-lw|4r=UDHAqvbqy63=}d5?pBwJEBrf?hoJSp?30EE>Tq6sds{0))CCP#;%TbC zhBT(nE9y!P)u?G$*nKK*$PM^WWtIXT#@0}!dT+&=;5N)$x5sl7973Ym1$|5Rq$qst zHLmr9hz#TT2gJqOAEb2cwd-$Qx18phq=$Y|KvXjKr5g@gcB=hqvzaHD_fg-hgA%3| zO>9}H#{5|hZi3sEAzd`zEY|*8#-+JWn>-?4U|vuFDzJCdzpbi6q-kj;Wry7s9o5qn znsiL6=4TG$6Zbsdl?TCoxuifL{ULE#y~X4y;9EyTVpdTXs^qt5;lO^vz^pz*L#I85 zT4`#w@Pm_&U&l=thilxXza^~LIy!YCS;_eVAt?xVv(j`uG(vJxBTJaShRbZ4)>eD} z&iI>#4D0W*?SB4DJ*%7-@IdkOo~jk6)49K=Kc)>a^)okWbhGOrJ+gbSQ6%NDsmLk|on4o_^LL z4Jvr4$I}QK+Y*Q;89Pl;$itmXb z`>(mosa0_Wy0t{2ie=$~G)0A<*XS8|>k1yMNn-@ZTJ2ADrB*az5u>nLnM!l-C+{wQ zzxVCY%9R{-XsC~uVwlzV*sH=9{AcPDf(@?IrMP{tgr*)R5b5H+h$aSpV3V-lQ>d#d zPUiLlZ`mZx+vdxBP`32Vw;SFKxobuNDKl@S@fSA-mS${!kZE`bhu;qTLbwr1FVu(Y zZa74J$B^H}Cz=j%Ng+ZJFVaOeD67X+e&g0pW1igdq+qY0J`O**uWCjpoQ98RWU-tE z5ip=;up8b%epebgzt-|qw9b+&hfn>vW+x8NzmnpYUZVM1;h0y0lT)(%f+zVb zvH;3zg4f>^cY#NrQkC;W=ygbvka+s&F&>gfU{~RZh&koU2#!P?mg=lJtK|@MTtW}G z1D|1x3ucmrOKTi=+gIvX^5Ys*rBkz1BZ<^e+M?3LX4jY;<(6bN$~{u3w4Zrww_fk; zZf{7xX(z?(@|Ua#`Z_|i{Wh$$>uTjgfjA0`MT0CXG9W}BUB=uS*{sQ`sS-7u1HmAu7g90t)5WS-JlT(zW-(6 zjP!7=$uluaJUVS|1_edeMe$&S0bbQt@uWlf#47CKN5JVy<+x_u=)Jn^JCl;v) z3(NMz4#o=x+smPX>hBflervN%XQ(&uaWEQpLH~$MP9q(*?u=7w{` zXYv)q!t8R^8yTIYy=WAp{)6yoH5p`y{^GuJ;ETk1sli#-BERtW0yCXjdk(reHD*#9 z^OLB+r3o-~Sf$7se=SHd><{&c{k~C=#3=kbmkA#s54|d9uJAp=TT+h>{x#hZma(@^ z_}@0)*O~uWB=mrU3cakfUOQRe6vnl^M*c7$NFY4d#-S-zW_%NDxWr|Lb(Cd5<25^B zawN^YLAmJVSAs@*|L#d1X+-H0|3EuxTdyUW4vtK|q~ROHUri#o1e?CX+mKkfBHVKv zTPs2Hqje*@YRe1`DbJ1Q8UuN9-ptpRtSkxyruO(kNb@z^x^|bc0DQvucT6qVm`D*B z^L&lRw&2;2dq~&E)m6e4hMA!U#EqG52@$XfccZA1WNy&2x4sIAuz2Bef!FWF)K~pW4 zLG-3(MEwfs#A1cX2DetHxsS+@O~dwWu=l)-35p}4D*d6{{^<6d+^SRK`B4})A^Dzx zsiDl%dR4B4PsJa@3n>wMBNq5*1qge_n(ME|E?k8!Ec&gqX<~y@sG7|Qj5_YMx9EGL zwhaz?2KhhZ=q#x!Y2p7KHzwU6Fqbs$dYKxo-G}Uu@Mm;w6J?g~Yc_Km|_*H*N?0IU#=gob8}&8m>8qTEUf-nZ+|5 z^_-Bsd7hyw28Kd;#c8MPwVg%EOxy95Ai(Y`Xkr()l#H>T3=H;JGn_{Co@P4M9}i&$FeQA zAvkp^3sR}Cj!zb&>M#-p4$%n(2-`?US~iFY>jiDzqL{HGSZj*%FiMmNwJagZTOy!8 z@f0|L#|6K0_&lWh&zA>S8W_!!?>yaP=BSv`!B0ZZDl~8^QwuUC|1^?ePg}@1^Z3>i zI4<|=h5C7=c3e_PZllh<(Sd()Yp_x^Uw)S=EQeDPfy~HFgq5~oJUy?{H{#yj;PlN| zQVrLfK>=xhJg4a(+G{sUlJ9g^hSgz?Hs-!YvZayq6z2TT`?ciME^U0~@4(PVRoJlY zw-Fb6TvfS#D}`=FnXP@6uI*~i^GqfU{h&6vF^6xQ0=(!Bs3T;k(J{HO?z|$f4<9x( z=f4}#+L`V>ET$mJoguIt^TeZa7jy;IB76SkxRTa zRR{GOjXA4ZCAZaIJE%1wYBN)M1{ZfQHt*8Bg7DHKrAoMeqrBrHt^QP!&w{1&ZU14T zzEY)?sNGB^$22uNfe-;tJEMN!mu=_i?H;b|*CW4aeZ*0lmeYfR9obL?cbLNTSP~Zg zWPK}e*Idh?lj$=bRoX`1=d|5-meWdE6({+j8 zRLBb_w`tYB4{(y)Jx0^Nd!iCE$Vv;_5mS@UHtr!g_Pweqo?*lGkpS_*FX+hzGqR^b zX6ky>q#@_{%m*Z%IsabqIgNos%kzsWfYe>8SYG3vXBJI)o~FK(oWkqam@PPRiniXa2qNg^n<_B+PbSEX)Pc;=)=+ra zTVk=Qi&ON;GQDb4dbzm{3k3q(SAwrivP?5!XGSt?YTz{<=R}vqQz>}MI@I&~PNYb@ zy{JcXB~Il6juY|j{5?(GyJJ&6KNrjz$hmBv<$Df3#5wAY+IaW($&@_Oh__wmcV&M> zWL{;+7!~nqXm$yaIeJ_eP4f-nqkQ2%u4S*5T9<2^Ue=S$bSypqE5)6XQ*l=Grf&=7UK@07+dlAj4jRX_Pzr1482+_$ZYFq( z-@4|^$4Nz{ruxsM#rox}3zJql#U&?hIjmPk(ZsAx_#Oxd?qQG>l4sE+ zUbp}|uZr2^#ksKfUALx$#8$_>g&%`1{9_iu7-NQx;9|z$LAC( z>f*IU^2ULbg&DvgH0v047DqLZfZzv^FEsHs}|Vzp`aM$B)zZ7Aj$Yl6lFn z?2@TciE1N$4$5e7Jd9+jpW*c3J1zZO+^=dR@D4&Ud}L+rF-sun0ZdwurGYh3GRcv! z6!C8!+S1D1HM=o5dLZx!-$Z`<(A`^RMXs)r?Pza>_5Yp>QxR%lLKJ1{JH%wVuBfS& zi;Z6GIDI3F@k#m`tc)>)o}!_oL}ZY>ylnxu(T_K!+*{CmHIkBVTQb*kF<`l63eS4> zv02k!+H$dPnf!64)g0rtdP;3IlIuWXC!AE|aesT$3jg-X8>2#=?IAybo`-^L8I{qu z%)`mPrn+}8S=UicAk9g;sp7$HyTk(v<;A-hrP0`%t-B$fnxfODa0;~c5$8J&CITcK zdSAJp#9U~xb^1r8Wy&Di4G~JsO+UaVTBk`XcVP%Hah>b7hg&Q!{3l%L>ai^*S(jBS z`gzH*!sTb^r7?>GFOifPpHIz%S_MxQ$lQ8u%ATSK1NQrUF3w~(I_MN5#Y^{fMo(wR zTv(ZjHiHc1WYkrlR8;%j4Epx0*J`53bFIx-6h~IP?lyX}kVA4vL~pI2tko~=$wu{$ z%j{T6O0^7jVmYD!jD!&0S2B0s1GiDa57HVwv8SsP(_R{}LKy`DDOY9*M+wHkJQ~&r zuI}!#ifNViL+gG?9JrR6&6o7~WL!1tZpVNfF#pcU0j08E^@nTa)MvJ}0CoW2)6F+a z+0cNp8~7*_WDdJjErJcd&6fo;8Y#&Ri}zof?6wImZnY9ZGJWZ&?il3R>D*GEUqz7h zY3wKlmC*oZ3qWg}y{E(=6muX#Ffk2UzVUvRHgZe)Ci^0@V?2t}d|tYsdk9I2wHcQ? z^GqN_08#5LGdYOjs#}B@1N0jJx*jp0akp7LH!oQ7;0x0!1p)$*v0&AF)D_%je>=CQj&(+YBfdKW@7pkA?`I^FvHWv?G+BGu-{V&2W_c#u3lyL!gnkuj-D=B6 z--z134&bG<1c0Dqa$*)WJ8%iTqD_^I#Qa+E6G7+1_RSbv z1H#!@*VzT`3T*hU+pdbLwk0Mo#V*91SzS?ux&TL5a!oJ)-mrtWUbF)>%XXC(9<$+N zX&)Nzi&)>8j*a8Wd*jD*YaPY)uKe0rkDOt5Ov!mI2GGzJC=}BPTr@i&3u!5}?c;r< zn^7uS$5~%Q!#IaF+JQ>2Uhr~PoByXI8f)7|^3y7}ubj9z60Pqt_#`58R$YG!2ayxb zeR&W5(udwxB4pUh3;dK~@4oyW7PmjfBn*56|H}4SkJ~VB^10!~lR5$v)6~|>=1N-f zZ@jBm&e&R?;uQ%;92X4%Q>Hg49;KIJm1_sWP?a}Ds9oI17y1NwA#!!ky!LF!oZH6= z>CHVh1zp5K(H*=3Y`Wh`Vvq*J5%esDYUID@b`QvzDvnEOs@7K=vG4UOf9IeBf8sA| zv6Ny>Jvg3rY`P>XwIqt$WZ;n|qXo#IFNBBEi(U#x__Cx4wIrJ@QF;NL^#`MtpNPcn zp;Pa-p$UXmudbcG<4{!IF%WRl_+Q{!i4>j{)U0$u?j+`(aduWavR|)6#MK2+Ifrst zN{<+gTcLL<4(8%@34tOsY8Y)1m{7cBW7+KTX&b3=C5D&O@C%LJOlb+5ZKhj#oEYU|(w? z-R2Gofx6kXRwH6+E0}MXOz0#))Ird{U1T0{!(Dr_Enml^(A7f>32Fz+w9>fyFTiOu QbgX}mJ!-das>SsG0j;W%QUCw| literal 0 HcmV?d00001 diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index d05c8bfdbc7..7279d4838aa 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -31,10 +31,19 @@ if (animationState _unit != "ACE_FastRoping") exitWith { [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); }; +[_unit] spawn { + while {!(isNull attachedTo (_this select 0))} do { + playSound "ACE_Fastroping_Rope"; + sleep 1; + }; +}; + //End of fast rope if (isNull attachedTo _unit) exitWith { [_unit, "", 2] call EFUNC(common,doAnimation); _unit setVectorUp [0, 0, 1]; + playSound "ACE_Fastroping_Thud"; + [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; From 48e9e9c9e4407a5be0958e6611afb93310e05791 Mon Sep 17 00:00:00 2001 From: nomisum Date: Wed, 2 Mar 2016 22:36:42 +0100 Subject: [PATCH 030/268] added CBA-PFH, added QUOTE --- addons/fastroping/CfgSounds.hpp | 4 ++-- .../functions/fnc_fastRopeLocalPFH.sqf | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/fastroping/CfgSounds.hpp b/addons/fastroping/CfgSounds.hpp index e6532146fe3..1cdf993adc3 100644 --- a/addons/fastroping/CfgSounds.hpp +++ b/addons/fastroping/CfgSounds.hpp @@ -1,12 +1,12 @@ class CfgSounds { class ACE_Fastroping_Rope { name = "ACE_Fastroping_Rope"; - sound[] = {PATHTOF(data\sounds\fastroping_rope.ogg), db0, 1.0}; + sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_rope.ogg)), db0, 1.0}; titles[] = {}; }; class ACE_Fastroping_Thud { name = "ACE_Fastroping_Thud"; - sound[] = {PATHTOF(data\sounds\fastroping_thud.ogg), db0, 1.0}; + sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), db0, 1.0}; titles[] = {}; }; }; \ No newline at end of file diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 7279d4838aa..1b414042993 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -31,12 +31,16 @@ if (animationState _unit != "ACE_FastRoping") exitWith { [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); }; -[_unit] spawn { - while {!(isNull attachedTo (_this select 0))} do { - playSound "ACE_Fastroping_Rope"; - sleep 1; - }; -}; +[{ + params ["_args", "_idPFH"]; + _args params ["_unit"]; + + if (isNull (attachedTo _unit)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + + playSound "ACE_Fastroping_Rope"; +}, 1, [_unit]] call CBA_fnc_addPerFrameHandler; //End of fast rope if (isNull attachedTo _unit) exitWith { From 76468d326ba7fd9ac668eb551d71c0882bffd299 Mon Sep 17 00:00:00 2001 From: nomisum Date: Wed, 2 Mar 2016 22:49:25 +0100 Subject: [PATCH 031/268] fixed license file --- addons/fastroping/data/sounds/LICENSE.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/fastroping/data/sounds/LICENSE.md b/addons/fastroping/data/sounds/LICENSE.md index d6312034cab..71835222cd1 100644 --- a/addons/fastroping/data/sounds/LICENSE.md +++ b/addons/fastroping/data/sounds/LICENSE.md @@ -1,4 +1,6 @@ -Uses a sound from Tessa Elieff (Freesound.org) -according to Creative Commons Attribution License. +Source sounds are adapted and changed. -Also sounds from helenacm and Adam_N, both under CC 0. Thanks anyway. \ No newline at end of file +**Fastroping_Rope (fastroping_rope.ogg):** +"[Rub.aif](http://freesound.org/people/le_abbaye_Noirlac/sounds/129471/)" by [Tessa Elieff](http://freesound.org/people/le_abbaye_Noirlac/) is [CreativeCommons Attributions 3.0](http://creativecommons.org/licenses/by/3.0/) + +All other sounds from helenacm and Adam_N, both under Creative Commons 0 (no attribution required). \ No newline at end of file From 62f598b2a6bca3049438c52154e3b9c612aac952 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 13:11:20 -0300 Subject: [PATCH 032/268] Use the correct CBA function name, defining it in ACE as long as it doesn't exist already. --- addons/overheating/XEH_preInit.sqf | 12 +++++++----- .../functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index 54bc392273d..dcd9ddc0924 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -4,14 +4,16 @@ ADDON = false; #include "XEH_PREP.hpp" -FakeCBA_fnc_getMagazineIds = { - params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; +if (isNil "CBA_fnc_getMagazineIds") then { + CBA_fnc_getMagazineIds = { + params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; - private _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); + private _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); - if (_displayName isEqualTo "") exitWith {[]}; + if (_displayName isEqualTo "") exitWith {[]}; - magazinesDetail _unit select {_x find _displayName == 0} apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; + magazinesDetail _unit select {_x find _displayName == 0} apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; + }; }; ADDON = true; diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index dd58d58207e..a3f99984977 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -21,7 +21,7 @@ params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; TRACE_4("loadCoolestSpareBarrel1",_unit,_weapon,_weaponTemp,_barrelMass); // Find all spare barrel the player has -private _allBarrels = [_unit, "ACE_SpareBarrel"] call FakeCBA_fnc_getMagazineIds; +private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIds; TRACE_1("_allBarrels",_allBarrels); if ((count _allBarrels) < 1) exitWith {}; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index 9f286832c6b..eb3f514ac1c 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -19,7 +19,7 @@ params ["_player","_unit"]; // Find all spare barrel the player has TRACE_2("sendSpareBarrelsTemperatureHunt",_player,_unit); -private _allBarrels = [_unit, "ACE_SpareBarrel"] call FakeCBA_fnc_getMagazineIds; +private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIds; TRACE_1("_allBarrels",_allBarrels); if ((count _allBarrels) < 1) exitWith {}; From ebfd76107e538888adede5814489f4933f81194e Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 13:15:56 -0300 Subject: [PATCH 033/268] The function name was changed in CBA --- addons/overheating/XEH_preInit.sqf | 4 ++-- addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- .../functions/fnc_sendSpareBarrelsTemperaturesHint.sqf | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index dcd9ddc0924..ccb7cba58a6 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -4,8 +4,8 @@ ADDON = false; #include "XEH_PREP.hpp" -if (isNil "CBA_fnc_getMagazineIds") then { - CBA_fnc_getMagazineIds = { +if (isNil "CBA_fnc_getMagazineIndex") then { + CBA_fnc_getMagazineIndex = { params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; private _displayName = getText (configFile >> "CfgMagazines" >> _magazine >> "displayName"); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index a3f99984977..b90271abd96 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -21,7 +21,7 @@ params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; TRACE_4("loadCoolestSpareBarrel1",_unit,_weapon,_weaponTemp,_barrelMass); // Find all spare barrel the player has -private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIds; +private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIndex; TRACE_1("_allBarrels",_allBarrels); if ((count _allBarrels) < 1) exitWith {}; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index eb3f514ac1c..2ff248016d3 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -19,7 +19,7 @@ params ["_player","_unit"]; // Find all spare barrel the player has TRACE_2("sendSpareBarrelsTemperatureHunt",_player,_unit); -private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIds; +private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIndex; TRACE_1("_allBarrels",_allBarrels); if ((count _allBarrels) < 1) exitWith {}; From 6cf9787fd1d11316d48768d58b2afad840976d59 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 13:18:41 -0300 Subject: [PATCH 034/268] Fix travis warning --- addons/overheating/XEH_preInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overheating/XEH_preInit.sqf b/addons/overheating/XEH_preInit.sqf index ccb7cba58a6..cdd1fa78dd0 100644 --- a/addons/overheating/XEH_preInit.sqf +++ b/addons/overheating/XEH_preInit.sqf @@ -12,7 +12,7 @@ if (isNil "CBA_fnc_getMagazineIndex") then { if (_displayName isEqualTo "") exitWith {[]}; - magazinesDetail _unit select {_x find _displayName == 0} apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; + (magazinesDetail _unit select {_x find _displayName == 0}) apply {_x = _x splitString "[:]"; _x select (count _x - 1)}; }; }; From ae8cbb4834ac98d6874140d367c930eea5287386 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 23:33:30 -0300 Subject: [PATCH 035/268] Add "check temperature" and "swap barrel" actions for AARs --- addons/overheating/CfgVehicles.hpp | 30 +++++++++++++---- addons/overheating/XEH_PREP.hpp | 1 + addons/overheating/XEH_postInit.sqf | 8 ++--- .../functions/fnc_checkTemperature.sqf | 24 +++++++------- .../functions/fnc_loadCoolestSpareBarrel.sqf | 21 ++++++------ .../overheating/functions/fnc_swapBarrel.sqf | 24 +++++++++----- .../functions/fnc_swapBarrelAssistant.sqf | 33 +++++++++++++++++++ .../functions/fnc_swapBarrelCallback.sqf | 25 +++++++------- 8 files changed, 115 insertions(+), 51 deletions(-) create mode 100644 addons/overheating/functions/fnc_swapBarrelAssistant.sqf diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 61052553a43..528f77375cc 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class CAManBase: Man { class ACE_SelfActions { class ACE_Equipment { - class ACE_UnJam { + class GVAR(UnJam) { displayName = CSTRING(UnjamWeapon); condition = QUOTE( [_player] call FUNC(canUnjam) ); exceptions[] = {"isNotInside", "isNotSitting"}; @@ -13,7 +13,7 @@ class CfgVehicles { priority = 4; icon = QUOTE(PATHTOF(UI\unjam_ca.paa)); }; - class ACE_SwapBarrel { + class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(swapBarrel); ); @@ -21,16 +21,16 @@ class CfgVehicles { priority = 3; icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); }; - class ACE_CheckTemperature { + class GVAR(CheckTemperature) { displayName = CSTRING(CheckTemperatureShort); - condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (secondaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}"; + condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}"; exceptions[] = {"isNotInside", "isNotSitting"}; - statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(CheckTemperature); ); + statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(checkTemperature); ); showDisabled = 0; priority = 2.9; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); }; - class ACE_CheckTemperatureSpareBarrels { + class GVAR(CheckTemperatureSpareBarrels) { displayName = CSTRING(CheckTemperatureSpareBarrelsShort); condition = QUOTE( 'ACE_SpareBarrel' in magazines _player); exceptions[] = {"isNotInside", "isNotSitting"}; @@ -41,6 +41,24 @@ class CfgVehicles { }; }; }; + + class ACE_Actions { + class ACE_Weapon { + class GVAR(SwapBarrel) { + displayName = CSTRING(SwapBarrel); + condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _target >> 'ACE_Overheating_allowSwapBarrel') == 1} ); + statement = QUOTE([ARR_3(_player, _target, currentWeapon _target)] call FUNC(swapBarrelAssistant);); + icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); + }; + class GVAR(CheckTemperature) { + displayName = CSTRING(CheckTemperatureShort); + condition = "switch (currentWeapon _target) do {case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}"; + exceptions[] = {"isNotInside", "isNotSitting"}; + statement = QUOTE( [ARR_3(_player, _target, currentWeapon _target)] call FUNC(checkTemperature); ); + icon = QUOTE(PATHTOF(UI\temp_ca.paa)); + }; + }; + }; }; class ReammoBox_F; diff --git a/addons/overheating/XEH_PREP.hpp b/addons/overheating/XEH_PREP.hpp index cc1948e6bd3..44fd931ca06 100644 --- a/addons/overheating/XEH_PREP.hpp +++ b/addons/overheating/XEH_PREP.hpp @@ -13,6 +13,7 @@ PREP(loadCoolestSpareBarrel); PREP(overheat); PREP(sendSpareBarrelsTemperaturesHint); PREP(swapBarrel); +PREP(swapBarrelAssistant); PREP(swapBarrelCallback); PREP(updateSpareBarrelsTemperaturesThread); PREP(updateTemperature); diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 831c2c23483..96d518ac9ff 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -56,7 +56,7 @@ GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; }; }] call EFUNC(common,addEventHandler); -// Install event handlers to display temp when a barrel was swapped -["barrelSwapped", { - _this call FUNC(displayTemperature); -}] call EFUNC(common,addEventHandler); +// Install event handler to display temp when a barrel was swapped +["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler); +// Install event handler to initiate an assisted barrel swap +["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler); diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf index f7206656201..fd2ac5f56c1 100644 --- a/addons/overheating/functions/fnc_checkTemperature.sqf +++ b/addons/overheating/functions/fnc_checkTemperature.sqf @@ -3,8 +3,9 @@ * Make the player check the temperature of his weapon * * Arguments: - * 0: Player - * 1: Weapon + * 0: Unit checking + * 1: Unit that has the weapon + * 2: Weapon * * Return Value: * None @@ -16,17 +17,18 @@ */ #include "script_component.hpp" -params ["_player", "_weapon"]; -TRACE_2("params",_player,_weapon); +params ["_assistant", "_gunner", "_weapon"]; +TRACE_3("params",_assistant,_gunner,_weapon); // Play animation and report temperature -private _action = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_checkTemperatureAction"); - -if (_action == "") then { - _action = "Gear"; +private _action = "PutDown"; +if (_assistant isEqualTo _gunner) then { + _action = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_checkTemperatureAction"); + if (_action == "") then { + _action = "Gear"; + }; }; - -_player playActionNow _action; +_assistant playActionNow _action; // Waits a sec before displaying the temperature -[FUNC(displayTemperature), [_player, _weapon], 1.0] call EFUNC(common,waitAndExecute); +[FUNC(displayTemperature), [_gunner, _weapon], 1.0] call EFUNC(common,waitAndExecute); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index b90271abd96..08cb85083ce 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -4,10 +4,11 @@ * coolest on the unit weapon. Runs on the server. * * Argument: - * 0: Unit - * 1: Weapon - * 2: Weapon temp before switching - * 3: Mass of the removed barrel + * 0: Unit that has the spare barrels + * 1: Unit that has the weapon + * 2: Weapon + * 3: Weapon temp before switching + * 4: Mass of the removed barrel * * Return value: * None @@ -17,11 +18,11 @@ */ #include "script_component.hpp" -params ["_unit", "_weapon", "_weaponTemp", "_barrelMass"]; -TRACE_4("loadCoolestSpareBarrel1",_unit,_weapon,_weaponTemp,_barrelMass); +params ["_assistant", "_gunner", "_weapon", "_weaponTemp", "_barrelMass"]; +TRACE_5("loadCoolestSpareBarrel1",_assistant,_gunner,_weapon,_weaponTemp,_barrelMass); // Find all spare barrel the player has -private _allBarrels = [_unit, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIndex; +private _allBarrels = [_assistant, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIndex; TRACE_1("_allBarrels",_allBarrels); if ((count _allBarrels) < 1) exitWith {}; @@ -43,10 +44,10 @@ TRACE_3("loadCoolestSpareBarrel5",_coolestTemp,_coolestMag,_weaponTemp); // The new weapon temperature is similar to the coolest barrel // Publish the new temperature value -_unit setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; +_gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; // Heat up the coolest barrel to the former weapon temperature [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; -// Send an event so the local machine can show the hint -["barrelSwapped", _unit, [_unit, _weapon]] call EFUNC(common,objectEvent); +// Send an event so the machines of the assistant and gunner can show the hint +["showWeaponTemperature", [_assistant, _gunner], [_gunner, _weapon]] call EFUNC(common,targetEvent); diff --git a/addons/overheating/functions/fnc_swapBarrel.sqf b/addons/overheating/functions/fnc_swapBarrel.sqf index bbdab917056..a63ef5a36a5 100644 --- a/addons/overheating/functions/fnc_swapBarrel.sqf +++ b/addons/overheating/functions/fnc_swapBarrel.sqf @@ -3,29 +3,35 @@ * Make a unit start swapping it's barrel * * Argument: - * 0: Unit - * 1: Weapon + * 0: Unit initiating the action + * 1: Unit that has the weapon + * 2: Weapon * * Return value: * None * * Example: - * [player, currentWeapon player] call ace_overheating_fnc_swapBarrel + * [cursorTarget, player, currentWeapon player] call ace_overheating_fnc_swapBarrel * * Public: No */ #include "script_component.hpp" -params ["_player", "_weapon"]; -TRACE_2("params",_player,_weapon); +params ["_assistant", "_gunner", "_weapon"]; +TRACE_3("params",_assistant,_gunner,_weapon); // Make the standing player kneel down -if (stance _player != "PRONE") then { - [_player, "amovpknlmstpsraswrfldnon", 1] call EFUNC(common,doAnimation); +if (stance _gunner != "PRONE") then { + [_gunner, "amovpknlmstpsraswrfldnon", 1] call EFUNC(common,doAnimation); }; // Barrel dismount gesture -_player playActionNow QGVAR(GestureDismountMuzzle); +_gunner playActionNow QGVAR(GestureDismountMuzzle); playSound "ACE_BarrelSwap"; -[5, [_player, _weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); +private _duration = 3.0; +if (_assistant isEqualTo _gunner) then { + _duration = 5.0; +}; + +[_duration, [_assistant,_gunner,_weapon], {(_this select 0) call FUNC(swapBarrelCallback)}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); diff --git a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf new file mode 100644 index 00000000000..5e3c31fc5e6 --- /dev/null +++ b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf @@ -0,0 +1,33 @@ +/* + * Author: esteldunedain, Commy2 + * Make a unit start swapping the barrel of another unit + * + * Argument: + * 0: Unit initiating the action + * 1: Unit that has the weapon + * 2: Weapon + * + * Return value: + * None + * + * Example: + * [player, cursorTarget, currentWeapon cursorTarget] call ace_overheating_fnc_swapBarrelAssistant + * + * Public: No + */ +#include "script_component.hpp" + +params ["_assistant", "_gunner", "_weapon"]; +TRACE_3("params",_assistant,_gunner,_weapon); + +// Make the standing player kneel down +if (stance _assistant != "PRONE") then { + [_assistant, "amovpknlmstpsraswrfldnon", 1] call EFUNC(common,doAnimation); +}; + +// Barrel dismount gesture +playSound "ACE_BarrelSwap"; + +[3, [_assistant, _gunner, _weapon], {}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); + +["initiateSwapBarrelAssisted", _gunner, [_assistant, _gunner, _weapon]] call EFUNC(common,objectEvent); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 62a3b13ef62..339b6627b18 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -1,10 +1,11 @@ /* - * Author: Commy2 + * Author: Commy2, esteldunedain * Swap barrel callback * * Argument: - * 0: Unit - * 1: Weapon + * 0: Unit initiating the action + * 1: Unit that has the weapon + * 2: Weapon * * Return value: * None @@ -17,21 +18,23 @@ #define DEBUG_MODE_FULL #include "script_component.hpp" -params ["_player", "_weapon"]; -TRACE_2("params",_player,_weapon); +params ["_assistant", "_gunner", "_weapon"]; +TRACE_3("params",_assistant,_gunner,_weapon); -// Barrel mount gesture -_player playAction QGVAR(GestureMountMuzzle); -playSound "ACE_BarrelSwap"; +if (_assistant isEqualTo _gunner) then { + // Barrel mount gesture + _gunner playAction QGVAR(GestureMountMuzzle); + playSound "ACE_BarrelSwap"; +}; -private _temp = _player getVariable [format [QGVAR(%1_temp), _weapon], 0]; +private _temp = _gunner getVariable [format [QGVAR(%1_temp), _weapon], 0]; private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; // Instruct the server to load the coolest spare barrel into the weapon and // store the removed barrel with the former weapon temperature. The server // also updates the current weapon temperature to match that of the new // loaded barrel. -["spareBarrelsLoadCoolest", [_player, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); +["spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); // Store the update time -_player setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; +_gunner setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; From a064c0c98db5b5e98a82ac0478bbd5d929c916fa Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 12:50:16 +0100 Subject: [PATCH 036/268] Modernize code --- addons/ui/CfgEventHandlers.hpp | 6 ++++++ addons/ui/XEH_PREP.hpp | 4 ++++ addons/ui/XEH_preInit.sqf | 5 +---- addons/ui/XEH_preStart.sqf | 3 +++ .../ui/functions/fnc_setAdvancedElement.sqf | 4 ++-- addons/ui/functions/fnc_setElements.sqf | 21 +++---------------- 6 files changed, 19 insertions(+), 24 deletions(-) create mode 100644 addons/ui/XEH_PREP.hpp create mode 100644 addons/ui/XEH_preStart.sqf diff --git a/addons/ui/CfgEventHandlers.hpp b/addons/ui/CfgEventHandlers.hpp index 423993f757d..36c0fca8a37 100644 --- a/addons/ui/CfgEventHandlers.hpp +++ b/addons/ui/CfgEventHandlers.hpp @@ -1,3 +1,9 @@ +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; + class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); diff --git a/addons/ui/XEH_PREP.hpp b/addons/ui/XEH_PREP.hpp new file mode 100644 index 00000000000..222afadf255 --- /dev/null +++ b/addons/ui/XEH_PREP.hpp @@ -0,0 +1,4 @@ +PREP(moduleInit); +PREP(moduleInitAdvanced); +PREP(setAdvancedElement); +PREP(setElements); diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index 8a86e3ec327..a7feade1c39 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -2,9 +2,6 @@ ADDON = false; -PREP(moduleInit); -PREP(moduleInitAdvanced); -PREP(setAdvancedElement); -PREP(setElements); +#include "XEH_PREP.hpp" ADDON = true; diff --git a/addons/ui/XEH_preStart.sqf b/addons/ui/XEH_preStart.sqf new file mode 100644 index 00000000000..022888575ed --- /dev/null +++ b/addons/ui/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index c87a79ffae9..e5fc66d565a 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -11,7 +11,7 @@ * None * * Example: - * [show, 303, [188] ] call ace_ui_fnc_setAdvancedElement + * [show, 303, [188]] call ace_ui_fnc_setAdvancedElement * * Public: No */ @@ -29,7 +29,7 @@ _show = [1, 0] select _show; // Disable/Enable elements { - local _idc = _x; + private _idc = _x; // Loop through IGUI displays as they can be present several times for some reason { diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index 3952d8e337d..1a9ca733996 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -9,17 +9,15 @@ * None * * Example: - * call ace_ui_fnc_setBasicElements + * [] call ace_ui_fnc_setElements * * Public: No */ #include "script_component.hpp" -//@todo - change to EFUNC(common,showHud) setter +private _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] -local _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] - -showHUD [ +["ui", [ _shownHUD select 0, GVAR(soldierVehicleWeaponInfo), GVAR(vehicleRadar), @@ -28,17 +26,4 @@ showHUD [ GVAR(commandMenu), GVAR(groupBar), _shownHUD select 7 -]; - -/* -["UIselective", [ - _shownHUD select 0, - _shownHUD select 1, - _shownHUD select 2, - _shownHUD select 3, - _shownHUD select 4, - GVAR(commandMenu), - _shownHUD select 6, - _shownHUD select 7 ]] call EFUNC(common,showHud); -*/ From 9b46e8856e800359503174dff788bdf7c91fad47 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 15:41:17 +0100 Subject: [PATCH 037/268] Merge modules, Add base allow client settings toggle, Add requires descriptions --- addons/reload/RscInGameUI.hpp | 24 --- addons/reload/config.cpp | 2 - addons/ui/ACE_Settings.hpp | 176 ++++++++++-------- addons/ui/CfgVehicles.hpp | 62 +++--- addons/ui/XEH_PREP.hpp | 1 - addons/ui/XEH_clientInit.sqf | 22 ++- addons/ui/functions/fnc_moduleInit.sqf | 27 ++- .../ui/functions/fnc_moduleInitAdvanced.sqf | 42 ----- .../ui/functions/fnc_setAdvancedElement.sqf | 18 +- addons/ui/functions/fnc_setElements.sqf | 10 +- addons/ui/script_component.hpp | 8 +- addons/ui/stringtable.xml | 39 ++-- 12 files changed, 216 insertions(+), 215 deletions(-) delete mode 100644 addons/reload/RscInGameUI.hpp delete mode 100644 addons/ui/functions/fnc_moduleInitAdvanced.sqf diff --git a/addons/reload/RscInGameUI.hpp b/addons/reload/RscInGameUI.hpp deleted file mode 100644 index 7310690f16f..00000000000 --- a/addons/reload/RscInGameUI.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -class RscControlsGroup; -class RscText; - -class RscInGameUI { - class RscUnitInfo { - // Soldiers - class WeaponInfoControlsGroupLeft: RscControlsGroup { - class controls { - class CA_AmmoCount: RscText { - sizeEx = 0; - }; - }; - }; - // Vehicles - /*class WeaponInfoControlsGroupRight: RscControlsGroup { - class controls { - class CA_AmmoCount: RscText { - sizeEx = 0; - }; - }; - };*/ - }; -}; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 6ded1cd6873..86ba809a934 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -20,6 +20,4 @@ class CfgPatches { #include "CfgActions.hpp" -#include "RscInGameUI.hpp" - #include "ACE_Settings.hpp" diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp index 53e1496b38e..3e5c53d3284 100644 --- a/addons/ui/ACE_Settings.hpp +++ b/addons/ui/ACE_Settings.hpp @@ -1,182 +1,208 @@ class ACE_Settings { + class GVAR(allowSelectiveUI) { + category = CSTRING(Category); + displayName = CSTRING(AllowSelectiveUI); + description = CSTRING(AllowSelectiveUI_Description); + typeName = "BOOL"; + value = 1; + }; + // BASIC class GVAR(soldierVehicleWeaponInfo) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(SoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(SoldierVehicleWeaponInfo); - category = CSTRING(Category); }; class GVAR(vehicleRadar) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleRadar); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleRadar); - category = CSTRING(Category); }; class GVAR(vehicleCompass) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleCompass); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleCompass); - category = CSTRING(Category); }; class GVAR(commandMenu) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(CommandMenu); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(CommandMenu); - category = CSTRING(Category); }; class GVAR(groupBar) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(GroupBar); typeName = "BOOL"; + value = 0; isClientSettable = 1; - displayName = CSTRING(GroupBar); - category = CSTRING(Category); }; // ADVANCED // Upper Weapon Info class GVAR(weaponName) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(WeaponName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(WeaponName); - category = CSTRING(Category); }; class GVAR(weaponNameBackground) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(WeaponNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(WeaponNameBackground); - category = CSTRING(Category); }; class GVAR(firingMode) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(FiringMode); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(FiringMode); - category = CSTRING(Category); }; // Lower Weapon Info class GVAR(ammoType) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(AmmoType); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(AmmoType); - category = CSTRING(Category); }; class GVAR(ammoCount) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(AmmoCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 0; isClientSettable = 1; - displayName = CSTRING(AmmoCount); - description = CSTRING(AmmoCountDesc); - category = CSTRING(Category); }; class GVAR(magCount) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(MagCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(MagCount); - category = CSTRING(Category); }; - class GVAR(grenadeFlareType) { - value = 1; + class GVAR(throwableName) { + category = CSTRING(Category); + displayName = CSTRING(throwableName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(GrenadeFlareType); - category = CSTRING(Category); }; - class GVAR(grenadeFlareCount) { - value = 1; + class GVAR(throwableCount) { + category = CSTRING(Category); + displayName = CSTRING(throwableCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(GrenadeFlareCount); - category = CSTRING(Category); }; class GVAR(zeroing) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(Zeroing); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(Zeroing); - category = CSTRING(Category); }; class GVAR(weaponLowerInfoBackground) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(WeaponLowerInfoBackground); //todo + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(WeaponLowerInfoBackground); //todo - category = CSTRING(Category); }; // Stance class GVAR(stance) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(Stance); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(Stance); - category = CSTRING(Category); }; // Vehicle class GVAR(vehicleName) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleName); - category = CSTRING(Category); }; class GVAR(vehicleNameBackground) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleNameBackground); - category = CSTRING(Category); }; class GVAR(vehicleFuelBar) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleFuelBar); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleFuelBar); - category = CSTRING(Category); }; class GVAR(vehicleSpeed) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleSpeed); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleSpeed); - category = CSTRING(Category); }; class GVAR(vehicleAltitude) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleAltitude); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleAltitude); - category = CSTRING(Category); }; class GVAR(vehicleDamage) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleDamage); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleDamage); - category = CSTRING(Category); }; class GVAR(vehicleInfoBackground) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleInfoBackground); - category = CSTRING(Category); }; class GVAR(vehicleGunnerWeapon) { - value = 1; + category = CSTRING(Category); + displayName = CSTRING(VehicleGunnerWeapon); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; + value = 1; isClientSettable = 1; - displayName = CSTRING(VehicleGunnerWeapon); - category = CSTRING(Category); }; }; diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 69f28f955e5..1441d972175 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -1,8 +1,6 @@ class CfgVehicles { class ACE_Module; - - // Basic - class ACE_ModuleUI: ACE_Module { + class GVAR(Module): ACE_Module { author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(ModuleName); @@ -11,6 +9,13 @@ class CfgVehicles { isGlobal = 1; //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); class Arguments { + // BASIC + class allowSelectiveUI { + displayName = CSTRING(AllowSelectiveUI); + description = CSTRING(AllowSelectiveUI_Description); + typeName = "BOOL"; + defaultValue = 1; + }; class soldierVehicleWeaponInfo { displayName = CSTRING(SoldierVehicleWeaponInfo); typeName = "BOOL"; @@ -34,37 +39,26 @@ class CfgVehicles { class groupBar { displayName = CSTRING(GroupBar); typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; - }; - class ModuleDescription { - description = CSTRING(ModuleDescription); - }; - }; - // Advanced - class ACE_ModuleUI_Advanced: ACE_Module { - author = ECSTRING(common,ACETeam); - category = "ACE"; - displayName = CSTRING(ModuleName_Advanced); - function = QFUNC(moduleInitAdvanced); - scope = 2; - isGlobal = 1; - //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); - class Arguments { + // ADVANCED // Upper Weapon Info class weaponName { displayName = CSTRING(WeaponName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class weaponNameBackground { displayName = CSTRING(WeaponNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class firingMode { displayName = CSTRING(FiringMode); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; @@ -72,37 +66,43 @@ class CfgVehicles { // Lower Weapon Info class ammoType { displayName = CSTRING(AmmoType); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class ammoCount { displayName = CSTRING(AmmoCount); - description = CSTRING(AmmoCountDesc); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - defaultValue = 1; + defaultValue = 0; }; class magCount { displayName = CSTRING(MagCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; - class grenadeFlareType { - displayName = CSTRING(GrenadeFlareType); + class throwableName { + displayName = CSTRING(throwableName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; - class grenadeFlareCount { - displayName = CSTRING(GrenadeFlareCount); + class throwableCount { + displayName = CSTRING(throwableCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class zeroing { displayName = CSTRING(Zeroing); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class weaponLowerInfoBackground { displayName = CSTRING(WeaponLowerInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; @@ -110,55 +110,63 @@ class CfgVehicles { // Stance class stance { displayName = CSTRING(Stance); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; - // Vehicle class vehicleName { displayName = CSTRING(VehicleName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleNameBackground { displayName = CSTRING(VehicleNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleFuelBar { displayName = CSTRING(VehicleFuelBar); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleSpeed { displayName = CSTRING(VehicleSpeed); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleAltitude { displayName = CSTRING(VehicleAltitude); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleDamage { displayName = CSTRING(VehicleDamage); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleInfoBackground { displayName = CSTRING(VehicleInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; class vehicleGunnerWeapon { displayName = CSTRING(VehicleGunnerWeapon); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; }; class ModuleDescription { - description = CSTRING(ModuleDescription_Advanced); + description = CSTRING(ModuleDescription); }; }; }; diff --git a/addons/ui/XEH_PREP.hpp b/addons/ui/XEH_PREP.hpp index 222afadf255..6660470ba81 100644 --- a/addons/ui/XEH_PREP.hpp +++ b/addons/ui/XEH_PREP.hpp @@ -1,4 +1,3 @@ PREP(moduleInit); -PREP(moduleInitAdvanced); PREP(setAdvancedElement); PREP(setElements); diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index d778fb27461..23fa19af117 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -5,19 +5,24 @@ if (!hasInterface) exitWith {}; ["SettingsInitialized", { - // Selective UI Basic - call FUNC(setElements); - + // Initial settings + [true] call FUNC(setElements); // On load and entering/exiting a vehicle ["infoDisplayChanged", { // Selective UI Advanced - { - _x call FUNC(setAdvancedElement); - } forEach ELEMENTS_ADVANCED; + // Defaults must be set in this EH to make sure controls are activated and advanced settings can be modified + if (!GVAR(allowSelectiveUI)) then { + { + [_x, true] call FUNC(setAdvancedElement); + } forEach ELEMENTS_ADVANCED; + } else { + { + [_x] call FUNC(setAdvancedElement); + } forEach ELEMENTS_ADVANCED; + }; }] call EFUNC(common,addEventHandler); - ["SettingChanged", { params ["_name"]; @@ -31,11 +36,10 @@ if (!hasInterface) exitWith {}; _x params ["_element"]; if (_name == _element) then { - _x call FUNC(setAdvancedElement); + [_x] call FUNC(setAdvancedElement); TRACE_2("Setting Changed",_name,_element); }; } forEach ELEMENTS_ADVANCED; - }] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler); diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf index f4a57831c89..fe0f07709a0 100644 --- a/addons/ui/functions/fnc_moduleInit.sqf +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -20,13 +20,36 @@ if (!_activated) exitWith {}; // Exit if HUD visibility is hardcoded in mission config and showHUD command is overriden if (isArray (missionConfigFile >> "showHUD")) exitWith { - ACE_LOGINFO("User Interface (Basic) Module Failed to Initialize - showHUD overriden in mission config!"); + ACE_LOGINFO("User Interface Module Failed to Initialize - showHUD overriden in mission config!"); }; +// Basic +[_logic, QGVAR(allowSelectiveUI), "allowSelectiveUI"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(soldierVehicleWeaponInfo), "soldierVehicleWeaponInfo"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleRadar), "vehicleRadar"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleCompass), "vehicleCompass"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(commandMenu), "commandMenu"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(groupBar), "groupBar"] call EFUNC(common,readSettingFromModule); -ACE_LOGINFO("User Interface (Basic) Module Initialized."); +// Advanced +[_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(weaponNameBackground), "weaponNameBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(firingMode), "firingMode"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ammoType), "ammoType"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(ammoCount), "ammoCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(magCount), "magCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(throwableName), "throwableName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(throwableCount), "throwableCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(weaponLowerInfoBackground), "weaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(stance), "stance"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleName), "vehicleName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleNameBackground), "vehicleNameBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleFuelBar), "vehicleFuelBar"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleSpeed), "vehicleSpeed"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleAltitude), "vehicleAltitude"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleDamage), "vehicleDamage"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleInfoBackground), "vehicleInfoBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(vehicleGunnerWeapon), "vehicleGunnerWeapon"] call EFUNC(common,readSettingFromModule); + +ACE_LOGINFO_1("User Interface Module Initialized. Allow client modifications: %1",GVAR(allowSelectiveUI)); diff --git a/addons/ui/functions/fnc_moduleInitAdvanced.sqf b/addons/ui/functions/fnc_moduleInitAdvanced.sqf deleted file mode 100644 index ab5666af69c..00000000000 --- a/addons/ui/functions/fnc_moduleInitAdvanced.sqf +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Author: Jonpas - * Initializes the UI module. - * - * Arguments: - * 0: Module Logic - * 1: Units - * 2: Activated - * - * Return Value: - * None - */ -#include "script_component.hpp" - -if (!isServer) exitWith {}; - -params ["_logic", "_units", "_activated"]; - -if (!_activated) exitWith {}; - -[_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(weaponNameBackground), "weaponNameBackground"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(firingMode), "firingMode"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(ammoType), "ammoType"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(ammoCount), "ammoCount"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(magCount), "magCount"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(grenadeFlareType), "grenadeFlareType"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(grenadeFlareCount), "grenadeFlareCount"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(weaponLowerInfoBackground), "weaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(stance), "stance"] call EFUNC(common,readSettingFromModule); - -[_logic, QGVAR(vehicleName), "vehicleName"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleNameBackground), "vehicleNameBackground"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleFuelBar), "vehicleFuelBar"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleSpeed), "vehicleSpeed"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleAltitude), "vehicleAltitude"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleDamage), "vehicleDamage"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleInfoBackground), "vehicleInfoBackground"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleGunnerWeapon), "vehicleGunnerWeapon"] call EFUNC(common,readSettingFromModule); - -ACE_LOGINFO("User Interface (Advanced) Module Initialized."); diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index e5fc66d565a..21910f0042c 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -3,22 +3,29 @@ * Sets advanced visible element of the UI using displays and controls. * * Arguments: - * 0: Show/Hide Element OR Element Variable - * 1: Element IDD - * 2: Element IDCs + * 0: Element info + * 0: Show/Hide Element OR Element Variable + * 1: Element IDD + * 2: Element IDCs + * 1: Force change even when disallowed * * Return Value: * None * * Example: - * [show, 303, [188]] call ace_ui_fnc_setAdvancedElement + * [[show, 303, [188]], false] call ace_ui_fnc_setAdvancedElement * * Public: No */ #include "script_component.hpp" -params ["_show", "_idd", "_elements"]; +params ["_elementInfo", ["_force", false, [true]] ]; +if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { + [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) +}; + +_elementInfo params ["_show", "_idd", "_elements"]; // Get show/hide boolean from mission namespace if it's a string if (typeName _show == "STRING") then { @@ -26,7 +33,6 @@ if (typeName _show == "STRING") then { }; _show = [1, 0] select _show; - // Disable/Enable elements { private _idc = _x; diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index 1a9ca733996..c1bb131db58 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -3,18 +3,24 @@ * Sets basic visible elements of the UI using showHUD setter. * * Arguments: - * None + * 0: Force change even when disallowed * * Return Value: * None * * Example: - * [] call ace_ui_fnc_setElements + * [false] call ace_ui_fnc_setElements * * Public: No */ #include "script_component.hpp" +params [ ["_force", false, [true]] ]; + +if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { + [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) +}; + private _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] ["ui", [ diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index 72f9066f1b1..15f0b731b63 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -1,8 +1,8 @@ #define COMPONENT ui #include "\z\ace\addons\main\script_mod.hpp" -// #define DEBUG_MODE_FULL -// #define DISABLE_COMPILE_CACHE + #define DEBUG_MODE_FULL + #define DISABLE_COMPILE_CACHE // #define CBA_DEBUG_SYNCHRONOUS // #define ENABLE_PERFORMANCE_COUNTERS @@ -28,8 +28,8 @@ [QGVAR(ammoType), 300, [155] ], \ [QGVAR(ammoCount), 300, [184] ], \ [QGVAR(magCount), 300, [185] ], \ - [QGVAR(grenadeName), 300, [152] ], \ - [QGVAR(grenadeCount), 300, [151] ], \ + [QGVAR(throwableName), 300, [152] ], \ + [QGVAR(throwableCount), 300, [151] ], \ [QGVAR(weaponLowerInfoBackground), 300, [1202] ], \ [QGVAR(zeroing), 300, [168] ], \ [QGVAR(stance), 303, [188, 1201] ], \ diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index e320d3ce395..21932cb98e7 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -4,14 +4,18 @@ User Interface - - User Interface (Basic) + User Interface - This module allows hiding of basic user interface parts. Makes some User Interface (Advanced) settings inoperable. + This module allows toggling visible user interface parts. + + + Allow Selective UI + + + Allow client to modify their UI. - Soldier/Vehicle/Weapon Information @@ -27,15 +31,6 @@ Group Bar - - - - User Interface (Advanced) - - - This module allows hiding of specific user interface parts, more detailed than basic. User Interface (Basic) settings will make some of the settings inoperable. - - Weapon Name @@ -51,17 +46,14 @@ Ammo Count - - Always disabled on foot by ace_reload. - Magazine Count - - Grenade/Flare Type + + Throwable Type - - Grenade/Flare Count + + Throwable Count Zeroing @@ -72,7 +64,6 @@ Stance - Vehicle Name @@ -97,5 +88,11 @@ Vehicle Gunner Weapon + + Requires Soldier/Vehicle/Weapons Information. + + + Modifying User Interface is disabled. + From 955333b0bc796d2835c11192de7571aad5f21a11 Mon Sep 17 00:00:00 2001 From: novichiv Date: Sun, 6 Mar 2016 22:06:11 +0300 Subject: [PATCH 038/268] Fixed strncpy in parse_imagepath --- extensions/parse_imagepath/ace_parse_imagepath.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/extensions/parse_imagepath/ace_parse_imagepath.cpp b/extensions/parse_imagepath/ace_parse_imagepath.cpp index fa1a8643e75..dc27d60c726 100644 --- a/extensions/parse_imagepath/ace_parse_imagepath.cpp +++ b/extensions/parse_imagepath/ace_parse_imagepath.cpp @@ -36,18 +36,17 @@ std::string getImagePathFromStructuredText(const std::string & input) { return returnValue; } -// i like to live dangerously. jk, fix strncpy sometime pls. #pragma warning( push ) #pragma warning( disable : 4996 ) void __stdcall RVExtension(char *output, int outputSize, const char *function) { ZERO_OUTPUT(); - if (!strcmp(function, "version")) { - strncpy(output, ACE_FULL_VERSION_STR, outputSize); - } else { - strncpy(output, getImagePathFromStructuredText(function).c_str(), outputSize); - output[outputSize - 1] = '\0'; - } + if (!strcmp(function, "version")) { + strncpy_s(output, outputSize, ACE_FULL_VERSION_STR, _TRUNCATE); + } else { + strncpy_s(output, outputSize, getImagePathFromStructuredText(function).c_str(), _TRUNCATE); + output[outputSize - 1] = '\0'; + } EXTENSION_RETURN(); } From 64fe944b0fdbf7d7db271a0ea488fb1f6e347b6a Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:12:01 +0100 Subject: [PATCH 039/268] Add public setter function, Optimize some checks --- addons/ui/XEH_PREP.hpp | 1 + addons/ui/XEH_preInit.sqf | 2 + addons/ui/functions/fnc_moduleInit.sqf | 22 ++++---- .../ui/functions/fnc_setAdvancedElement.sqf | 7 +++ .../ui/functions/fnc_setElementVisibility.sqf | 52 +++++++++++++++++++ addons/ui/functions/fnc_setElements.sqf | 2 + 6 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 addons/ui/functions/fnc_setElementVisibility.sqf diff --git a/addons/ui/XEH_PREP.hpp b/addons/ui/XEH_PREP.hpp index 6660470ba81..8a6b4d2ce14 100644 --- a/addons/ui/XEH_PREP.hpp +++ b/addons/ui/XEH_PREP.hpp @@ -1,3 +1,4 @@ PREP(moduleInit); PREP(setAdvancedElement); PREP(setElements); +PREP(setElementVisibility); diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index a7feade1c39..4a5638fc03e 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -4,4 +4,6 @@ ADDON = false; #include "XEH_PREP.hpp" +GVAR(elementsSet) = []; + ADDON = true; diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf index fe0f07709a0..8327b09e722 100644 --- a/addons/ui/functions/fnc_moduleInit.sqf +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -18,18 +18,18 @@ params ["_logic", "_units", "_activated"]; if (!_activated) exitWith {}; -// Exit if HUD visibility is hardcoded in mission config and showHUD command is overriden -if (isArray (missionConfigFile >> "showHUD")) exitWith { - ACE_LOGINFO("User Interface Module Failed to Initialize - showHUD overriden in mission config!"); -}; - // Basic -[_logic, QGVAR(allowSelectiveUI), "allowSelectiveUI"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(soldierVehicleWeaponInfo), "soldierVehicleWeaponInfo"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleRadar), "vehicleRadar"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleCompass), "vehicleCompass"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(commandMenu), "commandMenu"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(groupBar), "groupBar"] call EFUNC(common,readSettingFromModule); +if (isArray (missionConfigFile >> "showHUD")) then { + // HUD visibility is hardcoded in mission config and showHUD command is overriden + ACE_LOGINFO("User Interface Module Failed to Initialize Basic settings - showHUD overriden in mission config!"); +} else { + [_logic, QGVAR(allowSelectiveUI), "allowSelectiveUI"] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(soldierVehicleWeaponInfo), "soldierVehicleWeaponInfo"] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(vehicleRadar), "vehicleRadar"] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(vehicleCompass), "vehicleCompass"] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(commandMenu), "commandMenu"] call EFUNC(common,readSettingFromModule); + [_logic, QGVAR(groupBar), "groupBar"] call EFUNC(common,readSettingFromModule); +}; // Advanced [_logic, QGVAR(weaponName), "weaponName"] call EFUNC(common,readSettingFromModule); diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index 21910f0042c..9e001d7d9ce 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -21,6 +21,8 @@ params ["_elementInfo", ["_force", false, [true]] ]; +if (_elementInfo in GVAR(elementsSet)) exitWith {}; + if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) }; @@ -34,6 +36,7 @@ if (typeName _show == "STRING") then { _show = [1, 0] select _show; // Disable/Enable elements +private _success = false; { private _idc = _x; @@ -44,6 +47,10 @@ _show = [1, 0] select _show; (_x displayCtrl _idc) ctrlSetFade _show; (_x displayCtrl _idc) ctrlCommit 0; + + _success = true; }; } forEach (uiNamespace getVariable "IGUI_displays"); } forEach _elements; + +_success diff --git a/addons/ui/functions/fnc_setElementVisibility.sqf b/addons/ui/functions/fnc_setElementVisibility.sqf new file mode 100644 index 00000000000..f09fe061f13 --- /dev/null +++ b/addons/ui/functions/fnc_setElementVisibility.sqf @@ -0,0 +1,52 @@ +/* + * Author: Jonpas + * Wrapper for setting advanced element visibility. + * + * Arguments: + * 0: Set/Unset (default: true) + * 1: Element info + * 0: Show/Hide Element OR Element Variable + * 1: Element IDD + * 2: Element IDCs + * + * Return Value: + * None + * + * Example: + * [false] call ace_ui_fnc_setElementVisibility + * + * Public: Yes + */ +#include "script_component.hpp" + +params [ + ["_set", true, [true]], + ["_elementInfo", [true, 0, []], [[]], 3] +]; + +_elementInfo params [ + ["_show", false, [true, ""]], + ["_idd", 0, [0]], + ["_elements", [], [[]]] +]; + +if (_set) then { + if ([_idd, _elements] in GVAR(elementsSet)) exitWith { TRACE_2("Element already set",_elementInfo,GVAR(elementsSet)); }; + + TRACE_2("Setting element",_elementInfo,GVAR(elementsSet)); + private _success = [_elementInfo] call FUNC(setAdvancedElement); + + if (_success) then { + GVAR(elementsSet) pushBack [_idd, _elements]; + }; +} else { + if ([_idd, _elements] in GVAR(elementsSet)) then { + TRACE_2("Unsetting element",_elementInfo,GVAR(elementsSet)); + + TRACE_2("Toggling element",_elementInfo,GVAR(elementsSet)); + [_elementInfo] call FUNC(setAdvancedElement); + + private _index = GVAR(elementsSet) find [_idd, _elements]; + GVAR(elementsSet) deleteAt _index; + }; +}; diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index c1bb131db58..71fbfdf9457 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +if (isArray (missionConfigFile >> "showHUD")) exitWith {}; + params [ ["_force", false, [true]] ]; if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { From 23e2617db8c97868d888b7f9e7e34e70f083b031 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:40:23 +0100 Subject: [PATCH 040/268] Change params order and improve clientInit --- addons/ui/XEH_clientInit.sqf | 22 +++++----- .../ui/functions/fnc_setAdvancedElement.sqf | 17 ++++---- .../ui/functions/fnc_setElementVisibility.sqf | 33 +++++++-------- addons/ui/functions/fnc_setElements.sqf | 2 +- addons/ui/script_component.hpp | 40 +++++++++---------- 5 files changed, 51 insertions(+), 63 deletions(-) diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 23fa19af117..47fb36cb14b 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -12,17 +12,13 @@ if (!hasInterface) exitWith {}; ["infoDisplayChanged", { // Selective UI Advanced // Defaults must be set in this EH to make sure controls are activated and advanced settings can be modified - if (!GVAR(allowSelectiveUI)) then { - { - [_x, true] call FUNC(setAdvancedElement); - } forEach ELEMENTS_ADVANCED; - } else { - { - [_x] call FUNC(setAdvancedElement); - } forEach ELEMENTS_ADVANCED; - }; + private _force = [true, false] select (GVAR(allowSelectiveUI)); + { + [_x select 0, _x select 1, _x select 2, _force] call FUNC(setAdvancedElement); + } forEach ELEMENTS_ADVANCED; }] call EFUNC(common,addEventHandler); + // On changing settings ["SettingChanged", { params ["_name"]; @@ -33,11 +29,11 @@ if (!hasInterface) exitWith {}; // Selective UI Advanced { - _x params ["_element"]; + params ["_idd", "_elements", "_name"]; - if (_name == _element) then { - [_x] call FUNC(setAdvancedElement); - TRACE_2("Setting Changed",_name,_element); + if (_name == _name) then { + [_idd, _elements, _name] call FUNC(setAdvancedElement); + TRACE_2("Setting Changed",_name,_name); }; } forEach ELEMENTS_ADVANCED; }] call EFUNC(common,addEventHandler); diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index 9e001d7d9ce..2ef88d58688 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -3,23 +3,22 @@ * Sets advanced visible element of the UI using displays and controls. * * Arguments: - * 0: Element info - * 0: Show/Hide Element OR Element Variable - * 1: Element IDD - * 2: Element IDCs - * 1: Force change even when disallowed + * 0: Element IDD + * 1: Element IDCs + * 2: Show/Hide Element OR Element ACE Settings Variable + * 3: Force change even when disallowed (default: false) * * Return Value: - * None + * Successfully Set * * Example: - * [[show, 303, [188]], false] call ace_ui_fnc_setAdvancedElement + * [303, [188], true, false] call ace_ui_fnc_setAdvancedElement * * Public: No */ #include "script_component.hpp" -params ["_elementInfo", ["_force", false, [true]] ]; +params ["_idd", "_elements", "_show", ["_force", false, [true]] ]; if (_elementInfo in GVAR(elementsSet)) exitWith {}; @@ -27,8 +26,6 @@ if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) }; -_elementInfo params ["_show", "_idd", "_elements"]; - // Get show/hide boolean from mission namespace if it's a string if (typeName _show == "STRING") then { _show = missionNamespace getVariable _show; diff --git a/addons/ui/functions/fnc_setElementVisibility.sqf b/addons/ui/functions/fnc_setElementVisibility.sqf index f09fe061f13..d2ec34d7bad 100644 --- a/addons/ui/functions/fnc_setElementVisibility.sqf +++ b/addons/ui/functions/fnc_setElementVisibility.sqf @@ -1,19 +1,18 @@ /* * Author: Jonpas - * Wrapper for setting advanced element visibility. + * Setter for toggling advanced element visibility. * * Arguments: * 0: Set/Unset (default: true) - * 1: Element info - * 0: Show/Hide Element OR Element Variable - * 1: Element IDD - * 2: Element IDCs + * 1: Element IDD (default: 0) + * 2: Element IDCs (default: []) + * 3: Show/Hide Element OR Element ACE Settings Variable (default: false) * * Return Value: * None * * Example: - * [false] call ace_ui_fnc_setElementVisibility + * [true, 300, [188], false] call ace_ui_fnc_setElementVisibility * * Public: Yes */ @@ -21,32 +20,28 @@ params [ ["_set", true, [true]], - ["_elementInfo", [true, 0, []], [[]], 3] -]; - -_elementInfo params [ - ["_show", false, [true, ""]], ["_idd", 0, [0]], - ["_elements", [], [[]]] + ["_elements", [], [[]]], + ["_show", false, [true, ""]] ]; if (_set) then { - if ([_idd, _elements] in GVAR(elementsSet)) exitWith { TRACE_2("Element already set",_elementInfo,GVAR(elementsSet)); }; + if ([_idd, _elements] in GVAR(elementsSet)) exitWith { TRACE_3("Element already set",_idd,_elements,GVAR(elementsSet)); }; - TRACE_2("Setting element",_elementInfo,GVAR(elementsSet)); - private _success = [_elementInfo] call FUNC(setAdvancedElement); + TRACE_4("Setting element",_idd,_elements,_show,GVAR(elementsSet)); + private _success = [_idd, _elements, _show] call FUNC(setAdvancedElement); if (_success) then { GVAR(elementsSet) pushBack [_idd, _elements]; }; } else { if ([_idd, _elements] in GVAR(elementsSet)) then { - TRACE_2("Unsetting element",_elementInfo,GVAR(elementsSet)); - - TRACE_2("Toggling element",_elementInfo,GVAR(elementsSet)); - [_elementInfo] call FUNC(setAdvancedElement); + TRACE_4("Setting element",_idd,_elements,_show,GVAR(elementsSet)); + [_idd, _elements, _show] call FUNC(setAdvancedElement); private _index = GVAR(elementsSet) find [_idd, _elements]; GVAR(elementsSet) deleteAt _index; }; }; + +TRACE_1("Visibility set",GVAR(elementsSet)); diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index 71fbfdf9457..92cc981065f 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -3,7 +3,7 @@ * Sets basic visible elements of the UI using showHUD setter. * * Arguments: - * 0: Force change even when disallowed + * 0: Force change even when disallowed (default: false) * * Return Value: * None diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index 15f0b731b63..14392f5af2d 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -20,27 +20,27 @@ // Elements #define ELEMENTS_BASIC [QGVAR(soldierVehicleWeaponInfo), QGVAR(vehicleRadar), QGVAR(vehicleCompass), QGVAR(commandMenu), QGVAR(groupBar)] -// Element, IDD, IDC +// IDD, IDC, Element (must be string to compare to changed setting name) #define ELEMENTS_ADVANCED [ \ - [QGVAR(weaponName), 300, [118] ], \ - [QGVAR(weaponNameBackground), 300, [1001, 1008] ], \ - [QGVAR(firingMode), 300, [187, 1203] ], \ - [QGVAR(ammoType), 300, [155] ], \ - [QGVAR(ammoCount), 300, [184] ], \ - [QGVAR(magCount), 300, [185] ], \ - [QGVAR(throwableName), 300, [152] ], \ - [QGVAR(throwableCount), 300, [151] ], \ - [QGVAR(weaponLowerInfoBackground), 300, [1202] ], \ - [QGVAR(zeroing), 300, [168] ], \ - [QGVAR(stance), 303, [188, 1201] ], \ - [QGVAR(vehicleName), 300, [120] ], \ - [QGVAR(vehicleNameBackground), 300, [1000, 1013] ], \ - [QGVAR(vehicleFuelBar), 300, [113, 1202] ], \ - [QGVAR(vehicleSpeed), 300, [121, 1004, 1006] ], \ - [QGVAR(vehicleAltitude), 300, [122, 1005, 1014] ], \ - [QGVAR(vehicleDamage), 300, [111] ], \ - [QGVAR(vehicleInfoBackground), 300, [1200] ], \ - [QGVAR(vehicleGunnerWeapon), 300, [150] ] \ + [300, [118], QGVAR(weaponName)], \ + [300, [1001, 1008], QGVAR(weaponNameBackground)], \ + [300, [187, 1203], QGVAR(firingMode)], \ + [300, [155], QGVAR(ammoType)], \ + [300, [184], QGVAR(ammoCount)], \ + [300, [185], QGVAR(magCount)], \ + [300, [152], QGVAR(throwableName)], \ + [300, [151], QGVAR(throwableCount)], \ + [300, [1202], QGVAR(weaponLowerInfoBackground)], \ + [300, [168], QGVAR(zeroing)], \ + [303, [188, 1201], QGVAR(stance)], \ + [300, [120], QGVAR(vehicleName)], \ + [300, [1000, 1013], QGVAR(vehicleNameBackground)], \ + [300, [113, 1202], QGVAR(vehicleFuelBar)], \ + [300, [121, 1004, 1006], QGVAR(vehicleSpeed)], \ + [300, [122, 1005, 1014], QGVAR(vehicleAltitude)], \ + [300, [111], QGVAR(vehicleDamage)], \ + [300, [1200], QGVAR(vehicleInfoBackground)], \ + [300, [150], QGVAR(vehicleGunnerWeapon)] \ ] From e90ef30904cd4ea73f03be9d81ef82d5ce06a8cd Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:42:37 +0100 Subject: [PATCH 041/268] Add return value to public setElementVisibility function --- addons/ui/functions/fnc_setElementVisibility.sqf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/ui/functions/fnc_setElementVisibility.sqf b/addons/ui/functions/fnc_setElementVisibility.sqf index d2ec34d7bad..b019c4c0811 100644 --- a/addons/ui/functions/fnc_setElementVisibility.sqf +++ b/addons/ui/functions/fnc_setElementVisibility.sqf @@ -25,6 +25,8 @@ params [ ["_show", false, [true, ""]] ]; +private _return = false; + if (_set) then { if ([_idd, _elements] in GVAR(elementsSet)) exitWith { TRACE_3("Element already set",_idd,_elements,GVAR(elementsSet)); }; @@ -33,6 +35,7 @@ if (_set) then { if (_success) then { GVAR(elementsSet) pushBack [_idd, _elements]; + _return = true; }; } else { if ([_idd, _elements] in GVAR(elementsSet)) then { @@ -41,7 +44,9 @@ if (_set) then { private _index = GVAR(elementsSet) find [_idd, _elements]; GVAR(elementsSet) deleteAt _index; + _return = true; }; }; -TRACE_1("Visibility set",GVAR(elementsSet)); +TRACE_2("Visibility set",_return,GVAR(elementsSet)); +_return From 70100825cf23de1ca2d0ef9ffb4528b420fa1994 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:49:19 +0100 Subject: [PATCH 042/268] Fix params in clientInit --- addons/ui/XEH_clientInit.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 47fb36cb14b..97cc3e026b5 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -29,11 +29,11 @@ if (!hasInterface) exitWith {}; // Selective UI Advanced { - params ["_idd", "_elements", "_name"]; + _x params ["_idd", "_elements", "_elementName"]; - if (_name == _name) then { - [_idd, _elements, _name] call FUNC(setAdvancedElement); - TRACE_2("Setting Changed",_name,_name); + if (_name == _elementName) then { + [_idd, _elements, _elementName] call FUNC(setAdvancedElement); + TRACE_2("Setting Changed",_name,_elementName); }; } forEach ELEMENTS_ADVANCED; }] call EFUNC(common,addEventHandler); From f18094e7e4353591638cbaa73599896193544602 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 8 Mar 2016 19:21:28 +0100 Subject: [PATCH 043/268] MicroDAGR OS Upgrade --- .../functions/fnc_showApplicationPage.sqf | 2 +- .../microdagr/functions/fnc_updateDisplay.sqf | 12 ++++++------ addons/microdagr/gui_controls.hpp | 4 ++-- addons/microdagr/images/button_pushedDown.paa | Bin 22016 -> 11080 bytes addons/microdagr/images/button_pushedUp.paa | Bin 22016 -> 11080 bytes addons/microdagr/images/icon_compass.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_info.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_infoClock.paa | Bin 11080 -> 22016 bytes addons/microdagr/images/icon_infoCompass.paa | Bin 11080 -> 22016 bytes addons/microdagr/images/icon_map.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_menuLaser.paa | Bin 0 -> 22016 bytes addons/microdagr/images/icon_menuMark.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_menuSettings.paa | Bin 22016 -> 22016 bytes .../microdagr/images/icon_menuWaypoints.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/microDAGR_topBar.paa | Bin 187347 -> 5401 bytes 15 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 addons/microdagr/images/icon_menuLaser.paa diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf index dba6b54f181..8284ed8cf44 100644 --- a/addons/microdagr/functions/fnc_showApplicationPage.sqf +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -38,7 +38,7 @@ if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then { (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTIMECG) ctrlShow false; (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTARGETCG) ctrlShow true; if (GVAR(currentWaypoint) == -2) then { - (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa" + (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QUOTE(PATHTOF(images\icon_menuLaser.paa)); } else { (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QUOTE(PATHTOF(images\icon_menuMark.paa)); }; diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index 4b609085a8c..7ba92e55ef2 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -47,9 +47,9 @@ case (APP_MODE_INFODISPLAY): { //Heading: _compassAngleText = if (GVAR(settingUseMils)) then { - [(floor ((6400 / 360) * (getDir ACE_player))), 4, 0] call CBA_fnc_formatNumber; + [(floor ((6400 / 360) * (([ACE_player] call CBA_fnc_headDir) select 0))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (getDir ACE_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([(floor (([ACE_player] call CBA_fnc_headDir) select 0)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; (_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText; @@ -107,9 +107,9 @@ case (APP_MODE_INFODISPLAY): { case (APP_MODE_COMPASS): { //Heading: _compassAngleText = if (GVAR(settingUseMils)) then { - [(floor ((6400 / 360) * (getDir ACE_player))), 4, 0] call CBA_fnc_formatNumber; + [(floor ((6400 / 360) * (([ACE_player] call CBA_fnc_headDir) select 0))), 4, 0] call CBA_fnc_formatNumber; } else { - ([(floor (getDir ACE_player)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 + ([(floor (([ACE_player] call CBA_fnc_headDir) select 0)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8 }; (_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText; @@ -171,7 +171,7 @@ case (APP_MODE_WAYPOINTS): { _currentIndex = (_currentIndex max 0) min (count _waypoints); _wpListBox lbSetCurSel _currentIndex; - + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; @@ -193,7 +193,7 @@ case (APP_MODE_SETUP): { } else { _settingListBox lbSetTextRight [1, (localize LSTRING(settingOff))]; }; - + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; diff --git a/addons/microdagr/gui_controls.hpp b/addons/microdagr/gui_controls.hpp index a8fbb8f83fe..ab39974dc6e 100644 --- a/addons/microdagr/gui_controls.hpp +++ b/addons/microdagr/gui_controls.hpp @@ -18,7 +18,7 @@ class controlsBackground { }; class RangefinderConnectedIcon: RscPicture { idc = IDC_RANGEFINDERCONNECTEDICON; - text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa"; + text = QUOTE(PATHTOF(images\icon_menuLaser.paa)); x = X_PART(6.35); y = Y_PART(0.1); w = W_PART(2.7); @@ -486,7 +486,7 @@ class controls { onbuttonclick = QUOTE([5] call FUNC(saveCurrentAndSetNewMode)); }; class ButtonBL: ButtonTL { - text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa"; + text = QUOTE(PATHTOF(images\icon_menuLaser.paa)); x = W_PART(3); y = H_PART(10.5); onbuttonclick = QUOTE(_this call FUNC(appMenuButtonConnectRangefinder)); diff --git a/addons/microdagr/images/button_pushedDown.paa b/addons/microdagr/images/button_pushedDown.paa index fc519a3235374b4144f1d369568aa2381bbf26d6..68e301e7cf2154466f8d359c851c20732c783e48 100644 GIT binary patch literal 11080 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 literal 22016 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 diff --git a/addons/microdagr/images/icon_compass.paa b/addons/microdagr/images/icon_compass.paa index 777eaffde413141dd3d1e8e1fb771a7988678669..32528e3cd3b23755fbc3b8d4fedce1a86bcf8c4d 100644 GIT binary patch literal 22016 zcmeHP4NzRw6}}sIAqf(GlBX3)SxHnFn<+C+*DA(+Od?69iCIQohLJi6Y~oMDj~Okd zL&zpti)mvJomQmcH`KFSez+8D^UTJD6rs85`K2MJ?GxHzbs2I zA!76H3~%@BeeeF9@7#0FJ@-5Wx@JvA_Nq0TGQtTVV`F1_M(1Q~K$=29dQHaqOr&-2 zhxFZz)axln_~##hg*4(55`~Q%a-sFt;`_~L>UzGmxC1y zT~W|Yi|=&!2iD)*OGn!(65HADl4OeH`b5vPlml3Omax%#o24$mem~N0wbQX`w%&CBJ;%|De`*GG z9DnX!j-Oz$YP#QkuhV;J-@{4x3q79DsL%)lk&?el^EC zheva_cRfzAuSTNqZh54ATru{CfPC+QQl7mvI}*vexQ>a&=B ziHV8HK71CzNB@K08F9?${K(?`1Sv2NQs8_vIy48kfAx~OUlYY!&yRfKyS`$3>F^1o z>p183%=xRgEBD`&d0+ycXa3?>q5TIsg5#a+iKGQ4IfVD6zdGcIOwxOnyN7 z>uxZqopN$&dt`_t1B^UX^BGJFoq(rW5dXM`5&z*S@n6-b6sIfqC*X4+u9M_7D!1I#@jCYhE<|1f=X0geg^h-yuMIx< zyC9z9qkmJ$+9S(1bhG#z>fb>AM4nO1%bPm*Wos-N1Iz+YCjH5c=b)C+b()U`vnfgZRi-J)xLOl{`kn@|E#- zEN*?jWRt~t%IIYNMlk%t0e|;+L>Lcs3ML|W@o%Mjt2$n(V*3GY{d3-iy0+4i{9DfX z*i$E&2lyXy;{p5*xxZer$y)3@ZD;-%+b;y*33x}@j`H;{g8%>x_TqlF{^cP0JG~9| zd$na#;>XA1JztB$WJTXSJnAK;*`&a;>DF%SJ+rm@=7IkA@H3U% z)w=xW+@B7n|4la7FAh$Pe_U66S*LLr#0l0vc#m;iirMigmo5k~cp!ZbO)0RCUd{Yq3W=#Od*|4^9w z*1`TSq(7~vdlNfeu43`mVC!jD@5m|YtOoQh4F5OA@lG$^F&`LR?R!@+e*lhqCi$1X zW5w@!@K%;?17+xy1Hjd=kfp z(H}w}{^Kyx@g#Tqk!0;RZvPP6%}M^MPgC00ARLG|HsOh{p+9%{ECu5YEQW%&N7$6e z^tv$SFNopc%nsx4?s|TgmllRC=b~@?1;?96+4H8^PheYq#R76i=JjE_vM37luz&n8 z;uv+gRSl@`6M^KOSglw7-GMdV5N?T=v~bJ z0_04KXNq^g2q{@u85WEFJ&XsS50o!sZADr8o7{eYeVVa83Fz*MC*eHRZ-1TIH~Q|0 z-TnXMeAnrc&j9!(MQpz(=mg!P2PjPf6RzT7+HjG0r)DVIzqVF`xT)s_@QKAOe~NJYQ09T+P?G^G>j*pMDso*>n*vONgk8*THhBF@t{{?VwWwhQ+lY!`m zbnu1-wg<~yv+q*@H%q@qk_=BgFbm>uH}@LyzZ^Wp@D#uyLtL=9@w!+#%0P!9AM9KE zi+nWNb=El0Fc#g*;ziJdPL#9kfc$82?}g&e?x&7s_x+@Sp5^fzXiw7C_pISIOASLl zx1axzGn!)t`@q*P=!=}uGh2M=c+Gy#5)xXo8V58EXdKWupm9Lsz+B;g1kp?q;~9+} zzIj|<_^#0!KQ4tl#0`MYt>oRr!!Du_QK=NZriNKCECY1cyVL<)L0CqDV|l#4E|I0# z%Q7C+^P-23OEDg`xmlC%&oh2O zUiQN74=PVsTpw|MNK#J6WB+Ks{a_p82b`+?^W zNb71To;c0Z?C}^d`PI4&wl}yu`KAGVSMz_{iD@9-V`yC*OB-Zi2AIBSXSb4_s*B3gi{W?fkHd=<>SJwfo zm$lu#X#;6pR=ev9Z(3XOt1$m#UjD!mVnq*EU?S5I_`~I*K_B^r*+5_Y$1?sn4uy?n z{!SSGV1=5NNyv^dm@ggvm%D!TDCFFzVL5z_Yrfgvexg2Y8ujYauqncHmutSrTP%9` zbI-w-&gmF5A1t|V70w>l>%#6Y>=P}Iui-QyOPavGt7*uPb>cZTa<_L+uVS`ad0L48 z=gc{DVO8@hJdG5@X_EcKzOm@xFW7jn4vQZCE=N81D}M42^G?HS*D7Xa-=&yvLA36v zdJYEy{K3hHM-82LD2Ft@X1g&LzYnwZ1EiGvp1=Ks-&oPZl|MDNY4B(B6IA&YAgw8) zl2%jeFPVM=2|=0~6TPpU#|>0^`~?t?N%FyGd-?Fx`kUMGb+P#9Q8VB_8stR}A9Hb8 z-4@_xujowV*2f6dg21h0l);%(FFL1lZ7p|~8|zaI2*{LAnv zQC;DStiSA~Vst}E-)`sGB&1{K*>ze(;xNhw=FgXfx$x-w&;uvtp5!fOZ!>d;P?oyMAb%HEMcSNmkSFN#RnrvMckOerd)cx>}U(RiL7Q2xl z`S7k6lohro)Swh3_W_;%XJs2h8>;2h{WVW@K>88h57lxwXjI_mwZFQ$z`D4Q`Sux5 I*igy;0JQD~7ytkO literal 22016 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 RpPB?bSD!X*+Ow{={a-o~tH1yN diff --git a/addons/microdagr/images/icon_info.paa b/addons/microdagr/images/icon_info.paa index 5dc94a444c17cecdaa8b4eb41e53c9ec96996f95..ad7476ba0f72f807c2d487083a323bfbd0427cf0 100644 GIT binary patch literal 22016 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 diff --git a/addons/microdagr/images/icon_infoClock.paa b/addons/microdagr/images/icon_infoClock.paa index 292cf29afb6b50626a5b634bfeda1c7af1c15031..cf0c1c134871e595960d4296f67fe62ede716915 100644 GIT binary patch literal 22016 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 literal 11080 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 CO?FxU literal 22016 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 DZi;w? literal 0 HcmV?d00001 diff --git a/addons/microdagr/images/icon_menuMark.paa b/addons/microdagr/images/icon_menuMark.paa index 2c77aac04b0d34b832083e03d8fd48482ef53984..5cd2fe84e0aa80ffe35d07ec053656aeb8958b28 100644 GIT binary patch literal 22016 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 literal 22016 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 literal 22016 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 B$07g# From 3710c04da4afc07d69211cb6b88fb8aec6a7247a Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 8 Mar 2016 19:22:04 +0100 Subject: [PATCH 044/268] Use head instead of body direction for compass --- addons/microdagr/functions/fnc_mapOnDrawEH.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf index 25f5bc92fd4..92d647f3483 100644 --- a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf +++ b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf @@ -27,7 +27,7 @@ if (GVAR(currentApplicationPage) == 1) then { _theMap ctrlMapAnimAdd [0, DUMMY_ZOOM, DUMMY_POS]; ctrlMapAnimCommit _theMap; _size = 412 * _mapSize; - _theMap drawIcon [QUOTE(PATHTO_R(images\compass_starInverted.paa)), [1,1,1,1], DUMMY_POS, _size, _size, (-1 * (getDir ACE_player)), '', 0 ]; + _theMap drawIcon [QUOTE(PATHTO_R(images\compass_starInverted.paa)), [1,1,1,1], DUMMY_POS, _size, _size, (-1 * (([ACE_player] call CBA_fnc_headDir) select 0)), '', 0 ]; _theMap drawIcon [QUOTE(PATHTO_R(images\compass_needle.paa)), [0.533,0.769,0.76,1], DUMMY_POS, _size, _size, 0, '', 0 ]; if (GVAR(currentWaypoint) != -1) then { @@ -56,7 +56,7 @@ if (GVAR(currentApplicationPage) == 1) then { ctrlMapAnimCommit _theMap; }; _size = 48 * _mapSize; - _theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], (getPosASL ACE_player), _size, _size, (getDir ACE_player), '', 0 ]; + _theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], (getPosASL ACE_player), _size, _size, (([ACE_player] call CBA_fnc_headDir) select 0), '', 0 ]; if (GVAR(settingShowAllWaypointsOnMap)) then { _size = 32 * _mapSize; From 32c32b6cc556385d4854440b9f805e51e8ee30d3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 9 Mar 2016 18:58:46 +0100 Subject: [PATCH 045/268] Add stamina bar selective UI --- addons/ui/ACE_Settings.hpp | 9 +++++++++ addons/ui/CfgVehicles.hpp | 8 ++++++++ addons/ui/functions/fnc_moduleInit.sqf | 1 + addons/ui/script_component.hpp | 6 ++++++ addons/ui/stringtable.xml | 3 +++ 5 files changed, 27 insertions(+) diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp index 3e5c53d3284..89ddc8d35d8 100644 --- a/addons/ui/ACE_Settings.hpp +++ b/addons/ui/ACE_Settings.hpp @@ -139,6 +139,15 @@ class ACE_Settings { isClientSettable = 1; }; + // Stamina Bar + class GVAR(staminaBar) { + category = CSTRING(Category); + displayName = CSTRING(StaminaBar); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; // Vehicle class GVAR(vehicleName) { diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 1441d972175..ccd79684f5e 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -115,6 +115,14 @@ class CfgVehicles { defaultValue = 1; }; + // Stamina Bar + class staminaBar { + displayName = CSTRING(StaminaBar); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + // Vehicle class vehicleName { displayName = CSTRING(VehicleName); diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf index 8327b09e722..10f18f94f30 100644 --- a/addons/ui/functions/fnc_moduleInit.sqf +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -43,6 +43,7 @@ if (isArray (missionConfigFile >> "showHUD")) then { [_logic, QGVAR(zeroing), "zeroing"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(weaponLowerInfoBackground), "weaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(stance), "stance"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(staminaBar), "staminaBar"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleName), "vehicleName"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleNameBackground), "vehicleNameBackground"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleFuelBar), "vehicleFuelBar"] call EFUNC(common,readSettingFromModule); diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index 14392f5af2d..e9051beeace 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -32,6 +32,7 @@ [300, [151], QGVAR(throwableCount)], \ [300, [1202], QGVAR(weaponLowerInfoBackground)], \ [300, [168], QGVAR(zeroing)], \ + [305, [193], QGVAR(staminaBar)], \ [303, [188, 1201], QGVAR(stance)], \ [300, [120], QGVAR(vehicleName)], \ [300, [1000, 1013], QGVAR(vehicleNameBackground)], \ @@ -86,4 +87,9 @@ RscStanceInfo = 303 -------------------- 188 (Stance) + 1201 (Stance Background) + + +RscStaminaBar = 305 +-------------------- +193 (Stamina Bar) */ diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 21932cb98e7..42e79324116 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -64,6 +64,9 @@ Stance + + Stamina Bar + Vehicle Name From 89924e927a53520c643402d5b73f09ce803623ad Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 14 Mar 2016 17:25:20 +0100 Subject: [PATCH 046/268] Disable debug --- addons/ui/script_component.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index e9051beeace..a7410a49b84 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -1,8 +1,8 @@ #define COMPONENT ui #include "\z\ace\addons\main\script_mod.hpp" - #define DEBUG_MODE_FULL - #define DISABLE_COMPILE_CACHE +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE // #define CBA_DEBUG_SYNCHRONOUS // #define ENABLE_PERFORMANCE_COUNTERS From c568c18865102bf28cdada9b13f472995a859e51 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 14 Mar 2016 19:14:52 +0100 Subject: [PATCH 047/268] Add module icon --- addons/ui/CfgVehicles.hpp | 2 +- addons/ui/README.md | 4 ++-- addons/ui/UI/Icon_Module_UI_ca.paa | Bin 0 -> 5625 bytes .../Icon_Module_png/Icon_Module_UI_ca.png | Bin 0 -> 2999 bytes extras/assets/icons/Icons_Modules.psd | Bin 2357207 -> 2371272 bytes 5 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 addons/ui/UI/Icon_Module_UI_ca.paa create mode 100644 extras/assets/icons/Icon_Module_png/Icon_Module_UI_ca.png diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index ccd79684f5e..24340db031b 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { function = QFUNC(moduleInit); scope = 2; isGlobal = 1; - //icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); + icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); class Arguments { // BASIC class allowSelectiveUI { diff --git a/addons/ui/README.md b/addons/ui/README.md index 7fac3a49464..c55ffbc5c71 100644 --- a/addons/ui/README.md +++ b/addons/ui/README.md @@ -1,7 +1,7 @@ ace_ui ======= -Removes vignette, changes the chat contrast on the map to allow easier reading and provides settings to toggle different UI elements unavailable in Vanilla. +Removes vignette, changes the chat contrast on the map to allow easier reading and provides settings to hide or show different UI elements. ## Maintainers @@ -9,4 +9,4 @@ Removes vignette, changes the chat contrast on the map to allow easier reading a The people responsible for merging changes to this component or answering potential questions. - [VKing](https://github.com/VKing6) -- [Jonpas] (https://github.com/jonpas) +- [Jonpas](https://github.com/jonpas) diff --git a/addons/ui/UI/Icon_Module_UI_ca.paa b/addons/ui/UI/Icon_Module_UI_ca.paa new file mode 100644 index 0000000000000000000000000000000000000000..f23b8b40c9eaa9a2aedc73f5de9adfb4e42814a7 GIT binary patch literal 5625 zcmeHLPe>F|82?r_Rxc${AxJsO(jn~HDcH9Jt}BIyLhKT$$CB{k(S0Rkfz+@ObV$5+ z5)TWVW}=gax)#|%DCoLbU=C^H!4=k z(17sQpJHvqZpjNkbmZ|i@}SG5+u&WcAH~W1@I6Z(xcPE5hO=ci+f09||Hu&cCn-O! zPgLWW`47r2Xy=aciN;eh8~EinEob6h)L z$k75b`~QCa(SNka#1F8z(r~N#SNV_2!<5D3x5N}cJ3d(a!%@8xl`c!3i}l|$zKYxC zr+=FBr{|06C9C*MB(C=fMk2}?msZTCX@mI52 z-_Gmp{fFdNjeVS-%in9<7(lE?Ym#fkZymahXwcfbM2g7mQAD)ra8?LrKby&Ch^ zaF9g#)~D$qwvN#tb8{P+qZ={$vAP)xVHB-4mtLhF*AJUP3;no0HfH#-NNqFH95cut zSomr5qrJ;{>$OD4%5%TAWZGEB+ElNFK^9#5HHNQG;@la>lAol<^((q{>2;0U^*^j%loPGT=CCk+@KbwgLm$YpVs2o*9wdIo zAz^rteVop5H+~AlkBkBfXkv78LNAlvR%Ll>rl7GSE35srCxaRzf8YA(abvdd?`EJp zX~N+6GXv%FK#%5k{I#=)g~r0inPKshsdO2-eEhWs?+BOXKI5&i;*R)3x2!Sbcn@C& z_v^$ShQV=5eOnj48_fATp_4v~eiROMjz4=dH#@Sb@oj(c c&HD%EM>NjjM8$ZDm9-bsHx^Inzm>JW0G*1dMgRZ+ literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icon_Module_png/Icon_Module_UI_ca.png b/extras/assets/icons/Icon_Module_png/Icon_Module_UI_ca.png new file mode 100644 index 0000000000000000000000000000000000000000..e69102a216a99605b99cecef622f09bc0f1afb14 GIT binary patch literal 2999 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 literal 0 HcmV?d00001 diff --git a/extras/assets/icons/Icons_Modules.psd b/extras/assets/icons/Icons_Modules.psd index 553449898aaed4cb6dce26e0cbd677c500206448..0da44ea68106022ee9fa90f40c6db5af943219c0 100644 GIT binary patch delta 6738 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 CuzYm@ delta 6401 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 v{Ebg*oe&B;X6WEU<%!p=Ft5EvV$cg*a4u~&Ja From d6e9890b1b612186692c10bb74c24217c9a258ce Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Mon, 21 Mar 2016 18:25:38 +0100 Subject: [PATCH 048/268] Add remove trench and continue digging trench actions --- addons/trenches/CfgVehicles.hpp | 38 +++++++- addons/trenches/XEH_PREP.hpp | 4 + addons/trenches/config.cpp | 1 + .../fnc_canContinueDiggingTrench.sqf | 27 ++++++ .../functions/fnc_canRemoveTrench.sqf | 26 +++++ .../functions/fnc_continueDiggingTrench.sqf | 97 +++++++++++++++++++ .../trenches/functions/fnc_placeConfirm.sqf | 45 +-------- addons/trenches/functions/fnc_placeTrench.sqf | 2 +- .../trenches/functions/fnc_removeTrench.sqf | 92 ++++++++++++++++++ addons/trenches/script_component.hpp | 5 + addons/trenches/stringtable.xml | 12 +++ 11 files changed, 304 insertions(+), 45 deletions(-) create mode 100644 addons/trenches/functions/fnc_canContinueDiggingTrench.sqf create mode 100644 addons/trenches/functions/fnc_canRemoveTrench.sqf create mode 100644 addons/trenches/functions/fnc_continueDiggingTrench.sqf create mode 100644 addons/trenches/functions/fnc_removeTrench.sqf diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index 81880a42651..3123e9270d3 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -1,3 +1,28 @@ +class CBA_Extended_EventHandlers; + +#define ACE_TRENCHES_ACTIONS class ACE_Actions { \ + class ACE_MainActions { \ + displayName = ECSTRING(interaction,MainAction); \ + selection = ""; \ + distance = 10; \ + condition = QUOTE(true); \ + class ACE_ContinueDiggingTrench { \ + displayName = CSTRING(ContinueDiggingTrench); \ + condition = QUOTE([ARR_2(_target,_player)] call FUNC(canContinueDiggingTrench)); \ + statement = QUOTE([ARR_2(_target,_player)] call FUNC(continueDiggingTrench);); \ + showDisabled = 0; \ + priority = -1; \ + }; \ + class ACE_RemoveTrench { \ + displayName = CSTRING(RemoveEnvelope); \ + condition = QUOTE([ARR_2(_target,_player)] call FUNC(canRemoveTrench)); \ + statement = QUOTE([ARR_2(_target,_player)] call FUNC(removeTrench);); \ + showDisabled = 0; \ + priority = -1; \ + }; \ + }; \ + } + class CfgVehicles { class Man; class CAManBase: Man { @@ -34,6 +59,12 @@ class CfgVehicles { descriptionShort = CSTRING(EnevlopeSmallDescription); model = QUOTE(PATHTOEF(apl,ace_envelope_small4.p3d)); scope = 2; + GVAR(diggingDuration) = 20; + GVAR(removalDuration) = 12; + ACE_TRENCHES_ACTIONS; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; }; class ACE_envelope_big: BagFence_base_F { author = ECSTRING(common,ACETeam); @@ -41,9 +72,14 @@ class CfgVehicles { descriptionShort = CSTRING(EnevlopeBigDescription); model = QUOTE(PATHTOEF(apl,ace_envelope_big4.p3d)); scope = 2; + GVAR(diggingDuration) = 25; + GVAR(removalDuration) = 15; + ACE_TRENCHES_ACTIONS; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; }; - class ACE_envelope_small_NoGeo: ACE_envelope_small { scope = 1; //@todo: replace by a no geo model diff --git a/addons/trenches/XEH_PREP.hpp b/addons/trenches/XEH_PREP.hpp index a9050b83bd8..c0922b786cc 100644 --- a/addons/trenches/XEH_PREP.hpp +++ b/addons/trenches/XEH_PREP.hpp @@ -9,3 +9,7 @@ PREP(handleUnconscious); PREP(placeCancel); PREP(placeConfirm); PREP(placeTrench); +PREP(canContinueDiggingTrench); +PREP(canRemoveTrench); +PREP(continueDiggingTrench); +PREP(removeTrench); diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index e2f2b5b4fe4..e1b14fa37c0 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -11,6 +11,7 @@ class CfgPatches { VERSION_CONFIG; }; }; + #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" diff --git a/addons/trenches/functions/fnc_canContinueDiggingTrench.sqf b/addons/trenches/functions/fnc_canContinueDiggingTrench.sqf new file mode 100644 index 00000000000..2e1942d6b80 --- /dev/null +++ b/addons/trenches/functions/fnc_canContinueDiggingTrench.sqf @@ -0,0 +1,27 @@ +/* + * Author: SzwedzikPL + * Checks if a unit can continue digging a trench + * + * Arguments: + * 0: trench + * 1: unit + * + * Return Value: + * Can continue + * + * Example: + * [TrenchObj, ACE_player] call ace_trenches_fnc_canContinueDiggingTrench + * + * Public: No + */ +#include "script_component.hpp" + +params ["_trench", "_unit"]; + +if !("ACE_EntrenchingTool" in items _unit) exitWith {false}; +if ((_trench getVariable [QGVAR(progress), 0]) >= 1) exitWith {false}; + +// Prevent removing/digging trench by more than one person +if (_trench getVariable [QGVAR(digging), false]) exitWith {false}; + +true diff --git a/addons/trenches/functions/fnc_canRemoveTrench.sqf b/addons/trenches/functions/fnc_canRemoveTrench.sqf new file mode 100644 index 00000000000..4e338576371 --- /dev/null +++ b/addons/trenches/functions/fnc_canRemoveTrench.sqf @@ -0,0 +1,26 @@ +/* + * Author: SzwedzikPL + * Checks if a unit can remove a trench + * + * Arguments: + * 0: trench + * 1: unit + * + * Return Value: + * Can remove + * + * Example: + * [TrenchObj, ACE_player] call ace_trenches_fnc_canRemoveTrench + * + * Public: No + */ +#include "script_component.hpp" + +params ["_trench", "_unit"]; + +if !("ACE_EntrenchingTool" in items _unit) exitWith {false}; + +// Prevent removing/digging trench by more than one person +if (_trench getVariable [QGVAR(digging), false]) exitWith {false}; + +true diff --git a/addons/trenches/functions/fnc_continueDiggingTrench.sqf b/addons/trenches/functions/fnc_continueDiggingTrench.sqf new file mode 100644 index 00000000000..25f9fc41506 --- /dev/null +++ b/addons/trenches/functions/fnc_continueDiggingTrench.sqf @@ -0,0 +1,97 @@ +/* + * Author: Garth 'L-H' de Wet, Ruthberg, edited by commy2 for better MP and eventual AI support, esteldunedain + * Continue process of digging trench. + * + * Arguments: + * 0: trench + * 1: unit + * + * Return Value: + * None + * + * Example: + * [TrenchObj, ACE_player] call ace_trenches_fnc_continueDiggingTrench + * + * Public: No + */ +#include "script_component.hpp" + +params ["_trench", "_unit"]; +TRACE_2("continueDiggingTrench",_trench,_unit); + +private _actualProgress = _trench getVariable [QGVAR(progress), 0]; +if(_actualProgress == 1) exitWith {}; + +// Mark trench as being worked on +_trench setVariable [QGVAR(digging), true, true]; + +private _digTime = getNumber (configFile >> "CfgVehicles" >> (typeof _trench) >> QGVAR(diggingDuration)); +private _digTimeLeft = _digTime * (1 - _actualProgress); + +private _placeData = _trench getVariable [QGVAR(placeData), [[], []]]; +_placeData params ["_basePos", "_vecDirAndUp"]; + +private _trenchId = _unit getVariable [QGVAR(isDiggingId), -1]; +if(_trenchId < 0) then { + _trenchId = GVAR(trenchId); + _unit setVariable [QGVAR(isDiggingId), _trenchId, true]; + GVAR(trenchId) = GVAR(trenchId) + 1; +}; + +// Create progress bar +private _fnc_onFinish = { + (_this select 0) params ["_unit", "_trench"]; + _unit setVariable [QGVAR(isDiggingId), -1, true]; + _trench setVariable [QGVAR(digging), false, true]; + + // Save progress global + private _progress = _trench getVariable [QGVAR(progress), 0]; + _trench setVariable [QGVAR(progress), _progress, true]; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}; +private _fnc_onFailure = { + (_this select 0) params ["_unit", "_trench"]; + _unit setVariable [QGVAR(isDiggingId), -1, true]; + _trench setVariable [QGVAR(digging), false, true]; + + // Save progress global + private _progress = _trench getVariable [QGVAR(progress), 0]; + _trench setVariable [QGVAR(progress), _progress, true]; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}; +[(_digTimeLeft + 0.5), [_unit, _trench], _fnc_onFinish, _fnc_onFailure, localize LSTRING(DiggingTrench)] call EFUNC(common,progressBar); + +// Schedule progressive raising of the trench +private _fnc_setPlacing = { + params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp", "_progress"]; + + // If the progress bar was cancelled, cancel elevation + // We use an uid to avoid any chance of an older trench being raised when a new one is built + if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; + + _trench setPosASL _pos; + _trench setVectorDirAndUp _vecDirAndUp; + + // Save progress local + _trench setVariable [QGVAR(progress), _progress]; +}; + +if(_actualProgress == 0) then { + [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp, _actualProgress] call _fnc_setPlacing; +}; + +private _progressLeft = (_actualProgress * 10) + 1; +private ["_i"]; +for "_i" from _progressLeft to 10 do { + private _vectorDiffZ = 1 - (_i / 10); + private _delay = _digTime * ((_i / 10) - _actualProgress); + private _progress = _i / 10; + [_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); +}; + +// Play animation +[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation); diff --git a/addons/trenches/functions/fnc_placeConfirm.sqf b/addons/trenches/functions/fnc_placeConfirm.sqf index 47f80014f8f..8a1407d2d61 100644 --- a/addons/trenches/functions/fnc_placeConfirm.sqf +++ b/addons/trenches/functions/fnc_placeConfirm.sqf @@ -66,49 +66,8 @@ for [{_ix = -_dx/2},{_ix <= _dx/2},{_ix = _ix + _dx/3}] do { }; _basePos set [2, (_basePos select 2) + _minzoffset + _offset]; private _vecDirAndUp = [_v1, _v3]; - GVAR(trench) = objNull; -// Mark the unit as digging -private _trenchId = GVAR(trenchId); -_unit setVariable [QGVAR(isDiggingId), _trenchId, true]; -GVAR(trenchId) = GVAR(trenchId) + 1; - -// Create progress bar -private _fnc_onFinish = { - (_this select 0) params ["_unit"]; - _unit setVariable [QGVAR(isDiggingId), -1, true]; -}; -private _fnc_onFailure = { - (_this select 0) params ["_unit"]; - _unit setVariable [QGVAR(isDiggingId), -1, true]; -}; -[12.5, [_unit], _fnc_onFinish, _fnc_onFailure, localize LSTRING(DiggingTrench)] call EFUNC(common,progressBar); - -// Schedule progressive raising of the trench -private _fnc_setPlacing = { - params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp"]; - - // If the progress bar was cancelled, cancel elevation - // We use an uid to avoid any chance of an older trench being raised when a new one is built - if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; - - _trench setPosASL _pos; - _trench setVectorDirAndUp _vecDirAndUp; -}; - -// For loops are for wimps -[_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp] call _fnc_setPlacing; -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.9], _vecDirAndUp], 3.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.8], _vecDirAndUp], 4.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.7], _vecDirAndUp], 5.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.6], _vecDirAndUp], 6.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.5], _vecDirAndUp], 7.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.4], _vecDirAndUp], 8.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.3], _vecDirAndUp], 9.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.2], _vecDirAndUp],10.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.1], _vecDirAndUp],11.0] call EFUNC(common,waitAndExecute); -[_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 0.0], _vecDirAndUp],12.0] call EFUNC(common,waitAndExecute); +_trench setVariable [QGVAR(placeData), [_basePos, _vecDirAndUp], true]; -// Play animation -[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation); +[_trench, _unit] call FUNC(continueDiggingTrench); diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index 48a768427fe..b9a8bae52aa 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [ACE_player] call ace_trenches_fnc_placeTrench + * [ACE_player, "ace_trenches_trenchBig"] call ace_trenches_fnc_placeTrench * * Public: No */ diff --git a/addons/trenches/functions/fnc_removeTrench.sqf b/addons/trenches/functions/fnc_removeTrench.sqf new file mode 100644 index 00000000000..1259d8bb9cb --- /dev/null +++ b/addons/trenches/functions/fnc_removeTrench.sqf @@ -0,0 +1,92 @@ +/* + * Author: Garth 'L-H' de Wet, Ruthberg, edited by commy2 for better MP and eventual AI support and esteldunedain + * Removes trench + * + * Arguments: + * 0: trench + * 1: unit + * + * Return Value: + * None + * + * Example: + * [TrenchObj, ACE_player] call ace_trenches_fnc_removeTrench + * + * Public: No + */ +#include "script_component.hpp" + +params ["_trench", "_unit"]; +TRACE_2("removeTrench",_trench,_unit); + +private _actualProgress = _trench getVariable [QGVAR(progress), 0]; +if(_actualProgress == 0) exitWith {}; + +// Mark trench as being worked on +_trench setVariable [QGVAR(digging), true, true]; + +private _removeTime = getNumber (configFile >> "CfgVehicles" >> (typeof _trench) >> QGVAR(removalDuration)); +private _removeTimeLeft = _removeTime * _actualProgress; + +private _placeData = _trench getVariable [QGVAR(placeData), [[], []]]; +_placeData params ["_basePos", "_vecDirAndUp"]; + +private _trenchId = _unit getVariable [QGVAR(isDiggingId), -1]; +if(_trenchId < 0) then { + _trenchId = GVAR(trenchId); + _unit setVariable [QGVAR(isDiggingId), _trenchId, true]; + GVAR(trenchId) = GVAR(trenchId) + 1; +}; + +// Create progress bar +private _fnc_onFinish = { + (_this select 0) params ["_unit", "_trench"]; + _unit setVariable [QGVAR(isDiggingId), -1, true]; + + // Remove trench + deleteVehicle _trench; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}; +private _fnc_onFailure = { + (_this select 0) params ["_unit", "_trench"]; + _unit setVariable [QGVAR(isDiggingId), -1, true]; + _trench setVariable [QGVAR(digging), false, true]; + + // Save progress global + private _progress = _trench getVariable [QGVAR(progress), 0]; + _trench setVariable [QGVAR(progress), _progress, true]; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}; +[(_removeTimeLeft + 0.5), [_unit, _trench], _fnc_onFinish, _fnc_onFailure, localize LSTRING(RemovingTrench)] call EFUNC(common,progressBar); + +// Schedule progressive raising of the trench +private _fnc_setPlacing = { + params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp", "_progress"]; + + // If the progress bar was cancelled, cancel elevation + // We use an uid to avoid any chance of an older trench being raised when a new one is built + if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; + + _trench setPosASL _pos; + _trench setVectorDirAndUp _vecDirAndUp; + + // Save progress local + _trench setVariable [QGVAR(progress), _progress]; +}; + +private _progressLeft = ((1 - _actualProgress) * 10) + 1; +private ["_i"]; +for "_i" from _progressLeft to 10 do { + private _vectorDiffZ = _i / 10; + private _delay = _removeTime * ((_i / 10) - (1 - _actualProgress)); + private _progress = 1 - (_i / 10); + + [_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); +}; + +// Play animation +[_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation); diff --git a/addons/trenches/script_component.hpp b/addons/trenches/script_component.hpp index 3bb65ab0a69..432308fa518 100644 --- a/addons/trenches/script_component.hpp +++ b/addons/trenches/script_component.hpp @@ -1,6 +1,11 @@ #define COMPONENT trenches #include "\z\ace\addons\main\script_mod.hpp" +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + #ifdef DEBUG_ENABLED_TRENCHES #define DEBUG_MODE_FULL #endif diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 617a6044576..44c628de697 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -101,5 +101,17 @@ Cavando trinchera Creuse la tranchée + + Continue Digging Trench + Wzów kopanie okopu + + + Remove Trench + Usuń okop + + + Removing Trench + Usuwanie okopu + From 203c059cc1c26723c4a6c44800fbb7bfd271a1c4 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Tue, 22 Mar 2016 08:10:37 +0100 Subject: [PATCH 049/268] move placement data to config, setTrenchPlacement fnc, cleanup --- addons/trenches/CfgVehicles.hpp | 16 +++++---- addons/trenches/XEH_PREP.hpp | 7 ++-- addons/trenches/XEH_preInit.sqf | 6 ---- .../trenches/functions/fnc_canDigTrench.sqf | 9 ++--- .../functions/fnc_continueDiggingTrench.sqf | 19 ++--------- .../trenches/functions/fnc_placeConfirm.sqf | 4 +-- addons/trenches/functions/fnc_placeTrench.sqf | 22 ++++++++----- .../trenches/functions/fnc_removeTrench.sqf | 17 +--------- .../functions/fnc_setTrenchPlacement.sqf | 33 +++++++++++++++++++ 9 files changed, 67 insertions(+), 66 deletions(-) create mode 100644 addons/trenches/functions/fnc_setTrenchPlacement.sqf diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index 3123e9270d3..68f4a7552a7 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -4,20 +4,18 @@ class CBA_Extended_EventHandlers; class ACE_MainActions { \ displayName = ECSTRING(interaction,MainAction); \ selection = ""; \ - distance = 10; \ + distance = 3; \ condition = QUOTE(true); \ class ACE_ContinueDiggingTrench { \ displayName = CSTRING(ContinueDiggingTrench); \ condition = QUOTE([ARR_2(_target,_player)] call FUNC(canContinueDiggingTrench)); \ statement = QUOTE([ARR_2(_target,_player)] call FUNC(continueDiggingTrench);); \ - showDisabled = 0; \ priority = -1; \ }; \ class ACE_RemoveTrench { \ displayName = CSTRING(RemoveEnvelope); \ condition = QUOTE([ARR_2(_target,_player)] call FUNC(canRemoveTrench)); \ statement = QUOTE([ARR_2(_target,_player)] call FUNC(removeTrench);); \ - showDisabled = 0; \ priority = -1; \ }; \ }; \ @@ -30,9 +28,9 @@ class CfgVehicles { class ACE_Equipment { class GVAR(digEnvelopeSmall) { displayName = CSTRING(DigEnvelopeSmall); - condition = QUOTE([ARR_2(_this select 0,'ace_trenches_trenchSmall')] call FUNC(canDigTrench)); + condition = QUOTE(_player call FUNC(canDigTrench)); //wait a frame to handle "Do When releasing action menu key" option - statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ace_trenches_trenchSmall')])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_small')])] call EFUNC(common,execNextFrame)); exceptions[] = {}; showDisabled = 0; priority = 4; @@ -40,9 +38,9 @@ class CfgVehicles { }; class GVAR(digEnvelopeBig) { displayName = CSTRING(DigEnvelopeBig); - condition = QUOTE([ARR_2(_this select 0,'ace_trenches_trenchBig')] call FUNC(canDigTrench)); + condition = QUOTE(_player call FUNC(canDigTrench)); //wait a frame to handle "Do When releasing action menu key" option - statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ace_trenches_trenchBig')])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_big')])] call EFUNC(common,execNextFrame)); exceptions[] = {}; showDisabled = 0; priority = 4; @@ -61,6 +59,8 @@ class CfgVehicles { scope = 2; GVAR(diggingDuration) = 20; GVAR(removalDuration) = 12; + GVAR(noGeoClass) = "ACE_envelope_small_NoGeo"; + GVAR(placementData)[] = {2,3,0.35}; ACE_TRENCHES_ACTIONS; class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; @@ -74,6 +74,8 @@ class CfgVehicles { scope = 2; GVAR(diggingDuration) = 25; GVAR(removalDuration) = 15; + GVAR(noGeoClass) = "ACE_envelope_big_NoGeo"; + GVAR(placementData)[] = {6,1.1,0.20}; ACE_TRENCHES_ACTIONS; class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; diff --git a/addons/trenches/XEH_PREP.hpp b/addons/trenches/XEH_PREP.hpp index c0922b786cc..2e671acb85b 100644 --- a/addons/trenches/XEH_PREP.hpp +++ b/addons/trenches/XEH_PREP.hpp @@ -1,5 +1,8 @@ +PREP(canContinueDiggingTrench); PREP(canDigTrench); +PREP(canRemoveTrench); +PREP(continueDiggingTrench); PREP(handleInteractMenuOpened); PREP(handleKilled); PREP(handlePlayerChanged); @@ -9,7 +12,5 @@ PREP(handleUnconscious); PREP(placeCancel); PREP(placeConfirm); PREP(placeTrench); -PREP(canContinueDiggingTrench); -PREP(canRemoveTrench); -PREP(continueDiggingTrench); PREP(removeTrench); +PREP(setTrenchPlacement); diff --git a/addons/trenches/XEH_preInit.sqf b/addons/trenches/XEH_preInit.sqf index 8b172b2b9e7..a7feade1c39 100644 --- a/addons/trenches/XEH_preInit.sqf +++ b/addons/trenches/XEH_preInit.sqf @@ -4,10 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -// Trench types -// Name of the object, name of th dummy no geo object, dx, dy -GVAR(trenchSmall) = ["ACE_envelope_small", "ACE_envelope_small_NoGeo", 2, 3, 0.35]; -GVAR(trenchBig) = ["ACE_envelope_big", "ACE_envelope_big_NoGeo", 6, 1.1, 0.20]; -GVAR(trenchType) = GVAR(trenchSmall); - ADDON = true; diff --git a/addons/trenches/functions/fnc_canDigTrench.sqf b/addons/trenches/functions/fnc_canDigTrench.sqf index 9dc5e29017a..0cbed2d9b76 100644 --- a/addons/trenches/functions/fnc_canDigTrench.sqf +++ b/addons/trenches/functions/fnc_canDigTrench.sqf @@ -4,7 +4,6 @@ * * Arguments: * 0: Unit - * 1: Trench type * * Return Value: * Can dig @@ -18,17 +17,15 @@ #define SURFACE_BLACKLIST ["water", "concrete", "tarmac", "wood", "metal", "roof_tin", "roof_tiles", "wood_int", "concrete_int", "tiles_int", "metal_int", "stony", "rock", "int_concrete", "int_tiles", "int_wood", "tiling", "wavymetal", "int_metal"] -params ["_unit","_trenchTypeName"]; +params ["_unit"]; if !("ACE_EntrenchingTool" in items _unit) exitWith {false}; // Can't dig trench if above ground level if ((getPosATL _unit) select 2 > 0.05) exitWith {false}; -private ["_surfaceClass", "_surfaceType"]; - -_surfaceClass = (surfaceType getPosASL _unit) select [1]; -_surfaceType = getText (configFile >> "CfgSurfaces" >> _surfaceClass >> "soundEnviron"); +private _surfaceClass = (surfaceType getPosASL _unit) select [1]; +private _surfaceType = getText (configFile >> "CfgSurfaces" >> _surfaceClass >> "soundEnviron"); TRACE_1("",_surfaceType); !(_surfaceType in SURFACE_BLACKLIST) diff --git a/addons/trenches/functions/fnc_continueDiggingTrench.sqf b/addons/trenches/functions/fnc_continueDiggingTrench.sqf index 25f9fc41506..04a2377f21d 100644 --- a/addons/trenches/functions/fnc_continueDiggingTrench.sqf +++ b/addons/trenches/functions/fnc_continueDiggingTrench.sqf @@ -65,23 +65,8 @@ private _fnc_onFailure = { }; [(_digTimeLeft + 0.5), [_unit, _trench], _fnc_onFinish, _fnc_onFailure, localize LSTRING(DiggingTrench)] call EFUNC(common,progressBar); -// Schedule progressive raising of the trench -private _fnc_setPlacing = { - params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp", "_progress"]; - - // If the progress bar was cancelled, cancel elevation - // We use an uid to avoid any chance of an older trench being raised when a new one is built - if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; - - _trench setPosASL _pos; - _trench setVectorDirAndUp _vecDirAndUp; - - // Save progress local - _trench setVariable [QGVAR(progress), _progress]; -}; - if(_actualProgress == 0) then { - [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp, _actualProgress] call _fnc_setPlacing; + [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp, _actualProgress] call FUNC(setTrenchPlacement); }; private _progressLeft = (_actualProgress * 10) + 1; @@ -90,7 +75,7 @@ for "_i" from _progressLeft to 10 do { private _vectorDiffZ = 1 - (_i / 10); private _delay = _digTime * ((_i / 10) - _actualProgress); private _progress = _i / 10; - [_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); + [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); }; // Play animation diff --git a/addons/trenches/functions/fnc_placeConfirm.sqf b/addons/trenches/functions/fnc_placeConfirm.sqf index 8a1407d2d61..7c3be2d9012 100644 --- a/addons/trenches/functions/fnc_placeConfirm.sqf +++ b/addons/trenches/functions/fnc_placeConfirm.sqf @@ -36,9 +36,9 @@ params ["_unit"]; if (isNull GVAR(trench)) exitWith {}; deleteVehicle GVAR(trench); -private _trench = createVehicle [GVAR(trenchType) select 0, [0, 0, 0], [], 0, "NONE"]; +private _trench = createVehicle [GVAR(trenchClass), [0, 0, 0], [], 0, "NONE"]; -GVAR(trenchType) params ["", "", "_dx", "_dy", "_offset"]; +GVAR(trenchPlacementData) params ["_dx", "_dy", "_offset"]; private _basePos = GVAR(trenchPos); private _angle = (GVAR(digDirection) + getDir _unit); diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index b9a8bae52aa..35a6706d308 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -4,29 +4,34 @@ * * Arguments: * 0: unit - * 1: Trench type + * 1: Trench class * * Return Value: * None * * Example: - * [ACE_player, "ace_trenches_trenchBig"] call ace_trenches_fnc_placeTrench + * [ACE_player, "ACE_envelope_small"] call ace_trenches_fnc_placeTrench * * Public: No */ #include "script_component.hpp" -params ["_unit","_trenchTypeName"]; +params ["_unit", "_trenchClass"]; -GVAR(trenchType) = missionNamespace getVariable _trenchTypeName; +//Load trench data +private _noGeoModel = getText (configFile >> "CfgVehicles" >> _trenchClass >> QGVAR(noGeoClass)); +if(_noGeoModel == "") then {_noGeoModel = _trenchClass;}; + +GVAR(trenchClass) = _trenchClass; +GVAR(trenchPlacementData) = getArray (configFile >> "CfgVehicles" >> _trenchClass >> QGVAR(placementData)); +TRACE_1("",GVAR(trenchPlacementData)); -TRACE_2("",_trenchTypeName,GVAR(trenchType)); // prevent the placing unit from running [_unit, "forceWalk", "ACE_Trenches", true] call EFUNC(common,statusEffect_set); // create the trench private "_trench"; -_trench = createVehicle [GVAR(trenchType) select 1, [0, 0, 0], [], 0, "NONE"]; +_trench = createVehicle [_noGeoModel, [0, 0, 0], [], 0, "NONE"]; GVAR(trench) = _trench; @@ -38,7 +43,6 @@ GVAR(digDirection) = 0; // pfh that runs while the dig is in progress GVAR(digPFH) = [{ (_this select 0) params ["_unit", "_trench"]; - GVAR(trenchType) params ["", "", "_dx", "_dy", "_offset"]; // Cancel if the helper object is gone if (isNull _trench) exitWith { @@ -46,12 +50,12 @@ GVAR(digPFH) = [{ }; // Cancel if the place is no longer suitable - if !([_unit, GVAR(trenchType)] call FUNC(canDigTrench)) exitWith { + if !([_unit] call FUNC(canDigTrench)) exitWith { [_unit] call FUNC(placeCancel); }; // Update trench position - GVAR(trenchType) params ["", "", "_dx", "_dy", "_offset"]; + GVAR(trenchPlacementData) params ["_dx", "_dy", "_offset"]; private _basePos = eyePos _unit vectorAdd ([sin getDir _unit, +cos getDir _unit, 0] vectorMultiply 1.0); private _angle = (GVAR(digDirection) + getDir _unit); diff --git a/addons/trenches/functions/fnc_removeTrench.sqf b/addons/trenches/functions/fnc_removeTrench.sqf index 1259d8bb9cb..dd51bbbae59 100644 --- a/addons/trenches/functions/fnc_removeTrench.sqf +++ b/addons/trenches/functions/fnc_removeTrench.sqf @@ -63,21 +63,6 @@ private _fnc_onFailure = { }; [(_removeTimeLeft + 0.5), [_unit, _trench], _fnc_onFinish, _fnc_onFailure, localize LSTRING(RemovingTrench)] call EFUNC(common,progressBar); -// Schedule progressive raising of the trench -private _fnc_setPlacing = { - params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp", "_progress"]; - - // If the progress bar was cancelled, cancel elevation - // We use an uid to avoid any chance of an older trench being raised when a new one is built - if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; - - _trench setPosASL _pos; - _trench setVectorDirAndUp _vecDirAndUp; - - // Save progress local - _trench setVariable [QGVAR(progress), _progress]; -}; - private _progressLeft = ((1 - _actualProgress) * 10) + 1; private ["_i"]; for "_i" from _progressLeft to 10 do { @@ -85,7 +70,7 @@ for "_i" from _progressLeft to 10 do { private _delay = _removeTime * ((_i / 10) - (1 - _actualProgress)); private _progress = 1 - (_i / 10); - [_fnc_setPlacing, [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); + [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); }; // Play animation diff --git a/addons/trenches/functions/fnc_setTrenchPlacement.sqf b/addons/trenches/functions/fnc_setTrenchPlacement.sqf new file mode 100644 index 00000000000..49c1efdaaec --- /dev/null +++ b/addons/trenches/functions/fnc_setTrenchPlacement.sqf @@ -0,0 +1,33 @@ +/* + * Author: Garth 'L-H' de Wet, Ruthberg, edited by commy2 for better MP and eventual AI support and esteldunedain + * Sets trench placement + * + * Arguments: + * 0: unit + * 1: trench + * 2: trench id + * 3: position ASL + * 4: vector dir and up + * 5: progress + * + * Return Value: + * None + * + * Example: + * [ACE_player, TrenchObj, 2, [0,0,0], [[0,0,0],[0,0,0]], 0.5] call ace_trenches_fnc_setTrenchPlacement + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_trench", "_trenchId", "_pos", "_vecDirAndUp", "_progress"]; + +// If the progress bar was cancelled, cancel elevation +// We use an uid to avoid any chance of an older trench being raised when a new one is built +if (_unit getVariable [QGVAR(isDiggingId), -1] != _trenchId) exitWith {}; + +_trench setPosASL _pos; +_trench setVectorDirAndUp _vecDirAndUp; + +// Save progress local +_trench setVariable [QGVAR(progress), _progress]; From 10d20472d3303cdfb3ff3129bbd79f690567c41e Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Tue, 22 Mar 2016 11:26:40 +0100 Subject: [PATCH 050/268] Remove grass behind the trench --- addons/trenches/CfgVehicles.hpp | 2 ++ addons/trenches/functions/fnc_continueDiggingTrench.sqf | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index 68f4a7552a7..8e1eb41fd0a 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -61,6 +61,7 @@ class CfgVehicles { GVAR(removalDuration) = 12; GVAR(noGeoClass) = "ACE_envelope_small_NoGeo"; GVAR(placementData)[] = {2,3,0.35}; + GVAR(grassCuttingPoints)[] = {{0,-0.5,0}}; ACE_TRENCHES_ACTIONS; class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; @@ -76,6 +77,7 @@ class CfgVehicles { GVAR(removalDuration) = 15; GVAR(noGeoClass) = "ACE_envelope_big_NoGeo"; GVAR(placementData)[] = {6,1.1,0.20}; + GVAR(grassCuttingPoints)[] = {{-1.5,-1,0},{1.5,-1,0}}; ACE_TRENCHES_ACTIONS; class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; diff --git a/addons/trenches/functions/fnc_continueDiggingTrench.sqf b/addons/trenches/functions/fnc_continueDiggingTrench.sqf index 04a2377f21d..223dc42df61 100644 --- a/addons/trenches/functions/fnc_continueDiggingTrench.sqf +++ b/addons/trenches/functions/fnc_continueDiggingTrench.sqf @@ -67,6 +67,15 @@ private _fnc_onFailure = { if(_actualProgress == 0) then { [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, 1.0], _vecDirAndUp, _actualProgress] call FUNC(setTrenchPlacement); + + //Remove grass + { + private _trenchGrassCutter = createVehicle ["Land_ClutterCutter_medium_F", [0, 0, 0], [], 0, "NONE"]; + private _cutterPos = AGLToASL (_trench modelToWorld _x); + _cutterPos set [2, getTerrainHeightASL _cutterPos]; + _trenchGrassCutter setPosASL _cutterPos; + deleteVehicle _trenchGrassCutter; + } foreach getArray (configFile >> "CfgVehicles" >> (typeof _trench) >> QGVAR(grassCuttingPoints)); }; private _progressLeft = (_actualProgress * 10) + 1; From 9b1b4a46fa8a3c00efa5cffa011c9bb2dd6ab427 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Wed, 23 Mar 2016 17:17:16 +0100 Subject: [PATCH 051/268] better polish translation --- addons/trenches/stringtable.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 44c628de697..5af459f7f86 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -96,22 +96,22 @@ Digging Trench Grabe Schützengraben - Kopanie okopu + Kopanie wnęki Sto Scavando la Trincea Cavando trinchera Creuse la tranchée Continue Digging Trench - Wzów kopanie okopu + Wzów kopanie wnęki Remove Trench - Usuń okop + Usuń wnękę Removing Trench - Usuwanie okopu + Usuwanie wnęki From dc1af390cdf70459f284a44860b7b531c0e3390b Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 28 Mar 2016 18:44:30 +0200 Subject: [PATCH 052/268] Allow custom texture for tagging (only direct function call) --- addons/tagging/CfgVehicles.hpp | 2 +- addons/tagging/functions/fnc_createTag.sqf | 18 ++++++++++++------ addons/tagging/functions/fnc_tagDirection.sqf | 6 +++--- addons/tagging/functions/fnc_tagGround.sqf | 6 +++--- addons/tagging/functions/fnc_tagWall.sqf | 6 +++--- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/addons/tagging/CfgVehicles.hpp b/addons/tagging/CfgVehicles.hpp index 602ee41d331..ac0b82147ce 100644 --- a/addons/tagging/CfgVehicles.hpp +++ b/addons/tagging/CfgVehicles.hpp @@ -98,4 +98,4 @@ class CfgVehicles { MACRO_ADDITEM(ACE_SpraypaintGreen,5); }; }; -}; \ No newline at end of file +}; diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index fdb2cd08b0d..81758f8bdbf 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -5,7 +5,7 @@ * Arguments: * 0: Position ASL * 1: Vector dir and up - * 2: Colour of the tag (valid colours are black, red, green and blue) + * 2: Colour of the tag (valid colours are black, red, green and blue or full path to custom texture) * 3: Object it should be tied too * * Return Value: @@ -19,15 +19,21 @@ #include "script_component.hpp" -params ["_tagPosASL", "_vectorDirAndUp", "_color", "_object"]; -TRACE_4("createTag:", _tagPosASL, _vectorDirAndUp, _color, _object); +params ["_tagPosASL", "_vectorDirAndUp", "_colorTexture", "_object"]; +TRACE_4("createTag:",_tagPosASL,_vectorDirAndUp,_colorTexture,_object); -if !((toLower _color) in ["black", "red", "green", "blue"]) exitWith { - ACE_LOGERROR_1("%1 is not a valid tag colour.", _color); +private _customTexture = [true, false] select (_colorTexture find ".paa" == -1); + +if (!_customTexture && {!((toLower _colorTexture) in ["black", "red", "green", "blue"])}) exitWith { + ACE_LOGERROR_1("%1 is not a valid tag colour.",_colorTexture); }; private _tag = "UserTexture1m_F" createVehicle [0,0,0]; -_tag setObjectTextureGlobal [0, '\z\ace\addons\tagging\UI\tags\' + _color + '\' + str (floor (random 3)) + '.paa']; +if (!_customTexture) then { + _tag setObjectTextureGlobal [0, "\z\ace\addons\tagging\UI\tags\" + _colorTexture + "\" + str (floor (random 3)) + ".paa"]; +} else { + _tag setObjectTextureGlobal [0, _colorTexture]; +}; _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; diff --git a/addons/tagging/functions/fnc_tagDirection.sqf b/addons/tagging/functions/fnc_tagDirection.sqf index 2c03d97fd00..9dbb65f68ed 100644 --- a/addons/tagging/functions/fnc_tagDirection.sqf +++ b/addons/tagging/functions/fnc_tagDirection.sqf @@ -6,7 +6,7 @@ * 0: Unit * 1: Start position ASL * 2: End position ASL - * 3: The colour of the tag (valid colours are black, red, green and blue) + * 3: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) * * Return Value: * Sucess @@ -19,7 +19,7 @@ #include "script_component.hpp" -params ["_unit", "_startPosASL", "_endPosASL", "_color"]; +params ["_unit", "_startPosASL", "_endPosASL", "_colorTexture"]; // Check for intersections below the unit private _intersections = lineIntersectsSurfaces [_startPosASL, _endPosASL, _unit, objNull, true, 1, "GEOM", "FIRE"]; @@ -102,6 +102,6 @@ _unit playActionNow "PutDown"; // Tell the server to create the tag and handle its destruction ["createTag", _this] call EFUNC(common,serverEvent); -}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _color, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); +}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _colorTexture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); true diff --git a/addons/tagging/functions/fnc_tagGround.sqf b/addons/tagging/functions/fnc_tagGround.sqf index fa8d1795bf0..dee9261e1e1 100644 --- a/addons/tagging/functions/fnc_tagGround.sqf +++ b/addons/tagging/functions/fnc_tagGround.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Unit - * 1: The colour of the tag (valid colours are black, red, green and blue) + * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) * * Return Value: * None @@ -17,9 +17,9 @@ #include "script_component.hpp" -params ["_unit", "_color"]; +params ["_unit", "_colorTexture"]; private _startPosASL = getPosASL _unit; private _endPosASL = _startPosASL vectorAdd [0, 0, -2] vectorAdd eyeDirection _unit; -[_unit, _startPosASL, _endPosASL, _color] call FUNC(tagDirection); +[_unit, _startPosASL, _endPosASL, _colorTexture] call FUNC(tagDirection); diff --git a/addons/tagging/functions/fnc_tagWall.sqf b/addons/tagging/functions/fnc_tagWall.sqf index 9b6485f4e85..85b24f7b921 100644 --- a/addons/tagging/functions/fnc_tagWall.sqf +++ b/addons/tagging/functions/fnc_tagWall.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Unit - * 1: The colour of the tag (valid colours are black, red, green and blue) + * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) * * Return Value: * None @@ -17,11 +17,11 @@ #include "script_component.hpp" -params ["_unit", "_color"]; +params ["_unit", "_colorTexture"]; private _startPosASL = eyePos _unit; private _cameraPosASL = AGLToASL positionCameraToWorld [0, 0, 0]; private _cameraDir = (AGLToASL positionCameraToWorld [0, 0, 1]) vectorDiff _cameraPosASL; private _endPosASL = _startPosASL vectorAdd (_cameraDir vectorMultiply 2.5); -[_unit, _startPosASL, _endPosASL, _color] call FUNC(tagDirection); +[_unit, _startPosASL, _endPosASL, _colorTexture] call FUNC(tagDirection); From 6469b11f3cd62defa0bf02c348872ccc195e476a Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 28 Mar 2016 20:07:02 +0200 Subject: [PATCH 053/268] Cleanup tagging, use internal getTexture for getting texture from color, move tag size definition --- addons/tagging/CfgVehicles.hpp | 50 +++++-------------- addons/tagging/XEH_PREP.hpp | 6 +-- .../tagging/functions/fnc_checkTaggable.sqf | 2 +- addons/tagging/functions/fnc_createTag.sqf | 25 ++++------ addons/tagging/functions/fnc_getTexture.sqf | 26 ++++++++++ .../{fnc_tagDirection.sqf => fnc_tag.sqf} | 34 ++++++++----- addons/tagging/functions/fnc_tagGround.sqf | 25 ---------- addons/tagging/functions/fnc_tagWall.sqf | 27 ---------- addons/tagging/script_component.hpp | 3 ++ addons/tagging/stringtable.xml | 46 ++++------------- 10 files changed, 85 insertions(+), 159 deletions(-) create mode 100644 addons/tagging/functions/fnc_getTexture.sqf rename addons/tagging/functions/{fnc_tagDirection.sqf => fnc_tag.sqf} (78%) delete mode 100644 addons/tagging/functions/fnc_tagGround.sqf delete mode 100644 addons/tagging/functions/fnc_tagWall.sqf diff --git a/addons/tagging/CfgVehicles.hpp b/addons/tagging/CfgVehicles.hpp index ac0b82147ce..af4daf67990 100644 --- a/addons/tagging/CfgVehicles.hpp +++ b/addons/tagging/CfgVehicles.hpp @@ -4,57 +4,31 @@ class CfgVehicles { class ACE_SelfActions { class ACE_Equipment { class ACE_tagWallBlack { - displayName = CSTRING(tagWallBlack); + displayName = CSTRING(TagBlack); condition = QUOTE(('ACE_SpraypaintBlack' in items ACE_player) && {[] call FUNC(checkTaggable)}); - statement = QUOTE([ARR_2(ACE_player,'black')] call FUNC(tagWall)); + statement = QUOTE([ARR_2(ACE_player,'black' call FUNC(getTexture))] call FUNC(tag)); showDisabled = 0; priority = 3; icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlack.paa)); }; class ACE_tagWallRed: ACE_tagWallBlack { - displayName = CSTRING(tagWallRed); + displayName = CSTRING(TagRed); condition = QUOTE(('ACE_SpraypaintRed' in items ACE_player) && {[] call FUNC(checkTaggable)}); - statement = QUOTE([ARR_2(ACE_player,'red')] call FUNC(tagWall)); + statement = QUOTE([ARR_2(ACE_player,'red' call FUNC(getTexture))] call FUNC(tag)); icon = QUOTE(PATHTOF(UI\icons\iconTaggingRed.paa)); }; class ACE_tagWallGreen: ACE_tagWallBlack { - displayName = CSTRING(tagWallGreen); + displayName = CSTRING(TagGreen); condition = QUOTE(('ACE_SpraypaintGreen' in items ACE_player) && {[] call FUNC(checkTaggable)}); - statement = QUOTE([ARR_2(ACE_player,'green')] call FUNC(tagWall)); + statement = QUOTE([ARR_2(ACE_player,'green' call FUNC(getTexture))] call FUNC(tag)); icon = QUOTE(PATHTOF(UI\icons\iconTaggingGreen.paa)); }; class ACE_tagWallBlue: ACE_tagWallBlack { - displayName = CSTRING(tagWallBlue); + displayName = CSTRING(TagBlue); condition = QUOTE(('ACE_SpraypaintBlue' in items ACE_player) && {[] call FUNC(checkTaggable)}); - statement = QUOTE([ARR_2(ACE_player,'blue')] call FUNC(tagWall)); + statement = QUOTE([ARR_2(ACE_player,'blue' call FUNC(getTexture))] call FUNC(tag)); icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlue.paa)); }; - /*class ACE_tagGroundBlack { - displayName = CSTRING(tagGroundBlack); - condition = QUOTE('ACE_SpraypaintBlack' in items ACE_player); - statement = QUOTE([ARR_2(ACE_player, 'black')] call FUNC(tagGround)); - showDisabled = 0; - priority = 3; - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlack.paa)); - }; - class ACE_tagGroundRed: ACE_tagGroundBlack { - displayName = CSTRING(tagGroundRed); - condition = QUOTE('ACE_SpraypaintRed' in items ACE_player); - statement = QUOTE([ARR_2(ACE_player, 'red')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingRed.paa)); - }; - class ACE_tagGroundGreen: ACE_tagGroundBlack { - displayName = CSTRING(tagGroundGreen); - condition = QUOTE('ACE_SpraypaintGreen' in items ACE_player); - statement = QUOTE([ARR_2(ACE_player, 'green')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingGreen.paa)); - }; - class ACE_tagGroundBlue: ACE_tagGroundBlack { - displayName = CSTRING(tagGroundBlue); - condition = QUOTE('ACE_SpraypaintBlue' in items ACE_player); - statement = QUOTE([ARR_2(ACE_player, 'blue')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlue.paa)); - };*/ }; }; }; @@ -64,26 +38,26 @@ class CfgVehicles { author = "jokoho48"; scope = 2; scopeCurator = 2; - displayName = CSTRING(spraypaintBlack); + displayName = CSTRING(SpraypaintBlack); vehicleClass = "Items"; class TransportItems { MACRO_ADDITEM(ACE_SpraypaintBlack,1); }; }; class ACE_Item_SpraypaintRed: ACE_Item_SpraypaintBlack { - displayName = CSTRING(spraypaintRed); + displayName = CSTRING(SpraypaintRed); class TransportItems { MACRO_ADDITEM(ACE_SpraypaintRed,1); }; }; class ACE_Item_SpraypaintGreen: ACE_Item_SpraypaintBlack { - displayName = CSTRING(spraypaintGreen); + displayName = CSTRING(SpraypaintGreen); class TransportItems { MACRO_ADDITEM(ACE_SpraypaintGreen,1); }; }; class ACE_Item_SpraypaintBlue: ACE_Item_SpraypaintBlack { - displayName = CSTRING(spraypaintBlue); + displayName = CSTRING(SpraypaintBlue); class TransportItems { MACRO_ADDITEM(ACE_SpraypaintBlue,1); }; diff --git a/addons/tagging/XEH_PREP.hpp b/addons/tagging/XEH_PREP.hpp index eb29d5a9e33..f8a8598cd7e 100644 --- a/addons/tagging/XEH_PREP.hpp +++ b/addons/tagging/XEH_PREP.hpp @@ -1,7 +1,5 @@ - PREP(checkTaggable); PREP(createTag); -PREP(tagDirection); -PREP(tagGround); -PREP(tagWall); +PREP(getTexture); +PREP(tag); PREP(tagTestingThread); diff --git a/addons/tagging/functions/fnc_checkTaggable.sqf b/addons/tagging/functions/fnc_checkTaggable.sqf index 4c8f0c750ab..b77473f25b9 100644 --- a/addons/tagging/functions/fnc_checkTaggable.sqf +++ b/addons/tagging/functions/fnc_checkTaggable.sqf @@ -1,5 +1,5 @@ /* - * Author: BaerMitUmlaut and esteldunedain + * Author: BaerMitUmlaut, esteldunedain * Checks if there is a taggable surface within 2.5m in front of the player. * * Arguments: diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 81758f8bdbf..924fc5582c6 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -1,5 +1,5 @@ /* - * Author: BaerMitUmlaut and esteldunedain + * Author: BaerMitUmlaut, esteldunedain * Creates a tag and handle its destruction. Only execute on the server. * * Arguments: @@ -9,7 +9,7 @@ * 3: Object it should be tied too * * Return Value: - * None + * Tag created * * Example: * [positionASL, vectorDirAndUp, "black", object] call ace_tagging_fnc_createTag @@ -19,25 +19,20 @@ #include "script_component.hpp" -params ["_tagPosASL", "_vectorDirAndUp", "_colorTexture", "_object"]; -TRACE_4("createTag:",_tagPosASL,_vectorDirAndUp,_colorTexture,_object); +params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_object"]; +TRACE_4("createTag:",_tagPosASL,_vectorDirAndUp,_texture,_object); -private _customTexture = [true, false] select (_colorTexture find ".paa" == -1); - -if (!_customTexture && {!((toLower _colorTexture) in ["black", "red", "green", "blue"])}) exitWith { - ACE_LOGERROR_1("%1 is not a valid tag colour.",_colorTexture); +if (_texture == "") exitWith { + ACE_LOGERROR_1("%1 is not a valid tag texture.",_texture); + false }; private _tag = "UserTexture1m_F" createVehicle [0,0,0]; -if (!_customTexture) then { - _tag setObjectTextureGlobal [0, "\z\ace\addons\tagging\UI\tags\" + _colorTexture + "\" + str (floor (random 3)) + ".paa"]; -} else { - _tag setObjectTextureGlobal [0, _colorTexture]; -}; +_tag setObjectTextureGlobal [0, _texture]; _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; -if (isNull _object) exitWith {}; +if (isNull _object) exitWith {true}; // If the tag is applied to an object, handle its destruction _object setVariable [QGVAR(testVar), true]; @@ -75,3 +70,5 @@ GVAR(tagsToTest) pushBack [_tag, _tagPosASL, _vectorDirAndUp]; if (!GVAR(testingThread)) then { call FUNC(tagTestingThread); }; + +true diff --git a/addons/tagging/functions/fnc_getTexture.sqf b/addons/tagging/functions/fnc_getTexture.sqf new file mode 100644 index 00000000000..f7f6d7e5e2d --- /dev/null +++ b/addons/tagging/functions/fnc_getTexture.sqf @@ -0,0 +1,26 @@ +/* + * Author: BaerMitUmlaut, esteldunedain, Jonpas + * Puts together a full path to the given tag color texture. Internal ACE3 textures only. + * + * Arguments: + * 0: The colour of the tag (valid colours are black, red, green and blue) + * + * Return Value: + * Texture (full path), "" if not found + * + * Example: + * texture = ["blue"] call ace_tagging_fnc_getTexture + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_color"]; + +if !((toLower _color) in ["black", "red", "green", "blue"]) exitWith { + ACE_LOGERROR_1("%1 is not a valid tag colour.",_color); + "" +}; + +QUOTE(PATHTOF(UI)) + "\tags\" + _color + "\" + str (floor (random 3)) + ".paa" diff --git a/addons/tagging/functions/fnc_tagDirection.sqf b/addons/tagging/functions/fnc_tag.sqf similarity index 78% rename from addons/tagging/functions/fnc_tagDirection.sqf rename to addons/tagging/functions/fnc_tag.sqf index 9dbb65f68ed..3bd559f7023 100644 --- a/addons/tagging/functions/fnc_tagDirection.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -1,25 +1,35 @@ /* - * Author: BaerMitUmlaut and esteldunedain - * If possible, create a tag on the first surface between Start and End positions + * Author: BaerMitUmlaut, esteldunedain + * Creates a tag on a wall that is on the closest surface within 2m on front of the unit. * * Arguments: - * 0: Unit - * 1: Start position ASL - * 2: End position ASL - * 3: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) + * 0: Unit + * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) * * Return Value: - * Sucess + * Sucess * * Example: - * [startPosASL, directiom "blue"] call ace_tagging_fnc_tagDirection + * success = [player, "blue"] call ace_tagging_fnc_tag * - * Public: No + * Public: Yes */ #include "script_component.hpp" -params ["_unit", "_startPosASL", "_endPosASL", "_colorTexture"]; +params [ + ["_unit", objNull, [objNull]], + ["_texture", "", [""]] +]; + +if (isNull _unit || {_texture == ""}) exitWith { + ACE_LOGERROR_2("Tag parameters invalid. Unit: %1, Texture: %2",_unit,_texture); +}; + +private _startPosASL = eyePos _unit; +private _cameraPosASL = AGLToASL positionCameraToWorld [0, 0, 0]; +private _cameraDir = (AGLToASL positionCameraToWorld [0, 0, 1]) vectorDiff _cameraPosASL; +private _endPosASL = _startPosASL vectorAdd (_cameraDir vectorMultiply 2.5); // Check for intersections below the unit private _intersections = lineIntersectsSurfaces [_startPosASL, _endPosASL, _unit, objNull, true, 1, "GEOM", "FIRE"]; @@ -79,8 +89,6 @@ _fnc_isOk = { true }; -#define TAG_SIZE 0.6 - if ( !([ 0.5*TAG_SIZE, 0.5*TAG_SIZE] call _fnc_isOk) || {!([ 0.5*TAG_SIZE,-0.5*TAG_SIZE] call _fnc_isOk) || {!([-0.5*TAG_SIZE, 0.5*TAG_SIZE] call _fnc_isOk) || @@ -102,6 +110,6 @@ _unit playActionNow "PutDown"; // Tell the server to create the tag and handle its destruction ["createTag", _this] call EFUNC(common,serverEvent); -}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _colorTexture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); +}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); true diff --git a/addons/tagging/functions/fnc_tagGround.sqf b/addons/tagging/functions/fnc_tagGround.sqf deleted file mode 100644 index dee9261e1e1..00000000000 --- a/addons/tagging/functions/fnc_tagGround.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Author: BaerMitUmlaut and esteldunedain - * Creates a tag on the ground beneath the unit - * - * Arguments: - * 0: Unit - * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) - * - * Return Value: - * None - * - * Example: - * [player, "blue"] call ace_tagging_fnc_tagGround - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_colorTexture"]; - -private _startPosASL = getPosASL _unit; -private _endPosASL = _startPosASL vectorAdd [0, 0, -2] vectorAdd eyeDirection _unit; - -[_unit, _startPosASL, _endPosASL, _colorTexture] call FUNC(tagDirection); diff --git a/addons/tagging/functions/fnc_tagWall.sqf b/addons/tagging/functions/fnc_tagWall.sqf deleted file mode 100644 index 85b24f7b921..00000000000 --- a/addons/tagging/functions/fnc_tagWall.sqf +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Author: BaerMitUmlaut and esteldunedain - * Creates a tag on a wall that is on the closest surface within 2m on front of the unit. - * - * Arguments: - * 0: Unit - * 1: The colour of the tag (valid colours are black, red, green and blue or full path to custom texture) - * - * Return Value: - * None - * - * Example: - * [player, "blue"] call ace_tagging_fnc_tagWall - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit", "_colorTexture"]; - -private _startPosASL = eyePos _unit; -private _cameraPosASL = AGLToASL positionCameraToWorld [0, 0, 0]; -private _cameraDir = (AGLToASL positionCameraToWorld [0, 0, 1]) vectorDiff _cameraPosASL; -private _endPosASL = _startPosASL vectorAdd (_cameraDir vectorMultiply 2.5); - -[_unit, _startPosASL, _endPosASL, _colorTexture] call FUNC(tagDirection); diff --git a/addons/tagging/script_component.hpp b/addons/tagging/script_component.hpp index bb94aae3ff8..4836d2f2099 100644 --- a/addons/tagging/script_component.hpp +++ b/addons/tagging/script_component.hpp @@ -15,3 +15,6 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + + +#define TAG_SIZE 0.6 diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 392de0d24f1..0bab4f29c1b 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -1,91 +1,63 @@  - + Tag black Schwarz markieren Marcar en negro Oznakuj na czarno Tag noir - + Tag red Rot markieren Marcar en rojo Oznakuj na czerwono Tag rouge - + Tag green Grün markieren Marcar en verde Oznakuj na zielono Tag vert - + Tag blue Blau markieren Marcar en azul Oznakuj na niebiesko Tag bleu - - Tag ground black - Boden schwarz markieren - Oznakuj ziemię na czarno - Marcar suelo en negro - Tag fond noir - - - Tag ground red - Boden rot markieren - Oznakuj ziemię na czerwono - Marcar suelo en rojo - Tag fond rouge - - - Tag ground green - Boden grün markieren - Oznakuj ziemię na zielono - Marcar suelo en verde - Tag fond vert - - - Tag ground blue - Boden blau markieren - Oznakuj ziemię na niebiesko - Marcar suelo en azul - Tag font bleu - - + Black spray paint Schwarze Sprühfarbe Pintura negra Czarna farba w sprayu Peinture pulvérisée noire - + Red spray paint Rote Sprühfarbe Pintura roja Czerwona farba w sprayu Peinture pulvérisée rouge - + Green spray paint Grüne Sprühfarbe Pintura verde Zielona farba w sprayu Peinture pulvérisée verte - + Blue spray paint Blaue Sprühfarbe Pintura azul Niebieska farba w sprayu Peinture pulvérisée bleue - + A can of spray paint for tagging walls. Eine Farbsprühdose um Wände zu markieren. Lata de pintura en aerosol para marcar. From fbaae2beb39805197cfc26f8a879f41f54bcead0 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 1 Apr 2016 21:25:00 +0200 Subject: [PATCH 054/268] Fix stringtable casing --- addons/tagging/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index c19e00b46c9..1849206963c 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -25,7 +25,7 @@ Tag vert Marca verde - + Tag blue Blau markieren Marcar en azul From 723d27fc99a1edf6bf52dcfc82236f60a1a25cea Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 1 Apr 2016 21:29:03 +0200 Subject: [PATCH 055/268] Rename tagging action classes --- addons/tagging/CfgVehicles.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/tagging/CfgVehicles.hpp b/addons/tagging/CfgVehicles.hpp index af4daf67990..4425b646ad6 100644 --- a/addons/tagging/CfgVehicles.hpp +++ b/addons/tagging/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class CAManBase: Man { class ACE_SelfActions { class ACE_Equipment { - class ACE_tagWallBlack { + class ACE_TagBlack { displayName = CSTRING(TagBlack); condition = QUOTE(('ACE_SpraypaintBlack' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'black' call FUNC(getTexture))] call FUNC(tag)); @@ -11,19 +11,19 @@ class CfgVehicles { priority = 3; icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlack.paa)); }; - class ACE_tagWallRed: ACE_tagWallBlack { + class ACE_TagRed: ACE_TagBlack { displayName = CSTRING(TagRed); condition = QUOTE(('ACE_SpraypaintRed' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'red' call FUNC(getTexture))] call FUNC(tag)); icon = QUOTE(PATHTOF(UI\icons\iconTaggingRed.paa)); }; - class ACE_tagWallGreen: ACE_tagWallBlack { + class ACE_TagGreen: ACE_TagBlack { displayName = CSTRING(TagGreen); condition = QUOTE(('ACE_SpraypaintGreen' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'green' call FUNC(getTexture))] call FUNC(tag)); icon = QUOTE(PATHTOF(UI\icons\iconTaggingGreen.paa)); }; - class ACE_tagWallBlue: ACE_tagWallBlack { + class ACE_TagBlue: ACE_TagBlack { displayName = CSTRING(TagBlue); condition = QUOTE(('ACE_SpraypaintBlue' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'blue' call FUNC(getTexture))] call FUNC(tag)); From fed46628849cce47cf85a7ac426a4630bc53b1db Mon Sep 17 00:00:00 2001 From: nomisum Date: Sat, 2 Apr 2016 15:36:21 +0200 Subject: [PATCH 056/268] changed suggested lines to ace standards --- addons/fastroping/CfgSounds.hpp | 8 ++++---- addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/fastroping/CfgSounds.hpp b/addons/fastroping/CfgSounds.hpp index 1cdf993adc3..97479ecafb7 100644 --- a/addons/fastroping/CfgSounds.hpp +++ b/addons/fastroping/CfgSounds.hpp @@ -1,12 +1,12 @@ class CfgSounds { - class ACE_Fastroping_Rope { + class GVAR(Rope) { name = "ACE_Fastroping_Rope"; - sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_rope.ogg)), db0, 1.0}; + sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_rope.ogg)), 10, 1.0}; titles[] = {}; }; - class ACE_Fastroping_Thud { + class GVAR(Thud) { name = "ACE_Fastroping_Thud"; - sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), db0, 1.0}; + sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), 10, 1.0}; titles[] = {}; }; }; \ No newline at end of file diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 1b414042993..8074a5d494c 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -39,7 +39,7 @@ if (animationState _unit != "ACE_FastRoping") exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; }; - playSound "ACE_Fastroping_Rope"; + playSound QGVAR(Rope); }, 1, [_unit]] call CBA_fnc_addPerFrameHandler; //End of fast rope @@ -47,7 +47,7 @@ if (isNull attachedTo _unit) exitWith { [_unit, "", 2] call EFUNC(common,doAnimation); _unit setVectorUp [0, 0, 1]; - playSound "ACE_Fastroping_Thud"; + playSound QGVAR(Thud); [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; From 5c87161118957904225464618e35c74cec134a37 Mon Sep 17 00:00:00 2001 From: nomisum Date: Sat, 2 Apr 2016 15:53:39 +0200 Subject: [PATCH 057/268] fixed logic problem --- .../functions/fnc_fastRopeLocalPFH.sqf | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 8074a5d494c..8334e079294 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -29,18 +29,19 @@ if (animationState _unit != "ACE_FastRoping") exitWith { _unit disableCollisionWith _dummy; _unit attachTo [_dummy, [0, 0, -1.45]]; [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); -}; -[{ - params ["_args", "_idPFH"]; - _args params ["_unit"]; + [{ + params ["_args", "_idPFH"]; + _args params ["_unit"]; + + if (isNull (attachedTo _unit)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; - if (isNull (attachedTo _unit)) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; + playSound QGVAR(Rope); + }, 1, [_unit]] call CBA_fnc_addPerFrameHandler; +}; - playSound QGVAR(Rope); -}, 1, [_unit]] call CBA_fnc_addPerFrameHandler; //End of fast rope if (isNull attachedTo _unit) exitWith { From a9fd7c4d6fd18cf508e92505b9341ad100f9cb75 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 3 Apr 2016 02:27:23 +0200 Subject: [PATCH 058/268] Always use junctions for dev environment setup --- tools/setup.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tools/setup.py b/tools/setup.py index 62925a6066c..edab37dbcbb 100644 --- a/tools/setup.py +++ b/tools/setup.py @@ -25,19 +25,19 @@ def main(): ###################################### This script will create your ACE3 dev environment for you. - + Before you run this, you should already have: - The Arma 3 Tools installed properly via Steam - A properly set up P-drive - + If you have not done those things yet, please abort this script in the next step and do so first. - + This script will create two hard links on your system, both pointing to your ACE3 project folder: [Arma 3 installation directory]\\{} => ACE3 project folder P:\\{} => ACE3 project folder - + It will also copy the required CBA includes to {}, if you do not have the CBA source code already.""".format(FULLDIR,FULLDIR,CBA)) - print("\n") + print("\n") try: reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) @@ -79,12 +79,8 @@ def main(): if not os.path.exists(os.path.join(armapath, MAINDIR)): os.mkdir(os.path.join(armapath, MAINDIR)) - if platform.win32_ver()[0] == "7": - subprocess.call(["cmd", "/c", "mklink", "/D", "P:\\{}\\{}".format(MAINDIR,PROJECTDIR), projectpath]) - subprocess.call(["cmd", "/c", "mklink", "/D", os.path.join(armapath, MAINDIR, PROJECTDIR), projectpath]) - else: - subprocess.call(["cmd", "/c", "mklink", "/D", "/J", "P:\\{}\\{}".format(MAINDIR,PROJECTDIR), projectpath]) - subprocess.call(["cmd", "/c", "mklink", "/D", "/J", os.path.join(armapath, MAINDIR, PROJECTDIR), projectpath]) + subprocess.call(["cmd", "/c", "mklink", "/D", "/J", "P:\\{}\\{}".format(MAINDIR,PROJECTDIR), projectpath]) + subprocess.call(["cmd", "/c", "mklink", "/D", "/J", os.path.join(armapath, MAINDIR, PROJECTDIR), projectpath]) except: raise print("Something went wrong during the link creation. Please finish the setup manually.") From 2a7e0b2a4852e87a79da02e9679f185255e57ed8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 3 Apr 2016 13:23:20 +0200 Subject: [PATCH 059/268] Remove redundant directory symlink directive --- tools/setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/setup.py b/tools/setup.py index edab37dbcbb..af1b224cbb5 100644 --- a/tools/setup.py +++ b/tools/setup.py @@ -79,8 +79,8 @@ def main(): if not os.path.exists(os.path.join(armapath, MAINDIR)): os.mkdir(os.path.join(armapath, MAINDIR)) - subprocess.call(["cmd", "/c", "mklink", "/D", "/J", "P:\\{}\\{}".format(MAINDIR,PROJECTDIR), projectpath]) - subprocess.call(["cmd", "/c", "mklink", "/D", "/J", os.path.join(armapath, MAINDIR, PROJECTDIR), projectpath]) + subprocess.call(["cmd", "/c", "mklink", "/J", "P:\\{}\\{}".format(MAINDIR,PROJECTDIR), projectpath]) + subprocess.call(["cmd", "/c", "mklink", "/J", os.path.join(armapath, MAINDIR, PROJECTDIR), projectpath]) except: raise print("Something went wrong during the link creation. Please finish the setup manually.") From d931eb4e15ff70e0d94f01dd381fe0ad206010e2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 3 Apr 2016 14:17:16 +0200 Subject: [PATCH 060/268] Improve XEH adding in cargo --- addons/cargo/CfgEventHandlers.hpp | 56 ++-------------------- addons/cargo/functions/fnc_initVehicle.sqf | 3 +- 2 files changed, 5 insertions(+), 54 deletions(-) diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp index 391c3a662d7..ff4a88693ee 100644 --- a/addons/cargo/CfgEventHandlers.hpp +++ b/addons/cargo/CfgEventHandlers.hpp @@ -27,27 +27,7 @@ class Extended_Killed_EventHandlers { //Need initPost or we have problems with setVariable with 'ACE_Cargo' class Extended_InitPost_EventHandlers { - class StaticWeapon { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; - class ReammoBox_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; - class Cargo_base_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); - }; - }; - class CargoNet_01_box_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); - }; - }; - class Land_CargoBox_V1_F { + class ThingX { class ADDON { init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); }; @@ -62,32 +42,12 @@ class Extended_InitPost_EventHandlers { init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); }; }; - class MetalCase_01_base_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); - }; - }; - class RoadCone_F { - class ADDON { - init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); - }; - }; - class Car { - class ADDON { - init = QUOTE(_this call DFUNC(initVehicle)); - }; - }; - class Tank { - class ADDON { - init = QUOTE(_this call DFUNC(initVehicle)); - }; - }; - class Helicopter { + class LandVehicle { class ADDON { init = QUOTE(_this call DFUNC(initVehicle)); }; }; - class Plane { + class Air { class ADDON { init = QUOTE(_this call DFUNC(initVehicle)); }; @@ -97,16 +57,6 @@ class Extended_InitPost_EventHandlers { init = QUOTE(_this call DFUNC(initVehicle)); }; }; - class ACE_RepairItem_Base { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; - class ACE_bodyBagObject { - class ADDON { - init = QUOTE(_this call DFUNC(initObject)); - }; - }; class ACE_ConcertinaWireCoil { class ADDON { init = QUOTE(_this call DFUNC(initObject)); diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf index c0b312146b6..7e19b0acd02 100644 --- a/addons/cargo/functions/fnc_initVehicle.sqf +++ b/addons/cargo/functions/fnc_initVehicle.sqf @@ -20,6 +20,8 @@ TRACE_1("params", _vehicle); private _type = typeOf _vehicle; +if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {}; + if (isServer) then { { if (isClass _x) then { @@ -38,7 +40,6 @@ if (_type in GVAR(initializedVehicleClasses)) exitWith {}; GVAR(initializedVehicleClasses) pushBack _type; if (!hasInterface) exitWith {}; -if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) exitWith {}; TRACE_1("Adding unload cargo action to class", _type); From 85b436636827561f7193fac7a91001353df26149 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Apr 2016 20:34:50 +0200 Subject: [PATCH 061/268] Use new QPATHTOF and QPATHTOEF macros --- addons/advanced_ballistics/CfgVehicles.hpp | 2 +- .../functions/fnc_displayProtractor.sqf | 4 +- addons/aircraft/RscInGameUI.hpp | 4 +- addons/atragmx/CfgVehicles.hpp | 2 +- addons/atragmx/CfgWeapons.hpp | 4 +- .../atragmx/functions/fnc_create_dialog.sqf | 2 +- addons/atragmx/initKeybinds.sqf | 2 +- addons/attach/CfgMagazines.hpp | 6 +- addons/attach/CfgVehicles.hpp | 8 +- addons/attach/CfgWeapons.hpp | 4 +- addons/ballistics/scripts/initTargetWall.sqf | 2 +- addons/captives/CfgVehicles.hpp | 20 +- addons/captives/CfgWeapons.hpp | 4 +- addons/cargo/CfgVehicles.hpp | 4 +- addons/cargo/functions/fnc_initObject.sqf | 2 +- addons/common/CfgUnitInsignia.hpp | 4 +- addons/common/CfgVehicles.hpp | 6 +- addons/common/CfgWeapons.hpp | 4 +- .../functions/fnc_deviceKeyRegisterNew.sqf | 2 +- addons/common/functions/fnc_displayIcon.sqf | 2 +- addons/common/init_versionTooltip.sqf | 2 +- addons/concertina_wire/CfgVehicles.hpp | 10 +- addons/dagr/CfgVehicles.hpp | 4 +- addons/dagr/CfgWeapons.hpp | 4 +- addons/dagr/Dialog.hpp | 2 +- addons/dagr/functions/fnc_menuInit.sqf | 12 +- addons/dagr/functions/fnc_outputData.sqf | 2 +- addons/dagr/functions/fnc_outputVector.sqf | 2 +- addons/dagr/functions/fnc_outputWP.sqf | 2 +- addons/dagr/initKeybinds.sqf | 2 +- addons/disarming/CfgVehicles.hpp | 2 +- addons/disarming/CfgWeapons.hpp | 2 +- addons/disposable/CfgMagazines.hpp | 2 +- addons/explosives/ACE_Triggers.hpp | 16 +- addons/explosives/CfgModule.hpp | 2 +- addons/explosives/CfgVehicles.hpp | 10 +- addons/explosives/CfgWeapons.hpp | 12 +- addons/explosives/ExplosivesUI.hpp | 2 +- addons/fastroping/CfgMoves.hpp | 2 +- addons/fastroping/CfgVehicles.hpp | 8 +- addons/fastroping/CfgWaypoints.hpp | 4 +- addons/finger/CfgVehicles.hpp | 2 +- addons/finger/functions/fnc_perFrameEH.sqf | 2 +- addons/flashlights/CfgWeapons.hpp | 12 +- addons/fonts/CfgFontFamilies.hpp | 62 +++---- addons/gestures/CfgVehicles.hpp | 2 +- addons/gestures/cfgMovesBasic.hpp | 32 ++-- addons/goggles/config.cpp | 14 +- addons/grenades/CfgAmmo.hpp | 2 +- addons/grenades/CfgMagazines.hpp | 4 +- addons/hearing/CfgSounds.hpp | 16 +- addons/hearing/CfgVehicles.hpp | 6 +- addons/hearing/CfgWeapons.hpp | 4 +- addons/huntir/CfgAmmo.hpp | 2 +- addons/huntir/CfgMagazines.hpp | 2 +- addons/huntir/CfgVehicles.hpp | 6 +- addons/huntir/CfgWeapons.hpp | 4 +- addons/huntir/Dialog.hpp | 4 +- addons/interact_menu/functions/fnc_render.sqf | 2 +- addons/interaction/CfgVehicles.hpp | 32 ++-- addons/interaction/RscTitles.hpp | 6 +- .../functions/fnc_addPassengersActions.sqf | 2 +- addons/javelin/CfgVehicles.hpp | 6 +- addons/javelin/CfgWeapons.hpp | 10 +- addons/javelin/RscInGameUI.hpp | 2 +- addons/kestrel4500/CfgVehicles.hpp | 6 +- addons/kestrel4500/CfgWeapons.hpp | 4 +- addons/kestrel4500/RscTitles.hpp | 14 +- .../functions/fnc_displayKestrel.sqf | 2 +- addons/kestrel4500/initKeybinds.sqf | 2 +- addons/logistics_uavbattery/CfgSounds.hpp | 2 +- addons/logistics_uavbattery/CfgVehicles.hpp | 2 +- addons/logistics_uavbattery/CfgWeapons.hpp | 4 +- addons/logistics_wirecutter/CfgSounds.hpp | 4 +- addons/logistics_wirecutter/CfgWeapons.hpp | 4 +- .../functions/fnc_interactEH.sqf | 2 +- addons/magazinerepack/CfgSounds.hpp | 4 +- addons/magazinerepack/CfgVehicles.hpp | 2 +- addons/main/script_macros.hpp | 6 +- addons/map/CfgVehicles.hpp | 4 +- addons/map_gestures/CfgVehicles.hpp | 4 +- addons/maptools/CfgWeapons.hpp | 4 +- addons/maptools/MapGpsUI.hpp | 2 +- .../functions/fnc_updateMapToolMarkers.sqf | 6 +- addons/medical/ACE_Medical_Actions.hpp | 102 +++++------ addons/medical/ACE_Medical_SelfActions.hpp | 94 +++++----- addons/medical/CfgSounds.hpp | 14 +- addons/medical/CfgVehicles.hpp | 48 ++--- addons/medical/CfgWeapons.hpp | 86 ++++----- .../functions/fnc_modifyMedicalAction.sqf | 6 +- addons/medical/ui/RscTitles.hpp | 14 +- addons/medical/ui/triagecard.hpp | 4 +- addons/medical_menu/CfgVehicles.hpp | 6 +- addons/medical_menu/ui/menu.hpp | 32 ++-- addons/microdagr/CfgVehicles.hpp | 10 +- addons/microdagr/CfgWeapons.hpp | 4 +- addons/microdagr/XEH_clientInit.sqf | 2 +- .../functions/fnc_showApplicationPage.sqf | 14 +- addons/microdagr/gui_controls.hpp | 34 ++-- addons/missionmodules/CfgVehicles.hpp | 2 +- addons/mk6mortar/CfgVehicles.hpp | 4 +- addons/mk6mortar/CfgWeapons.hpp | 2 +- addons/mk6mortar/RscRangeTable.hpp | 2 +- addons/mk6mortar/cfgMagazines.hpp | 20 +- .../fnc_handlePlayerVehicleChanged.sqf | 2 +- addons/mx2a/CfgWeapons.hpp | 6 +- addons/nametags/CfgVehicles.hpp | 2 +- addons/nametags/functions/common.hpp | 2 +- .../functions/fnc_drawNameTagIcon.sqf | 2 +- addons/nightvision/CfgVehicles.hpp | 2 +- addons/nightvision/CfgWeapons.hpp | 2 +- addons/optics/CfgRscTitles.hpp | 34 ++-- addons/optics/CfgWeapons.hpp | 62 +++---- addons/optics/functions/fnc_onDrawScope2D.sqf | 2 +- addons/overheating/CfgSounds.hpp | 10 +- addons/overheating/CfgVehicles.hpp | 6 +- addons/overheating/CfgWeapons.hpp | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/parachute/CfgVehicles.hpp | 2 +- addons/parachute/CfgWeapons.hpp | 2 +- addons/parachute/RscTitles.hpp | 2 +- addons/rangecard/CfgVehicles.hpp | 8 +- addons/rangecard/CfgWeapons.hpp | 2 +- addons/rangecard/RscTitles.hpp | 2 +- addons/rearm/CfgVehicles.hpp | 10 +- addons/refuel/CfgVehicles.hpp | 30 +-- addons/refuel/functions/fnc_makeJerryCan.sqf | 10 +- addons/repair/CfgVehicles.hpp | 14 +- addons/respawn/CfgVehicles.hpp | 6 +- addons/sandbag/CfgVehicles.hpp | 10 +- addons/sandbag/CfgWeapons.hpp | 8 +- addons/scopes/CfgSounds.hpp | 6 +- addons/scopes/CfgVehicles.hpp | 2 +- addons/scopes/RscTitles.hpp | 2 +- addons/sitting/CfgVehicles.hpp | 4 +- .../sitting/functions/fnc_addSitActions.sqf | 2 +- addons/slideshow/CfgVehicles.hpp | 2 +- addons/spectator/CfgVehicles.hpp | 2 +- addons/spottingscope/CfgVehicles.hpp | 8 +- addons/spottingscope/CfgWeapons.hpp | 4 +- addons/switchunits/CfgVehicles.hpp | 2 +- addons/tacticalladder/CfgVehicles.hpp | 6 +- addons/tagging/CfgVehicles.hpp | 16 +- addons/tagging/CfgWeapons.hpp | 18 +- addons/trenches/CfgVehicles.hpp | 12 +- addons/trenches/CfgWeapons.hpp | 4 +- addons/tripod/CfgVehicles.hpp | 8 +- addons/tripod/CfgWeapons.hpp | 4 +- addons/vector/CfgWeapons.hpp | 6 +- .../functions/fnc_convertToTexturesDegree.sqf | 32 ++-- .../fnc_convertToTexturesDistance.sqf | 48 ++--- .../functions/fnc_convertToTexturesFOS.sqf | 172 +++++++++--------- addons/vector/functions/fnc_showCenter.sqf | 2 +- addons/vector/functions/fnc_showP1.sqf | 6 +- addons/vector/functions/fnc_showReticle.sqf | 2 +- addons/vector/functions/fnc_showText.sqf | 122 ++++++------- addons/vehiclelock/CfgMagazines.hpp | 2 +- addons/vehiclelock/CfgVehicles.hpp | 12 +- addons/vehiclelock/CfgWeapons.hpp | 12 +- addons/weather/CfgVehicles.hpp | 2 +- .../weather/functions/fnc_displayWindInfo.sqf | 6 +- addons/winddeflection/CfgVehicles.hpp | 2 +- addons/yardage450/CfgWeapons.hpp | 6 +- addons/zeus/CfgVehicles.hpp | 18 +- 164 files changed, 900 insertions(+), 900 deletions(-) diff --git a/addons/advanced_ballistics/CfgVehicles.hpp b/addons/advanced_ballistics/CfgVehicles.hpp index 27ccb2377bc..804a6e92360 100644 --- a/addons/advanced_ballistics/CfgVehicles.hpp +++ b/addons/advanced_ballistics/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class GVAR(ModuleSettings): ACE_Module { scope = 2; displayName = CSTRING(DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Wind_ca.paa); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); functionPriority = 1; diff --git a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf index 8ff21e60cc0..62663c843b3 100644 --- a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf +++ b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf @@ -43,13 +43,13 @@ GVAR(Protractor) = true; __ctrl1 ctrlSetScale 1; __ctrl1 ctrlCommit 0; - __ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa)); + __ctrl1 ctrlSetText QPATHTOF(UI\protractor.paa); __ctrl1 ctrlSetTextColor [1, 1, 1, 1]; __ctrl2 ctrlSetScale 1; __ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY - 0.001 - 0.1074 * (-0.86 max ((ACE_player weaponDirection currentWeapon ACE_player) select 2) min 0.86), 0.2, 0.2 * 4/3]; __ctrl2 ctrlCommit 0; - __ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa)); + __ctrl2 ctrlSetText QPATHTOF(UI\protractor_marker.paa); __ctrl2 ctrlSetTextColor [1, 1, 1, 1]; }, 0.1, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/aircraft/RscInGameUI.hpp b/addons/aircraft/RscInGameUI.hpp index 620d895d9e3..6411085b240 100644 --- a/addons/aircraft/RscInGameUI.hpp +++ b/addons/aircraft/RscInGameUI.hpp @@ -145,7 +145,7 @@ class RscInGameUI sizeEx = "0.038*SafezoneH"; shadow = 0; font = "EtelkaMonospacePro"; - text = PATHTOF(data\Helo_LaserON.paa); + text = QPATHTOF(data\Helo_LaserON.paa); x = "20.45 * (0.01875 * SafezoneH)"; y = "14.1 * (0.025 * SafezoneH)"; w = "12.5 * (0.01875 * SafezoneH)"; @@ -335,7 +335,7 @@ class RscInGameUI shadow = 0; align = "right"; font = "EtelkaMonospacePro"; - text = PATHTOF(data\Helo_LaserON.paa); + text = QPATHTOF(data\Helo_LaserON.paa); x = "20.45 * (0.01875 * SafezoneH)"; y = "14.1 * (0.025 * SafezoneH)"; w = "12.5 * (0.01875 * SafezoneH)"; diff --git a/addons/atragmx/CfgVehicles.hpp b/addons/atragmx/CfgVehicles.hpp index cc4a7880fea..6e8a136a03d 100644 --- a/addons/atragmx/CfgVehicles.hpp +++ b/addons/atragmx/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(create_dialog)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\ATRAG_Icon.paa); + icon = QPATHTOF(UI\ATRAG_Icon.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; diff --git a/addons/atragmx/CfgWeapons.hpp b/addons/atragmx/CfgWeapons.hpp index 42d1e56ae23..af5e1a99550 100644 --- a/addons/atragmx/CfgWeapons.hpp +++ b/addons/atragmx/CfgWeapons.hpp @@ -8,8 +8,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(Name); descriptionShort = CSTRING(Description); - model = PATHTOF(data\tdsrecon.p3d); - picture = PATHTOF(UI\ATRAG_Icon.paa); + model = QPATHTOF(data\tdsrecon.p3d); + picture = QPATHTOF(UI\ATRAG_Icon.paa); icon = "iconObject_circle"; mapSize = 0.034; diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index 07b93eb2da8..0990d87aca8 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -56,7 +56,7 @@ GVAR(DialogPFH) = [{ if (!GVAR(active)) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; - __ctrlBackground ctrlSetText format [QUOTE(PATHTOF(UI\ATRAG_%1.paa)), ["N", "D"] select (call EFUNC(common,ambientBrightness))]; + __ctrlBackground ctrlSetText format [QPATHTOF(UI\ATRAG_%1.paa), ["N", "D"] select (call EFUNC(common,ambientBrightness))]; }, 60, []] call CBA_fnc_addPerFrameHandler; true diff --git a/addons/atragmx/initKeybinds.sqf b/addons/atragmx/initKeybinds.sqf index 51d23382922..94704e8132b 100644 --- a/addons/atragmx/initKeybinds.sqf +++ b/addons/atragmx/initKeybinds.sqf @@ -33,4 +33,4 @@ _closeCode = { closeDialog 0; }; }; -[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\ATRAG_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); +[(localize LSTRING(Name)), QPATHTOF(UI\ATRAG_Icon.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); diff --git a/addons/attach/CfgMagazines.hpp b/addons/attach/CfgMagazines.hpp index f85cac82b4c..7ba8cebbc53 100644 --- a/addons/attach/CfgMagazines.hpp +++ b/addons/attach/CfgMagazines.hpp @@ -3,17 +3,17 @@ class CfgMagazines { class CA_Magazine; class B_IR_Grenade: CA_Magazine { ACE_Attachable = "B_IRStrobe"; - model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d)); + model = QPATHTOF(data\ace_IRStrobe.p3d); }; class O_IR_Grenade: B_IR_Grenade { ACE_Attachable = "O_IRStrobe"; - model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d)); + model = QPATHTOF(data\ace_IRStrobe.p3d); }; class I_IR_Grenade: B_IR_Grenade { ACE_Attachable = "I_IRStrobe"; - model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d)); + model = QPATHTOF(data\ace_IRStrobe.p3d); }; class SmokeShell; diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index e462c0cefa8..1e0c0f3e719 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -9,7 +9,7 @@ exceptions[] = {}; \ showDisabled = 0; \ priority = 0; \ - icon = PATHTOF(UI\attach_ca.paa); \ + icon = QPATHTOF(UI\attach_ca.paa); \ distance = 4.5; \ }; \ class GVAR(DetachVehicle) { \ @@ -19,7 +19,7 @@ exceptions[] = {}; \ showDisabled = 0; \ priority = 0.1; \ - icon = PATHTOF(UI\detach_ca.paa); \ + icon = QPATHTOF(UI\detach_ca.paa); \ distance = 4.5; \ }; \ }; \ @@ -60,7 +60,7 @@ class CfgVehicles { exceptions[] = {"isNotDragging"}; showDisabled = 0; priority = 5; - icon = PATHTOF(UI\attach_ca.paa); + icon = QPATHTOF(UI\attach_ca.paa); }; class GVAR(Detach) { displayName = CSTRING(Detach); @@ -69,7 +69,7 @@ class CfgVehicles { exceptions[] = {"isNotDragging"}; showDisabled = 0; priority = 5; - icon = PATHTOF(UI\detach_ca.paa); + icon = QPATHTOF(UI\detach_ca.paa); }; }; }; diff --git a/addons/attach/CfgWeapons.hpp b/addons/attach/CfgWeapons.hpp index dfea64678df..cc50b3be5e5 100644 --- a/addons/attach/CfgWeapons.hpp +++ b/addons/attach/CfgWeapons.hpp @@ -8,8 +8,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(IrStrobe_Name); descriptionShort = CSTRING(IrStrobe_Description); - model = QUOTE(PATHTOF(data\ace_IRStrobe.p3d)); - picture = PATHTOF(UI\irstrobe_item.paa); + model = QPATHTOF(data\ace_IRStrobe.p3d); + picture = QPATHTOF(UI\irstrobe_item.paa); class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/ballistics/scripts/initTargetWall.sqf b/addons/ballistics/scripts/initTargetWall.sqf index d9b16eec107..0ce3950de1e 100644 --- a/addons/ballistics/scripts/initTargetWall.sqf +++ b/addons/ballistics/scripts/initTargetWall.sqf @@ -11,5 +11,5 @@ if (local _wall) then { _paper attachTo [_wall, [0,-0.02,0.6]]; _paper setDir getDir _wall; - _paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))]; + _paper setObjectTextureGlobal [0, QPATHTOF(textures\target_ca.paa)]; }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index a8215c0cdcb..2afa1cfea49 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs)); exceptions[] = {}; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + icon = QPATHTOF(UI\handcuff_ca.paa); }; class ACE_MainActions { @@ -21,7 +21,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); exceptions[] = {}; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + icon = QPATHTOF(UI\handcuff_ca.paa); }; class ACE_EscortCaptive { displayName = CSTRING(EscortCaptive); @@ -30,7 +30,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_player, _target, true)] call FUNC(doEscortCaptive)); exceptions[] = {}; showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + icon = QPATHTOF(UI\captive_ca.paa); priority = 2.3; }; class ACE_StopEscorting { @@ -40,7 +40,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); exceptions[] = {"isNotEscorting"}; showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + icon = QPATHTOF(UI\captive_ca.paa); priority = 2.3; }; class ACE_LoadCaptive { @@ -50,7 +50,7 @@ class CfgVehicles { statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); exceptions[] = {"isNotEscorting"}; showDisabled = 0; - icon = QUOTE(PATHTOF(UI\captive_ca.paa)); + icon = QPATHTOF(UI\captive_ca.paa); priority = 2.2; }; class GVAR(UnloadCaptive) { @@ -79,7 +79,7 @@ class CfgVehicles { exceptions[] = {}; showDisabled = 0; priority = 0; - icon = QUOTE(PATHTOF(UI\Surrender_ca.paa)); + icon = QPATHTOF(UI\Surrender_ca.paa); }; class ACE_StopSurrenderingSelf { displayName = CSTRING(StopSurrendering); @@ -88,7 +88,7 @@ class CfgVehicles { exceptions[] = {"isNotSurrendering"}; showDisabled = 0; priority = 0; - icon = QUOTE(PATHTOF(UI\Surrender_ca.paa)); + icon = QPATHTOF(UI\Surrender_ca.paa); }; }; }; @@ -154,7 +154,7 @@ class CfgVehicles { scope = 2; //show in editor isGlobal = 0; //run on server isTriggerActivated = 1; //Wait for triggers - icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa); functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { @@ -170,7 +170,7 @@ class CfgVehicles { scope = 2; //show in editor isGlobal = 0; //run on server isTriggerActivated = 1; //Wait for triggers - icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Make_Unit_Handcuffed_ca.paa); functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { @@ -186,7 +186,7 @@ class CfgVehicles { displayName = CSTRING(ModuleSettings_DisplayName); function = QFUNC(moduleSettings); scope = 2; - icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_settings_ca.paa); isGlobal = 1; isSingular = 1; class Arguments { diff --git a/addons/captives/CfgWeapons.hpp b/addons/captives/CfgWeapons.hpp index 70929625193..1b65a0a4bf2 100644 --- a/addons/captives/CfgWeapons.hpp +++ b/addons/captives/CfgWeapons.hpp @@ -5,8 +5,8 @@ class CfgWeapons { class ACE_CableTie: ACE_ItemCore { displayName = CSTRING(CableTie); descriptionShort = CSTRING(CableTieDescription); - model = QUOTE(PATHTOF(models\ace_cabletie.p3d)); - picture = QUOTE(PATHTOF(UI\ace_cabletie_ca.paa)); + model = QPATHTOF(models\ace_cabletie.p3d); + picture = QPATHTOF(UI\ace_cabletie_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index dfeab3b0174..008762653f1 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { class ACE_moduleCargoSettings: ACE_Module { scope = 2; displayName = CSTRING(SettingsModule_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Cargo_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Cargo_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleSettings); functionPriority = 1; @@ -36,7 +36,7 @@ class CfgVehicles { class GVAR(makeLoadable): ACE_Module { scope = 2; displayName = CSTRING(makeLoadable_displayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_makeLoadable_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_makeLoadable_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleMakeLoadable); isGlobal = 1; diff --git a/addons/cargo/functions/fnc_initObject.sqf b/addons/cargo/functions/fnc_initObject.sqf index dc8db802e51..f740d0e371c 100644 --- a/addons/cargo/functions/fnc_initObject.sqf +++ b/addons/cargo/functions/fnc_initObject.sqf @@ -39,7 +39,7 @@ private _statement = { [_player, _target] call FUNC(startLoadIn); }; private _text = localize LSTRING(loadObject); -private _icon = QUOTE(PATHTOF(UI\Icon_load.paa)); +private _icon = QPATHTOF(UI\Icon_load.paa); private _action = [QGVAR(load), _text, _icon, _statement, _condition] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/common/CfgUnitInsignia.hpp b/addons/common/CfgUnitInsignia.hpp index c1cd541e9c6..337baa4235c 100644 --- a/addons/common/CfgUnitInsignia.hpp +++ b/addons/common/CfgUnitInsignia.hpp @@ -3,13 +3,13 @@ class CfgUnitInsignia { class ACE_insignia_logo { displayName = "ACE3"; author = CSTRING(ACETeam); - texture = PATHTOF(data\Insignia_ace3logo_ca.paa); + texture = QPATHTOF(data\Insignia_ace3logo_ca.paa); textureVehicle = ""; }; class ACE_insignia_banana { displayName = "ABE3"; author = CSTRING(ACETeam); - texture = PATHTOF(data\insignia_banana_ca.paa); + texture = QPATHTOF(data\insignia_banana_ca.paa); textureVehicle = ""; }; }; diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index de1f7f7cf41..1e958027be7 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -36,7 +36,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_CheckPBO_ca.paa); class Arguments { class Action { displayName = CSTRING(CheckPBO_Action_DisplayName); @@ -82,7 +82,7 @@ class CfgVehicles { displayName = CSTRING(LSDVehicles_DisplayName); function = "ACE_Common_fnc_moduleLSDVehicles"; scope = 2; - icon = QUOTE(PATHTOF(UI\Icon_Module_LSD_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_LSD_ca.paa); isGlobal = 1; class Arguments {}; class ModuleDescription: ModuleDescription { @@ -132,7 +132,7 @@ class CfgVehicles { class ACE_Headbug_Fix: Bicycle { scope = 1; side = 3; - model = PATHTOF(data\ACE_HeadBanger.p3d); + model = QPATHTOF(data\ACE_HeadBanger.p3d); //model = QPATHTO_M(ACE_HeadBanger.p3d); author = CSTRING(ACETeam); displayName = " "; diff --git a/addons/common/CfgWeapons.hpp b/addons/common/CfgWeapons.hpp index 22075e2903c..488d4210c4f 100644 --- a/addons/common/CfgWeapons.hpp +++ b/addons/common/CfgWeapons.hpp @@ -34,8 +34,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(bananaDisplayName); descriptionShort = CSTRING(bananaDescr); - model = PATHTOF(data\banana.p3d); - picture = PATHTOF(data\icon_banana_ca.paa); + model = QPATHTOF(data\banana.p3d); + picture = QPATHTOF(data\icon_banana_ca.paa); icon = "iconObject_circle"; mapSize = 0.034; class ItemInfo: InventoryItem_Base_F { diff --git a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf index 416eef2c77f..ce012fc3aab 100644 --- a/addons/common/functions/fnc_deviceKeyRegisterNew.sqf +++ b/addons/common/functions/fnc_deviceKeyRegisterNew.sqf @@ -13,7 +13,7 @@ * None * * Example: - * [(localize "STR_ACE_microdagr_itemName"), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditionCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew + * [(localize "STR_ACE_microdagr_itemName"), QPATHTOF(images\microDAGR_item.paa), _conditionCode, _toggleCode, _closeCode] call ace_common_fnc_deviceKeyRegisterNew * * Public: No */ diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf index c51b3bd4548..1552bc8bc55 100644 --- a/addons/common/functions/fnc_displayIcon.sqf +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -14,7 +14,7 @@ * None * * Example: - * ["myID", true, QUOTE(PATHTOF(data\icon_group.paa)), [1,1,1,1], 0] call ace_gui_fnc_displayIcon; + * ["myID", true, QPATHTOF(data\icon_group.paa), [1,1,1,1], 0] call ace_gui_fnc_displayIcon; * * Public: Yes */ diff --git a/addons/common/init_versionTooltip.sqf b/addons/common/init_versionTooltip.sqf index 7aef3f47864..ce0d005a14b 100644 --- a/addons/common/init_versionTooltip.sqf +++ b/addons/common/init_versionTooltip.sqf @@ -30,7 +30,7 @@ _display setVariable [QGVAR(versionTooltip), [_display] spawn { _ctrl ctrlCommit 0; // pls ignore - _ctrl ctrlSetText QUOTE(PATHTOF(data\icon_banana_ca.paa)); + _ctrl ctrlSetText QPATHTOF(data\icon_banana_ca.paa); // animate with random speed _position set [1, 1 - safezoneY]; diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index dd18c07209e..01f128bbea1 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { scope = 1; displayName = ""; - model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d); + model = QPATHTOF(data\ACE_ConcertinaWireNoGeo.p3d); destrType = "DestructTent"; accuracy = 0.3; mapSize = 2.8; @@ -75,7 +75,7 @@ class CfgVehicles { class ACE_ConcertinaWire: ACE_ConcertinaWireNoGeo { scope = 2; displayName = $STR_ACE_CONCERTINA_WIRE; - model = PATHTOF(data\ACE_ConcertinaWire.p3d); + model = QPATHTOF(data\ACE_ConcertinaWire.p3d); EGVAR(logistics_wirecutter,isFence) = 1; class ACE_Actions { class ACE_MainActions { @@ -91,7 +91,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\icon_sandbag_ca.paa); + icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; }; }; @@ -105,7 +105,7 @@ class CfgVehicles { scope = 2; displayName = $STR_ACE_CONCERTINA_WIRECOIL; - model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d); + model = QPATHTOF(data\ACE_ConcertinaWireCoil.p3d); mapsize = 0.5; animated = 0; nameSound = "fence"; @@ -138,7 +138,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\icon_sandbag_ca.paa); + icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; }; }; diff --git a/addons/dagr/CfgVehicles.hpp b/addons/dagr/CfgVehicles.hpp index 7f0a7f6cff4..89bfd8af4e9 100644 --- a/addons/dagr/CfgVehicles.hpp +++ b/addons/dagr/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(menuInit)); showDisabled = 0; priority = 0.1; - icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa)); + icon = QPATHTOF(UI\DAGR_Icon.paa); exceptions[] = {"isNotInside", "isNotSitting"}; class GVAR(toggle) { displayName = CSTRING(ToggleDAGR); @@ -17,7 +17,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(toggleOverlay)); showDisabled = 0; priority = 0.2; - icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa)); + icon = QPATHTOF(UI\DAGR_Icon.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; diff --git a/addons/dagr/CfgWeapons.hpp b/addons/dagr/CfgWeapons.hpp index 9fcd903cddc..b6601e094cb 100644 --- a/addons/dagr/CfgWeapons.hpp +++ b/addons/dagr/CfgWeapons.hpp @@ -7,9 +7,9 @@ class CfgWeapons { author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"}; scope = 2; displayName = CSTRING(Name); - model = QUOTE(PATHTOF(data\DAGR.p3d)); + model = QPATHTOF(data\DAGR.p3d); descriptionShort = CSTRING(Description); - picture = PATHTOF(UI\DAGR_Icon.paa); + picture = QPATHTOF(UI\DAGR_Icon.paa); icon = "iconObject_circle"; mapSize = 0.034; class ItemInfo: InventoryItem_Base_F { diff --git a/addons/dagr/Dialog.hpp b/addons/dagr/Dialog.hpp index 8511829e5ea..52e3a8f683a 100644 --- a/addons/dagr/Dialog.hpp +++ b/addons/dagr/Dialog.hpp @@ -156,7 +156,7 @@ class DAGR_Menu { idc = 266861; x = 0.175; y = -0.173; - text = QUOTE(PATHTOF(UI\dagr_menu.paa)); + text = QPATHTOF(UI\dagr_menu.paa); sizeEx = 0.1; }; diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index e4fb3415372..59a77909b48 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -179,7 +179,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __Option2) ctrlSetText "WP LIST"; (__dsp displayCtrl __Option3) ctrlSetText "CONNECT TO"; (__dsp displayCtrl __Option4) ctrlSetText "OPTIONS"; - (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa)); + (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa); }; }; case "goto_wp": { @@ -190,7 +190,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __Option3) ctrlSetText GVAR(wpString3); (__dsp displayCtrl __Option4) ctrlSetText GVAR(wpString4); if (GVAR(numSelections) > 0) then { - (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa)); + (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa); }; }; if (GVAR(SEL)) then { @@ -238,7 +238,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __F2) ctrlSetText "Edit"; (__dsp displayCtrl __F3) ctrlSetText "Delete"; if (GVAR(numSelections) > 0) then { - (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa)); + (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa); }; }; if (GVAR(F3) && GVAR(numWaypoints) > 0) then { @@ -399,7 +399,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __F3) ctrlSetText "Cancel"; GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8); (__dsp displayCtrl __mainText) ctrlSetText GVAR(output); - (__dsp displayCtrl __PSelection1 + GVAR(pointer)) ctrlSetText QUOTE(PATHTOF(UI\DAGR_PSelection.paa)); + (__dsp displayCtrl __PSelection1 + GVAR(pointer)) ctrlSetText QPATHTOF(UI\DAGR_PSelection.paa); }; if (GVAR(F1)) then { if (!GVAR(busy)) then { @@ -507,7 +507,7 @@ GVAR(menuRun) = true; case "connect": { if (!GVAR(busy)) then { (__dsp displayCtrl __Option0) ctrlSetText "Vector 21"; - (__dsp displayCtrl __Selection0) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa)); + (__dsp displayCtrl __Selection0) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa); }; if (GVAR(SEL)) then { if (!GVAR(busy)) then { @@ -542,7 +542,7 @@ GVAR(menuRun) = true; case "options": { (__dsp displayCtrl __Option0) ctrlSetText "Signal Delay"; (__dsp displayCtrl __Option1) ctrlSetText (if (GVAR(useDegrees)) then { "Direction: Deg" } else { "Direction: MIL" }); - (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa)); + (__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QPATHTOF(UI\DAGR_Selection.paa); if (GVAR(SEL)) then { GVAR(vectorConnected) = false; switch (GVAR(selection)) do { diff --git a/addons/dagr/functions/fnc_outputData.sqf b/addons/dagr/functions/fnc_outputData.sqf index 63350c71a38..a981514e542 100644 --- a/addons/dagr/functions/fnc_outputData.sqf +++ b/addons/dagr/functions/fnc_outputData.sqf @@ -25,7 +25,7 @@ #define __timeControl (__display displayCtrl 266855) #define __background (__display displayCtrl 266856) -__background ctrlSetText QUOTE(PATHTOF(UI\dagr_gps.paa)); +__background ctrlSetText QPATHTOF(UI\dagr_gps.paa); if (GVAR(outputPFH) != -1) exitWith {}; diff --git a/addons/dagr/functions/fnc_outputVector.sqf b/addons/dagr/functions/fnc_outputVector.sqf index ef93a53d8a7..23996c46b45 100644 --- a/addons/dagr/functions/fnc_outputVector.sqf +++ b/addons/dagr/functions/fnc_outputVector.sqf @@ -27,7 +27,7 @@ private ["_xGrid", "_yGrid", "_dagrGrid", "_bearing", "_dagrDist", "_dagrElevati #define __timeControl (__display displayCtrl 266855) #define __background (__display displayCtrl 266856) -__background ctrlSetText QUOTE(PATHTOF(UI\dagr_vector.paa)); +__background ctrlSetText QPATHTOF(UI\dagr_vector.paa); if (GVAR(noVectorData)) exitWith {}; GVAR(LAZPOS) params ["_lazPosX", "_lazPosY", "_lazPosZ"]; diff --git a/addons/dagr/functions/fnc_outputWP.sqf b/addons/dagr/functions/fnc_outputWP.sqf index 204a5ef556e..2d1aee4d4e4 100644 --- a/addons/dagr/functions/fnc_outputWP.sqf +++ b/addons/dagr/functions/fnc_outputWP.sqf @@ -25,7 +25,7 @@ #define __timeControl (__display displayCtrl 266859) #define __background (__display displayCtrl 266856) -__background ctrlSetText QUOTE(PATHTOF(UI\dagr_wp.paa)); +__background ctrlSetText QPATHTOF(UI\dagr_wp.paa); if (GVAR(outputPFH) != -1) exitWith {}; diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf index 66bd08190ed..c233eaff6ac 100644 --- a/addons/dagr/initKeybinds.sqf +++ b/addons/dagr/initKeybinds.sqf @@ -56,4 +56,4 @@ _closeCode = { closeDialog 0; }; }; -["DAGR", QUOTE(PATHTOF(UI\DAGR_Icon.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); +["DAGR", QPATHTOF(UI\DAGR_Icon.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); diff --git a/addons/disarming/CfgVehicles.hpp b/addons/disarming/CfgVehicles.hpp index b4a1a4c7dd7..1d04bb157cd 100644 --- a/addons/disarming/CfgVehicles.hpp +++ b/addons/disarming/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { distance = 3.5; condition = QUOTE([ARR_2(_player,_target)] call FUNC(canPlayerDisarmUnit)); statement = QUOTE([ARR_2(_player,_target)] call FUNC(openDisarmDialog)); - icon = PATHTOF(UI\disarm.paa); + icon = QPATHTOF(UI\disarm.paa); exceptions[] = {}; }; }; diff --git a/addons/disarming/CfgWeapons.hpp b/addons/disarming/CfgWeapons.hpp index 404ef4aa76d..4e7122ba417 100644 --- a/addons/disarming/CfgWeapons.hpp +++ b/addons/disarming/CfgWeapons.hpp @@ -5,7 +5,7 @@ class CfgWeapons { class ACE_DebugPotato: ACE_ItemCore { displayName = "ACE Potato (debug)"; descriptionShort = "Glorious Potato
If you see this in game it means someone fucked up"; - picture = QUOTE(PATHTOF(UI\potato_ca.paa)); + picture = QPATHTOF(UI\potato_ca.paa); scope = 1; class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp index d26d5ecea20..d9ad0508dbd 100644 --- a/addons/disposable/CfgMagazines.hpp +++ b/addons/disposable/CfgMagazines.hpp @@ -5,7 +5,7 @@ class CfgMagazines { scope = 1; scopeArsenal = 1; displayName = CSTRING(PreloadedMissileDummy); - picture = PATHTOEF(common,UI\blank_CO.paa); + picture = QPATHTOEF(common,UI\blank_CO.paa); weaponPoolAvailable = 0; mass = 0; }; diff --git a/addons/explosives/ACE_Triggers.hpp b/addons/explosives/ACE_Triggers.hpp index 280906432f2..145ae0804e4 100644 --- a/addons/explosives/ACE_Triggers.hpp +++ b/addons/explosives/ACE_Triggers.hpp @@ -11,52 +11,52 @@ onSetup parameters: class Command { isAttachable = 1; displayName = CSTRING(clacker_displayName); - picture = PATHTOF(Data\UI\Clacker.paa); + picture = QPATHTOF(Data\UI\Clacker.paa); onPlace = QUOTE(_this call FUNC(AddClacker);false); requires[] = {"ACE_Clacker"}; }; class MK16_Transmitter: Command { isAttachable = 1; displayName = CSTRING(M152_displayName); - picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa); + picture = QPATHTOF(Data\UI\MK16_Reciever_ca.paa); requires[] = {"ACE_M26_Clacker"}; }; class DeadManSwitch: Command { isAttachable = 1; displayName = CSTRING(DeadManSwitch_displayName); - picture = PATHTOF(Data\UI\DeadmanSwitch.paa); + picture = QPATHTOF(Data\UI\DeadmanSwitch.paa); requires[] = {"ACE_DeadManSwitch"}; }; class Cellphone: Command { isAttachable = 1; displayName = CSTRING(cellphone_displayName); - picture = PATHTOF(Data\UI\Cellphone_UI.paa); + picture = QPATHTOF(Data\UI\Cellphone_UI.paa); onPlace = QUOTE(_this call FUNC(addCellphoneIED);false); requires[] = {"ACE_Cellphone"}; }; class PressurePlate { isAttachable = 0; displayName = CSTRING(PressurePlate); - picture = PATHTOF(Data\UI\PressurePlate.paa); + picture = QPATHTOF(Data\UI\PressurePlate.paa); onPlace = QUOTE(false); }; class IRSensor { isAttachable = 0; displayName = CSTRING(IRSensor); - picture = PATHTOF(Data\UI\PressurePlate.paa); + picture = QPATHTOF(Data\UI\PressurePlate.paa); onPlace = "false"; }; class Timer { isAttachable = 1; displayName = CSTRING(timerName); - picture = PATHTOF(data\UI\Timer.paa); + picture = QPATHTOF(data\UI\Timer.paa); onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false); onSetup = QUOTE(_this call FUNC(openTimerSetUI);true); }; class Tripwire { isAttachable = 0; displayName = CSTRING(TripWire); - picture = PATHTOF(Data\UI\Tripwire.paa); + picture = QPATHTOF(Data\UI\Tripwire.paa); onPlace = "false"; }; }; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index b651903f59b..075bb873255 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -7,7 +7,7 @@ class ACE_ModuleExplosive: ACE_Module { scope = 2; isGlobal = 1; isSingular = 1; - icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa); + icon = QPATHTOF(UI\Icon_Module_Explosives_ca.paa); class Arguments { class RequireSpecialist { displayName = CSTRING(RequireSpecialist_DisplayName); diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 5f81bde1273..fb724e830ad 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -12,7 +12,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 4; - icon = PATHTOF(UI\Explosives_Menu_ca.paa); + icon = QPATHTOF(UI\Explosives_Menu_ca.paa); insertChildren = QUOTE([_player] call FUNC(addTransmitterActions);); //Sub-menu items class ACE_Place { @@ -22,7 +22,7 @@ class CfgVehicles { insertChildren = QUOTE([_player] call FUNC(addExplosiveActions);); exceptions[] = {"isNotSwimming"}; showDisabled = 1; - icon = PATHTOF(UI\Place_Explosive_ca.paa); + icon = QPATHTOF(UI\Place_Explosive_ca.paa); priority = 1; }; class ACE_Cellphone { @@ -31,7 +31,7 @@ class CfgVehicles { statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';"; exceptions[] = {"isNotSwimming", "isNotInside", "isNotSitting"}; showDisabled = 0; - icon = PATHTOF(Data\UI\Cellphone_UI.paa); + icon = QPATHTOF(Data\UI\Cellphone_UI.paa); priority = 0.8; }; }; @@ -64,7 +64,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse);); exceptions[] = {"isNotSwimming"}; showDisabled = 0; - icon = PATHTOF(UI\Defuse_ca.paa); + icon = QPATHTOF(UI\Defuse_ca.paa); priority = 0.8; }; }; @@ -98,7 +98,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {"isNotSwimming"}; priority = 5; - icon = QUOTE(PATHTOF(UI\Explosives_Menu_ca.paa)); + icon = QPATHTOF(UI\Explosives_Menu_ca.paa); }; class ACE_PickUp { selection = ""; diff --git a/addons/explosives/CfgWeapons.hpp b/addons/explosives/CfgWeapons.hpp index cd900b2da30..a3f3b32d4c7 100644 --- a/addons/explosives/CfgWeapons.hpp +++ b/addons/explosives/CfgWeapons.hpp @@ -11,8 +11,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(clacker_displayName); descriptionShort = CSTRING(clacker_description); - picture = PATHTOF(Data\UI\Clacker.paa); - model = QUOTE(PATHTOF(data\ace_m57.p3d)); + picture = QPATHTOF(Data\UI\Clacker.paa); + model = QPATHTOF(data\ace_m57.p3d); GVAR(Range) = 250; GVAR(Detonator) = 1; GVAR(triggerType) = "Command"; @@ -24,7 +24,7 @@ class CfgWeapons { }; class ACE_M26_Clacker: ACE_Clacker { displayName = CSTRING(M152_Clacker_displayName); - picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa); + picture = QPATHTOF(Data\UI\MK26_Transmitter_ca.paa); GVAR(Range) = 5000; GVAR(triggerType) = "MK16_Transmitter"; }; @@ -32,7 +32,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(DefusalKit_displayName); descriptionShort = CSTRING(DefusalKit_description); - picture = PATHTOF(Data\UI\Pliers.paa); + picture = QPATHTOF(Data\UI\Pliers.paa); model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d"; class ItemInfo: ACE_ExplosiveItem { @@ -44,7 +44,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(DeadManSwitch_displayName); descriptionShort = CSTRING(DeadManSwitch_description); - picture = PATHTOF(Data\UI\DeadmanSwitch.paa); + picture = QPATHTOF(Data\UI\DeadmanSwitch.paa); model = "\A3\weapons_F\ammo\mag_univ.p3d"; GVAR(Range) = 100; GVAR(Detonator) = 1; @@ -59,7 +59,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(cellphone_displayName); descriptionShort = CSTRING(cellphone_description); - picture = PATHTOF(Data\UI\Cellphone_UI.paa); + picture = QPATHTOF(Data\UI\Cellphone_UI.paa); model = "\A3\weapons_F\ammo\mag_univ.p3d"; GVAR(Range) = 15000; GVAR(Detonator) = 1; diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp index 45582a85644..cf97794d8f1 100644 --- a/addons/explosives/ExplosivesUI.hpp +++ b/addons/explosives/ExplosivesUI.hpp @@ -113,7 +113,7 @@ class Rsc_ACE_PhoneInterface { class controls { class RscPicture_1200: RscPicture { idc = 1200; - text = PATHTOF(Data\UI\Cellphone_Background.paa); + text = QPATHTOF(Data\UI\Cellphone_Background.paa); x = 0.231875 * safezoneW + safezoneX; y = 0.104 * safezoneH + safezoneY; w = 0.195937 * safezoneW; diff --git a/addons/fastroping/CfgMoves.hpp b/addons/fastroping/CfgMoves.hpp index 94f3fe51f01..b9785394328 100644 --- a/addons/fastroping/CfgMoves.hpp +++ b/addons/fastroping/CfgMoves.hpp @@ -9,7 +9,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; class ACE_FastRoping: Crew { - file = QUOTE(PATHTOF(anim\fastroping.rtm)); + file = QPATHTOF(anim\fastroping.rtm); interpolateTo[] = {"Unconscious", 1}; disableWeapons = 1; disableWeaponsLong = 1; diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index a9f5ebfbade..5bced23b49f 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -20,7 +20,7 @@ class CfgVehicles { class ACE_moduleEquipFRIES: ACE_Module { scope = 2; displayName = CSTRING(Module_FRIES_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_FRIES_ca.paa); category = "ACE"; function = QUOTE(FUNC(moduleEquipFRIES)); functionPriority = 10; @@ -77,7 +77,7 @@ class CfgVehicles { class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; scope = 1; - model = QUOTE(PATHTOF(data\friesAnchorBar.p3d)); + model = QPATHTOF(data\friesAnchorBar.p3d); animated = 1; class AnimationSources { class extendHookRight { @@ -95,7 +95,7 @@ class CfgVehicles { class ACE_friesGantry: ACE_friesBase { author = "jokoho48"; scope = 1; - model = QUOTE(PATHTOF(data\friesGantry.p3d)); + model = QPATHTOF(data\friesGantry.p3d); animated = 1; class AnimationSources { class adjustWidth { @@ -148,7 +148,7 @@ class CfgVehicles { class GVAR(helper): Helicopter_Base_F { author = "KoffeinFlummi"; scope = 1; - model = PATHTOF(data\helper.p3d); + model = QPATHTOF(data\helper.p3d); class ACE_Actions {}; class Turrets {}; }; diff --git a/addons/fastroping/CfgWaypoints.hpp b/addons/fastroping/CfgWaypoints.hpp index 4c4da2a7cb3..f3303c28ff5 100644 --- a/addons/fastroping/CfgWaypoints.hpp +++ b/addons/fastroping/CfgWaypoints.hpp @@ -4,8 +4,8 @@ class CfgWaypoints { class Fastrope { displayName = CSTRING(Waypoint_Fastrope); displayNameDebug = "Fastrope"; - file = QUOTE(PATHTOF(functions\fnc_deployAIWaypoint.sqf)); - icon = QUOTE(PATHTOF(UI\Icon_Waypoint.paa)); + file = QPATHTOF(functions\fnc_deployAIWaypoint.sqf); + icon = QPATHTOF(UI\Icon_Waypoint.paa); }; }; }; diff --git a/addons/finger/CfgVehicles.hpp b/addons/finger/CfgVehicles.hpp index 74229968e42..8125e7f2f59 100644 --- a/addons/finger/CfgVehicles.hpp +++ b/addons/finger/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { scope = 2; category = "ACE"; displayName = CSTRING(moduleSettings_displayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_finger_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_finger_ca.paa); function = QFUNC(moduleSettings); isGlobal = 0; isSingular = 1; diff --git a/addons/finger/functions/fnc_perFrameEH.sqf b/addons/finger/functions/fnc_perFrameEH.sqf index 61c8f077aba..e8a10355837 100644 --- a/addons/finger/functions/fnc_perFrameEH.sqf +++ b/addons/finger/functions/fnc_perFrameEH.sqf @@ -41,7 +41,7 @@ _iconSize = BASE_SIZE * _fovCorrection; _drawColor set [3, ((_drawColor select 3) * (_timeLeftToShow / 0.5))]; }; - drawIcon3D [QUOTE(PATHTOF(UI\fp_icon2.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "RobotoCondensed"]; + drawIcon3D [QPATHTOF(UI\fp_icon2.paa), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "RobotoCondensed"]; }; } count (GVAR(fingersHash) select 0); diff --git a/addons/flashlights/CfgWeapons.hpp b/addons/flashlights/CfgWeapons.hpp index 09fe70d764e..84edac6c85d 100644 --- a/addons/flashlights/CfgWeapons.hpp +++ b/addons/flashlights/CfgWeapons.hpp @@ -17,8 +17,8 @@ class CfgWeapons { class ACE_Flashlight_MX991: ACE_ItemCore { displayName = CSTRING(MX991_DisplayName); descriptionShort = CSTRING(MX991_Description); - model = QUOTE(PATHTOF(data\MX_991.p3d)); - picture = PATHTOF(UI\mx991_ca.paa); + model = QPATHTOF(data\MX_991.p3d); + picture = QPATHTOF(UI\mx991_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; @@ -32,8 +32,8 @@ class CfgWeapons { class ACE_Flashlight_KSF1: ACE_ItemCore { displayName = CSTRING(KSF1_DisplayName); descriptionShort = CSTRING(KSF1_Description); - model = QUOTE(PATHTOF(data\KSF_1.p3d)); - picture = PATHTOF(UI\ksf1_ca.paa); + model = QPATHTOF(data\KSF_1.p3d); + picture = QPATHTOF(UI\ksf1_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; @@ -47,8 +47,8 @@ class CfgWeapons { class ACE_Flashlight_XL50: ACE_ItemCore { displayName = CSTRING(XL50_DisplayName); descriptionShort = CSTRING(XL50_Description); - model = QUOTE(PATHTOF(data\Maglight.p3d)); - picture = PATHTOF(UI\xl50_ca.paa); + model = QPATHTOF(data\Maglight.p3d); + picture = QPATHTOF(UI\xl50_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/fonts/CfgFontFamilies.hpp b/addons/fonts/CfgFontFamilies.hpp index 963a35fa8e5..80c81146241 100644 --- a/addons/fonts/CfgFontFamilies.hpp +++ b/addons/fonts/CfgFontFamilies.hpp @@ -2,38 +2,38 @@ class CfgFontFamilies { class PixelSplitterBold { - fonts[] = { PATHTOF(PixelSplitterBold\PixelSplitterBold6), - PATHTOF(PixelSplitterBold\PixelSplitterBold7), - PATHTOF(PixelSplitterBold\PixelSplitterBold8), - PATHTOF(PixelSplitterBold\PixelSplitterBold9), - PATHTOF(PixelSplitterBold\PixelSplitterBold10), - PATHTOF(PixelSplitterBold\PixelSplitterBold11), - PATHTOF(PixelSplitterBold\PixelSplitterBold12), - PATHTOF(PixelSplitterBold\PixelSplitterBold13), - PATHTOF(PixelSplitterBold\PixelSplitterBold14), - PATHTOF(PixelSplitterBold\PixelSplitterBold15), - PATHTOF(PixelSplitterBold\PixelSplitterBold16), - PATHTOF(PixelSplitterBold\PixelSplitterBold17), - PATHTOF(PixelSplitterBold\PixelSplitterBold18), - PATHTOF(PixelSplitterBold\PixelSplitterBold19), - PATHTOF(PixelSplitterBold\PixelSplitterBold20), - PATHTOF(PixelSplitterBold\PixelSplitterBold21), - PATHTOF(PixelSplitterBold\PixelSplitterBold22), - PATHTOF(PixelSplitterBold\PixelSplitterBold23), - PATHTOF(PixelSplitterBold\PixelSplitterBold24), - PATHTOF(PixelSplitterBold\PixelSplitterBold25), - PATHTOF(PixelSplitterBold\PixelSplitterBold26), - PATHTOF(PixelSplitterBold\PixelSplitterBold27), - PATHTOF(PixelSplitterBold\PixelSplitterBold28), - PATHTOF(PixelSplitterBold\PixelSplitterBold29), - PATHTOF(PixelSplitterBold\PixelSplitterBold30), - PATHTOF(PixelSplitterBold\PixelSplitterBold31), - PATHTOF(PixelSplitterBold\PixelSplitterBold34), - PATHTOF(PixelSplitterBold\PixelSplitterBold35), - PATHTOF(PixelSplitterBold\PixelSplitterBold37), - PATHTOF(PixelSplitterBold\PixelSplitterBold46) + fonts[] = { QPATHTOF(PixelSplitterBold\PixelSplitterBold6), + QPATHTOF(PixelSplitterBold\PixelSplitterBold7), + QPATHTOF(PixelSplitterBold\PixelSplitterBold8), + QPATHTOF(PixelSplitterBold\PixelSplitterBold9), + QPATHTOF(PixelSplitterBold\PixelSplitterBold10), + QPATHTOF(PixelSplitterBold\PixelSplitterBold11), + QPATHTOF(PixelSplitterBold\PixelSplitterBold12), + QPATHTOF(PixelSplitterBold\PixelSplitterBold13), + QPATHTOF(PixelSplitterBold\PixelSplitterBold14), + QPATHTOF(PixelSplitterBold\PixelSplitterBold15), + QPATHTOF(PixelSplitterBold\PixelSplitterBold16), + QPATHTOF(PixelSplitterBold\PixelSplitterBold17), + QPATHTOF(PixelSplitterBold\PixelSplitterBold18), + QPATHTOF(PixelSplitterBold\PixelSplitterBold19), + QPATHTOF(PixelSplitterBold\PixelSplitterBold20), + QPATHTOF(PixelSplitterBold\PixelSplitterBold21), + QPATHTOF(PixelSplitterBold\PixelSplitterBold22), + QPATHTOF(PixelSplitterBold\PixelSplitterBold23), + QPATHTOF(PixelSplitterBold\PixelSplitterBold24), + QPATHTOF(PixelSplitterBold\PixelSplitterBold25), + QPATHTOF(PixelSplitterBold\PixelSplitterBold26), + QPATHTOF(PixelSplitterBold\PixelSplitterBold27), + QPATHTOF(PixelSplitterBold\PixelSplitterBold28), + QPATHTOF(PixelSplitterBold\PixelSplitterBold29), + QPATHTOF(PixelSplitterBold\PixelSplitterBold30), + QPATHTOF(PixelSplitterBold\PixelSplitterBold31), + QPATHTOF(PixelSplitterBold\PixelSplitterBold34), + QPATHTOF(PixelSplitterBold\PixelSplitterBold35), + QPATHTOF(PixelSplitterBold\PixelSplitterBold37), + QPATHTOF(PixelSplitterBold\PixelSplitterBold46) }; spaceWidth = 0.5; spacing = 0.065; }; -}; \ No newline at end of file +}; diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 4bf98f49785..00e04f23a43 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { statement = ""; showDisabled = 1; priority = 3.5; - icon = PATHTOF(UI\gestures_ca.paa); + icon = QPATHTOF(UI\gestures_ca.paa); class GVAR(Advance) { displayName = CSTRING(Advance); diff --git a/addons/gestures/cfgMovesBasic.hpp b/addons/gestures/cfgMovesBasic.hpp index 50a835abe68..30e2d4d2ddb 100644 --- a/addons/gestures/cfgMovesBasic.hpp +++ b/addons/gestures/cfgMovesBasic.hpp @@ -126,75 +126,75 @@ class CfgGesturesMale { }; class GVAR(forward): GVAR(Base) { - file = QUOTE(PATHTOF(anim\ace_forward.rtm)); + file = QPATHTOF(anim\ace_forward.rtm); speed = 1; }; class GVAR(forwardStandLowered): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_forward_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_forward_stand_lowered.rtm); }; class GVAR(freeze): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_freeze.rtm)); + file = QPATHTOF(anim\ace_freeze.rtm); speed = 0.6; }; class GVAR(freezeStandLowered): GVAR(freeze) { - file = QUOTE(PATHTOF(anim\ace_freeze_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_freeze_stand_lowered.rtm); }; class GVAR(cover): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_cover.rtm)); + file = QPATHTOF(anim\ace_cover.rtm); speed = 0.8; }; class GVAR(coverStandLowered): GVAR(cover) { - file = QUOTE(PATHTOF(anim\ace_cover_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_cover_stand_lowered.rtm); }; class GVAR(regroup): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_regroup.rtm)); + file = QPATHTOF(anim\ace_regroup.rtm); speed = 0.8; }; class GVAR(regroupStandLowered): GVAR(regroup) { - file = QUOTE(PATHTOF(anim\ace_regroup_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_regroup_stand_lowered.rtm); }; class GVAR(engage): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_engage.rtm)); + file = QPATHTOF(anim\ace_engage.rtm); speed = 0.9; }; class GVAR(engageStandLowered): GVAR(engage) { - file = QUOTE(PATHTOF(anim\ace_engage_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_engage_stand_lowered.rtm); }; class GVAR(point): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_point.rtm)); + file = QPATHTOF(anim\ace_point.rtm); speed = 0.8; }; class GVAR(pointStandLowered): GVAR(point) { - file = QUOTE(PATHTOF(anim\ace_point_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_point_stand_lowered.rtm); }; class GVAR(hold): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_hold.rtm)); + file = QPATHTOF(anim\ace_hold.rtm); speed = 0.8; }; class GVAR(holdStandLowered): GVAR(hold) { - file = QUOTE(PATHTOF(anim\ace_hold_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_hold_stand_lowered.rtm); }; class GVAR(warning): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_warning.rtm)); + file = QPATHTOF(anim\ace_warning.rtm); speed = 0.8; }; class GVAR(warningStandLowered): GVAR(warning) { - file = QUOTE(PATHTOF(anim\ace_warning_stand_lowered.rtm)); + file = QPATHTOF(anim\ace_warning_stand_lowered.rtm); }; }; }; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 0812200a87f..7ac4048748a 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -15,8 +15,8 @@ class CfgPatches { #include "CfgEventHandlers.hpp" -#define COMBAT_GOGGLES ACE_Overlay = QUOTE(PATHTOF(textures\HUD\CombatGoggles.paa)); \ - ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\CombatGogglesCracked.paa)); \ +#define COMBAT_GOGGLES ACE_Overlay = QPATHTOF(textures\HUD\CombatGoggles.paa); \ + ACE_OverlayCracked = QPATHTOF(textures\HUD\CombatGogglesCracked.paa); \ ACE_Resistance = 2; \ ACE_Protection = 1; @@ -26,10 +26,10 @@ class CfgGlasses { ACE_TintAmount=0; ACE_Overlay = ""; ACE_OverlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa"; - ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\Cracked.paa)); + ACE_OverlayCracked = QPATHTOF(textures\HUD\Cracked.paa); ACE_Resistance = 0; ACE_Protection = 0; - ACE_DustPath = QUOTE(PATHTOF(textures\fx\dust\%1.paa)); + ACE_DustPath = QPATHTOF(textures\fx\dust\%1.paa); }; class G_Combat:None { @@ -37,8 +37,8 @@ class CfgGlasses { }; class G_Diving { - ACE_Overlay = QUOTE(PATHTOF(textures\HUD\DivingGoggles.paa)); - ACE_OverlayCracked = QUOTE(PATHTOF(textures\HUD\DivingGogglesCracked.paa)); + ACE_Overlay = QPATHTOF(textures\HUD\DivingGoggles.paa); + ACE_OverlayCracked = QPATHTOF(textures\HUD\DivingGogglesCracked.paa); ACE_Resistance = 2; ACE_Protection = 1; }; @@ -209,7 +209,7 @@ class CfgGesturesMale { class States { class GestureFreezeStand; class GestureWipeFace: GestureFreezeStand { - file = QUOTE(PATHTOF(anim\WipeGlasses.rtm)); + file = QPATHTOF(anim\WipeGlasses.rtm); canPullTrigger = 0; }; }; diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 5aa33284c84..a5971044f97 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -81,7 +81,7 @@ class CfgAmmo { class ACE_G_M84: SmokeShell { GVAR(flashbang) = 1; - model = PATHTOF(models\ACE_m84_thrown.p3d); + model = QPATHTOF(models\ACE_m84_thrown.p3d); dangerRadiusHit = -1; suppressionRadiusHit = 20; typicalSpeed = 22; diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp index 16dd9929ffd..d1d9127fa48 100644 --- a/addons/grenades/CfgMagazines.hpp +++ b/addons/grenades/CfgMagazines.hpp @@ -59,8 +59,8 @@ class CfgMagazines { displayname = CSTRING(M84_Name); descriptionshort = CSTRING(M84_Description); displayNameShort = "M84"; - model = PATHTOF(models\ACE_m84.p3d); - picture = PATHTOF(UI\ACE_m84_x_ca.paa); + model = QPATHTOF(models\ACE_m84.p3d); + picture = QPATHTOF(UI\ACE_m84_x_ca.paa); ammo = "ACE_G_M84"; mass = 4; }; diff --git a/addons/hearing/CfgSounds.hpp b/addons/hearing/CfgSounds.hpp index 0a1bc82ed1c..6df1b391936 100644 --- a/addons/hearing/CfgSounds.hpp +++ b/addons/hearing/CfgSounds.hpp @@ -1,34 +1,34 @@ class CfgSounds { class ACE_EarRinging_Weak { - sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_weak.wav)),8,1.7}; + sound[] = {QPATHTOF(sounds\ACE_earringing_weak.wav),8,1.7}; titles[] = {}; }; class ACE_EarRinging_Medium { - sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_medium.wav)),8,1.7}; + sound[] = {QPATHTOF(sounds\ACE_earringing_medium.wav),8,1.7}; titles[] = {}; }; class ACE_EarRinging_Heavy { - sound[] = {QUOTE(PATHTOF(sounds\ACE_earringing_heavy.wav)),8,1.7}; + sound[] = {QPATHTOF(sounds\ACE_earringing_heavy.wav),8,1.7}; titles[] = {}; }; class ACE_Combat_Deafness_Heavy { - sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),8,1}; + sound[] = {QPATHTOF(sounds\deafness.ogg),8,1}; titles[] = {}; }; class ACE_Combat_Deafness_Medium { - sound[] = {QUOTE(PATHTOF(sounds\deafness.ogg)),3,1}; + sound[] = {QPATHTOF(sounds\deafness.ogg),3,1}; titles[] = {}; }; class ACE_Combat_Deafness_Heavy_NoRing { - sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),8,1}; + sound[] = {QPATHTOF(sounds\deafness_noring.ogg),8,1}; titles[] = {}; }; class ACE_Combat_Deafness_Medium_NoRing { - sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),3,1}; + sound[] = {QPATHTOF(sounds\deafness_noring.ogg),3,1}; titles[] = {}; }; class ACE_Ring_Backblast { - sound[] = {QUOTE(PATHTOF(sounds\backblast_ring.ogg)),1,1}; + sound[] = {QPATHTOF(sounds\backblast_ring.ogg),1,1}; titles[] = {}; }; }; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 17dec1641b6..760ed95a03e 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); showDisabled = 0; priority = 2.5; - icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); + icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa); }; class ACE_RemoveEarplugs { displayName = CSTRING(EarPlugs_Off); @@ -19,7 +19,7 @@ class CfgVehicles { statement = QUOTE( [_player] call FUNC(removeEarPlugs) ); showDisabled = 0; priority = 2.5; - icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); + icon = QPATHTOF(UI\ACE_earplugs_x_ca.paa); }; }; }; @@ -100,7 +100,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa); + icon = QPATHTOF(UI\Icon_Module_Hearing_ca.paa); class Arguments { class EnableCombatDeafness { displayName = CSTRING(EnableCombatDeafness_DisplayName); diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index af7b7d4cb35..c063c0e8966 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -5,8 +5,8 @@ class CfgWeapons { class ACE_EarPlugs: ACE_ItemCore { displayName = CSTRING(EarPlugs_Name); descriptionShort = CSTRING(EarPlugs_Description); - model = QUOTE(PATHTOF(data\ace_earplugs.p3d)); - picture = PATHTOF(UI\ACE_earplugs_x_ca.paa); + model = QPATHTOF(data\ace_earplugs.p3d); + picture = QPATHTOF(UI\ACE_earplugs_x_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp index 86f73e97557..e822e763894 100644 --- a/addons/huntir/CfgAmmo.hpp +++ b/addons/huntir/CfgAmmo.hpp @@ -1,7 +1,7 @@ class CfgAmmo { class FlareBase; class F_HuntIR: FlareBase { - model = PATHTOF(data\ace_m1070_armed.p3d); + model = QPATHTOF(data\ace_m1070_armed.p3d); lightColor[] = {0, 0, 0, 0}; smokeColor[] = {0, 0, 0, 0}; timeToLive = 6; diff --git a/addons/huntir/CfgMagazines.hpp b/addons/huntir/CfgMagazines.hpp index c11f81a98c9..62ae785333d 100644 --- a/addons/huntir/CfgMagazines.hpp +++ b/addons/huntir/CfgMagazines.hpp @@ -5,7 +5,7 @@ class CfgMagazines { displayName = CSTRING(magazine_displayName); displayNameShort = "HuntIR"; descriptionShort = ""; - picture = PATHTOF(data\m_m1070_ca.paa); + picture = QPATHTOF(data\m_m1070_ca.paa); ammo = "F_HuntIR"; }; }; diff --git a/addons/huntir/CfgVehicles.hpp b/addons/huntir/CfgVehicles.hpp index 3b6486aaf71..cd5054a2da1 100644 --- a/addons/huntir/CfgVehicles.hpp +++ b/addons/huntir/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(huntir)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\w_huntir_monitor_ca.paa); + icon = QPATHTOF(UI\w_huntir_monitor_ca.paa); exceptions[] = {}; }; }; @@ -23,7 +23,7 @@ class CfgVehicles { castDriverShadow = 0; destrType = "DestructDefault"; displayName = "HuntIR"; - model = PATHTOF(data\huntir.p3d); + model = QPATHTOF(data\huntir.p3d); scope = 1; soundCrash[] = {"", db-30, 1 }; soundEnviron[] = {"z\ace\addons\apl\sounds\padak_let", 0.316228, 1, 80}; @@ -73,7 +73,7 @@ class CfgVehicles { class ReammoBox_F; class ACE_HuntIR_Box: ReammoBox_F { - model = PATHTOF(data\ace_huntirbox.p3d); + model = QPATHTOF(data\ace_huntirbox.p3d); displayName = $STR_DN_ACE_HUNTIRBOX; class TransportItems { MACRO_ADDITEM(ACE_HuntIR_monitor,5); diff --git a/addons/huntir/CfgWeapons.hpp b/addons/huntir/CfgWeapons.hpp index 6ff271d6045..ac57491e777 100644 --- a/addons/huntir/CfgWeapons.hpp +++ b/addons/huntir/CfgWeapons.hpp @@ -6,9 +6,9 @@ class CfgWeapons { class ACE_HuntIR_monitor: ACE_ItemCore { scope = 2; displayName = CSTRING(monitor_displayName); - picture = PATHTOF(UI\w_huntir_monitor_ca.paa); + picture = QPATHTOF(UI\w_huntir_monitor_ca.paa); descriptionShort = CSTRING(monitor_displayName); - model = PATHTOF(data\ace_huntir_monitor.p3d); + model = QPATHTOF(data\ace_huntir_monitor.p3d); class ItemInfo: InventoryItem_Base_F { mass = 20; diff --git a/addons/huntir/Dialog.hpp b/addons/huntir/Dialog.hpp index ca1e85466b8..745bef8dc39 100644 --- a/addons/huntir/Dialog.hpp +++ b/addons/huntir/Dialog.hpp @@ -154,7 +154,7 @@ class ace_huntir_cam_dialog { w = __W; h = __H + 0.2; border = 0; - text = PATHTOF(UI\ace_huntir_monitor_on.paa); + text = QPATHTOF(UI\ace_huntir_monitor_on.paa); }; class CAM_HEIGHT { type = CT_STATIC; @@ -311,7 +311,7 @@ class ace_huntir_cam_dialog_off: ace_huntir_cam_dialog_inactive { class RIGHT_BORDER: RIGHT_BORDER {}; class PRESS_HELP: PRESS_HELP {}; class HELP_DIALOG: HELP_DIALOG {}; - class CAM_BG: CAM_BG { text = PATHTOF(UI\ace_huntir_monitor_off.paa); }; + class CAM_BG: CAM_BG { text = QPATHTOF(UI\ace_huntir_monitor_off.paa); }; }; //ACTIVE PARA CAMERA DIALOG class ace_huntir_help_dialog: ace_huntir_cam_dialog { diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 117a828b0bb..5c4379cc3e3 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -56,7 +56,7 @@ if (GVAR(openedMenuType) >= 0) then { GVAR(lastTime) = _cTime; GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360; - [_sPos, format [QUOTE(PATHTOF(ui\selector%1.paa)), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector); + [_sPos, format [QPATHTOF(ui\selector%1.paa), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector); _foundTarget = true; GVAR(actionSelected) = true; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 0b71ebb4e12..2939cb6ad51 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); + icon = QPATHTOF(UI\Icon_Module_Interaction_ca.paa); class Arguments { class EnableTeamManagement { displayName = CSTRING(EnableTeamManagement_DisplayName); @@ -68,14 +68,14 @@ class CfgVehicles { statement = ""; showDisabled = 0; priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); + icon = QPATHTOF(UI\team\team_management_ca.paa); class ACE_AssignTeamRed { displayName = CSTRING(AssignTeamRed); condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'RED')] call DFUNC(joinTeam)); showDisabled = 1; - icon = PATHTOF(UI\team\team_red_ca.paa); + icon = QPATHTOF(UI\team\team_red_ca.paa); priority = 2.4; }; class ACE_AssignTeamGreen { @@ -83,7 +83,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'GREEN')] call DFUNC(joinTeam)); showDisabled = 1; - icon = PATHTOF(UI\team\team_green_ca.paa); + icon = QPATHTOF(UI\team\team_green_ca.paa); priority = 2.3; }; class ACE_AssignTeamBlue { @@ -91,7 +91,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'BLUE')] call DFUNC(joinTeam)); showDisabled = 1; - icon = PATHTOF(UI\team\team_blue_ca.paa); + icon = QPATHTOF(UI\team\team_blue_ca.paa); priority = 2.2; }; class ACE_AssignTeamYellow { @@ -99,7 +99,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam)); statement = QUOTE([ARR_2(_target,'YELLOW')] call DFUNC(joinTeam)); showDisabled = 1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); + icon = QPATHTOF(UI\team\team_yellow_ca.paa); priority = 2.1; }; class ACE_UnassignTeam { @@ -107,7 +107,7 @@ class CfgVehicles { condition = QUOTE([ARR_2(_player,_target)] call DFUNC(canJoinTeam) && {assignedTeam _target != 'MAIN'}); statement = QUOTE([ARR_2(_target,'MAIN')] call DFUNC(joinTeam)); showDisabled = 1; - icon = PATHTOF(UI\team\team_white_ca.paa); + icon = QPATHTOF(UI\team\team_white_ca.paa); priority = 2.5; }; }; @@ -118,7 +118,7 @@ class CfgVehicles { statement = QUOTE([_player] joinSilent group _target); showDisabled = 0; priority = 2.6; - icon = PATHTOF(UI\team\team_management_ca.paa); + icon = QPATHTOF(UI\team\team_management_ca.paa); }; class ACE_GetDown { displayName = CSTRING(GetDown); @@ -223,7 +223,7 @@ class CfgVehicles { statement = ""; showDisabled = 1; priority = 3.2; - icon = PATHTOF(UI\team\team_management_ca.paa); + icon = QPATHTOF(UI\team\team_management_ca.paa); class ACE_JoinTeamRed { displayName = CSTRING(JoinTeamRed); @@ -232,7 +232,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.4; - icon = PATHTOF(UI\team\team_red_ca.paa); + icon = QPATHTOF(UI\team\team_red_ca.paa); }; class ACE_JoinTeamGreen { displayName = CSTRING(JoinTeamGreen); @@ -241,7 +241,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.3; - icon = PATHTOF(UI\team\team_green_ca.paa); + icon = QPATHTOF(UI\team\team_green_ca.paa); }; class ACE_JoinTeamBlue { displayName = CSTRING(JoinTeamBlue); @@ -250,7 +250,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.2; - icon = PATHTOF(UI\team\team_blue_ca.paa); + icon = QPATHTOF(UI\team\team_blue_ca.paa); }; class ACE_JoinTeamYellow { displayName = CSTRING(JoinTeamYellow); @@ -259,7 +259,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.1; - icon = PATHTOF(UI\team\team_yellow_ca.paa); + icon = QPATHTOF(UI\team\team_yellow_ca.paa); }; class ACE_LeaveTeam { displayName = CSTRING(LeaveTeam); @@ -268,7 +268,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.5; - icon = PATHTOF(UI\team\team_white_ca.paa); + icon = QPATHTOF(UI\team\team_white_ca.paa); }; class ACE_BecomeLeader { displayName = CSTRING(BecomeLeader); @@ -277,7 +277,7 @@ class CfgVehicles { statement = QUOTE(_this call DFUNC(doBecomeLeader)); showDisabled = 1; priority = 1.0; - icon = PATHTOF(UI\team\team_white_ca.paa); + icon = QPATHTOF(UI\team\team_white_ca.paa); }; class ACE_LeaveGroup { displayName = CSTRING(LeaveGroup); @@ -286,7 +286,7 @@ class CfgVehicles { statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;); showDisabled = 1; priority = 1.2; - icon = PATHTOF(UI\team\team_management_ca.paa); + icon = QPATHTOF(UI\team\team_management_ca.paa); }; }; diff --git a/addons/interaction/RscTitles.hpp b/addons/interaction/RscTitles.hpp index d03d3e0f365..71070b1715d 100644 --- a/addons/interaction/RscTitles.hpp +++ b/addons/interaction/RscTitles.hpp @@ -170,7 +170,7 @@ class RscTitles { class controls { class SelectIcon: RscInteractionHelperIcon{ idc = 1200; - text = PATHTOF(UI\mouse_left_ca.paa); + text = QPATHTOF(UI\mouse_left_ca.paa); y = 17.5 * GUI_GRID_H; }; class SelectText: RscInteractionText{ @@ -180,7 +180,7 @@ class RscTitles { }; class GoBackIcon: RscInteractionHelperIcon{ idc = 1201; - text = PATHTOF(UI\mouse_right_ca.paa); + text = QPATHTOF(UI\mouse_right_ca.paa); y = 19.5 * GUI_GRID_H; }; class GoBackText: RscInteractionText{ @@ -190,7 +190,7 @@ class RscTitles { }; class ScrollIcon: RscInteractionHelperIcon{ idc = 1202; - text = PATHTOF(UI\mouse_scroll_ca.paa); + text = QPATHTOF(UI\mouse_scroll_ca.paa); y = 18.5 * GUI_GRID_H; }; class ScrollText: RscInteractionText{ diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index 8ee95b7eb91..7b8ad69ee0a 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -34,7 +34,7 @@ _actions = []; ] select (([driver _vehicle, gunner _vehicle, commander _vehicle] find _unit) + 1); if (_unit getVariable [QEGVAR(captives,isHandcuffed), false]) then { - _icon = QUOTE(PATHTOEF(captives,UI\handcuff_ca.paa)); + _icon = QPATHTOEF(captives,UI\handcuff_ca.paa); }; _actions pushBack [ diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp index 1cd527089d9..17cf03a6896 100644 --- a/addons/javelin/CfgVehicles.hpp +++ b/addons/javelin/CfgVehicles.hpp @@ -18,7 +18,7 @@ class CfgVehicles { magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; turretInfoType = "ACE_RscOptics_javelin"; - gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); + gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; opticsZoomMax = 0.04167; opticsZoomInit = 0.08333; @@ -36,7 +36,7 @@ class CfgVehicles { magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; turretInfoType = "ACE_RscOptics_javelin"; - gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); + gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; opticsZoomMax = 0.04167; opticsZoomInit = 0.08333; @@ -54,7 +54,7 @@ class CfgVehicles { magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; turretInfoType = "ACE_RscOptics_javelin"; - gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); + gunnerOpticsModel = QPATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; opticsZoomMax = 0.04167; opticsZoomInit = 0.08333; diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index 75aaf7c3325..8e489bfaa2e 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -15,7 +15,7 @@ class CfgWeapons { class GVAR(Titan_Static) : missiles_titan_at { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = PATHTOF(data\reticle_titan.p3d); + modelOptics = QPATHTOF(data\reticle_titan.p3d); canLock = 0; magazines[] = {"1Rnd_GAT_missiles"}; @@ -31,7 +31,7 @@ class CfgWeapons { class launch_B_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = PATHTOF(data\reticle_titan.p3d); + modelOptics = QPATHTOF(data\reticle_titan.p3d); canLock = 0; @@ -41,7 +41,7 @@ class CfgWeapons { class launch_I_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = PATHTOF(data\reticle_titan.p3d); + modelOptics = QPATHTOF(data\reticle_titan.p3d); canLock = 0; @@ -51,7 +51,7 @@ class CfgWeapons { class launch_O_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = PATHTOF(data\reticle_titan.p3d); + modelOptics = QPATHTOF(data\reticle_titan.p3d); canLock = 0; @@ -62,7 +62,7 @@ class CfgWeapons { class launch_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = PATHTOF(data\reticle_titan.p3d); + modelOptics = QPATHTOF(data\reticle_titan.p3d); canLock = 0; diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp index ea1e12626cd..e2f097d89a7 100644 --- a/addons/javelin/RscInGameUI.hpp +++ b/addons/javelin/RscInGameUI.hpp @@ -306,7 +306,7 @@ class RscInGameUI { }; class OpticsBorders: RscPicture { idc = 699105; - text = PATHTOF(data\javelin_ui_border_ca.paa); + text = QPATHTOF(data\javelin_ui_border_ca.paa); colorText[] = {0,0,0,1}; x = "((SafezoneW -(3.1/4)*SafezoneH)/2) - SafezoneX"; y = "0.15*SafezoneH-SafezoneY"; diff --git a/addons/kestrel4500/CfgVehicles.hpp b/addons/kestrel4500/CfgVehicles.hpp index 9ca65109280..ccc4fa3bd29 100644 --- a/addons/kestrel4500/CfgVehicles.hpp +++ b/addons/kestrel4500/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(createKestrelDialog)); showDisabled = 0; priority = 0.1; - icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + icon = QPATHTOF(UI\Kestrel4500_Icon.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; class GVAR(show) { displayName = CSTRING(ShowKestrel); @@ -17,7 +17,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(displayKestrel)); showDisabled = 0; priority = 0.2; - icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + icon = QPATHTOF(UI\Kestrel4500_Icon.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; class GVAR(hide) { @@ -26,7 +26,7 @@ class CfgVehicles { statement = QUOTE(call FUNC(displayKestrel)); showDisabled = 0; priority = 0.3; - icon = QUOTE(PATHTOF(UI\Kestrel4500_Icon.paa)); + icon = QPATHTOF(UI\Kestrel4500_Icon.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; diff --git a/addons/kestrel4500/CfgWeapons.hpp b/addons/kestrel4500/CfgWeapons.hpp index c31b736ac6e..8b318994a20 100644 --- a/addons/kestrel4500/CfgWeapons.hpp +++ b/addons/kestrel4500/CfgWeapons.hpp @@ -8,8 +8,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(Name); descriptionShort = CSTRING(Description); - model = PATHTOF(data\kestrel4500.p3d); - picture = PATHTOF(UI\Kestrel4500.paa); + model = QPATHTOF(data\kestrel4500.p3d); + picture = QPATHTOF(UI\Kestrel4500.paa); icon = "iconObject_circle"; mapSize = 0.034; diff --git a/addons/kestrel4500/RscTitles.hpp b/addons/kestrel4500/RscTitles.hpp index 7046918935a..276e8c4392e 100644 --- a/addons/kestrel4500/RscTitles.hpp +++ b/addons/kestrel4500/RscTitles.hpp @@ -348,25 +348,25 @@ class RscTitles { fadeout = 0; class controls { class Preload_0 { - text = PATHTOF(UI\Kestrel4500_0.paa); + text = QPATHTOF(UI\Kestrel4500_0.paa); }; class Preload_1 { - text = PATHTOF(UI\Kestrel4500_1.paa); + text = QPATHTOF(UI\Kestrel4500_1.paa); }; class Preload_2 { - text = PATHTOF(UI\Kestrel4500_2.paa); + text = QPATHTOF(UI\Kestrel4500_2.paa); }; class Preload_3 { - text = PATHTOF(UI\Kestrel4500_3.paa); + text = QPATHTOF(UI\Kestrel4500_3.paa); }; class Preload_4 { - text = PATHTOF(UI\Kestrel4500_4.paa); + text = QPATHTOF(UI\Kestrel4500_4.paa); }; class Preload_5 { - text = PATHTOF(UI\Kestrel4500_5.paa); + text = QPATHTOF(UI\Kestrel4500_5.paa); }; class Preload_6 { - text = PATHTOF(UI\Kestrel4500_6.paa); + text = QPATHTOF(UI\Kestrel4500_6.paa); }; }; }; diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf index 64d06fea1c9..348c6306e1d 100644 --- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -126,7 +126,7 @@ GVAR(Overlay) = true; }; call FUNC(updateImpellerState); - __ctrlKestrel4500 ctrlSetText format [QUOTE(PATHTOF(UI\Kestrel4500_%1.paa)), floor(GVAR(ImpellerState) % 7)]; + __ctrlKestrel4500 ctrlSetText format [QPATHTOF(UI\Kestrel4500_%1.paa), floor(GVAR(ImpellerState) % 7)]; }, 0.01, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 5793d36976c..0807284ed6a 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -56,4 +56,4 @@ _closeCode = { closeDialog 0; }; }; -[(localize LSTRING(Name)), QUOTE(PATHTOF(UI\Kestrel4500.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); +[(localize LSTRING(Name)), QPATHTOF(UI\Kestrel4500.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); diff --git a/addons/logistics_uavbattery/CfgSounds.hpp b/addons/logistics_uavbattery/CfgSounds.hpp index 530c5b86a92..3cf83715bae 100644 --- a/addons/logistics_uavbattery/CfgSounds.hpp +++ b/addons/logistics_uavbattery/CfgSounds.hpp @@ -1,7 +1,7 @@ class CfgSounds { class ACE_replaceUAVBattery { name = "ACE_replaceUAVBattery"; - sound[]={QUOTE(PATHTOF(sounds\exchange_battery.ogg)),1,1}; + sound[]={QPATHTOF(sounds\exchange_battery.ogg),1,1}; titles[]={}; }; }; diff --git a/addons/logistics_uavbattery/CfgVehicles.hpp b/addons/logistics_uavbattery/CfgVehicles.hpp index a6f2db786fb..2daa8c8011d 100644 --- a/addons/logistics_uavbattery/CfgVehicles.hpp +++ b/addons/logistics_uavbattery/CfgVehicles.hpp @@ -20,7 +20,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player, _target)] call FUNC(refuelUAV)); showDisabled = 0; priority = 1.245; - icon = QUOTE(PATHTOF(ui\UAV_battery_ca.paa)); + icon = QPATHTOF(ui\UAV_battery_ca.paa); }; }; }; diff --git a/addons/logistics_uavbattery/CfgWeapons.hpp b/addons/logistics_uavbattery/CfgWeapons.hpp index 46120f7c3dc..8beedff39bf 100644 --- a/addons/logistics_uavbattery/CfgWeapons.hpp +++ b/addons/logistics_uavbattery/CfgWeapons.hpp @@ -6,8 +6,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(Battery_Name); descriptionShort = CSTRING(Battery_Description); - model = QUOTE(PATHTOF(data\ace_battery.p3d)); - picture = QUOTE(PATHTOF(ui\UAV_battery_ca.paa)); + model = QPATHTOF(data\ace_battery.p3d); + picture = QPATHTOF(ui\UAV_battery_ca.paa); class ItemInfo: InventoryItem_Base_F { mass = 20; }; diff --git a/addons/logistics_wirecutter/CfgSounds.hpp b/addons/logistics_wirecutter/CfgSounds.hpp index 9958190ec15..598e72255b4 100644 --- a/addons/logistics_wirecutter/CfgSounds.hpp +++ b/addons/logistics_wirecutter/CfgSounds.hpp @@ -1,12 +1,12 @@ class CfgSounds { class ACE_Wirecutter_sound { name = "ACE_wirecutter_sound"; - sound[] = {QUOTE(PATHTOF(sound\wire_cut.ogg)), "db-0", 1}; + sound[] = {QPATHTOF(sound\wire_cut.ogg), "db-0", 1}; titles[] = {}; }; class ACE_Wirecutter_sound_long { name = "ACE_wirecutter_sound_long"; - sound[] = {QUOTE(PATHTOF(sound\wire_cut_long.ogg)), "db-0", 1}; + sound[] = {QPATHTOF(sound\wire_cut_long.ogg), "db-0", 1}; titles[] = {}; }; }; diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp index 2b365cc8e64..0674c44f1a1 100644 --- a/addons/logistics_wirecutter/CfgWeapons.hpp +++ b/addons/logistics_wirecutter/CfgWeapons.hpp @@ -6,8 +6,8 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); displayName = CSTRING(wirecutterName); descriptionShort = CSTRING(wirecutterDescription); - model = QUOTE(PATHTOF(data\ace_wirecutter.p3d)); - picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa)); + model = QPATHTOF(data\ace_wirecutter.p3d); + picture = QPATHTOF(ui\item_wirecutter_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 65; diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf index e28ff17db68..f926a53e01c 100644 --- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf +++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf @@ -56,7 +56,7 @@ TRACE_1("Starting wire-cut action PFEH",_interactionType); if ([_x] call FUNC(isFence)) then { _fencesHelped pushBack _x; _helper = "ACE_LogicDummy" createVehicleLocal (getpos _x); - _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QUOTE(PATHTOF(ui\wirecutter_ca.paa)), _fncStatement, _fncCondition, {}, _x, {[0,0,0]}, 5.5] call EFUNC(interact_menu,createAction); + _action = [QGVAR(helperCutFence), (localize LSTRING(CutFence)), QPATHTOF(ui\wirecutter_ca.paa), _fncStatement, _fncCondition, {}, _x, {[0,0,0]}, 5.5] call EFUNC(interact_menu,createAction); [_helper, 0, [],_action] call EFUNC(interact_menu,addActionToObject); _helper setPosASL ((getPosASL _x) vectorAdd [0,0,1.25]); _addedHelpers pushBack _helper; diff --git a/addons/magazinerepack/CfgSounds.hpp b/addons/magazinerepack/CfgSounds.hpp index 1390397e5e8..a189c18b9c0 100644 --- a/addons/magazinerepack/CfgSounds.hpp +++ b/addons/magazinerepack/CfgSounds.hpp @@ -1,12 +1,12 @@ class CfgSounds { class GVAR(soundMagazineFinished) { name = QGVAR(soundMagazineFinished); - sound[]={QUOTE(PATHTOF(sounds\magrepack_finished.wav)),1,1}; + sound[]={QPATHTOF(sounds\magrepack_finished.wav),1,1}; titles[]={}; }; class GVAR(soundRoundFinished) { name = QGVAR(soundRoundFinished); - sound[] = {QUOTE(PATHTOF(sounds\magrepack_single.wav)),1,1}; + sound[] = {QPATHTOF(sounds\magrepack_single.wav),1,1}; titles[] = {}; }; }; diff --git a/addons/magazinerepack/CfgVehicles.hpp b/addons/magazinerepack/CfgVehicles.hpp index 78af19bcfe4..0bf4833bf0f 100644 --- a/addons/magazinerepack/CfgVehicles.hpp +++ b/addons/magazinerepack/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { exceptions[] = {"isNotInside", "isNotSitting"}; insertChildren = QUOTE(_this call FUNC(getMagazineChildren)); priority = -2; - icon = QUOTE(PATHTOF(UI\repack_ca.paa)); + icon = QPATHTOF(UI\repack_ca.paa); }; }; }; diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a64c8e014d9..e45f041ffac 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -82,12 +82,12 @@ #define TYPE_BACKPACK 901 #ifdef DISABLE_COMPILE_CACHE - #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)) + #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QPATHTOF(functions\DOUBLES(fnc,fncName).sqf) #else - #define PREP(fncName) [QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)), QFUNC(fncName)] call CBA_fnc_compileFunction + #define PREP(fncName) [QPATHTOF(functions\DOUBLES(fnc,fncName).sqf), QFUNC(fncName)] call CBA_fnc_compileFunction #endif -#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QUOTE(PATHTOF(folder\__PREP__.sqf)) +#define PREP_MODULE(folder) [] call compile preprocessFileLineNumbers QPATHTOF(folder\__PREP__.sqf) #define HASH_CREATE ([] call EFUNC(common,hashCreate)) #define HASH_SET(hash, key, val) ([hash, key, val, __FILE__, __LINE__] call EFUNC(common,hashSet)) diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index df52756eee6..16eba79cb29 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -24,7 +24,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = PATHTOF(UI\Icon_Module_Map_ca.paa); + icon = QPATHTOF(UI\Icon_Module_Map_ca.paa); class Arguments { class MapIllumination { displayName = CSTRING(MapIllumination_DisplayName); @@ -84,7 +84,7 @@ class CfgVehicles { scope = 2; isGlobal = 0; isSingular = 1; - icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa); + icon = QPATHTOF(UI\Icon_Module_BFTracking_ca.paa); class Arguments { class Enabled { displayName = CSTRING(BFT_Enabled_DisplayName); diff --git a/addons/map_gestures/CfgVehicles.hpp b/addons/map_gestures/CfgVehicles.hpp index d4c88883e69..5593d661819 100644 --- a/addons/map_gestures/CfgVehicles.hpp +++ b/addons/map_gestures/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { isGlobal = 0; isSingular = 1; author = ECSTRING(common,ACETeam); - icon = PATHTOF(ui\icon_module_map_gestures_ca.paa); + icon = QPATHTOF(ui\icon_module_map_gestures_ca.paa); class Arguments { class enabled { displayName = CSTRING(enabled_DisplayName); @@ -49,7 +49,7 @@ class CfgVehicles { function = QFUNC(moduleGroupSettings); isGlobal = 0; author = ECSTRING(common,ACETeam); - icon = PATHTOF(ui\icon_module_map_gestures_ca.paa); + icon = QPATHTOF(ui\icon_module_map_gestures_ca.paa); class Arguments { class leadColor { displayName = CSTRING(leadColor_displayName); diff --git a/addons/maptools/CfgWeapons.hpp b/addons/maptools/CfgWeapons.hpp index 5cec99bfb03..dc7a7046dd6 100644 --- a/addons/maptools/CfgWeapons.hpp +++ b/addons/maptools/CfgWeapons.hpp @@ -5,8 +5,8 @@ class CfgWeapons { class ACE_MapTools: ACE_ItemCore { displayName = CSTRING(Name); descriptionShort = CSTRING(Description); - model = QUOTE(PATHTOF(data\ace_MapTools.p3d)); - picture = PATHTOF(UI\maptool_item.paa); + model = QPATHTOF(data\ace_MapTools.p3d); + picture = QPATHTOF(UI\maptool_item.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 1; diff --git a/addons/maptools/MapGpsUI.hpp b/addons/maptools/MapGpsUI.hpp index 170f0d16200..c5b230f1634 100644 --- a/addons/maptools/MapGpsUI.hpp +++ b/addons/maptools/MapGpsUI.hpp @@ -26,7 +26,7 @@ class RscTitles { y = Y_gps; w = W_gps; h = H_gps; - text = PATHTOF(UI\mapGps.paa); + text = QPATHTOF(UI\mapGps.paa); colorBackground[] = {1, 1, 1, 1}; }; class heading: RscText{ diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index 5d11c6a6e96..530d213773e 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -35,10 +35,10 @@ if (!("ACE_MapTools" in items ACE_player)|| {GVAR(mapTool_Shown) == 0}) exitWith _rotatingTexture = ""; _textureWidth = 0; if (GVAR(mapTool_Shown) == 1) then { - _rotatingTexture = QUOTE(PATHTOF(data\mapToolRotatingNormal.paa)); + _rotatingTexture = QPATHTOF(data\mapToolRotatingNormal.paa); _textureWidth = TEXTURE_WIDTH_IN_M; } else { - _rotatingTexture = QUOTE(PATHTOF(data\mapToolRotatingSmall.paa)); + _rotatingTexture = QPATHTOF(data\mapToolRotatingSmall.paa); _textureWidth = TEXTURE_WIDTH_IN_M / 2; }; @@ -51,7 +51,7 @@ _scaleY = _scaleX * ((_resWidth / _resHeight) / _aspectRatio); //handle bad aspe _xPos = GVAR(mapTool_pos) select 0; _yPos = (GVAR(mapTool_pos) select 1) + _textureWidth * CENTER_OFFSET_Y_PERC; -_theMap drawIcon [QUOTE(PATHTOF(data\mapToolFixed.paa)), [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, 0, "", 0]; +_theMap drawIcon [QPATHTOF(data\mapToolFixed.paa), [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, 0, "", 0]; // Position and rotation of the rotating part _xPos = (GVAR(mapTool_pos) select 0) + sin(GVAR(mapTool_angle)) * _textureWidth * CENTER_OFFSET_Y_PERC; diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp index 59342033333..900e6cb26c3 100644 --- a/addons/medical/ACE_Medical_Actions.hpp +++ b/addons/medical/ACE_Medical_Actions.hpp @@ -6,7 +6,7 @@ class ACE_Head { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { displayName = CSTRING(Bandage); @@ -16,7 +16,7 @@ class ACE_Head { EXCEPTIONS showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical class FieldDressing { @@ -27,28 +27,28 @@ class ACE_Head { EXCEPTIONS showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { displayName = CSTRING(Actions_CheckPulse); @@ -83,7 +83,7 @@ class ACE_Torso { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { displayName = CSTRING(Bandage); @@ -94,7 +94,7 @@ class ACE_Torso { showDisabled = 1; priority = 2; enableInside = 1; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PlaceInBodyBag { displayName = CSTRING(PlaceInBodyBag); @@ -115,7 +115,7 @@ class ACE_Torso { showDisabled = 1; priority = 2; enableInside = 1; - icon = PATHTOF(UI\icons\triageCard.paa); + icon = QPATHTOF(UI\icons\triageCard.paa); }; class Diagnose { displayName = CSTRING(Actions_Diagnose); @@ -138,35 +138,35 @@ class ACE_Torso { showDisabled = 0; priority = 2; enableInside = 1; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class SurgicalKit: fieldDressing { displayName = CSTRING(Use_SurgicalKit); condition = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'SurgicalKit')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\surgicalKit.paa); + icon = QPATHTOF(UI\icons\surgicalKit.paa); }; class PersonalAidKit: fieldDressing { displayName = CSTRING(Use_Aid_Kit); @@ -190,7 +190,7 @@ class ACE_ArmLeft { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { @@ -201,7 +201,7 @@ class ACE_ArmLeft { EXCEPTIONS showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -213,70 +213,70 @@ class ACE_ArmLeft { EXCEPTIONS showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Adenosine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class BloodIV: fieldDressing { displayName = CSTRING(Actions_Blood4_1000); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\iv.paa); + icon = QPATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { displayName = CSTRING(Actions_Blood4_500); @@ -353,7 +353,7 @@ class ACE_ArmRight { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { @@ -364,7 +364,7 @@ class ACE_ArmRight { EXCEPTIONS showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -376,14 +376,14 @@ class ACE_ArmRight { EXCEPTIONS showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -402,14 +402,14 @@ class ACE_ArmRight { condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { @@ -417,7 +417,7 @@ class ACE_ArmRight { condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); @@ -436,7 +436,7 @@ class ACE_ArmRight { condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\iv.paa); + icon = QPATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { displayName = CSTRING(Actions_Blood4_500); @@ -514,7 +514,7 @@ class ACE_LegLeft { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { @@ -525,7 +525,7 @@ class ACE_LegLeft { EXCEPTIONS showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; @@ -538,14 +538,14 @@ class ACE_LegLeft { EXCEPTIONS showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -564,28 +564,28 @@ class ACE_LegLeft { condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { displayName = CSTRING(Inject_Epinephrine); @@ -598,7 +598,7 @@ class ACE_LegLeft { condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\iv.paa); + icon = QPATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { displayName = CSTRING(Actions_Blood4_500); @@ -662,7 +662,7 @@ class ACE_LegRight { ACTION_CONDITION modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction)); EXCEPTIONS - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); distance = MEDICAL_ACTION_DISTANCE; class Bandage { @@ -673,7 +673,7 @@ class ACE_LegRight { EXCEPTIONS showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; @@ -686,14 +686,14 @@ class ACE_LegRight { EXCEPTIONS showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -712,21 +712,21 @@ class ACE_LegRight { condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); @@ -745,7 +745,7 @@ class ACE_LegRight { condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment)); EXCEPTIONS - icon = PATHTOF(UI\icons\iv.paa); + icon = QPATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { displayName = CSTRING(Actions_Blood4_500); diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index 54a8ba60f52..fca025adcba 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -4,11 +4,11 @@ class Medical { exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); condition = "true"; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class ACE_Head { displayName = CSTRING(Head); - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,0,_this select 3)] call FUNC(modifyMedicalAction)); @@ -23,7 +23,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical class FieldDressing { @@ -34,28 +34,28 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { displayName = CSTRING(Actions_CheckPulse); @@ -81,7 +81,7 @@ class Medical { modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class Bandage { displayName = CSTRING(Bandage); @@ -91,7 +91,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class TriageCard { @@ -102,7 +102,7 @@ class Medical { statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\triageCard.paa); + icon = QPATHTOF(UI\icons\triageCard.paa); }; // Advanced medical @@ -114,28 +114,28 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; }; class ACE_ArmLeft { @@ -145,7 +145,7 @@ class Medical { statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,2,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class Bandage { displayName = CSTRING(Bandage); @@ -155,7 +155,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -167,63 +167,63 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { displayName = CSTRING(Actions_Tourniquet); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Adenosine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { displayName = CSTRING(Inject_Epinephrine); condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class CheckPulse: fieldDressing { displayName = CSTRING(Actions_CheckPulse); @@ -252,7 +252,7 @@ class Medical { statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,3,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class Bandage { displayName = CSTRING(Bandage); @@ -262,7 +262,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -274,14 +274,14 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -300,21 +300,21 @@ class Medical { condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Adenosine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); @@ -355,7 +355,7 @@ class Medical { statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,4,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class Bandage { displayName = CSTRING(Bandage); @@ -365,7 +365,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; @@ -378,14 +378,14 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -404,28 +404,28 @@ class Medical { condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Adenosine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Epinephrine: Morphine { displayName = CSTRING(Inject_Epinephrine); @@ -447,7 +447,7 @@ class Medical { statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); modifierFunction = QUOTE([ARR_4(_target,_player,5,_this select 3)] call FUNC(modifyMedicalAction)); condition = "true"; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); class Bandage { displayName = CSTRING(Bandage); @@ -457,7 +457,7 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; @@ -470,14 +470,14 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\bandage.paa); + icon = QPATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\packingBandage.paa); + icon = QPATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -496,21 +496,21 @@ class Medical { condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\tourniquet.paa); + icon = QPATHTOF(UI\icons\tourniquet.paa); }; class Morphine: fieldDressing { displayName = CSTRING(Inject_Morphine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Adenosine: Morphine { displayName = CSTRING(Inject_Atropine); condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(canTreatCached)); exceptions[] = {"isNotInside"}; statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Adenosine')] call DFUNC(treatment)); - icon = PATHTOF(UI\icons\autoInjector.paa); + icon = QPATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { displayName = CSTRING(Inject_Atropine); diff --git a/addons/medical/CfgSounds.hpp b/addons/medical/CfgSounds.hpp index 6b5fa483441..9cc5faedf9c 100644 --- a/addons/medical/CfgSounds.hpp +++ b/addons/medical/CfgSounds.hpp @@ -1,37 +1,37 @@ class CfgSounds { class ACE_heartbeat_fast_1 { name = "ACE_heartbeat_fast_1"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_1.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\fast_1.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_fast_2 { name = "ACE_heartbeat_fast_2"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_2.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\fast_2.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_fast_3 { name = "ACE_heartbeat_fast_3"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\fast_3.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\fast_3.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_norm_1 { name = "ACE_heartbeat_norm_1"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_1.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\norm_1.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_norm_2 { name = "ACE_heartbeat_norm_2"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\norm_2.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\norm_2.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_slow_1 { name = "ACE_heartbeat_slow_1"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_1.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\slow_1.wav), "db+1", 1}; titles[] = {}; }; class ACE_heartbeat_slow_2 { name = "ACE_heartbeat_slow_2"; - sound[] = {QUOTE(PATHTOF(sounds\heart_beats\slow_2.wav)), "db+1", 1}; + sound[] = {QPATHTOF(sounds\heart_beats\slow_2.wav), "db+1", 1}; titles[] = {}; }; }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 86ad45296bd..fb64aa07e5d 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -14,7 +14,7 @@ class CfgVehicles { class ACE_moduleMedicalSettings: ACE_Module { scope = 2; displayName = CSTRING(MedicalSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(DFUNC(moduleMedicalSettings)); functionPriority = 1; @@ -156,7 +156,7 @@ class CfgVehicles { class ACE_moduleBasicMedicalSettings: ACE_Module { scope = 2; displayName = CSTRING(BasicMedicalSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(FUNC(moduleBasicMedicalSettings)); functionPriority = 10; @@ -198,7 +198,7 @@ class CfgVehicles { class ACE_moduleAdvancedMedicalSettings: ACE_Module { scope = 2; displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); functionPriority = 10; @@ -320,7 +320,7 @@ class CfgVehicles { class ACE_moduleReviveSettings: ACE_Module { scope = 2; displayName = CSTRING(ReviveSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(DFUNC(moduleReviveSettings)); functionPriority = 1; @@ -364,7 +364,7 @@ class CfgVehicles { class ACE_moduleAssignMedicRoles: Module_F { scope = 2; displayName = CSTRING(AssignMedicRoles_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicRoles)); functionPriority = 10; @@ -411,7 +411,7 @@ class CfgVehicles { class ACE_moduleAssignMedicVehicle: Module_F { scope = 2; displayName = CSTRING(AssignMedicVehicle_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalVehicle)); functionPriority = 10; @@ -455,7 +455,7 @@ class CfgVehicles { class ACE_moduleAssignMedicalFacility: Module_F { scope = 2; displayName = CSTRING(AssignMedicalFacility_Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(FUNC(moduleAssignMedicalFacility)); functionPriority = 10; @@ -534,7 +534,7 @@ class CfgVehicles { exceptions[] = {"isNotInside"}; condition = QUOTE((vehicle _target != _target && vehicle _target == vehicle _player) || GVAR(menuTypeStyle) == 1); statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); #undef EXCEPTIONS #undef ACTION_CONDITION @@ -549,7 +549,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionLoadUnit)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); exceptions[] = {"isNotDragging", "isNotCarrying"}; }; class GVAR(UnLoadPatient) { @@ -559,7 +559,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player, _target)] call DFUNC(actionUnloadUnit)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\icons\medical_cross.paa); + icon = QPATHTOF(UI\icons\medical_cross.paa); exceptions[] = {"isNotDragging", "isNotCarrying", "isNotInside"}; }; }; @@ -659,7 +659,7 @@ class CfgVehicles { scope = 1; scopeCurator = 2; side = -1; - model = QUOTE(PATHTOEF(apl,bodybag.p3d)); + model = QPATHTOEF(apl,bodybag.p3d); icon = ""; displayName = CSTRING(Bodybag_Display); EGVAR(dragging,canDrag) = 1; @@ -686,40 +686,40 @@ class CfgVehicles { scopeCurator = 0; displayName = " "; destrType = "DestructNo"; - model = QUOTE(PATHTOF(data\littergeneric.p3d)); + model = QPATHTOF(data\littergeneric.p3d); }; class ACE_MedicalLitter_clean: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_clean.p3d)); + model = QPATHTOF(data\littergeneric_clean.p3d); }; class ACE_MedicalLitter_bandage1: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_bandages1.p3d)); + model = QPATHTOF(data\littergeneric_bandages1.p3d); }; class ACE_MedicalLitter_bandage2: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_bandages2.p3d)); + model = QPATHTOF(data\littergeneric_bandages2.p3d); }; class ACE_MedicalLitter_bandage3: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_bandages3.p3d)); + model = QPATHTOF(data\littergeneric_bandages3.p3d); }; class ACE_MedicalLitter_packingBandage: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_packingBandage.p3d)); + model = QPATHTOF(data\littergeneric_packingBandage.p3d); }; class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_gloves.p3d)); + model = QPATHTOF(data\littergeneric_gloves.p3d); }; class ACE_MedicalLitter_adenosine: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_adenosine.p3d)); + model = QPATHTOF(data\littergeneric_adenosine.p3d); }; class ACE_MedicalLitter_atropine: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_atropine.p3d)); + model = QPATHTOF(data\littergeneric_atropine.p3d); }; class ACE_MedicalLitter_epinephrine: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_epinephrine.p3d)); + model = QPATHTOF(data\littergeneric_epinephrine.p3d); }; class ACE_MedicalLitter_morphine: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_morphine.p3d)); + model = QPATHTOF(data\littergeneric_morphine.p3d); }; class ACE_MedicalLitter_QuickClot: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_Quikclot.p3d)); + model = QPATHTOF(data\littergeneric_Quikclot.p3d); }; class Item_Base_F; class ACE_fieldDressingItem: Item_Base_F { @@ -880,7 +880,7 @@ class CfgVehicles { scopeCurator = 2; accuracy = 1000; displayName = CSTRING(medicalSupplyCrate); - model = PATHTOF(data\ace_medcrate.p3d); + model = QPATHTOF(data\ace_medcrate.p3d); author = ECSTRING(common,ACETeam); class TransportItems { MACRO_ADDITEM(ACE_fieldDressing,50); diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp index 4bd5452794f..7d9a273c6c5 100644 --- a/addons/medical/CfgWeapons.hpp +++ b/addons/medical/CfgWeapons.hpp @@ -22,8 +22,8 @@ class CfgWeapons { class ACE_ItemCore; class ACE_fieldDressing: ACE_ItemCore { scope = 2; - model = QUOTE(PATHTOF(data\bandage.p3d)); - picture = QUOTE(PATHTOF(ui\items\fieldDressing_x_ca.paa)); + model = QPATHTOF(data\bandage.p3d); + picture = QPATHTOF(ui\items\fieldDressing_x_ca.paa); displayName = CSTRING(Bandage_Basic_Display); descriptionShort = CSTRING(Bandage_Basic_Desc_Short); descriptionUse = CSTRING(Bandage_Basic_Desc_Use); @@ -34,8 +34,8 @@ class CfgWeapons { class ACE_packingBandage: ACE_ItemCore { scope = 2; displayName = CSTRING(Packing_Bandage_Display); - picture = QUOTE(PATHTOF(ui\items\packingBandage_x_ca.paa)); - model = QUOTE(PATHTOF(data\packingbandage.p3d)); + picture = QPATHTOF(ui\items\packingBandage_x_ca.paa); + model = QPATHTOF(data\packingbandage.p3d); descriptionShort = CSTRING(Packing_Bandage_Desc_Short); descriptionUse = CSTRING(Packing_Bandage_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -45,7 +45,7 @@ class CfgWeapons { class ACE_elasticBandage: ACE_ItemCore { scope = 2; displayName = CSTRING(Bandage_Elastic_Display); - picture = QUOTE(PATHTOF(ui\items\elasticBandage_x_ca.paa)); + picture = QPATHTOF(ui\items\elasticBandage_x_ca.paa); model = "\A3\Structures_F_EPA\Items\Medical\Bandage_F.p3d"; descriptionShort = CSTRING(Bandage_Elastic_Desc_Short); descriptionUse = CSTRING(Bandage_Elastic_Desc_Use); @@ -56,8 +56,8 @@ class CfgWeapons { class ACE_tourniquet: ACE_ItemCore { scope = 2; displayName = CSTRING(Tourniquet_Display); - picture = QUOTE(PATHTOF(ui\items\tourniquet_x_ca.paa)); - model = QUOTE(PATHTOF(data\tourniquet.p3d)); + picture = QPATHTOF(ui\items\tourniquet_x_ca.paa); + model = QPATHTOF(data\tourniquet.p3d); descriptionShort = CSTRING(Tourniquet_Desc_Short); descriptionUse = CSTRING(Tourniquet_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -67,8 +67,8 @@ class CfgWeapons { class ACE_morphine: ACE_ItemCore { scope = 2; displayName = CSTRING(Morphine_Display); - picture = QUOTE(PATHTOF(ui\items\morphine_x_ca.paa)); - model = QUOTE(PATHTOF(data\morphine.p3d)); + picture = QPATHTOF(ui\items\morphine_x_ca.paa); + model = QPATHTOF(data\morphine.p3d); descriptionShort = CSTRING(Morphine_Desc_Short); descriptionUse = CSTRING(Morphine_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -78,8 +78,8 @@ class CfgWeapons { class ACE_adenosine: ACE_ItemCore { scope = 2; displayName = CSTRING(Adenosine_Display); - picture = QUOTE(PATHTOF(ui\items\adenosine_x_ca.paa)); - model = QUOTE(PATHTOF(data\adenosine.p3d)); + picture = QPATHTOF(ui\items\adenosine_x_ca.paa); + model = QPATHTOF(data\adenosine.p3d); descriptionShort = CSTRING(adenosine_Desc_Short); descriptionUse = CSTRING(adenosine_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -89,8 +89,8 @@ class CfgWeapons { class ACE_atropine: ACE_ItemCore { scope = 2; displayName = CSTRING(Atropine_Display); - picture = QUOTE(PATHTOF(ui\items\atropine_x_ca.paa)); - model = QUOTE(PATHTOF(data\atropine.p3d)); + picture = QPATHTOF(ui\items\atropine_x_ca.paa); + model = QPATHTOF(data\atropine.p3d); descriptionShort = CSTRING(Atropine_Desc_Short); descriptionUse = CSTRING(Atropine_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -100,8 +100,8 @@ class CfgWeapons { class ACE_epinephrine: ACE_ItemCore { scope = 2; displayName = CSTRING(Epinephrine_Display); - picture = QUOTE(PATHTOF(ui\items\epinephrine_x_ca.paa)); - model = QUOTE(PATHTOF(data\epinephrine.p3d)); + picture = QPATHTOF(ui\items\epinephrine_x_ca.paa); + model = QPATHTOF(data\epinephrine.p3d); descriptionShort = CSTRING(Epinephrine_Desc_Short); descriptionUse = CSTRING(Epinephrine_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -112,10 +112,10 @@ class CfgWeapons { class ACE_plasmaIV: ACE_ItemCore { scope = 2; displayName = CSTRING(Plasma_IV); - model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d)); + model = QPATHTOF(data\IVBag_1000ml.p3d); hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_1000ml_ca.paa)) }; - picture = QUOTE(PATHTOF(ui\items\plasmaIV_x_ca.paa)); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_1000ml_ca.paa) }; + picture = QPATHTOF(ui\items\plasmaIV_x_ca.paa); descriptionShort = CSTRING(Plasma_IV_Desc_Short); descriptionUse = CSTRING(Plasma_IV_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -124,27 +124,27 @@ class CfgWeapons { }; class ACE_plasmaIV_500: ACE_plasmaIV { displayName = CSTRING(Plasma_IV_500); - model = QUOTE(PATHTOF(data\IVBag_500ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_500ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_500ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_500ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 5; }; }; class ACE_plasmaIV_250: ACE_plasmaIV { displayName = CSTRING(Plasma_IV_250); - model = QUOTE(PATHTOF(data\IVBag_250ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_plasma_250ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_250ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_plasma_250ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 2.5; }; }; class ACE_bloodIV: ACE_ItemCore { scope = 2; - model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d)); + model = QPATHTOF(data\IVBag_1000ml.p3d); displayName = CSTRING(Blood_IV); - picture = QUOTE(PATHTOF(ui\items\bloodIV_x_ca.paa)); + picture = QPATHTOF(ui\items\bloodIV_x_ca.paa); hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_1000ml_ca.paa)) }; + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_1000ml_ca.paa) }; descriptionShort = CSTRING(Blood_IV_Desc_Short); descriptionUse = CSTRING(Blood_IV_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -153,16 +153,16 @@ class CfgWeapons { }; class ACE_bloodIV_500: ACE_bloodIV { displayName = CSTRING(Blood_IV_500); - model = QUOTE(PATHTOF(data\IVBag_500ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_500ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_500ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_500ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 5; }; }; class ACE_bloodIV_250: ACE_bloodIV { displayName = CSTRING(Blood_IV_250); - model = QUOTE(PATHTOF(data\IVBag_250ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_blood_250ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_250ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_blood_250ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 2.5; }; @@ -170,10 +170,10 @@ class CfgWeapons { class ACE_salineIV: ACE_ItemCore { scope = 2; displayName = CSTRING(Saline_IV); - model = QUOTE(PATHTOF(data\IVBag_1000ml.p3d)); + model = QPATHTOF(data\IVBag_1000ml.p3d); hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_1000ml_ca.paa)) }; - picture = QUOTE(PATHTOF(ui\items\salineIV_x_ca.paa)); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_1000ml_ca.paa) }; + picture = QPATHTOF(ui\items\salineIV_x_ca.paa); descriptionShort = CSTRING(Saline_IV_Desc_Short); descriptionUse = CSTRING(Saline_IV_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -182,16 +182,16 @@ class CfgWeapons { }; class ACE_salineIV_500: ACE_salineIV { displayName = CSTRING(Saline_IV_500); - model = QUOTE(PATHTOF(data\IVBag_500ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_500ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_500ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_500ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 5; }; }; class ACE_salineIV_250: ACE_salineIV { displayName = CSTRING(Saline_IV_250); - model = QUOTE(PATHTOF(data\IVBag_250ml.p3d)); - hiddenSelectionsTextures[] = { QUOTE(PATHTOF(data\IVBag_saline_250ml_ca.paa)) }; + model = QPATHTOF(data\IVBag_250ml.p3d); + hiddenSelectionsTextures[] = { QPATHTOF(data\IVBag_saline_250ml_ca.paa) }; class ItemInfo: InventoryItem_Base_F { mass = 2.5; }; @@ -199,8 +199,8 @@ class CfgWeapons { class ACE_quikclot: ACE_ItemCore { scope = 2; displayName = CSTRING(QuikClot_Display); - model = QUOTE(PATHTOF(data\QuikClot.p3d)); - picture = QUOTE(PATHTOF(ui\items\quickclot_x_ca.paa)); + model = QPATHTOF(data\QuikClot.p3d); + picture = QPATHTOF(ui\items\quickclot_x_ca.paa); descriptionShort = CSTRING(QuikClot_Desc_Short); descriptionUse = CSTRING(QuikClot_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -210,7 +210,7 @@ class CfgWeapons { class ACE_personalAidKit: ACE_ItemCore { scope = 2; displayName = CSTRING(Aid_Kit_Display); - picture = QUOTE(PATHTOF(ui\items\personal_aid_kit_x_ca.paa)); + picture = QPATHTOF(ui\items\personal_aid_kit_x_ca.paa); descriptionShort = CSTRING(Aid_Kit_Desc_Short); descriptionUse = CSTRING(Aid_Kit_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -220,8 +220,8 @@ class CfgWeapons { class ACE_surgicalKit: ACE_ItemCore { scope=2; displayName= CSTRING(SurgicalKit_Display); - model = QUOTE(PATHTOF(data\surgical_kit.p3d)); - picture = QUOTE(PATHTOF(ui\items\surgicalKit_x_ca.paa)); + model = QPATHTOF(data\surgical_kit.p3d); + picture = QPATHTOF(ui\items\surgicalKit_x_ca.paa); descriptionShort = CSTRING(SurgicalKit_Desc_Short); descriptionUse = CSTRING(SurgicalKit_Desc_Use); class ItemInfo: InventoryItem_Base_F { @@ -231,8 +231,8 @@ class CfgWeapons { class ACE_bodyBag: ACE_ItemCore { scope=2; displayName= CSTRING(Bodybag_Display); - model = QUOTE(PATHTOF(data\bodybagItem.p3d)); - picture = QUOTE(PATHTOF(ui\items\bodybag_x_ca.paa)); + model = QPATHTOF(data\bodybagItem.p3d); + picture = QPATHTOF(ui\items\bodybag_x_ca.paa); descriptionShort = CSTRING(Bodybag_Desc_Short); descriptionUse = CSTRING(Bodybag_Desc_Use); class ItemInfo: InventoryItem_Base_F { diff --git a/addons/medical/functions/fnc_modifyMedicalAction.sqf b/addons/medical/functions/fnc_modifyMedicalAction.sqf index 02e59852971..f36a87855b3 100644 --- a/addons/medical/functions/fnc_modifyMedicalAction.sqf +++ b/addons/medical/functions/fnc_modifyMedicalAction.sqf @@ -24,10 +24,10 @@ if (GVAR(level) < 2 || {!([_target] call FUNC(hasMedicalEnabled))}) exitWith { _pointDamage = (_target getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]) select _selectionN; if (_pointDamage >= 0.8) exitWith { - _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))]; + _actionData set [2, QPATHTOF(UI\icons\medical_crossRed.paa)]; }; if (_pointDamage > 0) exitWith { - _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossYellow.paa))]; + _actionData set [2, QPATHTOF(UI\icons\medical_crossYellow.paa)]; }; }; @@ -36,6 +36,6 @@ _openWounds = _target getVariable [QGVAR(openWounds), []]; { _x params ["", "", "_selectionX", "_amountOf", "_x4"]; if (_amountOf > 0 && {(_selectionN == _selectionX)} && {_x4 > 0}) exitWith { - _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))]; + _actionData set [2, QPATHTOF(UI\icons\medical_crossRed.paa)]; }; } forEach _openWounds; diff --git a/addons/medical/ui/RscTitles.hpp b/addons/medical/ui/RscTitles.hpp index 520a431d7bf..76c1da46c02 100644 --- a/addons/medical/ui/RscTitles.hpp +++ b/addons/medical/ui/RscTitles.hpp @@ -19,34 +19,34 @@ class Rsctitles { colorBackground[] = {1,1,1,1}; colorPicture[] = {1,1,1,1}; colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOF(ui\body_background.paa)); + text = QPATHTOF(ui\body_background.paa); }; class bodyImgHead: bodyImgBackground { idc = 50; colorBackground[] = {1,1,1,1}; colorPicture[] = {1,1,1,1}; colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOF(ui\body_head.paa)); + text = QPATHTOF(ui\body_head.paa); }; class bodyImgTorso: bodyImgHead { idc = 51; - text = QUOTE(PATHTOF(ui\body_torso.paa)); + text = QPATHTOF(ui\body_torso.paa); }; class bodyImgArms_l: bodyImgHead { idc = 52; - text = QUOTE(PATHTOF(ui\body_arm_left.paa)); + text = QPATHTOF(ui\body_arm_left.paa); }; class bodyImgArms_r: bodyImgHead { idc = 53; - text = QUOTE(PATHTOF(ui\body_arm_right.paa)); + text = QPATHTOF(ui\body_arm_right.paa); }; class bodyImgLegs_l: bodyImgHead { idc = 54; - text = QUOTE(PATHTOF(ui\body_leg_left.paa)); + text = QPATHTOF(ui\body_leg_left.paa); }; class bodyImgLegs_r: bodyImgHead { idc = 55; - text = QUOTE(PATHTOF(ui\body_leg_right.paa)); + text = QPATHTOF(ui\body_leg_right.paa); }; class InjuryListLabel { idc = 199; diff --git a/addons/medical/ui/triagecard.hpp b/addons/medical/ui/triagecard.hpp index 1122c2e9421..6a5138def8b 100644 --- a/addons/medical/ui/triagecard.hpp +++ b/addons/medical/ui/triagecard.hpp @@ -30,11 +30,11 @@ class GVAR(triageCard) { SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; colorText[] = {1,1,0,1}; colorBackground[] = {0,0,0,0}; - text = QUOTE(PATHTOF(ui\triage_card_corner_l.paa)); + text = QPATHTOF(ui\triage_card_corner_l.paa); }; class cornor_top_r: cornor_top_l { x = "20 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(ui\triage_card_corner_r.paa)); + text = QPATHTOF(ui\triage_card_corner_r.paa); }; class TriageCardLabel { diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp index d2bbf55fd1b..1918511566b 100644 --- a/addons/medical_menu/CfgVehicles.hpp +++ b/addons/medical_menu/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_moduleMedicalMenuSettings: ACE_Module { scope = 2; displayName = CSTRING(module_DisplayName); - icon = QUOTE(PATHTOEF(medical,UI\Icon_Module_Medical_ca.paa)); + icon = QPATHTOEF(medical,UI\Icon_Module_Medical_ca.paa); category = "ACE_medical"; function = QUOTE(DFUNC(module)); functionPriority = 1; @@ -50,7 +50,7 @@ class CfgVehicles { exceptions[] = {"isNotInside"}; condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); statement = QUOTE([_target] call DFUNC(openMenu)); - icon = PATHTOEF(medical,UI\icons\medical_cross.paa); + icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); }; }; @@ -63,7 +63,7 @@ class CfgVehicles { exceptions[] = {"isNotInside"}; condition = QUOTE([ARR_2(ACE_player,_target)] call FUNC(canOpenMenu)); statement = QUOTE([_target] call DFUNC(openMenu)); - icon = PATHTOEF(medical,UI\icons\medical_cross.paa); + icon = QPATHTOEF(medical,UI\icons\medical_cross.paa); }; }; }; diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index c443819caae..16c79e7c6a0 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -51,7 +51,7 @@ class GVAR(medicalMenu) { y = "2.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; h = "3.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - text = QUOTE(PATHTOF(data\background_img.paa)); + text = QPATHTOF(data\background_img.paa); colorText[] = {1, 1, 1, 0.0}; }; class CatagoryLeft: HeaderName { @@ -94,42 +94,42 @@ class GVAR(medicalMenu) { colorBackground[] = {0,0,0,1}; colorPicture[] = {1,1,1,1}; colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOF(data\icons\triage_card_small.paa)); + text = QPATHTOF(data\icons\triage_card_small.paa); }; class iconImg2: iconImg1 { idc = 112; x = "3 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\examine_patient_small.paa)); + text = QPATHTOF(data\icons\examine_patient_small.paa); }; class iconImg3: iconImg1 { idc = 113; x = "4.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\bandage_fracture_small.paa)); + text = QPATHTOF(data\icons\bandage_fracture_small.paa); }; class iconImg4: iconImg1 { idc = 114; x = "6 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\medication_small.paa)); + text = QPATHTOF(data\icons\medication_small.paa); }; class iconImg5: iconImg1 { idc = 115; x = "7.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\airway_management_small.paa)); + text = QPATHTOF(data\icons\airway_management_small.paa); }; class iconImg6: iconImg1 { idc = 116; x = "9 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\advanced_treatment_small.paa)); + text = QPATHTOF(data\icons\advanced_treatment_small.paa); }; class iconImg7: iconImg1 { idc = 117; x = "10.5 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\icon_carry.paa)); + text = QPATHTOF(data\icons\icon_carry.paa); }; class iconImg8: iconImg1 { idc = 118; x = "12 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - text = QUOTE(PATHTOF(data\icons\toggle_self_small.paa)); + text = QPATHTOF(data\icons\toggle_self_small.paa); }; @@ -274,7 +274,7 @@ class GVAR(medicalMenu) { colorBackground[] = {1,1,1,1}; colorPicture[] = {1,1,1,1}; colorText[] = {1,1,1,1}; - text = QUOTE(PATHTOEF(medical,ui\body_background.paa)); + text = QPATHTOEF(medical,ui\body_background.paa); }; class bodyImgHead: bodyImgBackground { idc = 50; @@ -286,28 +286,28 @@ class GVAR(medicalMenu) { colorBackground[] = {1,1,1,1}; colorPicture[] = {1,1,1,0.75}; colorText[] = {1,1,1,0.75}; - text = QUOTE(PATHTOEF(medical,ui\body_head.paa)); + text = QPATHTOEF(medical,ui\body_head.paa); }; class bodyImgTorso: bodyImgHead { idc = 51; - text = QUOTE(PATHTOEF(medical,ui\body_torso.paa)); + text = QPATHTOEF(medical,ui\body_torso.paa); }; class bodyImgArms_l: bodyImgHead { idc = 52; - text = QUOTE(PATHTOEF(medical,ui\body_arm_left.paa)); + text = QPATHTOEF(medical,ui\body_arm_left.paa); }; class bodyImgArms_r: bodyImgHead { idc = 53; - text = QUOTE(PATHTOEF(medical,ui\body_arm_right.paa)); + text = QPATHTOEF(medical,ui\body_arm_right.paa); }; class bodyImgLegs_l: bodyImgHead { idc = 54; - text = QUOTE(PATHTOEF(medical,ui\body_leg_left.paa)); + text = QPATHTOEF(medical,ui\body_leg_left.paa); }; class bodyImgLegs_r: bodyImgHead { idc = 55; - text = QUOTE(PATHTOEF(medical,ui\body_leg_right.paa)); + text = QPATHTOEF(medical,ui\body_leg_right.paa); }; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 3fcf92beaa6..cf596c97625 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -8,21 +8,21 @@ class CfgVehicles { displayName = CSTRING(configure); condition = QUOTE(([DISPLAY_MODE_DIALOG] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DIALOG}); statement = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(openDisplay)); - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + icon = QPATHTOF(UI\icon_microDAGR.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; class GVAR(show) { //Opens the mini map displayName = CSTRING(show); condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY}); statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay)); - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + icon = QPATHTOF(UI\icon_microDAGR.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; class GVAR(close) { displayName = CSTRING(closeUnit); condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + icon = QPATHTOF(UI\icon_microDAGR.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; @@ -39,7 +39,7 @@ class CfgVehicles { scope = 2; isGlobal = 0; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_microDAGR_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_microDAGR_ca.paa); functionPriority = 0; class Arguments { class MapDataAvailable { @@ -72,7 +72,7 @@ class CfgVehicles { displayName = CSTRING(itemName); author = ECSTRING(common,ACETeam); vehicleClass = "Items"; - icon = QUOTE(PATHTOF(UI\icon_microDAGR.paa)); + icon = QPATHTOF(UI\icon_microDAGR.paa); class TransportItems { MACRO_ADDITEM(ACE_microDAGR,1); }; diff --git a/addons/microdagr/CfgWeapons.hpp b/addons/microdagr/CfgWeapons.hpp index 6fa84b6e7b9..92ace96c53a 100644 --- a/addons/microdagr/CfgWeapons.hpp +++ b/addons/microdagr/CfgWeapons.hpp @@ -7,8 +7,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(itemName); descriptionShort = CSTRING(itemDescription); - model = QUOTE(PATHTOF(data\MicroDAGR.p3d)); - picture = QUOTE(PATHTOF(images\microDAGR_item.paa)); + model = QPATHTOF(data\MicroDAGR.p3d); + picture = QPATHTOF(images\microDAGR_item.paa); class ItemInfo: InventoryItem_Base_F { mass = 2; }; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index c918bcf4541..c11019cafb9 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -16,7 +16,7 @@ _closeCode = { if (GVAR(currentShowMode) == DISPLAY_MODE_CLOSED) exitWith {}; [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); }; -[(localize LSTRING(itemName)), QUOTE(PATHTOF(images\microDAGR_item.paa)), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); +[(localize LSTRING(itemName)), QPATHTOF(images\microDAGR_item.paa), _conditonCode, _toggleCode, _closeCode] call EFUNC(common,deviceKeyRegisterNew); //Add Eventhandler: diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf index dba6b54f181..9b461d6b64e 100644 --- a/addons/microdagr/functions/fnc_showApplicationPage.sqf +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -40,7 +40,7 @@ if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then { if (GVAR(currentWaypoint) == -2) then { (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa" } else { - (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QUOTE(PATHTOF(images\icon_menuMark.paa)); + (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QPATHTOF(images\icon_menuMark.paa); }; }; }; @@ -100,19 +100,19 @@ if (GVAR(currentApplicationPage) == APP_MODE_MARK) then { //Buttons pushed: if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then { - (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); + (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QPATHTOF(images\button_pushedDown.paa); } else { - (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); + (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QPATHTOF(images\button_pushedUp.paa); }; if (GVAR(currentApplicationPage) == APP_MODE_COMPASS) then { - (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); + (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QPATHTOF(images\button_pushedDown.paa); } else { - (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); + (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QPATHTOF(images\button_pushedUp.paa); }; if (GVAR(currentApplicationPage) == APP_MODE_MAP) then { - (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); + (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QPATHTOF(images\button_pushedDown.paa); } else { - (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); + (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QPATHTOF(images\button_pushedUp.paa); }; //Update the page now: diff --git a/addons/microdagr/gui_controls.hpp b/addons/microdagr/gui_controls.hpp index a8fbb8f83fe..c60201b34ed 100644 --- a/addons/microdagr/gui_controls.hpp +++ b/addons/microdagr/gui_controls.hpp @@ -10,7 +10,7 @@ class controlsBackground { }; class StatusBarBS: RscPicture { idc = -1; - text = QUOTE(PATHTOF(images\microDAGR_topBar.paa)); + text = QPATHTOF(images\microDAGR_topBar.paa); x = X_PART(0); y = Y_PART(0); w = W_PART(25); @@ -187,7 +187,7 @@ class controls { }; class selfIcon: RscPicture { idc = -1; - text = QUOTE(PATHTOF(images\icon_self.paa)); + text = QPATHTOF(images\icon_self.paa); x = W_PART(0.5); y = H_PART(2); w = W_PART(4); @@ -242,7 +242,7 @@ class controls { }; class CompasIcon: RscPicture { idc = -1; - text = QUOTE(PATHTOF(images\icon_infoCompass.paa)); + text = QPATHTOF(images\icon_infoCompass.paa); x = W_PART(0.5); y = H_PART(8.5); w = W_PART(2); @@ -284,7 +284,7 @@ class controls { class controls { class TimeIcon: RscPicture { idc = -1; - text = QUOTE(PATHTOF(images\icon_infoClock.paa)); + text = QPATHTOF(images\icon_infoClock.paa); x = W_PART(0.5); y = H_PART(3.5); w = W_PART(2); @@ -315,7 +315,7 @@ class controls { class controls { class TargetIcon: RscPicture { idc = IDC_MODEDISPLAY_TARGETICON; - text = QUOTE(PATHTOF(images\icon_menuMark.paa)); + text = QPATHTOF(images\icon_menuMark.paa); x = W_PART(0.5); y = H_PART(0.5); w = W_PART(2); @@ -440,7 +440,7 @@ class controls { class mapTrackButton: GVAR(RscActiveTextPicture) { onbuttonclick = QUOTE(['autotrack'] call FUNC(modeMapButtons)); idc = IDC_MODEMAP_MAPTRACKBUTTON; - text = QUOTE(PATHTOF(images\icon_mapTrack.paa)); + text = QPATHTOF(images\icon_mapTrack.paa); x = X_PART(11); y = Y_PART(18.75); w = W_PART(3); @@ -449,14 +449,14 @@ class controls { class mapZoomIn: mapTrackButton { onbuttonclick = QUOTE(['zoomin'] call FUNC(modeMapButtons)); idc = IDC_MODEMAP_MAPZOOMIN; - text = QUOTE(PATHTOF(images\icon_mapPlus.paa)); + text = QPATHTOF(images\icon_mapPlus.paa); color[] = {1,1,1,0.4}; x = X_PART(4); }; class mapZoomOut: mapTrackButton { onbuttonclick = QUOTE(['zoomout'] call FUNC(modeMapButtons)); idc = IDC_MODEMAP_MAPZOOMOUT; - text = QUOTE(PATHTOF(images\icon_mapMinus.paa)); + text = QPATHTOF(images\icon_mapMinus.paa); color[] = {1,1,1,0.4}; x = X_PART(18); }; @@ -472,7 +472,7 @@ class controls { class Controls { class ButtonTL: GVAR(RscActiveTextPicture) { idc = -1; - text = QUOTE(PATHTOF(images\icon_menuMark.paa)); + text = QPATHTOF(images\icon_menuMark.paa); x = W_PART(3); y = H_PART(1.5); w = W_PART(8); @@ -480,7 +480,7 @@ class controls { onbuttonclick = QUOTE([4] call FUNC(saveCurrentAndSetNewMode)); }; class ButtonTR: ButtonTL { - text = QUOTE(PATHTOF(images\icon_menuWaypoints.paa)); + text = QPATHTOF(images\icon_menuWaypoints.paa); x = W_PART(14); y = H_PART(1.5); onbuttonclick = QUOTE([5] call FUNC(saveCurrentAndSetNewMode)); @@ -492,7 +492,7 @@ class controls { onbuttonclick = QUOTE(_this call FUNC(appMenuButtonConnectRangefinder)); }; class ButtonBR: ButtonTL { - text = QUOTE(PATHTOF(images\icon_menuSettings.paa)); + text = QPATHTOF(images\icon_menuSettings.paa); x = W_PART(14); y = H_PART(10.5); onbuttonclick = QUOTE([6] call FUNC(saveCurrentAndSetNewMode)); @@ -555,7 +555,7 @@ class controls { }; class DeleteButton: GVAR(RscActiveTextPicture) { idc = -1; - text = QUOTE(PATHTOF(images\icon_deleteButton.paa)); + text = QPATHTOF(images\icon_deleteButton.paa); x = W_PART(20); y = H_PART(2.75); w = W_PART(2); @@ -717,7 +717,7 @@ class controls { class ButtonBG0: RscPicture { idc = IDC_BUTTONBG0; - text = QUOTE(PATHTOF(images\button_pushedDown.paa)); + text = QPATHTOF(images\button_pushedDown.paa); x = X_PART(0 * (25/3)); y = Y_PART(21); w = W_PART((25/3)); @@ -733,7 +733,7 @@ class controls { }; class ButtonIcon0: GVAR(RscActiveTextPicture) { idc = -1; - text = QUOTE(PATHTOF(images\icon_info.paa)); + text = QPATHTOF(images\icon_info.paa); x = X_PART(0 * (25/3)); y = Y_PART(21); w = W_PART((25/3)); @@ -741,19 +741,19 @@ class controls { onbuttonclick = QUOTE([APP_MODE_INFODISPLAY] call FUNC(saveCurrentAndSetNewMode)); }; class ButtonIcon1: ButtonIcon0 { - text = QUOTE(PATHTOF(images\icon_compass.paa)); + text = QPATHTOF(images\icon_compass.paa); x = X_PART(1 * (25/3)); onbuttonclick = QUOTE([APP_MODE_COMPASS] call FUNC(saveCurrentAndSetNewMode)); }; class ButtonIcon2: ButtonIcon0 { - text = QUOTE(PATHTOF(images\icon_map.paa)); + text = QPATHTOF(images\icon_map.paa); x = X_PART(2 * (25/3)); onbuttonclick = QUOTE([APP_MODE_MAP] call FUNC(saveCurrentAndSetNewMode)); }; //At the end: The Big Shell overlay class MicroDagrShell: RscPicture { idc = IDC_MICRODAGRSHELL; - text = QUOTE(PATHTOF(images\microDAGR_shellPicture.paa)); + text = QPATHTOF(images\microDAGR_shellPicture.paa); x = X_PART(-14.77); y = Y_PART(-5.875); w = W_PART(53.62); diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index ebf0b04f663..c53398905f3 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { class ACE_moduleAmbianceSound: Module_F { scope = 2; displayName = CSTRING(AmbianceSounds_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa); category = "ACE_missionModules"; function = QUOTE(FUNC(moduleAmbianceSound)); functionPriority = 1; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index fa6667f874e..75b02771925 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { condition = QUOTE(_this call FUNC(rangeTableCanUse)); statement = QUOTE(_this call FUNC(rangeTableOpen)); priority = 0; - icon = QUOTE(PATHTOF(UI\icon_rangeTable.paa)); + icon = QPATHTOF(UI\icon_rangeTable.paa); exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; @@ -102,7 +102,7 @@ class CfgVehicles { scope = 2; isGlobal = 0; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_mk6_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_mk6_ca.paa); functionPriority = 0; class Arguments { class airResistanceEnabled { diff --git a/addons/mk6mortar/CfgWeapons.hpp b/addons/mk6mortar/CfgWeapons.hpp index f535840e993..cb5454321de 100644 --- a/addons/mk6mortar/CfgWeapons.hpp +++ b/addons/mk6mortar/CfgWeapons.hpp @@ -7,7 +7,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(rangetable_name); descriptionShort = CSTRING(rangetable_description); - picture = QUOTE(PATHTOF(UI\icon_rangeTable.paa)); + picture = QPATHTOF(UI\icon_rangeTable.paa); class ItemInfo: InventoryItem_Base_F { mass = 0.5; }; diff --git a/addons/mk6mortar/RscRangeTable.hpp b/addons/mk6mortar/RscRangeTable.hpp index 6bf0e516199..c719dd7ee45 100644 --- a/addons/mk6mortar/RscRangeTable.hpp +++ b/addons/mk6mortar/RscRangeTable.hpp @@ -7,7 +7,7 @@ class ACE_82mm_RangeTable_Dialog { class ControlsBackground { class TableBackground: RscPicture { idc = -1; - text = QUOTE(PATHTOF(UI\RangeTable_background.paa)); + text = QPATHTOF(UI\RangeTable_background.paa); x = "18 *(safeZoneH / 40) + (safezoneX + (safezoneW - safeZoneH)/2)"; y = "1 * ((safeZoneH / 1.2) / 25) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2)"; w = "16.2634559672906 * (safeZoneH / 40)"; diff --git a/addons/mk6mortar/cfgMagazines.hpp b/addons/mk6mortar/cfgMagazines.hpp index 679539e1a21..a726bc5a9f1 100644 --- a/addons/mk6mortar/cfgMagazines.hpp +++ b/addons/mk6mortar/cfgMagazines.hpp @@ -8,8 +8,8 @@ class cfgMagazines { displayName = CSTRING(magazine_HE_displayName); displayNameShort = ""; descriptionShort = CSTRING(magazine_descriptionShort); - model = PATHTOF(data\l16_ammo_he.p3d); - picture = PATHTOF(UI\w_l16_ammo_he_ca.paa); + model = QPATHTOF(data\l16_ammo_he.p3d); + picture = QPATHTOF(UI\w_l16_ammo_he_ca.paa); mass = 50; }; class 8Rnd_82mm_Mo_Smoke_white; @@ -21,8 +21,8 @@ class cfgMagazines { displayName = CSTRING(magazine_Smoke_displayName); displayNameShort = ""; descriptionShort = CSTRING(magazine_descriptionShort); - model = PATHTOF(data\l16_ammo_smk_white.p3d); - picture = PATHTOF(UI\w_l16_ammo_smk_white_ca.paa); + model = QPATHTOF(data\l16_ammo_smk_white.p3d); + picture = QPATHTOF(UI\w_l16_ammo_smk_white_ca.paa); mass = 50; }; class 8Rnd_82mm_Mo_Flare_white; @@ -34,8 +34,8 @@ class cfgMagazines { displayName = CSTRING(magazine_Illum_displayName); displayNameShort = ""; descriptionShort = CSTRING(magazine_descriptionShort); - model = PATHTOF(data\l16_ammo_illum.p3d); - picture = PATHTOF(UI\w_l16_ammo_illum_ca.paa); + model = QPATHTOF(data\l16_ammo_illum.p3d); + picture = QPATHTOF(UI\w_l16_ammo_illum_ca.paa); mass = 50; }; class 8Rnd_82mm_Mo_guided; @@ -47,8 +47,8 @@ class cfgMagazines { displayName = CSTRING(magazine_HE_Guided_displayName); displayNameShort = ""; descriptionShort = CSTRING(magazine_descriptionShort); - model = PATHTOF(data\l16_ammo_he.p3d); - picture = PATHTOF(UI\w_l16_ammo_he_ca.paa); + model = QPATHTOF(data\l16_ammo_he.p3d); + picture = QPATHTOF(UI\w_l16_ammo_he_ca.paa); mass = 50; }; class 8Rnd_82mm_Mo_LG; @@ -60,8 +60,8 @@ class cfgMagazines { displayName = CSTRING(magazine_HE_LaserGuided_displayName); displayNameShort = ""; descriptionShort = CSTRING(magazine_descriptionShort); - model = PATHTOF(data\l16_ammo_he.p3d); - picture = PATHTOF(UI\w_l16_ammo_he_ca.paa); + model = QPATHTOF(data\l16_ammo_he.p3d); + picture = QPATHTOF(UI\w_l16_ammo_he_ca.paa); mass = 50; }; }; diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 2d921973d4d..916b6269698 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -71,7 +71,7 @@ if (_lastFireMode != -1) then { _display = uiNamespace getVariable ["ACE_Mk6_RscWeaponRangeArtillery", displayNull]; if (isNull _display) exitWith {}; //It may be null for the first frame - _chargeText = format ["%1: %2 ", (localize LSTRING(rangetable_charge)), _currentChargeMode, QUOTE(PATHTOF(UI\ui_charges.paa))]; + _chargeText = format ["%1: %2 ", (localize LSTRING(rangetable_charge)), _currentChargeMode, QPATHTOF(UI\ui_charges.paa)]; //Hud should hidden in 3rd person _notGunnerView = cameraView != "GUNNER"; diff --git a/addons/mx2a/CfgWeapons.hpp b/addons/mx2a/CfgWeapons.hpp index 6f590e2ed4c..7ff5943a885 100644 --- a/addons/mx2a/CfgWeapons.hpp +++ b/addons/mx2a/CfgWeapons.hpp @@ -5,9 +5,9 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); displayName = CSTRING(DisplayName); descriptionShort = CSTRING(Description); - model = PATHTOF(data\ace_mx2a.p3d); - modelOptics = QUOTE(PATHTOEF(apl,LWTS_optic.p3d)); - picture = PATHTOF(UI\w_mx2a_ca.paa); + model = QPATHTOF(data\ace_mx2a.p3d); + modelOptics = QPATHTOEF(apl,LWTS_optic.p3d); + picture = QPATHTOF(UI\w_mx2a_ca.paa); opticsZoomMax = 0.1; distanceZoomMax = 120; opticsZoomMin = 0.05; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index 7ca13b5aeb0..6b8b8956ae2 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_NameTags_ca.paa); class Arguments { class showPlayerNames { displayName = CSTRING(ShowPlayerNames); diff --git a/addons/nametags/functions/common.hpp b/addons/nametags/functions/common.hpp index 6aeb24fc5ad..ef3706cd327 100644 --- a/addons/nametags/functions/common.hpp +++ b/addons/nametags/functions/common.hpp @@ -17,6 +17,6 @@ "a3\ui_f\data\IGUI\Cfg\Actions\getindriver_ca.paa", \ "a3\ui_f\data\IGUI\Cfg\Actions\getincommander_ca.paa", \ "a3\ui_f\data\IGUI\Cfg\Actions\getingunner_ca.paa", \ - QUOTE(PATHTOF(UI\icon_position_ffv.paa)), \ + QPATHTOF(UI\icon_position_ffv.paa), \ "a3\ui_f\data\IGUI\Cfg\Actions\getincargo_ca.paa" \ ] diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index 95c3f5228bb..f031882da75 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -33,7 +33,7 @@ _fnc_parameters = { private _icon = ""; private _size = 0; if (_drawSoundwave) then { - _icon = format [QUOTE(PATHTOF(UI\soundwave%1.paa)), floor random 10]; + _icon = format [QPATHTOF(UI\soundwave%1.paa), floor random 10]; _size = 1; } else { if (_drawRank && {rank _target != ""}) then { diff --git a/addons/nightvision/CfgVehicles.hpp b/addons/nightvision/CfgVehicles.hpp index 8b489ad64fc..8e119eabd0c 100644 --- a/addons/nightvision/CfgVehicles.hpp +++ b/addons/nightvision/CfgVehicles.hpp @@ -19,7 +19,7 @@ class CfgVehicles { class GVAR(ModuleSettings): ACE_Module { scope = 2; displayName = CSTRING(Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_ca.paa); category = "ACE"; function = QUOTE(FUNC(initModule)); functionPriority = 1; diff --git a/addons/nightvision/CfgWeapons.hpp b/addons/nightvision/CfgWeapons.hpp index 8a053a32629..72be31d8cf0 100644 --- a/addons/nightvision/CfgWeapons.hpp +++ b/addons/nightvision/CfgWeapons.hpp @@ -47,7 +47,7 @@ class CfgWeapons { }; class ACE_NVG_Wide: NVGoggles { author = ECSTRING(common,ACETeam); - modelOptics = QUOTE(PATHTOF(models\ACE_nvg_wide_optics)); + modelOptics = QPATHTOF(models\ACE_nvg_wide_optics); displayName = CSTRING(NVG_FullScreen); ACE_NightVision_grain = 0.75; ACE_NightVision_blur = 0.055; diff --git a/addons/optics/CfgRscTitles.hpp b/addons/optics/CfgRscTitles.hpp index 3bbd6b62bcd..42a2326a0e5 100644 --- a/addons/optics/CfgRscTitles.hpp +++ b/addons/optics/CfgRscTitles.hpp @@ -33,7 +33,7 @@ class RscInGameUI { style = 48; size = 1; sizeEx = 0; - text = QUOTE(PATHTOF(reticles\ace_shortdot_reticle_1.paa)); + text = QPATHTOF(reticles\ace_shortdot_reticle_1.paa); w = 0; h = 0; }; @@ -115,73 +115,73 @@ class RscInGameUI { class ACE_RscWeapon_Hamr: ACE_RscWeapon_base { class ReticleDay: ReticleDay { - text = QUOTE(PATHTOF(reticles\hamr-reticle65_ca.paa)); + text = QPATHTOF(reticles\hamr-reticle65_ca.paa); }; class ReticleNight: ReticleNight { - text = QUOTE(PATHTOF(reticles\hamr-reticle65Illum_ca.paa)); + text = QPATHTOF(reticles\hamr-reticle65Illum_ca.paa); }; class BodyDay: BodyDay { - text = QUOTE(PATHTOF(reticles\hamr-body_ca.paa)); + text = QPATHTOF(reticles\hamr-body_ca.paa); }; class BodyNight: BodyNight { - text = QUOTE(PATHTOF(reticles\hamr-bodyNight_ca.paa)); + text = QPATHTOF(reticles\hamr-bodyNight_ca.paa); }; }; class ACE_RscWeapon_Arco: ACE_RscWeapon_base { class ReticleDay: ReticleDay { - text = QUOTE(PATHTOF(reticles\arco-reticle65_ca.paa)); + text = QPATHTOF(reticles\arco-reticle65_ca.paa); }; class ReticleNight: ReticleNight { - text = QUOTE(PATHTOF(reticles\arco-reticle65Illum_ca.paa)); + text = QPATHTOF(reticles\arco-reticle65Illum_ca.paa); }; class BodyDay: BodyDay { - text = QUOTE(PATHTOF(reticles\arco-body_ca.paa)); + text = QPATHTOF(reticles\arco-body_ca.paa); }; class BodyNight: BodyNight { - text = QUOTE(PATHTOF(reticles\arco-bodyNight_ca.paa)); + text = QPATHTOF(reticles\arco-bodyNight_ca.paa); }; }; class ACE_RscWeapon_MRCO: ACE_RscWeapon_base { class ReticleDay: ReticleDay { - text = QUOTE(PATHTOF(reticles\mrco-reticle556_ca.paa)); + text = QPATHTOF(reticles\mrco-reticle556_ca.paa); }; class ReticleNight: ReticleNight { - text = QUOTE(PATHTOF(reticles\mrco-reticle556Illum_ca.paa)); + text = QPATHTOF(reticles\mrco-reticle556Illum_ca.paa); }; class BodyDay: BodyDay { - text = QUOTE(PATHTOF(reticles\mrco-body_ca.paa)); + text = QPATHTOF(reticles\mrco-body_ca.paa); }; class BodyNight: BodyNight { - text = QUOTE(PATHTOF(reticles\mrco-bodyNight_ca.paa)); + text = QPATHTOF(reticles\mrco-bodyNight_ca.paa); }; }; class ACE_RscWeapon_SOS: ACE_RscWeapon_base { class ReticleDay: ReticleDay { - text = QUOTE(PATHTOF(reticles\sos-reticleMLR_ca.paa)); + text = QPATHTOF(reticles\sos-reticleMLR_ca.paa); }; class ReticleNight: ReticleNight { - text = QUOTE(PATHTOF(reticles\sos-reticleMLRIllum_ca.paa)); + text = QPATHTOF(reticles\sos-reticleMLRIllum_ca.paa); }; class BodyDay: BodyDay { - text = QUOTE(PATHTOF(reticles\sos-body_ca.paa)); + text = QPATHTOF(reticles\sos-body_ca.paa); }; class BodyNight: BodyNight { - text = QUOTE(PATHTOF(reticles\sos-bodyNight_ca.paa)); + text = QPATHTOF(reticles\sos-bodyNight_ca.paa); }; }; }; diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp index 1be66d3aa25..3a810ebe263 100644 --- a/addons/optics/CfgWeapons.hpp +++ b/addons/optics/CfgWeapons.hpp @@ -38,7 +38,7 @@ class CfgWeapons { weaponInfoType = "ACE_RscWeaponZeroing"; class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_shortdot_optics.p3d)); + modelOptics = QPATHTOF(models\ace_shortdot_optics.p3d); class OpticsModes: OpticsModes { class Snip: Snip { @@ -65,10 +65,10 @@ class CfgWeapons { }; class ACE_optic_Hamr_2D: optic_Hamr { - GVAR(BodyDay) = QUOTE(PATHTOF(reticles\hamr-body_ca.paa)); - GVAR(BodyNight) = QUOTE(PATHTOF(reticles\hamr-bodyNight_ca.paa)); - GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\hamr-reticle65_ca.paa)); - GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\hamr-reticle65Illum_ca.paa)); + GVAR(BodyDay) = QPATHTOF(reticles\hamr-body_ca.paa); + GVAR(BodyNight) = QPATHTOF(reticles\hamr-bodyNight_ca.paa); + GVAR(ReticleDay) = QPATHTOF(reticles\hamr-reticle65_ca.paa); + GVAR(ReticleNight) = QPATHTOF(reticles\hamr-reticle65Illum_ca.paa); author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Hamr_2D"; @@ -76,7 +76,7 @@ class CfgWeapons { weaponInfoType = "ACE_RscWeapon_Hamr"; class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)); + modelOptics = QPATHTOF(models\ace_optics_reticle90.p3d); class OpticsModes: OpticsModes { class Hamr2Collimator: Hamr2Collimator {}; @@ -101,7 +101,7 @@ class CfgWeapons { displayName = CSTRING(hamr_pip); class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); + modelOptics = QPATHTOF(models\ace_optics_pip.p3d); }; }; @@ -115,10 +115,10 @@ class CfgWeapons { }; class ACE_optic_Arco_2D: optic_Arco { - GVAR(BodyDay) = QUOTE(PATHTOF(reticles\arco-body_ca.paa)); - GVAR(BodyNight) = QUOTE(PATHTOF(reticles\arco-bodyNight_ca.paa)); - GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\arco-reticle65_ca.paa)); - GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\arco-reticle65Illum_ca.paa)); + GVAR(BodyDay) = QPATHTOF(reticles\arco-body_ca.paa); + GVAR(BodyNight) = QPATHTOF(reticles\arco-bodyNight_ca.paa); + GVAR(ReticleDay) = QPATHTOF(reticles\arco-reticle65_ca.paa); + GVAR(ReticleNight) = QPATHTOF(reticles\arco-reticle65Illum_ca.paa); author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_Arco_2D"; @@ -126,7 +126,7 @@ class CfgWeapons { weaponInfoType = "ACE_RscWeapon_Arco"; class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)); + modelOptics = QPATHTOF(models\ace_optics_reticle90.p3d); class OpticsModes: OpticsModes { class ARCO2collimator: ARCO2collimator {}; @@ -150,7 +150,7 @@ class CfgWeapons { displayName = CSTRING(arco_pip); class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); + modelOptics = QPATHTOF(models\ace_optics_pip.p3d); }; }; @@ -164,10 +164,10 @@ class CfgWeapons { }; class ACE_optic_MRCO_2D: optic_MRCO { - GVAR(BodyDay) = QUOTE(PATHTOF(reticles\mrco-body_ca.paa)); - GVAR(BodyNight) = QUOTE(PATHTOF(reticles\mrco-bodyNight_ca.paa)); - GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\mrco-reticle556_ca.paa)); - GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\mrco-reticle556Illum_ca.paa)); + GVAR(BodyDay) = QPATHTOF(reticles\mrco-body_ca.paa); + GVAR(BodyNight) = QPATHTOF(reticles\mrco-bodyNight_ca.paa); + GVAR(ReticleDay) = QPATHTOF(reticles\mrco-reticle556_ca.paa); + GVAR(ReticleNight) = QPATHTOF(reticles\mrco-reticle556Illum_ca.paa); author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_MRCO_2D"; @@ -175,7 +175,7 @@ class CfgWeapons { weaponInfoType = "ACE_RscWeapon_MRCO"; class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)); + modelOptics = QPATHTOF(models\ace_optics_reticle90.p3d); class OpticsModes: OpticsModes { class MRCOcq: MRCOcq {}; @@ -200,7 +200,7 @@ class CfgWeapons { displayName = CSTRING(valdada_pip); class ItemInfo: ItemInfo { - modelOptics = QUOTE(PATHTOF(models\ace_optics_pip.p3d)); + modelOptics = QPATHTOF(models\ace_optics_pip.p3d); }; }; @@ -214,10 +214,10 @@ class CfgWeapons { }; class ACE_optic_SOS_2D: optic_SOS { - GVAR(BodyDay) = QUOTE(PATHTOF(reticles\sos-body_ca.paa)); - GVAR(BodyNight) = QUOTE(PATHTOF(reticles\sos-bodyNight_ca.paa)); - GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\sos-reticleMLR_ca.paa)); - GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\sos-reticleMLRIllum_ca.paa)); + GVAR(BodyDay) = QPATHTOF(reticles\sos-body_ca.paa); + GVAR(BodyNight) = QPATHTOF(reticles\sos-bodyNight_ca.paa); + GVAR(ReticleDay) = QPATHTOF(reticles\sos-reticleMLR_ca.paa); + GVAR(ReticleNight) = QPATHTOF(reticles\sos-reticleMLRIllum_ca.paa); author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_SOS_2D"; @@ -227,7 +227,7 @@ class CfgWeapons { class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { class Snip: Snip { - modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)),QUOTE(PATHTOF(models\ace_optics_reticle90.p3d))}; + modelOptics[] = {QPATHTOF(models\ace_optics_reticle90.p3d),QPATHTOF(models\ace_optics_reticle90.p3d)}; opticsDisablePeripherialVision = 0; }; class Iron: Iron {}; @@ -244,7 +244,7 @@ class CfgWeapons { class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { class Snip: Snip { - modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_pip.p3d)),QUOTE(PATHTOF(models\ace_optics_pip.p3d))}; + modelOptics[] = {QPATHTOF(models\ace_optics_pip.p3d),QPATHTOF(models\ace_optics_pip.p3d)}; }; class Iron: Iron {}; }; @@ -260,10 +260,10 @@ class CfgWeapons { }; class ACE_optic_LRPS_2D: optic_LRPS { - GVAR(BodyDay) = QUOTE(PATHTOF(reticles\sos-body_ca.paa)); - GVAR(BodyNight) = QUOTE(PATHTOF(reticles\sos-bodyNight_ca.paa)); - GVAR(ReticleDay) = QUOTE(PATHTOF(reticles\sos-reticleMLR_ca.paa)); - GVAR(ReticleNight) = QUOTE(PATHTOF(reticles\sos-reticleMLRIllum_ca.paa)); + GVAR(BodyDay) = QPATHTOF(reticles\sos-body_ca.paa); + GVAR(BodyNight) = QPATHTOF(reticles\sos-bodyNight_ca.paa); + GVAR(ReticleDay) = QPATHTOF(reticles\sos-reticleMLR_ca.paa); + GVAR(ReticleNight) = QPATHTOF(reticles\sos-reticleMLRIllum_ca.paa); author = ECSTRING(common,ACETeam); _generalMacro = "ACE_optic_LRPS_2D"; @@ -273,7 +273,7 @@ class CfgWeapons { class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { class Snip: Snip { - modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)),QUOTE(PATHTOF(models\ace_optics_reticle90.p3d))}; + modelOptics[] = {QPATHTOF(models\ace_optics_reticle90.p3d),QPATHTOF(models\ace_optics_reticle90.p3d)}; useModelOptics = 1; opticsZoomInit = 0.01234; opticsZoomMax = 0.04673; @@ -295,7 +295,7 @@ class CfgWeapons { class ItemInfo: ItemInfo { class OpticsModes: OpticsModes { class Snip: Snip { - modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_pip.p3d)),QUOTE(PATHTOF(models\ace_optics_pip.p3d))}; + modelOptics[] = {QPATHTOF(models\ace_optics_pip.p3d),QPATHTOF(models\ace_optics_pip.p3d)}; }; }; }; diff --git a/addons/optics/functions/fnc_onDrawScope2D.sqf b/addons/optics/functions/fnc_onDrawScope2D.sqf index 9ea038f877a..82602842ca8 100644 --- a/addons/optics/functions/fnc_onDrawScope2D.sqf +++ b/addons/optics/functions/fnc_onDrawScope2D.sqf @@ -19,7 +19,7 @@ if (!ctrlShown (_display displayCtrl 154)) exitWith { // @todo, all weapon types private ["_optic", "_isPIP"]; _optic = (primaryWeaponItems ACE_player) select 2; -_isPIP = (getText (configFile >> "CfgWeapons" >> _optic >> "ItemInfo" >> "modelOptics")) == QUOTE(PATHTOF(models\ace_optics_pip.p3d)); +_isPIP = (getText (configFile >> "CfgWeapons" >> _optic >> "ItemInfo" >> "modelOptics")) == QPATHTOF(models\ace_optics_pip.p3d); if (_isPIP) then { GVAR(camera) setPosATL positionCameraToWorld [0,0,0.4]; diff --git a/addons/overheating/CfgSounds.hpp b/addons/overheating/CfgSounds.hpp index c32fc02abf7..bd2831eeb60 100644 --- a/addons/overheating/CfgSounds.hpp +++ b/addons/overheating/CfgSounds.hpp @@ -1,26 +1,26 @@ class CfgSounds { class ACE_BarrelSwap { - sound[] = {QUOTE(PATHTOF(sounds\barrelswap.ogg)),5,1,200}; + sound[] = {QPATHTOF(sounds\barrelswap.ogg),5,1,200}; titles[] = {}; }; class GVAR(jamming_rifle) { name=QGVAR(jamming_rifle); - sound[]={QUOTE(PATHTOF(sounds\jamming_rifle.wav)),1,1}; + sound[]={QPATHTOF(sounds\jamming_rifle.wav),1,1}; titles[]={}; }; class GVAR(jamming_pistol) { name=QGVAR(jamming_pistol); - sound[]={QUOTE(PATHTOF(sounds\jamming_pistol.wav)),1,1}; + sound[]={QPATHTOF(sounds\jamming_pistol.wav),1,1}; titles[]={}; }; class GVAR(fixing_rifle) { name=QGVAR(fixing_rifle); - sound[]={QUOTE(PATHTOF(sounds\fixing_rifle.wav)),1,1}; + sound[]={QPATHTOF(sounds\fixing_rifle.wav),1,1}; titles[]={}; }; class GVAR(fixing_pistol) { name= QGVAR(fixing_pistol); - sound[]={QUOTE(PATHTOF(sounds\fixing_pistol.wav)),1,1}; + sound[]={QPATHTOF(sounds\fixing_pistol.wav),1,1}; titles[]={}; }; }; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index ec4b868b84c..9d7eee58b86 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { statement = QUOTE( [ARR_2(_player, currentMuzzle _player)] call FUNC(clearJam); ); showDisabled = 0; priority = 4; - icon = QUOTE(PATHTOF(UI\unjam_ca.paa)); + icon = QPATHTOF(UI\unjam_ca.paa); }; class ACE_SwapBarrel { displayName = CSTRING(SwapBarrel); @@ -19,7 +19,7 @@ class CfgVehicles { statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(swapBarrel); ); showDisabled = 0; priority = 3; - icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); + icon = QPATHTOF(UI\spare_barrel_ca.paa); }; class ACE_CheckTemperature { displayName = CSTRING(CheckTemperatureShort); @@ -28,7 +28,7 @@ class CfgVehicles { statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(CheckTemperature); ); showDisabled = 0; priority = 2.9; - icon = QUOTE(PATHTOF(UI\temp_ca.paa)); + icon = QPATHTOF(UI\temp_ca.paa); }; }; }; diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index f59c4d79112..12cfe6e4981 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -6,7 +6,7 @@ class CfgWeapons { displayname = CSTRING(SpareBarrelName); descriptionshort = CSTRING(SpareBarrelDescription); //model = ""; - picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); + picture = QPATHTOF(UI\spare_barrel_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 30; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 9c62e77f21b..99d0f9794b4 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -24,7 +24,7 @@ _player playAction QGVAR(GestureMountMuzzle); playSound "ACE_BarrelSwap"; // don't consume the barrel, but rotate through them. -[localize LSTRING(SwappedBarrel), QUOTE(PATHTOF(UI\spare_barrel_ca.paa))] call EFUNC(common,displayTextPicture); +[localize LSTRING(SwappedBarrel), QPATHTOF(UI\spare_barrel_ca.paa)] call EFUNC(common,displayTextPicture); // Publish the temperature variable _player setVariable [format [QGVAR(%1_temp), _weapon], 0, true]; diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index ff9196ca605..db673db100e 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -19,7 +19,7 @@ class CfgVehicles { statement = QUOTE([_player] call FUNC(cutParachute)); showDisabled = 0; priority = 2.9; - icon = QUOTE(PATHTOF(UI\cut_ca.paa)); + icon = QPATHTOF(UI\cut_ca.paa); }; }; }; diff --git a/addons/parachute/CfgWeapons.hpp b/addons/parachute/CfgWeapons.hpp index 4ca785a1eab..b5dad94425a 100644 --- a/addons/parachute/CfgWeapons.hpp +++ b/addons/parachute/CfgWeapons.hpp @@ -6,6 +6,6 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); descriptionShort = CSTRING(AltimeterDescription); displayName = CSTRING(AltimeterDisplayName); - picture = PATHTOF(UI\watch_altimeter.paa); + picture = QPATHTOF(UI\watch_altimeter.paa); }; }; diff --git a/addons/parachute/RscTitles.hpp b/addons/parachute/RscTitles.hpp index c6f41a73623..277db4d2f98 100644 --- a/addons/parachute/RscTitles.hpp +++ b/addons/parachute/RscTitles.hpp @@ -12,7 +12,7 @@ class RscTitles { class controls { class AltimeterImage: RscPicture { idc = 1200; - text = PATHTOF(UI\watch_altimeter.paa); + text = QPATHTOF(UI\watch_altimeter.paa); x = 0.118437 * safezoneW + safezoneX; y = 0.621 * safezoneH + safezoneY; w = 0.20625 * safezoneW; diff --git a/addons/rangecard/CfgVehicles.hpp b/addons/rangecard/CfgVehicles.hpp index 9e0793e36b0..e7df7014093 100644 --- a/addons/rangecard/CfgVehicles.hpp +++ b/addons/rangecard/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { distance = 2.0; condition = QUOTE(_target call FUNC(canCopy)); statement = QUOTE(_target call FUNC(updateClassNames)); - icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + icon = QPATHTOF(UI\RangeCard_Icon.paa); }; }; }; @@ -20,7 +20,7 @@ class CfgVehicles { statement = QUOTE(false call FUNC(openRangeCard)); showDisabled = 0; priority = 0.1; - icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + icon = QPATHTOF(UI\RangeCard_Icon.paa); exceptions[] = {"notOnMap"}; class GVAR(openCopy) { displayName = CSTRING(OpenRangeCardCopy); @@ -28,7 +28,7 @@ class CfgVehicles { statement = QUOTE(true call FUNC(openRangeCard)); showDisabled = 0; priority = 0.1; - icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + icon = QPATHTOF(UI\RangeCard_Icon.paa); exceptions[] = {"notOnMap"}; }; class GVAR(makeCopy) { @@ -37,7 +37,7 @@ class CfgVehicles { statement = QUOTE(GVAR(ammoClassCopy) = GVAR(ammoClass); GVAR(magazineClassCopy) = GVAR(magazineClass); GVAR(weaponClassCopy) = GVAR(ammoClass);); showDisabled = 0; priority = 0.1; - icon = QUOTE(PATHTOF(UI\RangeCard_Icon.paa)); + icon = QPATHTOF(UI\RangeCard_Icon.paa); exceptions[] = {"notOnMap"}; }; }; diff --git a/addons/rangecard/CfgWeapons.hpp b/addons/rangecard/CfgWeapons.hpp index 7195c0a008e..dfc643fa475 100644 --- a/addons/rangecard/CfgWeapons.hpp +++ b/addons/rangecard/CfgWeapons.hpp @@ -8,7 +8,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(Name); descriptionShort = CSTRING(Description); - picture = PATHTOF(UI\RangeCard_Icon.paa); + picture = QPATHTOF(UI\RangeCard_Icon.paa); icon = "iconObject_circle"; mapSize = 0.034; diff --git a/addons/rangecard/RscTitles.hpp b/addons/rangecard/RscTitles.hpp index c4da1862ca3..9db5a44dee3 100644 --- a/addons/rangecard/RscTitles.hpp +++ b/addons/rangecard/RscTitles.hpp @@ -79,7 +79,7 @@ class ACE_RangeCard_Dialog { h="1.62727"; colorBackground[]={1,1,1,1}; colorText[]={1,1,1,1}; - text=QUOTE(PATHTOF(UI\RangeCard.paa)); + text=QPATHTOF(UI\RangeCard.paa); }; class CAPTION_TEXT_1: RangeCard_RscText { idc=770000; diff --git a/addons/rearm/CfgVehicles.hpp b/addons/rearm/CfgVehicles.hpp index 8bee12de85c..c13218e4729 100644 --- a/addons/rearm/CfgVehicles.hpp +++ b/addons/rearm/CfgVehicles.hpp @@ -8,7 +8,7 @@ condition = QUOTE(_this call FUNC(canRearm)); \ statement = QUOTE(_player call FUNC(rearm)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_rearm_interact.paa); \ + icon = QPATHTOF(ui\icon_rearm_interact.paa); \ }; \ }; \ }; @@ -24,7 +24,7 @@ exceptions[] = {"isNotInside"}; \ showDisabled = 0; \ priority = 2; \ - icon = PATHTOF(ui\icon_rearm_interact.paa); \ + icon = QPATHTOF(ui\icon_rearm_interact.paa); \ }; \ class GVAR(StoreAmmo) { \ displayName = CSTRING(StoreAmmo); \ @@ -32,7 +32,7 @@ condition = QUOTE(_this call FUNC(canStoreAmmo)); \ statement = QUOTE(_this call FUNC(storeAmmo)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_rearm_interact.paa); \ + icon = QPATHTOF(ui\icon_rearm_interact.paa); \ }; \ }; \ }; @@ -44,7 +44,7 @@ class CfgVehicles { class ACE_moduleRearmSettings: ACE_Module { scope = 2; displayName = CSTRING(RearmSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(ui\icon_module_rearm.paa)); + icon = QPATHTOF(ui\icon_module_rearm.paa); category = "ACE_Logistics"; function = QFUNC(moduleRearmSettings); functionPriority = 1; @@ -188,7 +188,7 @@ class CfgVehicles { exceptions[] = {"isNotInside"}; showDisabled = 0; priority = 2; - icon = PATHTOF(ui\icon_rearm_interact.paa); + icon = QPATHTOF(ui\icon_rearm_interact.paa); }; }; }; diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index 665d217d39f..078dccea37e 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -9,41 +9,41 @@ statement = ""; \ showDisabled = 0; \ priority = 2; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ class GVAR(TakeNozzle) { \ displayName = CSTRING(TakeNozzle); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeNozzle)); \ statement = QUOTE([ARR_3(_player,_target,objNull)] call FUNC(TakeNozzle)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(CheckFuelCounter) { \ displayName = CSTRING(CheckFuelCounter); \ condition = "true"; \ statement = QUOTE([ARR_2(_player,_target)] call FUNC(readFuelCounter)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(CheckFuel) { \ displayName = CSTRING(CheckFuel); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canCheckFuel)); \ statement = QUOTE([ARR_2(_player,_target)] call FUNC(checkFuel)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(Connect) { \ displayName = CSTRING(Connect); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canConnectNozzle)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(connectNozzle)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(Return) { \ displayName = CSTRING(Return); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canReturnNozzle)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(returnNozzle)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ }; \ }; \ @@ -59,13 +59,13 @@ statement = ""; \ showDisabled = 0; \ priority = 2; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ class GVAR(Connect) { \ displayName = CSTRING(Connect); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canConnectNozzle)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(connectNozzle)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ }; \ }; \ @@ -80,34 +80,34 @@ statement = ""; \ showDisabled = 0; \ priority = 2; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ class GVAR(PickUpNozzle) { \ displayName = CSTRING(TakeNozzle); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTakeNozzle)); \ statement = QUOTE([ARR_3(_player,objNull,_target)] call FUNC(TakeNozzle)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(TurnOn) { \ displayName = CSTRING(TurnOn); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTurnOn)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(turnOn)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(TurnOff) { \ displayName = CSTRING(TurnOff); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canTurnOff)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(turnOff)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ class GVAR(Disconnect) { \ displayName = CSTRING(Disconnect); \ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDisconnect)); \ statement = QUOTE([ARR_2(_player,_target)] call DFUNC(disconnect)); \ exceptions[] = {"isNotInside"}; \ - icon = PATHTOF(ui\icon_refuel_interact.paa); \ + icon = QPATHTOF(ui\icon_refuel_interact.paa); \ }; \ }; \ }; @@ -119,7 +119,7 @@ class CfgVehicles { class ACE_moduleRefuelSettings: ACE_Module { scope = 2; displayName = CSTRING(RefuelSettings_Module_DisplayName); - icon = QUOTE(PATHTOF(ui\icon_module_refuel.paa)); + icon = QPATHTOF(ui\icon_module_refuel.paa); category = "ACE_Logistics"; function = QFUNC(moduleRefuelSettings); functionPriority = 1; @@ -146,7 +146,7 @@ class CfgVehicles { displayName = QGVAR(fuelNozzle); scope = 1; scopeCurator = 1; - model = PATHTOF(data\nozzle.p3d); + model = QPATHTOF(data\nozzle.p3d); }; class All; diff --git a/addons/refuel/functions/fnc_makeJerryCan.sqf b/addons/refuel/functions/fnc_makeJerryCan.sqf index 7a9552cfe3e..c826948fa2b 100644 --- a/addons/refuel/functions/fnc_makeJerryCan.sqf +++ b/addons/refuel/functions/fnc_makeJerryCan.sqf @@ -29,7 +29,7 @@ _target setVariable [QGVAR(source), _target, true]; // Main Action private _action = [QGVAR(Refuel), localize LSTRING(Refuel), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + QPATHTOF(ui\icon_refuel_interact.paa), {}, {true}, {}, @@ -41,7 +41,7 @@ private _action = [QGVAR(Refuel), // Add pickup _action = [QGVAR(PickUpNozzle), localize LSTRING(TakeNozzle), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + QPATHTOF(ui\icon_refuel_interact.paa), {[_player, objNull, _target] call FUNC(TakeNozzle)}, {[_player, _target] call FUNC(canTakeNozzle)}, {}, @@ -53,7 +53,7 @@ _action = [QGVAR(PickUpNozzle), // Add turnOn _action = [QGVAR(TurnOn), localize LSTRING(TurnOn), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + QPATHTOF(ui\icon_refuel_interact.paa), {[_player, _target] call FUNC(turnOn)}, {[_player, _target] call FUNC(canTurnOn)}, {}, @@ -65,7 +65,7 @@ _action = [QGVAR(TurnOn), // Add turnOff _action = [QGVAR(TurnOff), localize LSTRING(TurnOff), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + QPATHTOF(ui\icon_refuel_interact.paa), {[_player, _target] call FUNC(turnOff)}, {[_player, _target] call FUNC(canTurnOff)}, {}, @@ -77,7 +77,7 @@ _action = [QGVAR(TurnOff), // Add disconnect _action = [QGVAR(Disconnect), localize LSTRING(Disconnect), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + QPATHTOF(ui\icon_refuel_interact.paa), {[_player, _target] call FUNC(disconnect)}, {[_player, _target] call FUNC(canDisconnect)}, {}, diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 0a1d6f55dce..13379b865b1 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -22,7 +22,7 @@ class CfgVehicles { class ACE_moduleRepairSettings: ACE_Module { scope = 2; displayName = CSTRING(moduleName); - icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); + icon = QPATHTOF(ui\Icon_Module_Repair_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleRepairSettings); functionPriority = 1; @@ -120,7 +120,7 @@ class CfgVehicles { class ACE_moduleAssignEngineerRoles: Module_F { scope = 2; displayName = CSTRING(AssignEngineerRole_Module_DisplayName); - icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); + icon = QPATHTOF(ui\Icon_Module_Repair_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleAssignEngineer); functionPriority = 10; @@ -164,7 +164,7 @@ class CfgVehicles { class ACE_moduleAssignRepairVehicle: Module_F { scope = 2; displayName = CSTRING(AssignRepairVehicle_Module_DisplayName); - icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); + icon = QPATHTOF(ui\Icon_Module_Repair_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleAssignRepairVehicle); functionPriority = 10; @@ -236,7 +236,7 @@ class CfgVehicles { class ACE_moduleAddSpareParts: Module_F { scope = 2; displayName = CSTRING(AddSpareParts_Module_DisplayName); - icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); + icon = QPATHTOF(ui\Icon_Module_Repair_ca.paa); category = "ACE_Logistics"; function = QFUNC(moduleAddSpareParts); functionPriority = 10; @@ -322,7 +322,7 @@ class CfgVehicles { EGVAR(cargo,canLoad) = 1; author = "Hawkins"; scope = 2; - model = QUOTE(PATHTOF(data\ace_track.p3d)); + model = QPATHTOF(data\ace_track.p3d); displayName = CSTRING(SpareTrack); }; @@ -331,9 +331,9 @@ class CfgVehicles { EGVAR(cargo,canLoad) = 1; author = "Hawkins"; scope = 2; - model = QUOTE(PATHTOF(data\ace_wheel.p3d)); + model = QPATHTOF(data\ace_wheel.p3d); displayName = CSTRING(SpareWheel); - picture = QUOTE(PATHTOF(ui\tire_ca.paa)); + picture = QPATHTOF(ui\tire_ca.paa); }; // disable vanilla repair diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 4650e8ffbe1..103fab05374 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { function = QFUNC(module); scope = 2; isGlobal = 0; - icon = QUOTE(PATHTOF(UI\Icon_Module_Respawn_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Respawn_ca.paa); class Arguments { class SavePreDeathGear { @@ -40,7 +40,7 @@ class CfgVehicles { function = QFUNC(moduleFriendlyFire); scope = 2; isGlobal = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_FriendlyFire_ca.paa); class Arguments {}; class ModuleDescription { @@ -55,7 +55,7 @@ class CfgVehicles { function = QFUNC(moduleRallypoint); scope = 2; isGlobal = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Rallypoint_ca.paa); class Arguments {}; class ModuleDescription { diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index 64d62ad4244..86eee7be4ff 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -13,7 +13,7 @@ class CfgVehicles { exceptions[] = {"isNotSwimming"}; showDisabled = 0; priority = 4; - icon = PATHTOF(UI\icon_sandbag_ca.paa); + icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; }; }; @@ -53,14 +53,14 @@ class CfgVehicles { author = ECSTRING(common,ACETeam); scope = 2; side = 3; - model = PATHTOF(data\ace_sandbag_build.p3d); + model = QPATHTOF(data\ace_sandbag_build.p3d); displayName = CSTRING(sandbag_displayName); vehicleClass = "ACE_Logistics_Items"; typicalCargo[] = {}; armor = 12000; // Withstand 200 5.56 bullets before sandbag hull is cheese mapSize = 0.4; nameSound = "Bunker"; - icon = PATHTOF(UI\icon_sandbag_ca.paa); + icon = QPATHTOF(UI\icon_sandbag_ca.paa); accuracy = 1000; destrType = "DestructDefault"; @@ -90,7 +90,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\icon_sandbag_ca.paa); + icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; }; }; @@ -98,7 +98,7 @@ class CfgVehicles { class ACE_SandbagObject_NoGeo: ACE_SandbagObject { scope = 1; - model = PATHTOF(data\ace_sandbag_nogeo.p3d); + model = QPATHTOF(data\ace_sandbag_nogeo.p3d); }; class Box_NATO_Support_F; diff --git a/addons/sandbag/CfgWeapons.hpp b/addons/sandbag/CfgWeapons.hpp index 1a26fc78d41..870ce9c78d5 100644 --- a/addons/sandbag/CfgWeapons.hpp +++ b/addons/sandbag/CfgWeapons.hpp @@ -7,8 +7,8 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(sandbagEmpty_displayName); - model = PATHTOF(data\ace_sandbag_m.p3d); - picture = PATHTOF(data\m_sandbag_ca.paa); + model = QPATHTOF(data\ace_sandbag_m.p3d); + picture = QPATHTOF(data\m_sandbag_ca.paa); class ItemInfo: InventoryItem_Base_F { mass = 8; @@ -19,8 +19,8 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); scope = 2; displayName = CSTRING(sandbag_displayName); - model = PATHTOF(data\ace_sandbag_build.p3d); - picture = PATHTOF(data\m_sandbag_ca.paa); + model = QPATHTOF(data\ace_sandbag_build.p3d); + picture = QPATHTOF(data\m_sandbag_ca.paa); class ItemInfo: InventoryItem_Base_F { mass = 160; diff --git a/addons/scopes/CfgSounds.hpp b/addons/scopes/CfgSounds.hpp index 9063c7f730f..2da106d79bf 100644 --- a/addons/scopes/CfgSounds.hpp +++ b/addons/scopes/CfgSounds.hpp @@ -1,12 +1,12 @@ class CfgSounds { class ACE_Sound_Click; class ACE_Scopes_Click_1: ACE_Sound_Click { - sound[] = {QUOTE(PATHTOF(sounds\ACE_scopes_click.wav)),3, 2, 200}; + sound[] = {QPATHTOF(sounds\ACE_scopes_click.wav),3, 2, 200}; }; class ACE_Scopes_Click_2: ACE_Scopes_Click_1 { - sound[] = {QUOTE(PATHTOF(sounds\ACE_scopes_click.wav)), 3.3, 1.8, 200}; + sound[] = {QPATHTOF(sounds\ACE_scopes_click.wav), 3.3, 1.8, 200}; }; class ACE_Scopes_Click_3: ACE_Scopes_Click_1 { - sound[] = {QUOTE(PATHTOF(sounds\ACE_scopes_click.wav)), 2.8, 2.3, 200}; + sound[] = {QPATHTOF(sounds\ACE_scopes_click.wav), 2.8, 2.3, 200}; }; }; diff --git a/addons/scopes/CfgVehicles.hpp b/addons/scopes/CfgVehicles.hpp index 81756249e17..8a173849338 100644 --- a/addons/scopes/CfgVehicles.hpp +++ b/addons/scopes/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { statement = QUOTE([ACE_player] call FUNC(adjustZero)); showDisabled = 0; priority = 0.2; - //icon = QUOTE(PATHTOF(UI\...)); // TODO + //icon = QPATHTOF(UI\...); // TODO exceptions[] = {"notOnMap", "isNotInside", "isNotSitting"}; }; }; diff --git a/addons/scopes/RscTitles.hpp b/addons/scopes/RscTitles.hpp index 7aec20458c6..1a4bcc99c35 100644 --- a/addons/scopes/RscTitles.hpp +++ b/addons/scopes/RscTitles.hpp @@ -17,7 +17,7 @@ class RscTitles { class ACE_Scopes_Zeroing_BG : RscPicture { idc = 11; type = 0; - text = PATHTOF(UI\scopes_bg.paa); + text = QPATHTOF(UI\scopes_bg.paa); style = 48 + 0x800; scale = 1; sizeEx = 1; diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index d92d92fc49d..a93e780c844 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { scope = 2; isGlobal = 1; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Sitting_ca.paa); class Arguments { class enable { displayName = CSTRING(Enable); @@ -34,7 +34,7 @@ class CfgVehicles { exceptions[] = {"isNotSitting"}; statement = QUOTE(_player call FUNC(stand)); priority = 0; - icon = PATHTOF(UI\stand_ca.paa); + icon = QPATHTOF(UI\stand_ca.paa); }; }; }; diff --git a/addons/sitting/functions/fnc_addSitActions.sqf b/addons/sitting/functions/fnc_addSitActions.sqf index 98c9aba99f3..4c449bac529 100644 --- a/addons/sitting/functions/fnc_addSitActions.sqf +++ b/addons/sitting/functions/fnc_addSitActions.sqf @@ -40,7 +40,7 @@ TRACE_1("Adding Sit Action",_type); private _sitAction = [ QGVAR(Sit), localize LSTRING(Sit), - QUOTE(PATHTOF(UI\sit_ca.paa)), + QPATHTOF(UI\sit_ca.paa), {_this call FUNC(sit)}, {_this call FUNC(canSit)}, {}, diff --git a/addons/slideshow/CfgVehicles.hpp b/addons/slideshow/CfgVehicles.hpp index 7e82d48ffcb..af3108eb595 100644 --- a/addons/slideshow/CfgVehicles.hpp +++ b/addons/slideshow/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { isGlobal = 1; isTriggerActivated = 0; isDisposable = 0; - icon = QUOTE(PATHTOF(UI\Icon_Module_Slideshow_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Slideshow_ca.paa); class Arguments { class Objects { displayName = CSTRING(Objects_DisplayName); diff --git a/addons/spectator/CfgVehicles.hpp b/addons/spectator/CfgVehicles.hpp index f6869462acb..268aabbef5e 100644 --- a/addons/spectator/CfgVehicles.hpp +++ b/addons/spectator/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class GVAR(moduleSettings): ACE_Module { scope = 2; displayName = CSTRING(Settings_DisplayName); - icon = PATHTOF(UI\Icon_Module_Spectator_ca.paa); + icon = QPATHTOF(UI\Icon_Module_Spectator_ca.paa); category = "ACE"; function = QFUNC(moduleSpectatorSettings); isGlobal = 1; diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 418eea5a150..ef5f1e1c3e5 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -12,7 +12,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'ACE_SpottingScope')] call FUNC(place)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\w_spottingscope_ca.paa); + icon = QPATHTOF(UI\w_spottingscope_ca.paa); }; }; }; @@ -61,7 +61,7 @@ class CfgVehicles { side = 1; typicalCargo[] = {"Soldier"}; displayName = CSTRING(DisplayName); - model = PATHTOF(data\ace_spottingscope.p3d); + model = QPATHTOF(data\ace_spottingscope.p3d); mapSize = 0.5; transportSoldier = 0; getInAction = "GetInLow"; @@ -78,7 +78,7 @@ class CfgVehicles { weapons[] = {}; magazines[] = {}; gunnerOpticsColor[] = {1,1,1,1}; - gunnerOpticsmodel = PATHTOF(data\m144_optic.p3d); + gunnerOpticsmodel = QPATHTOF(data\m144_optic.p3d); gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"}; gunnerOutOpticsShowCursor = 0; gunnerOpticsShowCursor = 0; @@ -126,7 +126,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\w_spottingscope_ca.paa); + icon = QPATHTOF(UI\w_spottingscope_ca.paa); }; }; }; diff --git a/addons/spottingscope/CfgWeapons.hpp b/addons/spottingscope/CfgWeapons.hpp index 9b5825572b8..f167b9df7ea 100644 --- a/addons/spottingscope/CfgWeapons.hpp +++ b/addons/spottingscope/CfgWeapons.hpp @@ -7,8 +7,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(DisplayName); descriptionShort = ""; - picture = PATHTOF(UI\w_spottingscope_ca.paa); - model = PATHTOF(data\ace_spottingscope.p3d); + picture = QPATHTOF(UI\w_spottingscope_ca.paa); + model = QPATHTOF(data\ace_spottingscope.p3d); class ItemInfo: InventoryItem_Base_F { mass = 40; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index f0549cb00eb..1e12cc03d6d 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { function = FUNC(module); scope = 2; isGlobal = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_SwitchUnits_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_SwitchUnits_ca.paa); class Arguments { class SwitchToWest { displayName = CSTRING(SwitchToWest_DisplayName); diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index ed0ed0eb8cd..2fa00d2790e 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -21,8 +21,8 @@ class CfgVehicles { scope = 2; displayName = CSTRING(DisplayName); descriptionShort = ""; - model = PATHTOF(data\ace_tacticalladder_pack.p3d); - picture = PATHTOF(UI\ace_tactical_ladder_pack_ca.paa); + model = QPATHTOF(data\ace_tacticalladder_pack.p3d); + picture = QPATHTOF(UI\ace_tactical_ladder_pack_ca.paa); maximumLoad = 0; mass = 50; }; @@ -42,7 +42,7 @@ class CfgVehicles { displayName = CSTRING(DisplayName); class DestructionEffects {}; - model = PATHTOF(data\ace_tacticalladder.p3d); + model = QPATHTOF(data\ace_tacticalladder.p3d); animated = 1; autocenter = 0; featureSize = 12; diff --git a/addons/tagging/CfgVehicles.hpp b/addons/tagging/CfgVehicles.hpp index 602ee41d331..d458f7dd067 100644 --- a/addons/tagging/CfgVehicles.hpp +++ b/addons/tagging/CfgVehicles.hpp @@ -9,25 +9,25 @@ class CfgVehicles { statement = QUOTE([ARR_2(ACE_player,'black')] call FUNC(tagWall)); showDisabled = 0; priority = 3; - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlack.paa)); + icon = QPATHTOF(UI\icons\iconTaggingBlack.paa); }; class ACE_tagWallRed: ACE_tagWallBlack { displayName = CSTRING(tagWallRed); condition = QUOTE(('ACE_SpraypaintRed' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'red')] call FUNC(tagWall)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingRed.paa)); + icon = QPATHTOF(UI\icons\iconTaggingRed.paa); }; class ACE_tagWallGreen: ACE_tagWallBlack { displayName = CSTRING(tagWallGreen); condition = QUOTE(('ACE_SpraypaintGreen' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'green')] call FUNC(tagWall)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingGreen.paa)); + icon = QPATHTOF(UI\icons\iconTaggingGreen.paa); }; class ACE_tagWallBlue: ACE_tagWallBlack { displayName = CSTRING(tagWallBlue); condition = QUOTE(('ACE_SpraypaintBlue' in items ACE_player) && {[] call FUNC(checkTaggable)}); statement = QUOTE([ARR_2(ACE_player,'blue')] call FUNC(tagWall)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlue.paa)); + icon = QPATHTOF(UI\icons\iconTaggingBlue.paa); }; /*class ACE_tagGroundBlack { displayName = CSTRING(tagGroundBlack); @@ -35,25 +35,25 @@ class CfgVehicles { statement = QUOTE([ARR_2(ACE_player, 'black')] call FUNC(tagGround)); showDisabled = 0; priority = 3; - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlack.paa)); + icon = QPATHTOF(UI\icons\iconTaggingBlack.paa); }; class ACE_tagGroundRed: ACE_tagGroundBlack { displayName = CSTRING(tagGroundRed); condition = QUOTE('ACE_SpraypaintRed' in items ACE_player); statement = QUOTE([ARR_2(ACE_player, 'red')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingRed.paa)); + icon = QPATHTOF(UI\icons\iconTaggingRed.paa); }; class ACE_tagGroundGreen: ACE_tagGroundBlack { displayName = CSTRING(tagGroundGreen); condition = QUOTE('ACE_SpraypaintGreen' in items ACE_player); statement = QUOTE([ARR_2(ACE_player, 'green')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingGreen.paa)); + icon = QPATHTOF(UI\icons\iconTaggingGreen.paa); }; class ACE_tagGroundBlue: ACE_tagGroundBlack { displayName = CSTRING(tagGroundBlue); condition = QUOTE('ACE_SpraypaintBlue' in items ACE_player); statement = QUOTE([ARR_2(ACE_player, 'blue')] call FUNC(tagGround)); - icon = QUOTE(PATHTOF(UI\icons\iconTaggingBlue.paa)); + icon = QPATHTOF(UI\icons\iconTaggingBlue.paa); };*/ }; }; diff --git a/addons/tagging/CfgWeapons.hpp b/addons/tagging/CfgWeapons.hpp index a805a75679e..1984b3b14a9 100644 --- a/addons/tagging/CfgWeapons.hpp +++ b/addons/tagging/CfgWeapons.hpp @@ -6,28 +6,28 @@ class CfgWeapons { author = "jokoho48"; displayname = CSTRING(spraypaintBlack); descriptionShort = CSTRING(descSpraypaint); - picture = QUOTE(PATHTOF(UI\items\itemSpraypaintBlack.paa)); - model = QUOTE(PATHTOF(data\SprayCan.p3d)); + picture = QPATHTOF(UI\items\itemSpraypaintBlack.paa); + model = QPATHTOF(data\SprayCan.p3d); scope = 2; hiddenSelections[] = {"camo"}; - hiddenSelectionsTextures[] = {QUOTE(PATHTOF(data\spraycanBlack_co.paa))}; + hiddenSelectionsTextures[] = {QPATHTOF(data\spraycanBlack_co.paa)}; class ItemInfo: InventoryItem_Base_F { mass = 10; }; }; class ACE_SpraypaintRed : ACE_SpraypaintBlack { displayname = CSTRING(spraypaintRed); - picture = QUOTE(PATHTOF(UI\items\itemSpraypaintRed.paa)); - hiddenSelectionsTextures[] = {QUOTE(PATHTOF(data\spraycanRed_co.paa))}; + picture = QPATHTOF(UI\items\itemSpraypaintRed.paa); + hiddenSelectionsTextures[] = {QPATHTOF(data\spraycanRed_co.paa)}; }; class ACE_SpraypaintGreen : ACE_SpraypaintBlack { displayname = CSTRING(spraypaintGreen); - picture = QUOTE(PATHTOF(UI\items\itemSpraypaintGreen.paa)); - hiddenSelectionsTextures[] = {QUOTE(PATHTOF(data\spraycanGreen_co.paa))}; + picture = QPATHTOF(UI\items\itemSpraypaintGreen.paa); + hiddenSelectionsTextures[] = {QPATHTOF(data\spraycanGreen_co.paa)}; }; class ACE_SpraypaintBlue : ACE_SpraypaintBlack { displayname = CSTRING(spraypaintBlue); - picture = QUOTE(PATHTOF(UI\items\itemSpraypaintBlue.paa)); - hiddenSelectionsTextures[] = {QUOTE(PATHTOF(data\spraycanBlue_co.paa))}; + picture = QPATHTOF(UI\items\itemSpraypaintBlue.paa); + hiddenSelectionsTextures[] = {QPATHTOF(data\spraycanBlue_co.paa)}; }; }; diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index 81880a42651..520779c877f 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { exceptions[] = {}; showDisabled = 0; priority = 4; - //icon = PATHTOF(UI\icon_sandbag_ca.paa); + //icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; class GVAR(digEnvelopeBig) { displayName = CSTRING(DigEnvelopeBig); @@ -21,7 +21,7 @@ class CfgVehicles { exceptions[] = {}; showDisabled = 0; priority = 4; - //icon = PATHTOF(UI\icon_sandbag_ca.paa); + //icon = QPATHTOF(UI\icon_sandbag_ca.paa); }; }; }; @@ -32,14 +32,14 @@ class CfgVehicles { author = ECSTRING(common,ACETeam); displayName = CSTRING(EnvelopeSmallName); descriptionShort = CSTRING(EnevlopeSmallDescription); - model = QUOTE(PATHTOEF(apl,ace_envelope_small4.p3d)); + model = QPATHTOEF(apl,ace_envelope_small4.p3d); scope = 2; }; class ACE_envelope_big: BagFence_base_F { author = ECSTRING(common,ACETeam); displayName = CSTRING(EnvelopeBigName); descriptionShort = CSTRING(EnevlopeBigDescription); - model = QUOTE(PATHTOEF(apl,ace_envelope_big4.p3d)); + model = QPATHTOEF(apl,ace_envelope_big4.p3d); scope = 2; }; @@ -47,12 +47,12 @@ class CfgVehicles { class ACE_envelope_small_NoGeo: ACE_envelope_small { scope = 1; //@todo: replace by a no geo model - model = QUOTE(PATHTOEF(apl,ace_envelope_small4_nogeo.p3d)); + model = QPATHTOEF(apl,ace_envelope_small4_nogeo.p3d); }; class ACE_envelope_big_NoGeo: ACE_envelope_big { scope = 1; //@todo: replace by a no geo model - model = QUOTE(PATHTOEF(apl,ace_envelope_big4_nogeo.p3d)); + model = QPATHTOEF(apl,ace_envelope_big4_nogeo.p3d); }; class Box_NATO_Support_F; diff --git a/addons/trenches/CfgWeapons.hpp b/addons/trenches/CfgWeapons.hpp index 5b20e9e4c14..9f9049360a1 100644 --- a/addons/trenches/CfgWeapons.hpp +++ b/addons/trenches/CfgWeapons.hpp @@ -6,8 +6,8 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); displayName = CSTRING(EntrenchingToolName); descriptionShort = CSTRING(EntrenchingToolDescription); - model = QUOTE(PATHTOEF(apl,ace_entrchtool.p3d)); - picture = QUOTE(PATHTOF(ui\w_entrchtool_ca.paa)); + model = QPATHTOEF(apl,ace_entrchtool.p3d); + picture = QPATHTOF(ui\w_entrchtool_ca.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 10; diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index 418b32e5502..f3f11a28245 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { statement = QUOTE([ARR_2(_player,'ACE_Tripod')] call FUNC(place)); showDisabled = 0; priority = 2; - icon = PATHTOF(UI\w_sniper_tripod_ca.paa); + icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); }; }; }; @@ -46,7 +46,7 @@ class CfgVehicles { EGVAR(dragging,dragDirection) = 0; scope = 2; displayName = CSTRING(DisplayName); - model = PATHTOF(data\sniper_tripod.p3d); + model = QPATHTOF(data\sniper_tripod.p3d); class AnimationSources { class slide_down_tripod { @@ -76,7 +76,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\w_sniper_tripod_ca.paa); + icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); }; class ACE_Adjust { @@ -89,7 +89,7 @@ class CfgVehicles { showDisabled = 0; exceptions[] = {}; priority = 5; - icon = PATHTOF(UI\w_sniper_tripod_ca.paa); + icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); }; }; }; diff --git a/addons/tripod/CfgWeapons.hpp b/addons/tripod/CfgWeapons.hpp index adc14912c2e..03b2e920758 100644 --- a/addons/tripod/CfgWeapons.hpp +++ b/addons/tripod/CfgWeapons.hpp @@ -7,8 +7,8 @@ class CfgWeapons { scope = 2; displayName = CSTRING(DisplayName); descriptionShort = ""; - model = PATHTOF(data\w_sniper_tripod.p3d); - picture = PATHTOF(UI\w_sniper_tripod_ca.paa); + model = QPATHTOF(data\w_sniper_tripod.p3d); + picture = QPATHTOF(UI\w_sniper_tripod_ca.paa); class ItemInfo: InventoryItem_Base_F { mass = 40; diff --git a/addons/vector/CfgWeapons.hpp b/addons/vector/CfgWeapons.hpp index 019d774da8e..86704c32181 100644 --- a/addons/vector/CfgWeapons.hpp +++ b/addons/vector/CfgWeapons.hpp @@ -5,9 +5,9 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); displayName = CSTRING(VectorName); descriptionShort = CSTRING(VectorDescription); - model = PATHTOF(ace_vector.p3d); - modelOptics = PATHTOF(ace_vector_optics.p3d); - picture = PATHTOF(UI\ace_vector_x_ca.paa); + model = QPATHTOF(ace_vector.p3d); + modelOptics = QPATHTOF(ace_vector_optics.p3d); + picture = QPATHTOF(UI\ace_vector_x_ca.paa); visionMode[] = {"Normal","NVG"}; opticsZoomMax = 0.06621; opticsZoomMin = 0.06621; diff --git a/addons/vector/functions/fnc_convertToTexturesDegree.sqf b/addons/vector/functions/fnc_convertToTexturesDegree.sqf index a028012cec8..b94c2edf64d 100644 --- a/addons/vector/functions/fnc_convertToTexturesDegree.sqf +++ b/addons/vector/functions/fnc_convertToTexturesDegree.sqf @@ -32,25 +32,25 @@ if (GVAR(useMil)) then { _digit1 = floor (_number / 100); _digit2 = floor (_number / 10) - _digit1 * 10; _digit3 = _number mod 10; - _digit4 = QUOTE(PATHTOF(rsc\vector_degree.paa)); + _digit4 = QPATHTOF(rsc\vector_degree.paa); if (_isNegative) then { if (_digit1 == 0) then { if (_digit2 == 0) then { _digit1 = ""; - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; } else { - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; }; } else { - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; } else { @@ -59,16 +59,16 @@ if (GVAR(useMil)) then { if (_digit2 == 0) then { _digit1 = ""; _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; } else { _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; }; } else { - _digit1 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit1]; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; + _digit1 = format [QPATHTOF(rsc\vector_%1.paa), _digit1]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; }; }; diff --git a/addons/vector/functions/fnc_convertToTexturesDistance.sqf b/addons/vector/functions/fnc_convertToTexturesDistance.sqf index ea0d054e5e8..eb39febfe86 100644 --- a/addons/vector/functions/fnc_convertToTexturesDistance.sqf +++ b/addons/vector/functions/fnc_convertToTexturesDistance.sqf @@ -15,7 +15,7 @@ _isNegative = _number < 0; _number = abs _number; if (_number >= 10000) exitWith { - [QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa))] // return + [QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa)] // return }; private ["_digit1", "_digit2", "_digit3", "_digit4"]; @@ -32,25 +32,25 @@ if (_isNegative) then { if (_digit3 == 0) then { _digit1 = ""; _digit2 = ""; - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; } else { _digit1 = ""; - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; } else { @@ -61,24 +61,24 @@ if (_isNegative) then { _digit1 = ""; _digit2 = ""; _digit3 = ""; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; } else { _digit1 = ""; _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { - _digit1 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit1]; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit1 = format [QPATHTOF(rsc\vector_%1.paa), _digit1]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; }; diff --git a/addons/vector/functions/fnc_convertToTexturesFOS.sqf b/addons/vector/functions/fnc_convertToTexturesFOS.sqf index 6141e40fa84..7a77a3aab8e 100644 --- a/addons/vector/functions/fnc_convertToTexturesFOS.sqf +++ b/addons/vector/functions/fnc_convertToTexturesFOS.sqf @@ -16,7 +16,7 @@ _isNegative = _number < 0; _number = abs _number; if (_number > 9999) exitWith { - [QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa))] // return + [QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa)] // return }; private ["_digit0", "_digit1", "_digit2", "_digit3", "_digit4"]; @@ -35,31 +35,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_l.paa)); + _digit0 = QPATHTOF(rsc\vector_l.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit3 = ""; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_l.paa)); + _digit0 = QPATHTOF(rsc\vector_l.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_l.paa)); + _digit0 = QPATHTOF(rsc\vector_l.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; } else { @@ -67,31 +67,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_r.paa)); + _digit0 = QPATHTOF(rsc\vector_r.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit3 = ""; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_r.paa)); + _digit0 = QPATHTOF(rsc\vector_r.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_r.paa)); + _digit0 = QPATHTOF(rsc\vector_r.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; }; @@ -104,31 +104,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); + _digit0 = QPATHTOF(rsc\vector_d.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit3 = ""; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); + _digit0 = QPATHTOF(rsc\vector_d.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); + _digit0 = QPATHTOF(rsc\vector_d.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; } else { @@ -136,31 +136,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_a.paa)); + _digit0 = QPATHTOF(rsc\vector_a.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit3 = ""; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_a.paa)); + _digit0 = QPATHTOF(rsc\vector_a.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_a.paa)); + _digit0 = QPATHTOF(rsc\vector_a.paa); _digit1 = ""; - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; }; @@ -173,31 +173,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_u.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_p.paa)); + _digit0 = QPATHTOF(rsc\vector_u.paa); + _digit1 = QPATHTOF(rsc\vector_p.paa); _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_u.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_p.paa)); + _digit0 = QPATHTOF(rsc\vector_u.paa); + _digit1 = QPATHTOF(rsc\vector_p.paa); _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_u.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_p.paa)); - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit0 = QPATHTOF(rsc\vector_u.paa); + _digit1 = QPATHTOF(rsc\vector_p.paa); + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; } else { @@ -205,31 +205,31 @@ switch (_coordinate) do { if (_digit1 == 0) then { if (_digit2 == 0) then { if (_digit3 == 0) then { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_n.paa)); + _digit0 = QPATHTOF(rsc\vector_d.paa); + _digit1 = QPATHTOF(rsc\vector_n.paa); _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; _digit4 = ""; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_n.paa)); + _digit0 = QPATHTOF(rsc\vector_d.paa); + _digit1 = QPATHTOF(rsc\vector_n.paa); _digit2 = ""; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { - _digit0 = QUOTE(PATHTOF(rsc\vector_d.paa)); - _digit1 = QUOTE(PATHTOF(rsc\vector_n.paa)); - _digit2 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit2]; - _digit3 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit3]; - _digit4 = format [QUOTE(PATHTOF(rsc\vector_%1.paa)), _digit4]; + _digit0 = QPATHTOF(rsc\vector_d.paa); + _digit1 = QPATHTOF(rsc\vector_n.paa); + _digit2 = format [QPATHTOF(rsc\vector_%1.paa), _digit2]; + _digit3 = format [QPATHTOF(rsc\vector_%1.paa), _digit3]; + _digit4 = format [QPATHTOF(rsc\vector_%1.paa), _digit4]; }; } else { _digit0 = ""; - _digit1 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit2 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit3 = QUOTE(PATHTOF(rsc\vector_minus.paa)); - _digit4 = QUOTE(PATHTOF(rsc\vector_minus.paa)); + _digit1 = QPATHTOF(rsc\vector_minus.paa); + _digit2 = QPATHTOF(rsc\vector_minus.paa); + _digit3 = QPATHTOF(rsc\vector_minus.paa); + _digit4 = QPATHTOF(rsc\vector_minus.paa); }; }; @@ -238,7 +238,7 @@ switch (_coordinate) do { // trap errors if !([_digit0, _digit1, _digit2, _digit3, _digit4] isEqualTypeAll "") exitWith { - [QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa)), QUOTE(PATHTOF(rsc\vector_minus.paa))] // return + [QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa), QPATHTOF(rsc\vector_minus.paa)] // return }; [_digit0, _digit1, _digit2, _digit3, _digit4] diff --git a/addons/vector/functions/fnc_showCenter.sqf b/addons/vector/functions/fnc_showCenter.sqf index 1293e1286db..4870b10a698 100644 --- a/addons/vector/functions/fnc_showCenter.sqf +++ b/addons/vector/functions/fnc_showCenter.sqf @@ -7,6 +7,6 @@ Shows or hides the vectors center square thingy. */ #include "script_component.hpp" -((GETUVAR(ACE_dlgVector,displayNull)) displayCtrl 1301) ctrlSetText (["", QUOTE(PATHTOF(rsc\vector_center.paa))] select (_this select 0)); +((GETUVAR(ACE_dlgVector,displayNull)) displayCtrl 1301) ctrlSetText (["", QPATHTOF(rsc\vector_center.paa)] select (_this select 0)); [GVAR(illuminate)] call FUNC(illuminate); diff --git a/addons/vector/functions/fnc_showP1.sqf b/addons/vector/functions/fnc_showP1.sqf index 73453961c1c..27f90637943 100644 --- a/addons/vector/functions/fnc_showP1.sqf +++ b/addons/vector/functions/fnc_showP1.sqf @@ -13,9 +13,9 @@ disableSerialization; _dlgVector = GETUVAR(ACE_dlgVector,displayNull); if (_this select 0) then { - (_dlgVector displayCtrl 1321) ctrlSetText QUOTE(PATHTOF(rsc\vector_1.paa)); - (_dlgVector displayCtrl 1322) ctrlSetText QUOTE(PATHTOF(rsc\vector_minus.paa)); - (_dlgVector displayCtrl 1323) ctrlSetText QUOTE(PATHTOF(rsc\vector_p.paa)); + (_dlgVector displayCtrl 1321) ctrlSetText QPATHTOF(rsc\vector_1.paa); + (_dlgVector displayCtrl 1322) ctrlSetText QPATHTOF(rsc\vector_minus.paa); + (_dlgVector displayCtrl 1323) ctrlSetText QPATHTOF(rsc\vector_p.paa); (_dlgVector displayCtrl 1324) ctrlSetText ""; } else { (_dlgVector displayCtrl 1321) ctrlSetText ""; diff --git a/addons/vector/functions/fnc_showReticle.sqf b/addons/vector/functions/fnc_showReticle.sqf index d44adfb68d8..bcd565774f5 100644 --- a/addons/vector/functions/fnc_showReticle.sqf +++ b/addons/vector/functions/fnc_showReticle.sqf @@ -7,6 +7,6 @@ Shows or hides the electronic reticle. */ #include "script_component.hpp" -((GETUVAR(ACE_dlgVector,displayNull)) displayCtrl 1302) ctrlSetText (["", QUOTE(PATHTOF(rsc\vector_crosshair.paa))] select (_this select 0)); +((GETUVAR(ACE_dlgVector,displayNull)) displayCtrl 1302) ctrlSetText (["", QPATHTOF(rsc\vector_crosshair.paa)] select (_this select 0)); [GVAR(illuminate)] call FUNC(illuminate); diff --git a/addons/vector/functions/fnc_showText.sqf b/addons/vector/functions/fnc_showText.sqf index 68dbe9d642c..f9d85d84e34 100644 --- a/addons/vector/functions/fnc_showText.sqf +++ b/addons/vector/functions/fnc_showText.sqf @@ -10,123 +10,123 @@ switch (_this select 0) do { case ("config"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; (_dlgVector displayCtrl 1316) ctrlSetText ""; - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_c.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_f.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_i.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_g.paa)); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_c.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_n.paa); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_f.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_i.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_g.paa); (_dlgVector displayCtrl 1313) ctrlSetText ""; (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("settings"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; - (_dlgVector displayCtrl 1316) ctrlSetText QUOTE(PATHTOF(rsc\vector_u.paa)); - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_i.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_5.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_e.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); - (_dlgVector displayCtrl 1313) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); + (_dlgVector displayCtrl 1316) ctrlSetText QPATHTOF(rsc\vector_u.paa); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_n.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_i.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_t.paa); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_5.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_e.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_t.paa); + (_dlgVector displayCtrl 1313) ctrlSetText QPATHTOF(rsc\vector_t.paa); (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("nigt"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; - (_dlgVector displayCtrl 1316) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_i.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_g.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); + (_dlgVector displayCtrl 1316) ctrlSetText QPATHTOF(rsc\vector_n.paa); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_i.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_g.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_t.paa); }; case ("eret"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; - (_dlgVector displayCtrl 1316) ctrlSetText QUOTE(PATHTOF(rsc\vector_e.paa)); - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_r.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_e.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); + (_dlgVector displayCtrl 1316) ctrlSetText QPATHTOF(rsc\vector_e.paa); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_r.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_e.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_t.paa); }; case ("on"): { - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_n.paa); (_dlgVector displayCtrl 1312) ctrlSetText ""; (_dlgVector displayCtrl 1313) ctrlSetText ""; (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("off"): { - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_f.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_f.paa)); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_f.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_f.paa); (_dlgVector displayCtrl 1313) ctrlSetText ""; (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("deg"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; - (_dlgVector displayCtrl 1316) ctrlSetText QUOTE(PATHTOF(rsc\vector_3.paa)); - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_6.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_0.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_degree.paa)); + (_dlgVector displayCtrl 1316) ctrlSetText QPATHTOF(rsc\vector_3.paa); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_6.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_0.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_degree.paa); }; case ("mil"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; - (_dlgVector displayCtrl 1316) ctrlSetText QUOTE(PATHTOF(rsc\vector_6.paa)); - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_4.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_0.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_0.paa)); + (_dlgVector displayCtrl 1316) ctrlSetText QPATHTOF(rsc\vector_6.paa); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_4.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_0.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_0.paa); }; case ("meter"): { - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_5.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_1.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_minus.paa)); - (_dlgVector displayCtrl 1313) ctrlSetText QUOTE(PATHTOF(rsc\vector_u.paa)); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_5.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_1.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_minus.paa); + (_dlgVector displayCtrl 1313) ctrlSetText QPATHTOF(rsc\vector_u.paa); (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("feet"): { - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_f.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_e.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_e.paa)); - (_dlgVector displayCtrl 1313) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_f.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_e.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_e.paa); + (_dlgVector displayCtrl 1313) ctrlSetText QPATHTOF(rsc\vector_t.paa); (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("stor"): { - (_dlgVector displayCtrl 1321) ctrlSetText QUOTE(PATHTOF(rsc\vector_5.paa)); - (_dlgVector displayCtrl 1322) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); - (_dlgVector displayCtrl 1323) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1324) ctrlSetText QUOTE(PATHTOF(rsc\vector_r.paa)); + (_dlgVector displayCtrl 1321) ctrlSetText QPATHTOF(rsc\vector_5.paa); + (_dlgVector displayCtrl 1322) ctrlSetText QPATHTOF(rsc\vector_t.paa); + (_dlgVector displayCtrl 1323) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1324) ctrlSetText QPATHTOF(rsc\vector_r.paa); }; case ("old_config"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; (_dlgVector displayCtrl 1316) ctrlSetText ""; - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_1.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_d.paa)); - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_c.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); - (_dlgVector displayCtrl 1313) ctrlSetText QUOTE(PATHTOF(rsc\vector_f.paa)); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_1.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_d.paa); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_c.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_n.paa); + (_dlgVector displayCtrl 1313) ctrlSetText QPATHTOF(rsc\vector_f.paa); (_dlgVector displayCtrl 1314) ctrlSetText ""; }; case ("old_settings"): { (_dlgVector displayCtrl 1315) ctrlSetText ""; (_dlgVector displayCtrl 1316) ctrlSetText ""; - (_dlgVector displayCtrl 1317) ctrlSetText QUOTE(PATHTOF(rsc\vector_o.paa)); - (_dlgVector displayCtrl 1318) ctrlSetText QUOTE(PATHTOF(rsc\vector_1.paa)); - (_dlgVector displayCtrl 1319) ctrlSetText QUOTE(PATHTOF(rsc\vector_d.paa)); - (_dlgVector displayCtrl 1310) ctrlSetText QUOTE(PATHTOF(rsc\vector_u.paa)); - (_dlgVector displayCtrl 1311) ctrlSetText QUOTE(PATHTOF(rsc\vector_n.paa)); - (_dlgVector displayCtrl 1312) ctrlSetText QUOTE(PATHTOF(rsc\vector_i.paa)); - (_dlgVector displayCtrl 1313) ctrlSetText QUOTE(PATHTOF(rsc\vector_t.paa)); + (_dlgVector displayCtrl 1317) ctrlSetText QPATHTOF(rsc\vector_o.paa); + (_dlgVector displayCtrl 1318) ctrlSetText QPATHTOF(rsc\vector_1.paa); + (_dlgVector displayCtrl 1319) ctrlSetText QPATHTOF(rsc\vector_d.paa); + (_dlgVector displayCtrl 1310) ctrlSetText QPATHTOF(rsc\vector_u.paa); + (_dlgVector displayCtrl 1311) ctrlSetText QPATHTOF(rsc\vector_n.paa); + (_dlgVector displayCtrl 1312) ctrlSetText QPATHTOF(rsc\vector_i.paa); + (_dlgVector displayCtrl 1313) ctrlSetText QPATHTOF(rsc\vector_t.paa); (_dlgVector displayCtrl 1314) ctrlSetText ""; }; diff --git a/addons/vehiclelock/CfgMagazines.hpp b/addons/vehiclelock/CfgMagazines.hpp index 62c6fdcec24..28cb00717a8 100644 --- a/addons/vehiclelock/CfgMagazines.hpp +++ b/addons/vehiclelock/CfgMagazines.hpp @@ -1,7 +1,7 @@ class CfgMagazines { class CA_Magazine; class ACE_key_customKeyMagazine: CA_Magazine { - picture = QUOTE(PATHTOF(ui\keyBlack.paa)); + picture = QPATHTOF(ui\keyBlack.paa); displayName = "ACE Vehicle Key"; //!!!CANNOT be localized!!!: because it is used as part of the magazineDetail string descriptionShort = CSTRING(Item_Custom_Description); count = 1; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 873c875f097..5906f05f790 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -5,14 +5,14 @@ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ priority = 0.3; \ - icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ + icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ priority = 0.2; \ - icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ + icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ @@ -29,7 +29,7 @@ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ priority = 0.3; \ - icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ + icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ @@ -37,7 +37,7 @@ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ priority = 0.2; \ - icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ + icon = QPATHTOF(UI\key_menuIcon_ca.paa); \ }; \ class ACE_lockpickVehicle { \ displayName = CSTRING(Action_Lockpick); \ @@ -75,7 +75,7 @@ class CfgVehicles { scope = 2; isGlobal = 0; isSingular = 1; - icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleLock_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_VehicleLock_ca.paa); functionPriority = 0; class Arguments { class LockVehicleInventory { @@ -113,7 +113,7 @@ class CfgVehicles { function = QFUNC(moduleSync); scope = 2; isGlobal = 0; - icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_VehicleKey_ca.paa); functionPriority = 0; class Arguments {}; class ModuleDescription: ModuleDescription { diff --git a/addons/vehiclelock/CfgWeapons.hpp b/addons/vehiclelock/CfgWeapons.hpp index 08959887375..1d72a5538d8 100644 --- a/addons/vehiclelock/CfgWeapons.hpp +++ b/addons/vehiclelock/CfgWeapons.hpp @@ -8,7 +8,7 @@ class CfgWeapons { displayName = "Vehicle Key: Master"; descriptionShort = CSTRING(Item_Master_Description); model = "\A3\weapons_F\ammo\mag_univ.p3d"; - picture = QUOTE(PATHTOF(ui\keyBlack.paa)); + picture = QPATHTOF(ui\keyBlack.paa); scope = 2; class ItemInfo: InventoryItem_Base_F { mass = 0; @@ -17,26 +17,26 @@ class CfgWeapons { class ACE_key_lockpick: ACE_key_master { displayName = "Lockpick"; descriptionShort = CSTRING(Item_Lockpick_Description); - picture = QUOTE(PATHTOF(ui\lockpick.paa)); + picture = QPATHTOF(ui\lockpick.paa); }; class ACE_key_west: ACE_key_master { displayName = "Vehicle Key: West"; descriptionShort = CSTRING(Item_West_Description); - picture = QUOTE(PATHTOF(ui\keyBlue.paa)); + picture = QPATHTOF(ui\keyBlue.paa); }; class ACE_key_east: ACE_key_master { displayName = "Vehicle Key: East"; descriptionShort = CSTRING(Item_East_Description); - picture = QUOTE(PATHTOF(ui\keyRed.paa)); + picture = QPATHTOF(ui\keyRed.paa); }; class ACE_key_indp: ACE_key_master { displayName = "Vehicle Key: Independent"; descriptionShort = CSTRING(Item_Indp_Description); - picture = QUOTE(PATHTOF(ui\keyPurple.paa)); + picture = QPATHTOF(ui\keyPurple.paa); }; class ACE_key_civ: ACE_key_master { displayName = "Vehicle Key: Civilian"; descriptionShort = CSTRING(Item_Civ_Description); - picture = QUOTE(PATHTOF(ui\keyGreen.paa)); + picture = QPATHTOF(ui\keyGreen.paa); }; }; diff --git a/addons/weather/CfgVehicles.hpp b/addons/weather/CfgVehicles.hpp index f98a1e50f50..ab3d408fdcd 100644 --- a/addons/weather/CfgVehicles.hpp +++ b/addons/weather/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class GVAR(ModuleSettings): ACE_Module { scope = 2; displayName = CSTRING(Module_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Wind_ca.paa); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); functionPriority = 1; diff --git a/addons/weather/functions/fnc_displayWindInfo.sqf b/addons/weather/functions/fnc_displayWindInfo.sqf index f81384c1b07..5ea69c59a03 100644 --- a/addons/weather/functions/fnc_displayWindInfo.sqf +++ b/addons/weather/functions/fnc_displayWindInfo.sqf @@ -78,10 +78,10 @@ TRACE_1("Starting Wind Info PFEH", GVAR(WindInfo)); TRACE_3("update display",_beaufortNumber,_windDir,_windSpeed); __ctrl ctrlSetTextColor _windColor; if (_beaufortNumber > 0) then { - __ctrl ctrlSetText QUOTE(PATHTOF(UI\wind_arrow_ca.paa)); + __ctrl ctrlSetText QPATHTOF(UI\wind_arrow_ca.paa); __ctrl ctrlSetAngle [_windDir, 0.5, 0.5]; } else { - __ctrl ctrlSetText QUOTE(PATHTOF(UI\wind_noneCircle_ca.paa)); + __ctrl ctrlSetText QPATHTOF(UI\wind_noneCircle_ca.paa); }; __ctrl ctrlCommit 0; @@ -94,7 +94,7 @@ TRACE_1("Starting Wind Info PFEH", GVAR(WindInfo)); for "_index" from 0 to (_beaufortNumber - 1) do { private _ball = __dsp ctrlCreate ["RscPicture", _index]; - _ball ctrlSetText QUOTE(PATHTOF(UI\wind_dot_ca.paa)); + _ball ctrlSetText QPATHTOF(UI\wind_dot_ca.paa); _ball ctrlSetTextColor [1,1,1,1]; private _ballCenterX = _centerX - (_ballWidth / 2) + ((sin _windDir) * 0.013333) * (_index - 4.9) + ((cos _windDir) * 0.0125); private _ballCenterY = _centerY - (_ballHeight / 2) - ((1 * cos _windDir) * 4/3*0.013333) * (_index - 4.9) + ((sin _windDir) * 0.0125); diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index c52949e1fc3..866a00d9c18 100644 --- a/addons/winddeflection/CfgVehicles.hpp +++ b/addons/winddeflection/CfgVehicles.hpp @@ -3,7 +3,7 @@ class CfgVehicles { class GVAR(ModuleSettings): ACE_Module { scope = 2; displayName = CSTRING(windDeflection_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Wind_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Wind_ca.paa); category = "ACE"; function = QUOTE(DFUNC(initModuleSettings)); functionPriority = 1; diff --git a/addons/yardage450/CfgWeapons.hpp b/addons/yardage450/CfgWeapons.hpp index 54e15401a60..382a6d09fc0 100644 --- a/addons/yardage450/CfgWeapons.hpp +++ b/addons/yardage450/CfgWeapons.hpp @@ -5,9 +5,9 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); displayName = CSTRING(DisplayName); descriptionShort = CSTRING(Description); - model = PATHTOF(data\ace_yardage_pro_450.p3d); - modelOptics = PATHTOF(data\bushnell_optic.p3d); - picture = PATHTOF(UI\w_bushnell_ca.paa); + model = QPATHTOF(data\ace_yardage_pro_450.p3d); + modelOptics = QPATHTOF(data\bushnell_optic.p3d); + picture = QPATHTOF(UI\w_bushnell_ca.paa); opticsZoomMin = 0.33333/4; opticsZoomMax = 0.33333/4; opticsZoomInit = 0.33333/4; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 0013355370e..947c8edb66a 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -18,7 +18,7 @@ class CfgVehicles { class GVAR(moduleSettings): ACE_Module { scope = 2; displayName = CSTRING(Settings_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Settings_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Settings_ca.paa); category = "ACE"; function = QFUNC(moduleZeusSettings); functionPriority = 1; @@ -90,7 +90,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleCaptive_DisplayName); function = QFUNC(moduleCaptive); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Captive_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Captive_ca.paa); class ModuleDescription { description = "Flips the capture state of the specified unit."; sync[] = {}; @@ -100,7 +100,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleSurrender_DisplayName); function = QFUNC(moduleSurrender); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Surrender_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Surrender_ca.paa); class ModuleDescription { description = "Flips the surrender state of the specified unit."; sync[] = {}; @@ -110,7 +110,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleUnconscious_DisplayName); function = QFUNC(moduleUnconscious); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Unconscious_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Unconscious_ca.paa); class ModuleDescription { description = "Flips the unconscious state of the specified unit."; sync[] = {}; @@ -120,7 +120,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleSetMedic_DisplayName); function = QFUNC(moduleSetMedic); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa); class ModuleDescription { description = ""; sync[] = {}; @@ -130,7 +130,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleSetMedicalVehicle_DisplayName); function = QFUNC(moduleSetMedicalVehicle); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa); class ModuleDescription { description = ""; sync[] = {}; @@ -140,7 +140,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleSetMedicalFacility_DisplayName); function = QFUNC(moduleSetMedicalFacility); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa)); + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa); class ModuleDescription { description = ""; sync[] = {}; @@ -151,7 +151,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleAddSpareTrack_DisplayName); function = QFUNC(moduleAddSpareTrack); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa));//@todo + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa);//@todo class ModuleDescription { description = CSTRING(ModuleAddSpareTrack_Description); sync[] = {}; @@ -161,7 +161,7 @@ class CfgVehicles { curatorCanAttach = 1; displayName = CSTRING(ModuleAddSpareWheel_DisplayName); function = QFUNC(moduleAddSpareWheel); - icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa));//@todo + icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa);//@todo class ModuleDescription { description = CSTRING(ModuleAddSpareWheel_Description); sync[] = {}; From 0c124a2af00c77bdaa9f52955884189b385c5556 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Apr 2016 20:35:50 +0200 Subject: [PATCH 062/268] Remove redundant macro define --- addons/main/script_macros.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index e45f041ffac..dd870e6e49d 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -12,8 +12,6 @@ #define QFUNC(var1) QUOTE(DFUNC(var1)) #define QEFUNC(var1,var2) QUOTE(DEFUNC(var1,var2)) -#define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) - #define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)] #define SETVAR_SYS(var1,var2) setVariable [ARR_2(QUOTE(var1),var2)] #define SETPVAR_SYS(var1,var2) setVariable [ARR_3(QUOTE(var1),var2,true)] From 014421e8eda65da5561e30db471d200dce5495cd Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Apr 2016 20:41:54 +0200 Subject: [PATCH 063/268] Remove redundant quoted function macro defines --- addons/main/script_macros.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a64c8e014d9..6879a922d52 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -9,9 +9,6 @@ #define DFUNC(var1) TRIPLES(ADDON,fnc,var1) #define DEFUNC(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),fnc,var2) -#define QFUNC(var1) QUOTE(DFUNC(var1)) -#define QEFUNC(var1,var2) QUOTE(DEFUNC(var1,var2)) - #define PATHTOEF(var1,var2) PATHTOF_SYS(PREFIX,var1,var2) #define GETVAR_SYS(var1,var2) getVariable [ARR_2(QUOTE(var1),var2)] From ccaec31a904105bb3e06a57a55b95ff960e7aabb Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Apr 2016 20:43:26 +0200 Subject: [PATCH 064/268] Use new QFUNC and QEFUNC macros --- addons/common/functions/fnc_unloadPerson.sqf | 2 +- addons/common/functions/fnc_unloadPersonLocal.sqf | 2 +- addons/explosives/CfgModule.hpp | 2 +- addons/fastroping/CfgVehicles.hpp | 2 +- addons/frag/functions/fnc_spallTrack.sqf | 2 +- addons/hitreactions/functions/fnc_fallDown.sqf | 2 +- addons/medical/CfgVehicles.hpp | 10 +++++----- addons/missionmodules/CfgVehicles.hpp | 2 +- addons/nightvision/CfgVehicles.hpp | 2 +- addons/repair/functions/fnc_useItem.sqf | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/common/functions/fnc_unloadPerson.sqf b/addons/common/functions/fnc_unloadPerson.sqf index 72816f2c3fa..b4c57457afe 100644 --- a/addons/common/functions/fnc_unloadPerson.sqf +++ b/addons/common/functions/fnc_unloadPerson.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson)) +#define GROUP_SWITCH_ID QFUNC(loadPerson) params ["_unit"]; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index ff5813434ac..7c54141d4ab 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -14,7 +14,7 @@ */ #include "script_component.hpp" -#define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson)) +#define GROUP_SWITCH_ID QFUNC(loadPerson) params ["_unit", "_vehicle", ["_unloader", objNull]]; TRACE_3("params",_unit,_vehicle,_unloader); diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index b651903f59b..6f5e23e8acb 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -3,7 +3,7 @@ class ACE_ModuleExplosive: ACE_Module { author = ECSTRING(common,ACETeam); category = "ACE"; displayName = CSTRING(Module_DisplayName); - function = QUOTE(FUNC(module)); + function = QFUNC(module); scope = 2; isGlobal = 1; isSingular = 1; diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index a9f5ebfbade..005ea2f85ff 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -22,7 +22,7 @@ class CfgVehicles { displayName = CSTRING(Module_FRIES_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa)); category = "ACE"; - function = QUOTE(FUNC(moduleEquipFRIES)); + function = QFUNC(moduleEquipFRIES); functionPriority = 10; isGlobal = 0; isTriggerActivated = 0; diff --git a/addons/frag/functions/fnc_spallTrack.sqf b/addons/frag/functions/fnc_spallTrack.sqf index afe4bc19318..3a02d2bd04f 100644 --- a/addons/frag/functions/fnc_spallTrack.sqf +++ b/addons/frag/functions/fnc_spallTrack.sqf @@ -22,7 +22,7 @@ if (count _intersectsWith > 0) then { if(!(_x in _foundObjects)) then { // diag_log text format["Adding HP: %1", _x]; _index = (count GVAR(spallHPData)); - _hpId = _x addEventHandler ["hitPart", compile format["[%1, _this] call " + QUOTE(FUNC(spallHP)), _index]]; + _hpId = _x addEventHandler ["hitPart", compile format["[%1, _this] call " + QFUNC(spallHP), _index]]; _foundObjects set[(count _foundObjects), _x]; _foundObjectHPIds set[(count _foundObjectHPIds), _hpId]; _data = [_hpId, _x, typeOf _round, _round, _curPos, _velocity, 0, _foundObjects, _foundObjectHPIds]; diff --git a/addons/hitreactions/functions/fnc_fallDown.sqf b/addons/hitreactions/functions/fnc_fallDown.sqf index 9ed43ae14f1..03484438ebd 100644 --- a/addons/hitreactions/functions/fnc_fallDown.sqf +++ b/addons/hitreactions/functions/fnc_fallDown.sqf @@ -31,7 +31,7 @@ if (_unit == ACE_player) then { }; // play scream sound -if (!isNil QUOTE(EFUNC(medical,playInjuredSound))) then { +if (!isNil QEFUNC(medical,playInjuredSound)) then { [_unit] call EFUNC(medical,playInjuredSound); }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 86ad45296bd..6a3a06b6c08 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -158,7 +158,7 @@ class CfgVehicles { displayName = CSTRING(BasicMedicalSettings_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; - function = QUOTE(FUNC(moduleBasicMedicalSettings)); + function = QFUNC(moduleBasicMedicalSettings); functionPriority = 10; isGlobal = 2; isSingular = 1; @@ -200,7 +200,7 @@ class CfgVehicles { displayName = CSTRING(AdvancedMedicalSettings_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; - function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); + function = QFUNC(moduleAdvancedMedicalSettings); functionPriority = 10; isGlobal = 2; isSingular = 1; @@ -366,7 +366,7 @@ class CfgVehicles { displayName = CSTRING(AssignMedicRoles_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; - function = QUOTE(FUNC(moduleAssignMedicRoles)); + function = QFUNC(moduleAssignMedicRoles); functionPriority = 10; isGlobal = 2; isTriggerActivated = 0; @@ -413,7 +413,7 @@ class CfgVehicles { displayName = CSTRING(AssignMedicVehicle_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; - function = QUOTE(FUNC(moduleAssignMedicalVehicle)); + function = QFUNC(moduleAssignMedicalVehicle); functionPriority = 10; isGlobal = 2; isTriggerActivated = 0; @@ -457,7 +457,7 @@ class CfgVehicles { displayName = CSTRING(AssignMedicalFacility_Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Medical_ca.paa)); category = "ACE_medical"; - function = QUOTE(FUNC(moduleAssignMedicalFacility)); + function = QFUNC(moduleAssignMedicalFacility); functionPriority = 10; isGlobal = 2; isTriggerActivated = 0; diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index ebf0b04f663..073fad95ba9 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -11,7 +11,7 @@ class CfgVehicles { displayName = CSTRING(AmbianceSounds_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_Ambient_Sounds_ca.paa)); category = "ACE_missionModules"; - function = QUOTE(FUNC(moduleAmbianceSound)); + function = QFUNC(moduleAmbianceSound); functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; diff --git a/addons/nightvision/CfgVehicles.hpp b/addons/nightvision/CfgVehicles.hpp index 8b489ad64fc..c10b03ebd8f 100644 --- a/addons/nightvision/CfgVehicles.hpp +++ b/addons/nightvision/CfgVehicles.hpp @@ -21,7 +21,7 @@ class CfgVehicles { displayName = CSTRING(Module_DisplayName); icon = QUOTE(PATHTOF(UI\Icon_Module_ca.paa)); category = "ACE"; - function = QUOTE(FUNC(initModule)); + function = QFUNC(initModule); functionPriority = 1; isGlobal = 1; isTriggerActivated = 0; diff --git a/addons/repair/functions/fnc_useItem.sqf b/addons/repair/functions/fnc_useItem.sqf index 024ee76c292..24554ba4ebf 100644 --- a/addons/repair/functions/fnc_useItem.sqf +++ b/addons/repair/functions/fnc_useItem.sqf @@ -20,7 +20,7 @@ params ["_unit", "_item"]; TRACE_2("params",_unit,_item); if ([_unit, _item] call EFUNC(common,hasItem)) exitWith { - [[_unit, _item], QUOTE(EFUNC(common,useItem)), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ + [[_unit, _item], QEFUNC(common,useItem), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [true, _unit]; }; From 121c45eb84939ae2ec67b32ec83d3f63bf3216b2 Mon Sep 17 00:00:00 2001 From: James McCartney Date: Mon, 11 Apr 2016 22:29:33 +0100 Subject: [PATCH 065/268] Raise a local event when a weapon is jammed --- addons/overheating/functions/fnc_jamWeapon.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index 38184808d27..ee6f86f3887 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -43,6 +43,9 @@ if (_ammo > 0) then { // only display the hint once, after you try to shoot an already jammed weapon GVAR(knowAboutJam) = false; +["overheating_jammed", [_unit,_weapon]] call EFUNC(common,localEvent); + + if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { private _condition = { From 153cd28f94579505dd10321e07f634d2cfca2ffb Mon Sep 17 00:00:00 2001 From: James McCartney Date: Mon, 11 Apr 2016 23:09:45 +0100 Subject: [PATCH 066/268] Change event name to weaponJammed --- addons/overheating/functions/fnc_jamWeapon.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index ee6f86f3887..b6cacdbea33 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -43,7 +43,7 @@ if (_ammo > 0) then { // only display the hint once, after you try to shoot an already jammed weapon GVAR(knowAboutJam) = false; -["overheating_jammed", [_unit,_weapon]] call EFUNC(common,localEvent); +["weaponJammed", [_unit,_weapon]] call EFUNC(common,localEvent); if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { From 2869a53e6dad4ca8ec53363c48da11b90fd0c47c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 00:19:24 -0500 Subject: [PATCH 067/268] Googles - Only play wipe anim for primary weapon Close #3638 Animation only makes sense for primary weapon, so skip for others. --- addons/goggles/functions/fnc_clearGlasses.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf index d0b14e4f904..e7d55849386 100644 --- a/addons/goggles/functions/fnc_clearGlasses.sqf +++ b/addons/goggles/functions/fnc_clearGlasses.sqf @@ -26,7 +26,7 @@ _effects set [BROKEN, _broken]; SETGLASSES(_unit,_effects); -if (stance _unit != "PRONE") then { +if ((stance _unit != "PRONE") && {primaryWeapon _unit != ""} && {currentWeapon _unit == primaryWeapon _unit}) then { _unit playActionNow "gestureWipeFace"; }; From 3744b980f49128946e21aed055a5d2bbbec6f778 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 02:14:06 -0500 Subject: [PATCH 068/268] Javelin - Verify player has LOS to cursorTarget Fix #3668 --- addons/javelin/functions/fnc_onOpticDraw.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index f561806eaa7..4bf80641e3c 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -99,7 +99,10 @@ if (_range > 50 && {_range < 2500}) then { }; if (isNull _newTarget) then { - _newTarget = cursorTarget; + private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorTarget, ace_player, cursorTarget, true, 1]; + if (_intersectionsToCursorTarget isEqualTo []) then { + _newTarget = cursorTarget; + }; }; // Create constants From 5d70db3d9b12ef5131f1aae87cc0b43fb805f592 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 12:12:49 -0500 Subject: [PATCH 069/268] LoadPerson - Only try vehicles that have room Fix #2965 The FRIES is a "Helicopter" so we were trying to load into it, because it was closest. Also disable Cargo system on it so we don't load other things into it And remove all interactions on it as well. --- addons/common/XEH_postInit.sqf | 1 + addons/common/functions/fnc_loadPerson.sqf | 31 ++++++---------------- addons/fastroping/CfgVehicles.hpp | 4 +++ 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ae1014ddc8b..4c05b1cf7a8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -133,6 +133,7 @@ if (isServer) then { ["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler); ["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler); +["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler); ["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler); ["lockVehicle", { diff --git a/addons/common/functions/fnc_loadPerson.sqf b/addons/common/functions/fnc_loadPerson.sqf index 3071ffbd47e..6c728134d17 100644 --- a/addons/common/functions/fnc_loadPerson.sqf +++ b/addons/common/functions/fnc_loadPerson.sqf @@ -21,33 +21,18 @@ private _vehicle = objNull; if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle}; -private _loadcar = nearestObject [_unit, "Car"]; - -if (_unit distance _loadcar <= 10) then { - _vehicle = _loadcar; -} else { - private _loadair = nearestObject [_unit, "Air"]; - - if (_unit distance _loadair <= 10) then { - _vehicle = _loadair; - } else { - private _loadtank = nearestObject [_unit, "Tank"]; - - if (_unit distance _loadtank <= 10) then { - _vehicle = _loadtank; - } else { - private _loadboat = nearestObject [_unit, "Ship_F"]; - - if (_unit distance _loadboat <= 10) then { - _vehicle = _loadboat; - }; - }; +private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], 10]; + +{ + TRACE_1("",_x); + if ((_x emptyPositions "cargo" > 0) || {_x emptyPositions "gunner" > 0}) exitWith { + _vehicle = _x; }; -}; +} forEach _nearVehicles; if (!isNull _vehicle) then { [_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); - [[_unit, _vehicle, _caller], QFUNC(loadPersonLocal), _unit, false] call FUNC(execRemoteFnc); + ["loadPersonEvent", _unit, [_unit, _vehicle, _caller]] call FUNC(objectEvent); }; _vehicle diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index a9f5ebfbade..dcd399508b1 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -73,6 +73,10 @@ class CfgVehicles { class ACE_friesBase: Helicopter_Base_F { destrType = ""; class Turrets {}; + class ACE_Actions {}; + class ACE_SelfActions {}; + EGVAR(cargo,hasCargo) = 0; + EGVAR(cargo,space) = 0; }; class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; From d7b0bde1ca3e6c455d63538f773733a615bc9b0b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 12:28:48 -0500 Subject: [PATCH 070/268] Fix Wildcat attach point --- addons/fastroping/CfgVehicles.hpp | 2 +- addons/fastroping/script_component.hpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index dcd399508b1..609e386e68e 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -209,7 +209,7 @@ class CfgVehicles { GVAR(enabled) = 2; GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"}; GVAR(friesType) = "ACE_friesGantryReverse"; - GVAR(friesAttachmentPoint)[] = {1.04, 2.5, -0.34}; + GVAR(friesAttachmentPoint)[] = {-1.04, 2.5, -0.34}; EQUIP_FRIES_ATTRIBUTE; }; class Heli_light_03_unarmed_base_F: Heli_light_03_base_F { diff --git a/addons/fastroping/script_component.hpp b/addons/fastroping/script_component.hpp index ccfa2c3e566..3770bfe0d42 100644 --- a/addons/fastroping/script_component.hpp +++ b/addons/fastroping/script_component.hpp @@ -1,6 +1,11 @@ #define COMPONENT fastroping #include "\z\ace\addons\main\script_mod.hpp" +// #define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + #ifdef DEBUG_ENABLED_FASTROPING #define DEBUG_MODE_FULL #endif From 4f6b11c2a6de9a313c194bfaf67e731aa9508001 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 20:04:12 -0500 Subject: [PATCH 071/268] Clarify repair while engine is running #3348 - Show action, but exit and show warning when selected - Optional (default off) setting to auto shut off engine to keep compatibility with missions --- addons/common/XEH_postInit.sqf | 1 + addons/repair/ACE_Settings.hpp | 5 +++++ addons/repair/functions/fnc_canRepair.sqf | 3 ++- addons/repair/functions/fnc_repair.sqf | 9 ++++++++- addons/repair/stringtable.xml | 5 +++++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ae1014ddc8b..c10246212c8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -146,6 +146,7 @@ if (isServer) then { ["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler); ["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler); +["engineOn", {(_this select 0) engineOn (_this select 1)}] call FUNC(addEventhandler); ["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler); ["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler); ["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler); diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index c3c8daad160..9f6d20ae97a 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -77,4 +77,9 @@ class ACE_Settings { values[] = {"None", "ToolKit"}; _values[] = {{}, {"ToolKit"}}; }; + class GVAR(autoShutOffEngineWhenStartingRepair) { + typeName = "BOOL"; + value = 1; + category = ECSTRING(OptionsMenu,CategoryLogistics); + }; }; diff --git a/addons/repair/functions/fnc_canRepair.sqf b/addons/repair/functions/fnc_canRepair.sqf index f7c3f60a8a8..6027a34fd5b 100644 --- a/addons/repair/functions/fnc_canRepair.sqf +++ b/addons/repair/functions/fnc_canRepair.sqf @@ -25,7 +25,8 @@ private ["_config", "_engineerRequired", "_items", "_return", "_condition", "_ve _config = (ConfigFile >> "ACE_Repair" >> "Actions" >> _className); if !(isClass _config) exitWith {false}; // or go for a default? -if(isEngineOn _target) exitWith {false}; + +// if(isEngineOn _target) exitWith {false}; // Ignore here so action shows, then exit and show warning when selected #3348 _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { getNumber (_config >> "requiredEngineer"); diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index 25e58151c54..f5b7d8cbfc2 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -36,7 +36,14 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { 0; }; if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitWith {false}; -if (isEngineOn _target) exitWith {false}; + +if ((isEngineOn _target) && {GVAR(autoShutOffEngineWhenStartingRepair)}) then { + ["engineOn", _target, [_target, false]] call EFUNC(common,objectEvent); +}; +if ((isEngineOn _target) && {!GVAR(autoShutOffEngineWhenStartingRepair)}) exitWith { + ["displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call EFUNC(common,localEvent); + false +}; //Items can be an array of required items or a string to a ACE_Setting array _items = if (isArray (_config >> "items")) then { diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index fb505f4f4ec..ee79a1d427d 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1316,5 +1316,10 @@ Oggetti richiesti per riparare/rimuovere ruote Items exigés pour enlever/remplacer les roues
+ + Engine must be off to repair + Motor muss ausgeschaltet zu reparieren sein + El motor necesita desactivado para la reparación +
From f16a65f3815f6da47eab963467fc6b39f1a00d64 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Apr 2016 20:05:56 -0500 Subject: [PATCH 072/268] Fix default --- addons/repair/ACE_Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index 9f6d20ae97a..9ee40529e75 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -79,7 +79,7 @@ class ACE_Settings { }; class GVAR(autoShutOffEngineWhenStartingRepair) { typeName = "BOOL"; - value = 1; + value = 0; category = ECSTRING(OptionsMenu,CategoryLogistics); }; }; From 33600472045af602797df69c9beb9d5146470e20 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 13 Apr 2016 13:05:32 -0500 Subject: [PATCH 073/268] Better handle unloading on slopes Close #3667 --- addons/common/functions/fnc_findUnloadPosition.sqf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/common/functions/fnc_findUnloadPosition.sqf b/addons/common/functions/fnc_findUnloadPosition.sqf index f7155fd87b3..c3b0dc3f340 100644 --- a/addons/common/functions/fnc_findUnloadPosition.sqf +++ b/addons/common/functions/fnc_findUnloadPosition.sqf @@ -92,6 +92,15 @@ while {_rangeToCheck < _maxDistance} do { private _point1ASL = (AGLtoASL _roundAGL) vectorAdd [_radiusOfItem * cos _angle, _radiusOfItem * sin _angle, 0.1]; private _point2ASL = (AGLtoASL _roundAGL) vectorAdd [-_radiusOfItem * cos _angle, -_radiusOfItem * sin _angle, (_radiusOfItem + 0.5)]; private _testIntersections = lineIntersectsSurfaces [_point1ASL, _point2ASL]; + if (((count _testIntersections) == 1) && {isNull ((_testIntersections select 0) select 2)}) then { + private _hitGroundASL = (_testIntersections select 0) select 0; + private _hitHeightOffset = ((AGLtoASL _roundAGL) select 2) - (_hitGroundASL select 2); + private _hit2dOffset = _roundAGL distance2D _hitGroundASL; + private _slope = _hitHeightOffset atan2 _hit2dOffset; + if (_slope < 25) then { //Ignore ground hit if slope is reasonable + _testIntersections = []; + }; + }; if (!(_testIntersections isEqualTo [])) exitWith { TRACE_2("collision low/high",_roundAGL,_testIntersections); _roundPointIsValid = false; From dec266a5462470ab077fc33aca264e160ff073d6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Apr 2016 13:52:20 +0200 Subject: [PATCH 074/268] Fix ship view distance using foot instead of vehicle setting, Cleanup view distance component --- addons/viewdistance/CfgVehicles.hpp | 4 +- addons/viewdistance/XEH_PREP.hpp | 1 - addons/viewdistance/XEH_clientInit.sqf | 2 +- .../functions/fnc_adaptViewDistance.sqf | 23 ++++++----- .../functions/fnc_changeViewDistance.sqf | 34 ++++++++-------- .../functions/fnc_returnObjectCoeff.sqf | 6 +-- .../functions/fnc_returnValue.sqf | 39 ++++++++----------- .../functions/fnc_setFovBasedOvdPFH.sqf | 29 +++++--------- addons/viewdistance/script_component.hpp | 5 +++ 9 files changed, 63 insertions(+), 80 deletions(-) diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 86d906bfced..4c6639370ca 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -1,6 +1,6 @@ class CfgVehicles { class ACE_Module; - class GVAR(ModuleSettings) : ACE_Module { + class GVAR(ModuleSettings): ACE_Module { author = ECSTRING(common,ACETeam); category = "ACE"; function = QUOTE(DFUNC(initModule)); @@ -28,4 +28,4 @@ class CfgVehicles { sync[] = {}; }; }; -}; \ No newline at end of file +}; diff --git a/addons/viewdistance/XEH_PREP.hpp b/addons/viewdistance/XEH_PREP.hpp index fea5de5a4fc..c040baf3343 100644 --- a/addons/viewdistance/XEH_PREP.hpp +++ b/addons/viewdistance/XEH_PREP.hpp @@ -1,4 +1,3 @@ - PREP(adaptViewDistance); PREP(changeViewDistance); PREP(initModule); diff --git a/addons/viewdistance/XEH_clientInit.sqf b/addons/viewdistance/XEH_clientInit.sqf index 45b86d944dc..dfcfd7e4050 100644 --- a/addons/viewdistance/XEH_clientInit.sqf +++ b/addons/viewdistance/XEH_clientInit.sqf @@ -24,6 +24,6 @@ if (!hasInterface) exitWith {}; // Set the EH which waits for a vehicle change to automatically swap between On Foot/In Land Vehicle/In Air Vehicle // Also run when SettingsInitialized runs (not guaranteed) ["playerVehicleChanged",{ - [false] call FUNC(adaptViewDistance) + [false] call FUNC(adaptViewDistance); }] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler); diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index f1ea7121b26..87b6232e998 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -2,7 +2,6 @@ * Author: Winter * Sets the player's current view distance according to whether s/he is on foot, in a land vehicle or in an air vehicle. * - * * Arguments: * 0: Show Prompt * @@ -17,23 +16,23 @@ #include "script_component.hpp" -private["_land_vehicle","_air_vehicle"]; - -params ["_show_prompt"]; +params ["_showPrompt"]; if (!GVAR(enabled) || isNull ACE_player) exitWith {}; -_land_vehicle = (vehicle ACE_player) isKindOf "LandVehicle"; -_air_vehicle = (vehicle ACE_player) isKindOf "Air"; +private _vehicle = vehicle ACE_player; + +private _landVehicle = _vehicle isKindOf "LandVehicle" || _vehicle isKindOf "Ship_F"; +private _airVehicle = _vehicle isKindOf "Air"; -if (!_land_vehicle && !_air_vehicle) exitWith { - [GVAR(viewDistanceOnFoot),_show_prompt] call FUNC(changeViewDistance); +if (!_landVehicle && !_airVehicle) exitWith { + [GVAR(viewDistanceOnFoot), _showPrompt] call FUNC(changeViewDistance); }; -if (_land_vehicle) exitWith { - [GVAR(viewDistanceLandVehicle),_show_prompt] call FUNC(changeViewDistance); +if (_landVehicle) exitWith { + [GVAR(viewDistanceLandVehicle), _showPrompt] call FUNC(changeViewDistance); }; -if (_air_vehicle) exitWith { - [GVAR(viewDistanceAirVehicle),_show_prompt] call FUNC(changeViewDistance); +if (_airVehicle) exitWith { + [GVAR(viewDistanceAirVehicle), _showPrompt] call FUNC(changeViewDistance); }; diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 28bba29b679..c5f39ff2f85 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -16,20 +16,18 @@ */ #include "script_component.hpp" -private ["_text", "_new_view_distance", "_view_distance_limit", "_object_view_distance_coeff"]; +params ["_indexRequested", "_showPrompt"]; -params ["_index_requested", "_show_prompt"]; +private _newViewDistance = [_indexRequested] call FUNC(returnValue); // changes the setting index into an actual view distance value +private _objectViewDistanceCoeff = [GVAR(objectViewDistanceCoeff)] call FUNC(returnObjectCoeff); // changes the setting index into a coefficient. +private _viewDistanceLimit = GVAR(limitViewDistance); // Grab the limit -_new_view_distance = [_index_requested] call FUNC(returnValue); // changes the setting index into an actual view distance value -_object_view_distance_coeff = [GVAR(objectViewDistanceCoeff)] call FUNC(returnObjectCoeff); // changes the setting index into a coefficient. -_view_distance_limit = GVAR(limitViewDistance); // Grab the limit +TRACE_3("Limit",_newViewDistance,_viewDistanceLimit,_showPrompt); +setViewDistance (_newViewDistance min _viewDistanceLimit); -TRACE_2("Limit",_new_view_distance,_view_distance_limit); -setViewDistance (_new_view_distance min _view_distance_limit); - -if (typeName _object_view_distance_coeff == "SCALAR") then { - if (_object_view_distance_coeff > 0) then { - setObjectViewDistance (_object_view_distance_coeff * viewDistance); +if (_objectViewDistanceCoeff isEqualType 0) then { + if (_objectViewDistanceCoeff > 0) then { + setObjectViewDistance (_objectViewDistanceCoeff * viewDistance); } else { // Restore correct view distance when changing from FoV Based to Off // Restoring directly inside PFH's self-exit resulted in the need of selecting another option to take effect @@ -42,18 +40,18 @@ if (typeName _object_view_distance_coeff == "SCALAR") then { }; }; -if (_show_prompt) then { +if (_showPrompt) then { if (GVAR(objectViewDistanceCoeff) > 0) then { + private _text = ""; // FoV Based or % if (GVAR(objectViewDistanceCoeff) == 6) then { _text = format ["%1 %2
Min. %3
Max. %4
", localize LSTRING(objectinfotext), localize LSTRING(object_fovBased), GVAR(fovBasedPFHminimalViewDistance), viewDistance]; } else { - _text = if (_new_view_distance <= _view_distance_limit) then { - format ["%1 %2m", localize LSTRING(infotext), viewDistance]; - } else { - format ["%1 %2m", localize LSTRING(invalid), viewDistance]; - }; - _text = _text + format ["
%1 %2%3", localize LSTRING(objectinfotext), _object_view_distance_coeff * 100, "%"]; + _text = [ + format ["%1 %2m", localize LSTRING(invalid), viewDistance], + format ["%1 %2m", localize LSTRING(infotext), viewDistance] + ] select (_newViewDistance <= _viewDistanceLimit); + _text = _text + format ["
%1 %2%3", localize LSTRING(objectinfotext), _objectViewDistanceCoeff * 100, "%"]; }; [parseText _text, 2] call EFUNC(common,displayTextStructured); }; diff --git a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf index 90c70b810c9..257dca29955 100644 --- a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf +++ b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf @@ -16,11 +16,9 @@ #include "script_component.hpp" -private ["_return"]; - params ["_index"]; -_return = switch (_index) do { +switch (_index) do { case 0: {0.00}; // Off case 1: {0.20}; // Very Low case 2: {0.40}; // Low @@ -30,5 +28,3 @@ _return = switch (_index) do { case 6: {"fov"}; // FoV Based default {0.50}; // something broke if this returns }; - -_return; diff --git a/addons/viewdistance/functions/fnc_returnValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf index 7224292fa47..35c0894520d 100644 --- a/addons/viewdistance/functions/fnc_returnValue.sqf +++ b/addons/viewdistance/functions/fnc_returnValue.sqf @@ -16,28 +16,23 @@ #include "script_component.hpp" -private ["_return"]; - params ["_index"]; -_return = switch (_index) do { - case 0: {viewDistance}; // Video Settings option - case 1: {500}; - case 2: {1000}; - case 3: {1500}; - case 4: {2000}; - case 5: {2500}; - case 6: {3000}; - case 7: {3500}; - case 8: {4000}; - case 9: {5000}; - case 10: {6000}; - case 11: {7000}; - case 12: {8000}; - case 13: {9000}; - case 14: {10000}; - default {1000}; +switch (_index) do { + case 0: {viewDistance}; // Video Settings option + case 1: {500}; + case 2: {1000}; + case 3: {1500}; + case 4: {2000}; + case 5: {2500}; + case 6: {3000}; + case 7: {3500}; + case 8: {4000}; + case 9: {5000}; + case 10: {6000}; + case 11: {7000}; + case 12: {8000}; + case 13: {9000}; + case 14: {10000}; + default {1000}; }; - -TRACE_1("VD Index Return",_return); -_return diff --git a/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf b/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf index bcde34316a3..4a57747d978 100644 --- a/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf +++ b/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf @@ -17,10 +17,6 @@ #include "script_component.hpp" -#define VD_ZOOM_NORMAL 1.00041 -#define VD_ZOOM_DIVISION 35 -#define VD_ZOOM_DIVISION_AIR 10 - params ["", "_idPFH"]; // Remove PFH and set Object View Distance back to what it was before @@ -29,25 +25,20 @@ if (GVAR(objectViewDistanceCoeff) < 6) exitWith { GVAR(fovBasedPFHminimalViewDistance) = nil; }; -private ["_zoom"]; -_zoom = (call CBA_fnc_getFov) select 1; +private _zoom = (call CBA_fnc_getFov) select 1; -// Air -if ((vehicle ACE_player) isKindOf "Air") exitWith { - if (_zoom > VD_ZOOM_NORMAL) then { - // Dynamically set Object View Distance based on player's Zoom Level and View Distance +if (_zoom > VD_ZOOM_NORMAL) then { + // Dynamically set Object View Distance based on player's Zoom Level and View Distance + if ((vehicle ACE_player) isKindOf "Air") then { setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); } else { - setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10); + setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); }; - TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom); -}; - -// Land -if (_zoom > VD_ZOOM_NORMAL) then { - // Dynamically set Object View Distance based on player's Zoom Level and View Distance - setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); } else { - setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance); + if ((vehicle ACE_player) isKindOf "Air") then { + setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10); + } else { + setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance); + }; }; TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom); diff --git a/addons/viewdistance/script_component.hpp b/addons/viewdistance/script_component.hpp index dfd04bbf9da..f5cd31f8ce9 100644 --- a/addons/viewdistance/script_component.hpp +++ b/addons/viewdistance/script_component.hpp @@ -15,3 +15,8 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + + +#define VD_ZOOM_NORMAL 1.00041 +#define VD_ZOOM_DIVISION 35 +#define VD_ZOOM_DIVISION_AIR 10 From 04831267f24557e3da260d8db366643c7a0e2792 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Apr 2016 13:55:15 +0200 Subject: [PATCH 075/268] Use lazy evaluation --- addons/viewdistance/functions/fnc_adaptViewDistance.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index 87b6232e998..4816ee946e4 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -22,7 +22,7 @@ if (!GVAR(enabled) || isNull ACE_player) exitWith {}; private _vehicle = vehicle ACE_player; -private _landVehicle = _vehicle isKindOf "LandVehicle" || _vehicle isKindOf "Ship_F"; +private _landVehicle = _vehicle isKindOf "LandVehicle" || {_vehicle isKindOf "Ship_F"}; private _airVehicle = _vehicle isKindOf "Air"; if (!_landVehicle && !_airVehicle) exitWith { From 300d069e782e7877f67d367536cc9da2dee49f32 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Apr 2016 13:59:31 +0200 Subject: [PATCH 076/268] Exclude FRIES from repair interactions --- addons/repair/CfgEventHandlers.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index ffd75a38bc7..3de22a2da46 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -35,7 +35,7 @@ class Extended_InitPost_EventHandlers { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); serverInit = QUOTE(_this call DFUNC(addSpareParts)); - exclude[] = {QEGVAR(fastroping,helper)}; + exclude[] = {QEGVAR(fastroping,helper), "ACE_friesAnchorBar"}; }; }; class Plane { From 839d06779789a481d033f5d60f57183aeb37af57 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Apr 2016 17:38:11 +0200 Subject: [PATCH 077/268] Exclude base FRIES class --- addons/repair/CfgEventHandlers.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index 3de22a2da46..06647d8dd5c 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -35,7 +35,7 @@ class Extended_InitPost_EventHandlers { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); serverInit = QUOTE(_this call DFUNC(addSpareParts)); - exclude[] = {QEGVAR(fastroping,helper), "ACE_friesAnchorBar"}; + exclude[] = {QEGVAR(fastroping,helper), "ACE_friesBase"}; }; }; class Plane { From d523ef1fcd8ee75b852fa35a0893658edb29c120 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Apr 2016 10:57:36 -0500 Subject: [PATCH 078/268] Try to use cursorObject first --- addons/javelin/functions/fnc_onOpticDraw.sqf | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index 4bf80641e3c..67e337291b5 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -98,11 +98,17 @@ if (_range > 50 && {_range < 2500}) then { }; }; -if (isNull _newTarget) then { - private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorTarget, ace_player, cursorTarget, true, 1]; - if (_intersectionsToCursorTarget isEqualTo []) then { - _newTarget = cursorTarget; - }; +if ((isNull _newTarget) && {cursorObject isKindOf "AllVehicles"}) then { + private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorObject, ace_player, cursorObject, true, 1]; + if (_intersectionsToCursorTarget isEqualTo []) then { + _newTarget = cursorObject; + }; +}; +if ((isNull _newTarget) && {cursorTarget isKindOf "AllVehicles"}) then { + private _intersectionsToCursorTarget = lineIntersectsSurfaces [(AGLtoASL positionCameraToWorld [0,0,0]), aimPos cursorTarget, ace_player, cursorTarget, true, 1]; + if (_intersectionsToCursorTarget isEqualTo []) then { + _newTarget = cursorTarget; + }; }; // Create constants From d90fc3dd06a90c87d7aacc4c92186a9cca4eca2d Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Apr 2016 18:58:01 +0200 Subject: [PATCH 079/268] Fix variable name and header examples --- addons/tagging/functions/fnc_createTag.sqf | 8 ++++---- addons/tagging/functions/fnc_tag.sqf | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 5fa31478e29..4f831965249 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -13,15 +13,15 @@ * Tag created * * Example: - * [positionASL, vectorDirAndUp, "black", object] call ace_tagging_fnc_createTag + * [positionASL, vectorDirAndUp, "z\ace\addons\tagging\UI\tags\black\0.paa", object] call ace_tagging_fnc_createTag * * Public: No */ #include "script_component.hpp" -params ["_tagPosASL", "_vectorDirAndUp", "_color", "_object", "_unit"]; -TRACE_5("createTag:",_tagPosASL,_vectorDirAndUp,_color,_object,_unit); +params ["_tagPosASL", "_vectorDirAndUp", "_texture", "_object", "_unit"]; +TRACE_5("createTag:",_tagPosASL,_vectorDirAndUp,_texture,_object,_unit); if (_texture == "") exitWith { ACE_LOGERROR_1("%1 is not a valid tag texture.",_texture); @@ -34,7 +34,7 @@ _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers -["tagCreated", [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); +["tagCreated", [_tag, _texture, _object, _unit]] call EFUNC(common,globalEvent); if (isNull _object) exitWith {true}; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 3bd559f7023..43e951629e5 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -10,7 +10,7 @@ * Sucess * * Example: - * success = [player, "blue"] call ace_tagging_fnc_tag + * success = [player, "z\ace\addons\tagging\UI\tags\black\0.paa"] call ace_tagging_fnc_tag * * Public: Yes */ From 7bd2378c41bf6b6275ecd25e1755ec7bfed34393 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 16 Apr 2016 12:54:33 -0500 Subject: [PATCH 080/268] Concertina Wire - Don't recoil broken wire, fix killer Close #3695 - Don't recoil broken wire - Use midpoint to search for nearby cars, and ensure the veh was moving. --- addons/concertina_wire/CfgVehicles.hpp | 2 +- addons/concertina_wire/functions/fnc_handleKilled.sqf | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index dd18c07209e..88975ea7e91 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -86,7 +86,7 @@ class CfgVehicles { selection = ""; displayName = "$STR_ACE_UNROLLWIRE"; distance = 5; - condition = "true"; + condition = "alive _target"; statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount)); showDisabled = 0; exceptions[] = {}; diff --git a/addons/concertina_wire/functions/fnc_handleKilled.sqf b/addons/concertina_wire/functions/fnc_handleKilled.sqf index ac59798d104..1af3f93151f 100644 --- a/addons/concertina_wire/functions/fnc_handleKilled.sqf +++ b/addons/concertina_wire/functions/fnc_handleKilled.sqf @@ -14,13 +14,17 @@ */ #include "script_component.hpp" params ["_wire", "_killer"]; +TRACE_2("params",_wire,_killer); private ["_distance", "_vehicle"]; if (isNull _killer) then { _killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull]; if (isNull _killer) then { - _killer = nearestObject [_wire, "car"]; + private _midPoint = ((_wire selectionPosition "start") vectorAdd (_wire selectionPosition "deploy")) vectorMultiply 0.5; + { + if ((vectorMagnitude velocity _x) > 0) exitWith {_killer = _x}; + } forEach (nearestObjects [(_wire modelToWorld _midPoint), ["Car"], 8]); }; }; if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {}; From 23632281cfe8c1f3bed73833dfd0cb574b7686ef Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 17 Apr 2016 23:22:41 -0500 Subject: [PATCH 081/268] Add day (non night vision) version of the vector 21 --- .../functions/fnc_handleFired.sqf | 2 +- addons/dagr/functions/fnc_menuInit.sqf | 2 +- addons/vector/CfgWeapons.hpp | 5 +++++ addons/vector/config.cpp | 2 +- addons/vector/functions/fnc_onKeyHold.sqf | 2 +- addons/vector/initKeybinds.sqf | 4 ++-- addons/vector/stringtable.xml | 12 ++++++++++++ 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index 9646f065d48..aa6922946a7 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then { _bulletTraceVisible = false; if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { - if (currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) then { + if (currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay", "Binocular", "Rangefinder", "Laserdesignator"]) then { _bulletTraceVisible = true; } else { if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index e4fb3415372..471150dd1c8 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -522,7 +522,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __mainText) ctrlSetText "Connecting..."; }; if (ACE_time - GVAR(busyTimer) > 0.6) then { - if (ACE_player hasWeapon "ACE_Vector") then { + if ((ACE_player hasWeapon "ACE_Vector") || {ACE_player hasWeapon "ACE_VectorDay"}) then { GVAR(displaySelection) = "VECTOR"; (__dsp displayCtrl __mainText) ctrlSetText "Vector Connected"; GVAR(vectorConnected) = true; diff --git a/addons/vector/CfgWeapons.hpp b/addons/vector/CfgWeapons.hpp index 019d774da8e..a28321bdc88 100644 --- a/addons/vector/CfgWeapons.hpp +++ b/addons/vector/CfgWeapons.hpp @@ -13,4 +13,9 @@ class CfgWeapons { opticsZoomMin = 0.06621; weaponInfoType = "ACE_RscOptics_vector"; }; + class ACE_VectorDay: ACE_Vector { + author = ECSTRING(common,ACETeam); + displayName = CSTRING(VectorDayName); + visionMode[] = {"Normal"}; + }; }; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index e2a52b47ef2..e4cdf9a55b7 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -3,7 +3,7 @@ class CfgPatches { class ADDON { units[] = {"ACE_Item_Vector"}; - weapons[] = {"ACE_Vector"}; + weapons[] = {"ACE_Vector", "ACE_VectorDay"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; author[] = {"Ghost","Hamburger SV","commy2","bux578"}; diff --git a/addons/vector/functions/fnc_onKeyHold.sqf b/addons/vector/functions/fnc_onKeyHold.sqf index ff4e5fc6adc..b76fe0ad0c1 100644 --- a/addons/vector/functions/fnc_onKeyHold.sqf +++ b/addons/vector/functions/fnc_onKeyHold.sqf @@ -7,7 +7,7 @@ PFH executed while holding a vector key down. */ #include "script_component.hpp" -if (currentWeapon ACE_player != "ACE_Vector") exitWith { +if (!(currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"])) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; GVAR(currentMode) = ""; diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.sqf index babef0819c5..0d4bb59d273 100644 --- a/addons/vector/initKeybinds.sqf +++ b/addons/vector/initKeybinds.sqf @@ -5,7 +5,7 @@ // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !(currentWeapon ACE_player == "ACE_Vector" && {cameraView == "GUNNER"}) exitWith {false}; + if !((currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"]) && {cameraView == "GUNNER"}) exitWith {false}; // prevent holding down if (GETGVAR(isDownStateKey1,false)) exitWith {false}; @@ -34,7 +34,7 @@ // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !(currentWeapon ACE_player == "ACE_Vector" && {cameraView == "GUNNER"}) exitWith {false}; + if !((currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"]) && {cameraView == "GUNNER"}) exitWith {false}; // prevent holding down if (GETGVAR(isDownStateKey2,false)) exitWith {false}; diff --git a/addons/vector/stringtable.xml b/addons/vector/stringtable.xml index 80135294d41..fd8d73858c1 100644 --- a/addons/vector/stringtable.xml +++ b/addons/vector/stringtable.xml @@ -2,6 +2,18 @@ + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + Vector 21 Nite + + Vector 21 Vector 21 Vector 21 From 65ccf66d004cacdad823c109fe7f9a1d27ce43ed Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 18 Apr 2016 15:20:35 +0200 Subject: [PATCH 082/268] Fixed redundant privates in setCardiacArrest --- addons/medical/functions/fnc_setCardiacArrest.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index 7b2c195f103..bf4a679bdcb 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -27,11 +27,10 @@ _unit setVariable [QGVAR(heartRate), 0]; _timeInCardiacArrest = 120 + round(random(600)); [{ - private ["_args","_unit","_startTime","_timeInCardiacArrest","_heartRate"]; params ["_args", "_idPFH"]; _args params ["_unit", "_startTime", "_timeInCardiacArrest"]; - _heartRate = _unit getVariable [QGVAR(heartRate), 80]; + private _heartRate = _unit getVariable [QGVAR(heartRate), 80]; if (_heartRate > 0 || !alive _unit) exitWith { [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setVariable [QGVAR(inCardiacArrest), nil,true]; From 236ad912af949e3b077d33326ab46fc9afb5c808 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 19 Apr 2016 12:59:41 -0500 Subject: [PATCH 083/268] Gforces - Add ace_setting to only run in aircraft --- addons/gforces/ACE_Settings.hpp | 8 ++++ addons/gforces/XEH_PREP.hpp | 2 +- addons/gforces/XEH_postInit.sqf | 42 +++++++++++++++---- addons/gforces/functions/fnc_addPFEH.sqf | 29 +++++++++++++ .../functions/fnc_pfhUpdateGForces.sqf | 6 ++- addons/gforces/stringtable.xml | 15 +++++++ 6 files changed, 90 insertions(+), 12 deletions(-) create mode 100644 addons/gforces/ACE_Settings.hpp create mode 100644 addons/gforces/functions/fnc_addPFEH.sqf create mode 100644 addons/gforces/stringtable.xml diff --git a/addons/gforces/ACE_Settings.hpp b/addons/gforces/ACE_Settings.hpp new file mode 100644 index 00000000000..617adb21da6 --- /dev/null +++ b/addons/gforces/ACE_Settings.hpp @@ -0,0 +1,8 @@ +class ACE_Settings { + class GVAR(enabledFor) { + displayName = CSTRING(enabledFor_displayName); + typeName = "SCALAR"; + value = 2; + values[] = {ECSTRING(Common,Disabled), CSTRING(enabledFor_onlyAircraft), ECSTRING(Common,Enabled)}; + }; +}; diff --git a/addons/gforces/XEH_PREP.hpp b/addons/gforces/XEH_PREP.hpp index 1d3d8dac053..d7ef5091744 100644 --- a/addons/gforces/XEH_PREP.hpp +++ b/addons/gforces/XEH_PREP.hpp @@ -1,2 +1,2 @@ - +PREP(addPFEH); PREP(pfhUpdateGForces); diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf index 23abe8e8268..d1df112606e 100644 --- a/addons/gforces/XEH_postInit.sqf +++ b/addons/gforces/XEH_postInit.sqf @@ -2,14 +2,38 @@ if (!hasInterface) exitWith {}; -// Setup ppEffect -GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215]; -GVAR(GForces_CC) ppEffectEnable true; -GVAR(GForces_CC) ppEffectForceInNVG true; -GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]]; -GVAR(GForces_CC) ppEffectCommit 0.4; +GVAR(pfID) = -1; -GVAR(lastUpdateTime) = 0; -GVAR(oldVel) = [0,0,0]; +["SettingsInitialized", { + TRACE_1("SettingsInitialized eh",GVAR(enabledFor)); -[DFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler; + if (GVAR(enabledFor) == 0) exitWith {}; //Module has no effect if enabledFor is "None" + if (GVAR(enabledFor) == 2) exitWith { //PFEH is always on when enabledFor is "All" + [] call FUNC(addPFEH); + TRACE_1("adding perm PFEH",GVAR(pfID)); + }; + + //PFEH only runs when player is in a type "Air" vehicle when enabledFor is "Aircraft" + + if ((!isNull (vehicle ACE_player)) && {(vehicle ACE_player) isKindOf "Air"}) then { //"playerVehicleChanged" can happen before "settingInit" + [] call FUNC(addPFEH); + TRACE_1("adding temp PFEH [start in]",GVAR(pfID)); + }; + ["playerVehicleChanged", { + params ["", "_vehicle"]; + TRACE_2("playerVehicleChanged",_vehicle,typeOf _vehicle); + if (_vehicle isKindOf "Air") then { + if (GVAR(pfID) == -1) then { + [] call FUNC(addPFEH); + TRACE_1("adding temp PFEH",GVAR(pfID)); + }; + } else { + if (GVAR(pfID) != -1) then { + TRACE_1("removing temp PFEH",GVAR(pfID)); + ppEffectDestroy GVAR(GForces_CC); + [GVAR(pfID)] call CBA_fnc_removePerFrameHandler; + GVAR(pfID) = -1; + }; + }; + }] call EFUNC(common,addEventHandler); +}] call EFUNC(common,addEventHandler); diff --git a/addons/gforces/functions/fnc_addPFEH.sqf b/addons/gforces/functions/fnc_addPFEH.sqf new file mode 100644 index 00000000000..50311c3a069 --- /dev/null +++ b/addons/gforces/functions/fnc_addPFEH.sqf @@ -0,0 +1,29 @@ +/* + * Author: KoffeinFlummi and esteldunedain + * Adds the PFEH + * + * Argument: + * None + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +//Reset forces array +GVAR(GForces) = []; +GVAR(GForces_Index) = 0; + +// Setup ppEffect +GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215]; +GVAR(GForces_CC) ppEffectEnable true; +GVAR(GForces_CC) ppEffectForceInNVG true; +GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]]; +GVAR(GForces_CC) ppEffectCommit 0.4; + +GVAR(lastUpdateTime) = 0; +GVAR(oldVel) = [0,0,0]; + +GVAR(pfID) = [DFUNC(pfhUpdateGForces), 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index dd569781e7e..dc6f11ee397 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -13,14 +13,14 @@ */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_params,_pfhId); - // Update the g-forces at constant mission time intervals (taking accTime into account) if ((ACE_time - GVAR(lastUpdateTime)) < INTERVAL) exitWith {}; GVAR(lastUpdateTime) = ACE_time; if (isNull ACE_player || !(alive ACE_player)) exitWith {}; +BEGIN_COUNTER(everyInterval); + private _newVel = velocity (vehicle ACE_player); private _accel = ((_newVel vectorDiff GVAR(oldVel)) vectorMultiply (1 / INTERVAL)) vectorAdd [0, 0, 9.8]; // Cap maximum G's to +- 10 to avoid g-effects when the update is low fps. @@ -91,3 +91,5 @@ if !(ACE_player getVariable ["ACE_isUnconscious", false]) then { }; GVAR(GForces_CC) ppEffectCommit INTERVAL; + +END_COUNTER(everyInterval); diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml new file mode 100644 index 00000000000..ee57af2f869 --- /dev/null +++ b/addons/gforces/stringtable.xml @@ -0,0 +1,15 @@ + + + + + Gforces Effects + Gforces Effekte + Efectos Gforces + + + Only Aircraft + Nur Luftfahrzeug + Sólo Aeronave + + + \ No newline at end of file From 3adbb59f048cd1c46fbcfd03917e841cad75dec0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 19 Apr 2016 23:04:51 -0500 Subject: [PATCH 084/268] Geforce - Change default to aircraft only --- addons/gforces/ACE_Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/gforces/ACE_Settings.hpp b/addons/gforces/ACE_Settings.hpp index 617adb21da6..dbe6dec13a3 100644 --- a/addons/gforces/ACE_Settings.hpp +++ b/addons/gforces/ACE_Settings.hpp @@ -2,7 +2,7 @@ class ACE_Settings { class GVAR(enabledFor) { displayName = CSTRING(enabledFor_displayName); typeName = "SCALAR"; - value = 2; + value = 1; values[] = {ECSTRING(Common,Disabled), CSTRING(enabledFor_onlyAircraft), ECSTRING(Common,Enabled)}; }; }; From cf9479efabbed227ee553af9f0b8a1edc24375e8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 20 Apr 2016 10:40:00 -0500 Subject: [PATCH 085/268] Non-hardcoded binocular / vector detection --- addons/advanced_ballistics/functions/fnc_handleFired.sqf | 2 +- addons/dagr/functions/fnc_menuInit.sqf | 2 +- addons/vector/functions/fnc_onKeyHold.sqf | 2 +- addons/vector/initKeybinds.sqf | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index aa6922946a7..c73cbda3d7a 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then { _bulletTraceVisible = false; if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { - if (currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay", "Binocular", "Rangefinder", "Laserdesignator"]) then { + if ((currentWeapon ACE_player == binocular ACE_player) && {binocular ACE_player != ""}) then { _bulletTraceVisible = true; } else { if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index 471150dd1c8..54cb4467c56 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -522,7 +522,7 @@ GVAR(menuRun) = true; (__dsp displayCtrl __mainText) ctrlSetText "Connecting..."; }; if (ACE_time - GVAR(busyTimer) > 0.6) then { - if ((ACE_player hasWeapon "ACE_Vector") || {ACE_player hasWeapon "ACE_VectorDay"}) then { + if (({_x isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]} count (weapons ACE_player)) > 0) then { GVAR(displaySelection) = "VECTOR"; (__dsp displayCtrl __mainText) ctrlSetText "Vector Connected"; GVAR(vectorConnected) = true; diff --git a/addons/vector/functions/fnc_onKeyHold.sqf b/addons/vector/functions/fnc_onKeyHold.sqf index b76fe0ad0c1..517cf3ea37a 100644 --- a/addons/vector/functions/fnc_onKeyHold.sqf +++ b/addons/vector/functions/fnc_onKeyHold.sqf @@ -7,7 +7,7 @@ PFH executed while holding a vector key down. */ #include "script_component.hpp" -if (!(currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"])) exitWith { +if (!((currentWeapon ACE_player) isKindOf ["ACE_Vector", configFile >> "CfgWeapons"])) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; GVAR(currentMode) = ""; diff --git a/addons/vector/initKeybinds.sqf b/addons/vector/initKeybinds.sqf index 0d4bb59d273..5b099235da8 100644 --- a/addons/vector/initKeybinds.sqf +++ b/addons/vector/initKeybinds.sqf @@ -5,7 +5,7 @@ // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !((currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"]) && {cameraView == "GUNNER"}) exitWith {false}; + if !(((currentWeapon ACE_player) isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]) && {cameraView == "GUNNER"}) exitWith {false}; // prevent holding down if (GETGVAR(isDownStateKey1,false)) exitWith {false}; @@ -34,7 +34,7 @@ // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !((currentWeapon ACE_player in ["ACE_Vector", "ACE_VectorDay"]) && {cameraView == "GUNNER"}) exitWith {false}; + if !(((currentWeapon ACE_player) isKindOf ["ACE_Vector", configFile >> "CfgWeapons"]) && {cameraView == "GUNNER"}) exitWith {false}; // prevent holding down if (GETGVAR(isDownStateKey2,false)) exitWith {false}; From c2126c3bd42b5e14d37bebdced6101d38414cf70 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 20 Apr 2016 10:48:25 -0500 Subject: [PATCH 086/268] Simplify binocular check --- addons/advanced_ballistics/functions/fnc_handleFired.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index c73cbda3d7a..7844e8a53af 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -88,7 +88,7 @@ if (GVAR(ammoTemperatureEnabled) || GVAR(barrelLengthInfluenceEnabled)) then { _bulletTraceVisible = false; if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER") then { - if ((currentWeapon ACE_player == binocular ACE_player) && {binocular ACE_player != ""}) then { + if (currentWeapon ACE_player == binocular ACE_player) then { _bulletTraceVisible = true; } else { if (currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { From 4214e31678fd6bd1e2c3c95f4694d23dcc054ece Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 21 Apr 2016 13:15:35 -0500 Subject: [PATCH 087/268] Fix BIS gesture keybinds - From #3635 - FUNC(playSignal) needs "BIgesture" prefix - Interaction conditions are checked on parent, don't need on every child --- addons/gestures/CfgVehicles.hpp | 28 ++++++++++++++-------------- addons/gestures/XEH_postInit.sqf | 7 ++++--- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 4bf98f49785..8294f437598 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -13,98 +13,98 @@ class CfgVehicles { class GVAR(Advance) { displayName = CSTRING(Advance); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow 'gestureAdvance';); showDisabled = 1; priority = 1.9; }; class GVAR(Go) { displayName = CSTRING(Go); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); showDisabled = 1; priority = 1.8; }; class GVAR(Follow) { displayName = CSTRING(Follow); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow 'gestureFollow';); showDisabled = 1; priority = 1.7; }; class GVAR(Up) { displayName = CSTRING(Up); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow 'gestureUp';); showDisabled = 1; priority = 1.5; }; class GVAR(CeaseFire) { displayName = CSTRING(CeaseFire); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow 'gestureCeaseFire';); showDisabled = 1; priority = 1.3; }; class GVAR(Stop) { displayName = CSTRING(Stop); - condition = QUOTE(canStand _target); + condition = QUOTE(true); statement = QUOTE(_target playActionNow 'gestureFreeze';); // BI animation - is actualls "stop" in all stances but prone showDisabled = 1; priority = 1.2; }; class GVAR(Forward) { displayName = CSTRING(Forward); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(forward)) call FUNC(playSignal)); showDisabled = 1; priority = 1.9; }; class GVAR(Regroup) { displayName = CSTRING(Regroup); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(regroup)) call FUNC(playSignal)); showDisabled = 1; priority = 1.8; }; class GVAR(Freeze) { displayName = CSTRING(Freeze); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(freeze)) call FUNC(playSignal)); showDisabled = 1; priority = 1.7; }; class GVAR(Cover) { displayName = CSTRING(Cover); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(cover)) call FUNC(playSignal)); showDisabled = 1; priority = 1.6; }; class GVAR(Point) { displayName = CSTRING(Point); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(point)) call FUNC(playSignal)); showDisabled = 1; priority = 1.5; }; class GVAR(Engage) { displayName = CSTRING(Engage); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(engage)) call FUNC(playSignal)); showDisabled = 1; priority = 1.4; }; class GVAR(Hold) { displayName = CSTRING(Hold); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(hold)) call FUNC(playSignal)); showDisabled = 1; priority = 1.3; }; class GVAR(Warning) { displayName = CSTRING(Warning); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE(true); statement = QUOTE(QUOTE(QGVAR(warning)) call FUNC(playSignal)); showDisabled = 1; priority = 1.2; diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index b764aeb1763..5aa1de98743 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -10,9 +10,10 @@ GVAR(ReloadMutex) = true; _x params ["_currentName", "_key", ["_vanillaKey", false] ]; // Don't add "ace_gestures_" prefix to BI gestures - private _signalName = _currentName; - if (!_vanillaKey) then { - _signalName = format [QGVAR(%1), _currentName]; + private _signalName = if (_vanillaKey) then { + format ["BIgesture%1", _currentName]; + } else { + format [QGVAR(%1), _currentName]; }; private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; From 097bba9b6867e1aa1b2c4f0b09182f7f0eca4bc0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 21 Apr 2016 13:21:55 -0500 Subject: [PATCH 088/268] Spaces --- addons/gestures/XEH_postInit.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index 5aa1de98743..6d9e057e290 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -10,10 +10,10 @@ GVAR(ReloadMutex) = true; _x params ["_currentName", "_key", ["_vanillaKey", false] ]; // Don't add "ace_gestures_" prefix to BI gestures - private _signalName = if (_vanillaKey) then { - format ["BIgesture%1", _currentName]; + private _signalName = if (_vanillaKey) then { + format ["BIgesture%1", _currentName]; } else { - format [QGVAR(%1), _currentName]; + format [QGVAR(%1), _currentName]; }; private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; From c432ce714e89ea891fb396e43aa212c5b572b00e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 21 Apr 2016 13:56:32 -0500 Subject: [PATCH 089/268] Make explosives helpers hidden in eden. --- addons/explosives/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 5f81bde1273..d5e7e5c968b 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -50,7 +50,7 @@ class CfgVehicles { mapSize = 0.2; icon = "iconObject_1x2"; model = "\A3\Weapons_f\dummyweapon.p3d"; - scope = 2; + scope = 1; scopeCurator = 1; vehicleClass = "Cargo"; class ACE_Actions { @@ -81,7 +81,7 @@ class CfgVehicles { mapSize = 0.2; icon = "iconObject_1x2"; model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d"; - scope = 2; + scope = 1; scopeCurator = 1; vehicleClass = "Cargo"; class ACE_Actions { From 9bd66bc40f01699776031d05fcc4a0b6d3c5dea9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 21 Apr 2016 15:07:13 -0500 Subject: [PATCH 090/268] Cleanup scopeCurator --- addons/explosives/CfgVehicles.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index d5e7e5c968b..3db65462089 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -51,7 +51,6 @@ class CfgVehicles { icon = "iconObject_1x2"; model = "\A3\Weapons_f\dummyweapon.p3d"; scope = 1; - scopeCurator = 1; vehicleClass = "Cargo"; class ACE_Actions { class ACE_MainActions { @@ -82,7 +81,6 @@ class CfgVehicles { icon = "iconObject_1x2"; model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d"; scope = 1; - scopeCurator = 1; vehicleClass = "Cargo"; class ACE_Actions { class ACE_MainActions { From b06659a2e40e4d1136e2fa614b15e27a1fea0635 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 23 Apr 2016 00:29:58 +0200 Subject: [PATCH 091/268] Fix params error --- addons/ui/CfgVehicles.hpp | 3 ++- addons/ui/XEH_clientInit.sqf | 3 +-- addons/ui/functions/fnc_setElements.sqf | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 24340db031b..391b3627eb7 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -9,13 +9,14 @@ class CfgVehicles { isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_UI_ca.paa)); class Arguments { - // BASIC class allowSelectiveUI { displayName = CSTRING(AllowSelectiveUI); description = CSTRING(AllowSelectiveUI_Description); typeName = "BOOL"; defaultValue = 1; }; + + // BASIC class soldierVehicleWeaponInfo { displayName = CSTRING(SoldierVehicleWeaponInfo); typeName = "BOOL"; diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 97cc3e026b5..d228696fc0c 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -1,4 +1,3 @@ -//#define DEBUG_MODE_FULL #include "script_component.hpp" // Exit on Headless @@ -24,7 +23,7 @@ if (!hasInterface) exitWith {}; // Selective UI Basic if (_name in ELEMENTS_BASIC) then { - call FUNC(setElements); + [false] call FUNC(setElements); }; // Selective UI Advanced diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index 92cc981065f..b94b0f9a228 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -20,7 +20,7 @@ if (isArray (missionConfigFile >> "showHUD")) exitWith {}; params [ ["_force", false, [true]] ]; if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { - [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) + [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured); }; private _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] From 27c55981358383e00ad0a6b4774005c896a98f6d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 24 Apr 2016 11:26:13 -0500 Subject: [PATCH 092/268] vehicle inventory lock - compatibility with acre --- addons/vehiclelock/CfgEventHandlers.hpp | 8 ----- addons/vehiclelock/XEH_postInit.sqf | 10 +++++++ .../functions/fnc_onOpenInventory.sqf | 29 ++++++++++--------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/addons/vehiclelock/CfgEventHandlers.hpp b/addons/vehiclelock/CfgEventHandlers.hpp index 705415e65db..712cc2be1c6 100644 --- a/addons/vehiclelock/CfgEventHandlers.hpp +++ b/addons/vehiclelock/CfgEventHandlers.hpp @@ -17,14 +17,6 @@ class Extended_PostInit_EventHandlers { }; }; -class Extended_InventoryOpened_EventHandlers { - class CAManBase { - class ADDON { - clientInventoryOpened = QUOTE(_this call FUNC(onOpenInventory);); - }; - }; -}; - class Extended_InitPost_EventHandlers { class Car { class ADDON { diff --git a/addons/vehiclelock/XEH_postInit.sqf b/addons/vehiclelock/XEH_postInit.sqf index c635de2bd3f..93d8bd64268 100644 --- a/addons/vehiclelock/XEH_postInit.sqf +++ b/addons/vehiclelock/XEH_postInit.sqf @@ -3,3 +3,13 @@ //Add Event Handlers ["VehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call EFUNC(common,addEventHandler); ["VehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call EFUNC(common,addEventHandler); + +if (!hasInterface) exitwith {}; + +["SettingsInitialized", { + TRACE_1("SettingsInitialized eh",GVAR(LockVehicleInventory)); + + if (GVAR(LockVehicleInventory)) then { + ["CAManBase", "InventoryOpened", {_this call FUNC(onOpenInventory);}] call CBA_fnc_addClassEventHandler; + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf index 17682c72deb..5ac9ee427eb 100644 --- a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf +++ b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf @@ -7,7 +7,7 @@ * 1: Container * * Return Value: - * Handeled + * None * * Example: * [player, car] call ACE_VehicleLock_fnc_onOpenInventory; @@ -20,10 +20,7 @@ params ["_unit", "_container"]; TRACE_2("params",_unit,_container); //Only check for player: -if (_unit != ace_player) exitWith {false}; - -private "_handeled"; -_handeled = false; +if (_unit != ace_player) exitWith {}; if (GVAR(LockVehicleInventory) && //if setting not enabled {(vehicle ace_player) == ace_player} && //Player dismounted @@ -33,15 +30,19 @@ if (GVAR(LockVehicleInventory) && //if setting not enabled ) then { //Give feedback that vehicle is locked playSound "ACE_Sound_Click"; - //don't open the vehicles inventory - _handeled = true; - // As of 1.54 the action needs to be delayed a frame to work, which used not to be the case + //For compatibiltiy with ACRE, wait until the display is open, close it and then reopen the player's own inventory + //ref: http://gitlab.idi-systems.com/idi-systems/acre2-public/issues/70 [{ - TRACE_1("delaying a frame", ace_player); - //Just opens a dummy groundContainer (so the player can still see their own inventory) - ACE_player action ["Gear", objNull]; - }, []] call EFUNC(common,execNextFrame); + !isNull (findDisplay 602) + }, + { + TRACE_1("car display open: closing", _this); + (findDisplay 602) closeDisplay 0; + [{ + TRACE_1("Opening Player Inventory", _this); + ACE_player action ["Gear", objNull] + }, []] call EFUNC(common,execNextFrame); + }, + []] call EFUNC(common,waitUntilAndExecute); }; - -_handeled From 5c3f5f5751d35751335e9e01099a809f37775b6c Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 25 Apr 2016 21:34:25 +0200 Subject: [PATCH 093/268] fix wrong macro names --- addons/recoil/CfgMoves.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/recoil/CfgMoves.hpp b/addons/recoil/CfgMoves.hpp index ecad382cb5b..29bca9c81ab 100644 --- a/addons/recoil/CfgMoves.hpp +++ b/addons/recoil/CfgMoves.hpp @@ -7,7 +7,7 @@ // Go through all modes that have a camshakefire defined and change it to ours. class CfgMovesBasic { class Default { - camShakeFire = ACE_CAMSHAKEFIRE_NORMAL; + camShakeFire = ACE_CAMSHAKEFIRE_BASE; }; }; @@ -69,7 +69,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { class AmovPknlMstpSrasWrflDnon; class AmovPknlMwlkSrasWrflDf: AmovPknlMstpSrasWrflDnon { - camShakeFire = ACE_CAMSHAKEFIRE_NORMAL; + camShakeFire = ACE_CAMSHAKEFIRE_BASE; }; class AmovPknlMrunSrasWrflDf; From d40735d5c2a1a3fdd1f624b3ceea772c12363a56 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 25 Apr 2016 15:48:24 -0500 Subject: [PATCH 094/268] Improve synced event error logging --- addons/common/functions/fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc__handleSyncedEvent.sqf | 2 +- addons/common/functions/fnc_addSyncedEventHandler.sqf | 5 ++++- addons/common/functions/fnc_removeSyncedEventHandler.sqf | 2 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 605af2fa85f..9d6c062ac2f 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -23,7 +23,7 @@ if (isServer) then { params ["_eventName", "_client"]; if (!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { - ACE_LOGERROR("Request for synced event - key not found."); + ACE_LOGERROR_1("Request for synced event - key [%1] not found.", _eventName); false }; diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf index f8fe21d760d..db8151dbd78 100644 --- a/addons/common/functions/fnc__handleSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleSyncedEvent.sqf @@ -17,7 +17,7 @@ params ["_name", "_args", "_ttl"]; if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - ACE_LOGERROR("Synced event key not found."); + ACE_LOGERROR_1("Synced event key [%1] not found (_handleSyncedEvent).", _name); false }; diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf index 0964e419bcd..126bb6a9577 100644 --- a/addons/common/functions/fnc_addSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf @@ -10,6 +10,9 @@ * Return Value: * Boolean of success * + * Example: + * ["myEvent", {_this call x}, 0] call ace_common_fnc_addSyncedEventHandler + * * Public: Yes */ #include "script_component.hpp" @@ -17,7 +20,7 @@ params ["_name", "_handler", ["_ttl", 0]]; if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - ACE_LOGERROR("Duplicate synced event creation."); + ACE_LOGERROR_1("Duplicate synced event [%1] creation.",_name); false }; diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf index 126bf0b70fe..23803acdd14 100644 --- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf @@ -15,7 +15,7 @@ params ["_name"]; if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - ACE_LOGERROR("Synced event key not found."); + ACE_LOGERROR_1("Synced event key [%1] not found (removeSyncedEventHandler).", _name); false }; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 4ed8107330a..c752d1eba24 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -17,7 +17,7 @@ params ["_name", "_args", ["_ttl", 0]]; if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - ACE_LOGERROR("Synced event key not found."); + ACE_LOGERROR_1("Synced event key [%1] not found (syncedEvent).", _name); false }; From 3389bc5e1b0005c808c8b8f835b9d7a8c6c6d3ee Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 28 Apr 2016 04:44:57 +0200 Subject: [PATCH 095/268] Add cargo to Taru pods --- addons/cargo/CfgVehicles.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index dfeab3b0174..3b2239019d3 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -304,6 +304,25 @@ class CfgVehicles { GVAR(canLoad) = 1; }; + // Taru pods + class Pod_Heli_Transport_04_base_F; + class Land_Pod_Heli_Transport_04_ammo_F: Pod_Heli_Transport_04_base_F { + GVAR(space) = 8; + GVAR(hasCargo) = 1; + }; + class Land_Pod_Heli_Transport_04_box_F: Pod_Heli_Transport_04_base_F { + GVAR(space) = 20; + GVAR(hasCargo) = 1; + }; + class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_base_F { + GVAR(space) = 8; + GVAR(hasCargo) = 1; + }; + class Land_Pod_Heli_Transport_04_repair_F: Pod_Heli_Transport_04_base_F { + GVAR(space) = 12; + GVAR(hasCargo) = 1; + }; + class StaticMortar; class Mortar_01_base_F: StaticMortar { GVAR(size) = 2; // 1 = small, 2 = large From d826c91c99358f633f3338e6232bdd11087823ec Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 27 Apr 2016 22:58:47 -0500 Subject: [PATCH 096/268] Cleanup reload launchers --- .../functions/fnc_addMissileReloadActions.sqf | 28 +++++++++++-------- .../reloadlaunchers/functions/fnc_canLoad.sqf | 11 +++----- .../functions/fnc_getLoadableMissiles.sqf | 12 ++++---- addons/reloadlaunchers/functions/fnc_load.sqf | 11 +++----- .../functions/fnc_reloadLauncher.sqf | 6 ++-- 5 files changed, 33 insertions(+), 35 deletions(-) diff --git a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf index a07afe8e221..f6cd9238453 100644 --- a/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf +++ b/addons/reloadlaunchers/functions/fnc_addMissileReloadActions.sqf @@ -3,28 +3,31 @@ * Create one action per reloadable missile * * Argument: - * 1: Player (Object) - * 0: Target (Object) - * 2: Parameters ??? (Array) + * 1: Target (Object) + * 0: Player (Object) * * Return value: * Children actions (Array) * + * Public: No + * */ #include "script_component.hpp" -private ["_unit", "_target", "_parameters"]; - -_unit = _this select 1; -_target = _this select 0; -_parameters = _this select 2; // ??? +params ["_target", "_unit"]; +TRACE_2("params",_target,_unit); -private ["_actions", "_weapon", "_loadableMissiles"]; +//Fast exit for common case: +private _weapon = secondaryWeapon _target; +if ((_weapon == "") || {(getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(enabled))) == 0}) exitWith { + TRACE_1("weapon not supported",_weapon); + [] +}; -_actions = []; +private _actions = []; -_weapon = secondaryWeapon _target; -_loadableMissiles = [_unit, _weapon] call FUNC(getLoadableMissiles); +private _loadableMissiles = [_unit, _weapon] call FUNC(getLoadableMissiles); +TRACE_2("",_weapon,_loadableMissiles); { private ["_name", "_displayName", "_statement", "_condition", "_action"]; @@ -45,4 +48,5 @@ _loadableMissiles = [_unit, _weapon] call FUNC(getLoadableMissiles); _actions pushBack [_action, [], _unit]; } forEach _loadableMissiles; +TRACE_1("return",_actions); _actions diff --git a/addons/reloadlaunchers/functions/fnc_canLoad.sqf b/addons/reloadlaunchers/functions/fnc_canLoad.sqf index 5bbfe4dd870..116a900092e 100644 --- a/addons/reloadlaunchers/functions/fnc_canLoad.sqf +++ b/addons/reloadlaunchers/functions/fnc_canLoad.sqf @@ -1,6 +1,5 @@ /* * Author: commy2 - * * Check of the unit can reload the launcher of target unit. * * Argument: @@ -11,15 +10,13 @@ * * Return value: * NONE + * + * Public: No */ #include "script_component.hpp" -private ["_unit", "_target", "_weapon", "_magazine"]; - -_unit = _this select 0; -_target = _this select 1; -_weapon = _this select 2; -_magazine = _this select 3; +params ["_unit", "_target", "_weapon", "_magazine"]; +TRACE_4("params",_unit,_target,_weapon,_magazine); if (!alive _target) exitWith {false}; if (vehicle _target != _target) exitWith {false}; diff --git a/addons/reloadlaunchers/functions/fnc_getLoadableMissiles.sqf b/addons/reloadlaunchers/functions/fnc_getLoadableMissiles.sqf index e75d826513c..f466490b64d 100644 --- a/addons/reloadlaunchers/functions/fnc_getLoadableMissiles.sqf +++ b/addons/reloadlaunchers/functions/fnc_getLoadableMissiles.sqf @@ -1,6 +1,5 @@ /* * Author: commy2 - * * Return all magazine types from reloaders inventory that are compatible with given weapon. * * Argument: @@ -9,17 +8,16 @@ * * Return value: * Reloable magazines (Array) + * + * Public: No */ #include "script_component.hpp" -private ["_unit", "_weapon"]; - -_unit = _this select 0; -_weapon = _this select 1; +params ["_unit", "_weapon"]; +TRACE_2("params",_unit,_weapon); // get available magazines of reloader, Note: "magazines" does not include currently loaded magazines -private "_magazines"; -_magazines = magazines _unit; +private _magazines = magazines _unit; // case sensitvity _magazines = _magazines apply {toLower _x}; diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index ce7b743df57..db010b5e476 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -1,6 +1,5 @@ /* * Author: commy2 - * * Reload a launcher * * Argument: @@ -11,15 +10,13 @@ * * Return value: * NONE + * + * Public: No */ #include "script_component.hpp" -private ["_unit", "_target", "_weapon", "_magazine"]; - -_unit = _this select 0; -_target = _this select 1; -_weapon = _this select 2; -_magazine = _this select 3; +params ["_unit", "_target", "_weapon", "_magazine"]; +TRACE_4("params",_unit,_target,_weapon,_magazine); private "_reloadTime"; _reloadTime = getNumber (configFile >> "CfgWeapons" >> _weapon >> "magazineReloadTime"); diff --git a/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf b/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf index fc802a025cd..2aec180d223 100644 --- a/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf +++ b/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf @@ -1,6 +1,5 @@ /* * Author: commy2 - * * Reload a launcher * * Argument: @@ -11,10 +10,13 @@ * * Return value: * NONE + * + * Public: No */ #include "script_component.hpp" -PARAMS_4(_unit,_target,_weapon,_magazine); +params ["_unit","_target","_weapon","_magazine"]; +TRACE_4("params",_unit,_target,_weapon,_magazine); _target selectWeapon _weapon; From 76659356413a9518aaa064e2dac0fb880cf0521e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 Apr 2016 13:00:35 -0500 Subject: [PATCH 097/268] Use constant reload time value instead of config --- addons/reloadlaunchers/functions/fnc_load.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index db010b5e476..9f0b36ce8de 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -18,8 +18,8 @@ params ["_unit", "_target", "_weapon", "_magazine"]; TRACE_4("params",_unit,_target,_weapon,_magazine); -private "_reloadTime"; -_reloadTime = getNumber (configFile >> "CfgWeapons" >> _weapon >> "magazineReloadTime"); +// private _reloadTime = getNumber (configFile >> "CfgWeapons" >> _weapon >> "magazineReloadTime"); //Not a good config value, use a constant for now: +private _reloadTime = 2.5; // do animation [_unit] call EFUNC(common,goKneeling); From 7d0fcde9fa695c4612ad656a712d2c5236c3598f Mon Sep 17 00:00:00 2001 From: ProfessorCZ Date: Sat, 30 Apr 2016 00:57:24 +0200 Subject: [PATCH 098/268] CZ Translate - Update 04/30/2016 --- addons/cargo/stringtable.xml | 5 +- addons/common/stringtable.xml | 1 + addons/explosives/stringtable.xml | 6 ++ addons/fastroping/stringtable.xml | 8 +++ addons/gforces/stringtable.xml | 2 + addons/interaction/stringtable.xml | 5 +- addons/medical/stringtable.xml | 77 +++++++++++++++----------- addons/medical_menu/stringtable.xml | 10 ++-- addons/missileguidance/stringtable.xml | 4 +- addons/mk6mortar/stringtable.xml | 18 ++++++ addons/overheating/stringtable.xml | 10 +++- addons/repair/stringtable.xml | 3 +- addons/spectator/stringtable.xml | 6 +- addons/tagging/stringtable.xml | 11 +++- addons/trenches/stringtable.xml | 11 +++- addons/ui/stringtable.xml | 34 +++++++++++- 16 files changed, 160 insertions(+), 51 deletions(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 57daacd207c..e3cb368362e 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -175,6 +175,7 @@ Rendi oggetto caricabile Hacer objeto cargable Rendre l'objet chargeable + Vytvořit objekt nakladatelným Sets the synced object as loadable by the cargo system. @@ -183,6 +184,7 @@ Imposta l'oggetto sincronizzato come caricabile dal sistema cargo Sincronizar un objecto para hacerlo cargable. Rend l'objet synchronisé comme chargeable par le système de cargaison. + Nastaví synchronizované objekty nakladatelnými za pomocí Nákladního systému. Object's Size @@ -191,6 +193,7 @@ Dimensioni dell'oggetto Tamaño del objeto Taille de l'objet + Velikost objektu - + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 32a979653fc..820712189f7 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -802,6 +802,7 @@ Non c'è spazio per scaricare No hay espacio para descargar. Pas de place pour décharger + Nedostatek místa k vyložení \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 4cabe2ce061..c49d09502f6 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -648,6 +648,7 @@ Mina M6 SLAM (Ataque Inferior) Mine M6 SLAM (par le bas) Mina M6 SLAM (base) + M6 SLAM (Útok zespoda) M6 SLAM Mine (Side Attack) @@ -663,6 +664,7 @@ Mina M6 SLAM (Ataque Lateral) Mine M6 SLAM (de flanc) STR_ACE_Explosives_Module_SLAMBottomAttack_DisplayName M6 SLAM Mine (Bottom Attack) Mine M6 SLAM (par le bas) M6-SLAM-Mine (Bodenangriff) Mina M6 SLAM (base) Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Laterale) + M6 SLAM (Útok do strany) Large IED (Urban, Pressure Plate) @@ -678,6 +680,7 @@ IED Grande (Urbano, Placa de presión) Grand EEI (Urbain, plaque de pression) IED grande (urbano, a pressione) + IED, Velké (Městské, Nášlapné) Large IED (Dug-in, Pressure Plate) @@ -693,6 +696,7 @@ IED Grande (Enterrado, Placa de presión) Grand EEI (Enterré, plaque de pression) IED grande (interrato, a pressione) + IED, Velké (Zakopané, Nášlapné) Small IED (Urban, Pressure Plate) @@ -708,6 +712,7 @@ IED Pequeño (Urbano, Placa de presión) Petit EEI (Urbain, plaque de pression) IED piccolo (urbano, a pressione) + IED, Malé (Městské, Nášlapné) Small IED (Dug-in, Pressure Plate) @@ -723,6 +728,7 @@ IED Pequeño (Enterrado, Placa de presión) Petit EEI (Enterré, plaque de pression) IED piccolo (interrato, a pressione) + IED, Malé (Zakopané, Nášlapné) Connect to %1 diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 1a03e594092..7b0e4ad1f86 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -8,6 +8,7 @@ Equiper le FRIES Equipar FRIES Equipaggia la FRIES + Vybavit FRIES Equips compatible helicopters with a Fast Rope Insertion Extraction System. @@ -16,6 +17,7 @@ Equipe les hélicoptères compatibles avec un Module Fast Rope Insertion Extraction System. Equipar helicoptero compatible con un Sistema de Inserción Extracción Fast Rope. Equipagga l'elicottero compatibile con il Fast Rope Insertion Exstraction System + Vybavit kompatibilní vrtulníky systémem Fast Rope Insertion Extraction (FRIES). Prepare fast roping system @@ -24,6 +26,7 @@ Préparer le système de corde lisse Preparar el sistema fast roping Prepara le corde + Připravit systém slaňování Deploy ropes @@ -32,6 +35,7 @@ Déployer les cordes Desplegar cuerdas Srotola le corde + Připravit lana Fast rope @@ -40,6 +44,7 @@ Descendre à la corde Descender por la cuerda Scendi sulla corda + SLANIT Cut ropes @@ -48,6 +53,7 @@ Détacher les cordes Cortar cuerdas Taglia le corde + Odříznout lano Equip helicopter with FRIES @@ -56,6 +62,7 @@ Equiper l'hélicoptère avec le FRIED Equipar helicoptero con FRIES Equipaggia l'elicottero con FRIES + Vybavit vrtulník pomocí FRIES Equips the selected helicopter with a Fast Rope Insertion Extraction System @@ -64,6 +71,7 @@ Equipe l'hélicoptère sélectionné avec un Fast Rope Insertion Extraction System Equipa el helicoptero seleccionado con un Sistema de Inserción Extracción Fast Rope Equipaggia l'elicottero selezionato con il Fast Rope Insertion Extraction System + Vybavit vybraný vrtulník systémem Fast Rope Insertion Extraction (FRIES) LET UNITS FAST ROPE diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml index ee57af2f869..f5d5f1b12d2 100644 --- a/addons/gforces/stringtable.xml +++ b/addons/gforces/stringtable.xml @@ -5,11 +5,13 @@ Gforces Effects Gforces Effekte Efectos Gforces + G Force efekty Only Aircraft Nur Luftfahrzeug Sólo Aeronave + Pouze letadla \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 0e1afa21a1c..812964bbb74 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -356,6 +356,7 @@ Aussteigen! Sal del vehículo! Sortez ! + Vystupte Team Management @@ -712,6 +713,7 @@ Encender Allumer Accendi + Zapnout Turn off @@ -720,6 +722,7 @@ Apagar Eteindre Spegni + Vypnout Pass magazine @@ -760,7 +763,7 @@ %1 podał Ci magazynek %2. %1 передал вам магазин %2. %1 passou a você um carregador %2. - %1 ti podal %2 zásobník. + %1 ti podal zásobník %2. %1 ti ha passato un caricatore %2 . %1 te pasó un cargador %2. %1 vous a passé un chargeur %2. diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index a3953be23b3..ef0ccc68a22 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -56,6 +56,7 @@ Wstrzyknij adenozynę Injecter de l'adénosine Inietta andenosina + Aplikovat adenosine Inject Atropine @@ -256,6 +257,7 @@ Wstrzykiwanie adenozyny... Injection d'adénosine... Inietto l'andenosina + Aplikuji adenosine... Injecting Atropine... @@ -363,14 +365,14 @@ Bendaggio compressivo Bandage gauze Bandagem de Compressão - Tlakový obvaz + Obvaz Tlakový Elastic Bandage Elastischer Verband Vendaje elástico Давящая повязка - Elastické obinadlo + Obavaz Elastický Bandaż elastyczny Pansement élastique Rögzitő kötszer @@ -831,7 +833,7 @@ Nyomókötszer Bendaggio compressivo Bandagem de Compressão - Tlakový obvaz + Obvaz (Tlakový) Used to pack medium to large wounds and stem the bleeding @@ -864,7 +866,7 @@ Vendaje (Elástico) Bandage (Élastique) Bandaż (elastyczny) - Obvaz (elastický) + Obvaz (Elastický) Rögzító kötszer Benda (elastica) Bandagem (Elástica) @@ -936,7 +938,7 @@ Morfina auto-inyectable Auto-injecteur de Morphine Autostrzykawka z morfiną - Autoinjektor morfin + Auto-morfin Morfium autoinjektor Autoiniettore di morfina Auto-injetor de morfina @@ -972,6 +974,7 @@ Autostrzykawka z adenozyną Auto-injécteur d'adénosine Autoiniettore di adenosina + Auto-adenosine Used to counter effects of Epinephrine @@ -980,6 +983,7 @@ Adenozyna. Stosowana do zwalczania efektów działania adrenaliny. Utilisé pour contrer les effets de l'adrénaline Usato per contrastare l'effetto dell'epinefrina + Slouží jako protiváha Adrenalinu A drug used to counter the effects of Epinephrine @@ -988,6 +992,7 @@ Organiczny związek chemiczny z grupy nukleozydów. Skuteczna w leczeniu częstoskurczu komorowego. Działa rozszerzająco na naczynia krwionośne. Un composé utilisé pour contrer les effets de l'adrénaline Medicamento usato per contrastare l'effetto dell'epinefrina + Droga používaná k tlumení efektu Adrenalinu Atropine autoinjector @@ -996,7 +1001,7 @@ Auto-injecteur d'Atropine Autostrzykawka AtroPen Atropin-Autoinjektor - Autoinjektor atropin + Auto-atropine Atropin autoinjektor Autoiniettore di atropina Auto-injetor de Atropina @@ -1032,7 +1037,7 @@ Auto-injecteur d'épinéphrine Autostrzykawka EpiPen Epiniphrin-Autoinjektor - Autoinjektor adrenalin + Auto-adrenalin Epinefrin autoinjektor Autoiniettore di adrenalina Auto-injetor de epinefrina @@ -1287,7 +1292,7 @@ Elsősegélycsomag Pronto soccorso personale Kit De Primeiros Socorros Pessoal - Osobní lékárnička + Osobní lékárnička (PAK) Includes various treatment kit needed for stitching or advanced treatment @@ -1322,7 +1327,7 @@ Usar equipo de primeros auxilios Elsősegélycsomag használata Usar o kit de primeiros socorros - Použít osobní lékárničku + Použít osobní lékárničku (PAK) Usa il pronto soccorso personale @@ -1431,7 +1436,7 @@ Vérnyomás megmérése... Controllando la pressione sanguigna.. Aferindo Pressão Arterial... - Kontroluji krevní tlak... + Měřím krevní tlak... %1 checked Blood Pressure: %2 @@ -1442,7 +1447,7 @@ %1 sprawdził ciśnienie krwi: %2 %1 verificada la presión arterial: %2 %1 ellenőrizte a vérnyomást: %2 - %1 zkontrolován krevní tlak: %2 + %1 zkontroloval krevní tlak: %2 %1 verificou pressão arterial: %2 @@ -1467,7 +1472,7 @@ Wyczuwasz ciśnienie krwi o wartości %2/%3 Der Blutdruck liegt bei %2/%3 A Pressão Arterial é de %2/%3 - Našel jsi krevní tlak u %2/%3 + Naměřil si krevní tlak u %2/%3 You find a low blood pressure @@ -1479,7 +1484,7 @@ A vérnyomás alacsony La pressione sanguigna è bassa Pressão Arterial baixa - Naměřil jsi nízký krevní tlak + Naměřil si nízký krevní tlak You find a normal blood pressure @@ -1491,7 +1496,7 @@ A vérnyomás normális La pressione sanguigna è normale Pressão Arterial normal - Naměřil jsi normální krevní tlak + Naměřil si normální krevní tlak You find a high blood pressure @@ -1503,7 +1508,7 @@ A vérnyomás magas La pressione sanguigna è alta Pressão Arterial Alta - Naměřil jsi vysoký krevní tlak + Naměřil si vysoký krevní tlak You find no blood pressure @@ -1515,7 +1520,7 @@ Nem észlelhető vérnyomás La pressione sanguigna è assente Sem Pressão Arterial - Nenaměřil jsi žádný krevní tlak + Nenaměřil si žádný krevní tlak You fail to find a blood pressure @@ -1527,7 +1532,7 @@ Nem sikerült a vérnyomás megmérése Manca strumento per misurare pressione sanguigna Você falhou em aferir a Pressão Arterial - Nedokázal jsi změřit krevní tlak + Nedokázal si změřit krevní tlak Low @@ -1587,7 +1592,7 @@ Pulzus Polso Pulso - Tep + Puls Checking Heart Rate... @@ -1611,7 +1616,7 @@ A %1 ellenőrizve Hai diagnosticato %1 Você aferiu o paciente %1 - Zkontroloval jsi %1 + Zkontroloval si %1 %1 checked Heart Rate: %2 @@ -1695,7 +1700,7 @@ A szívverés-szám alacsony Hai riscontrato un debole battito cardiaco Freqüência Cardíaca baixa - Nahmatal jsi slabý srdeční tep + Nahmatal si slabý srdeční puls You find a strong Heart Rate @@ -1707,7 +1712,7 @@ A szívverés-szám magas Hai riscontrato un forte battito cardiaco Freqüência Cardíaca normal - Nahmatal jsi silný srdeční tep + Nahmatal si silný srdeční puls You find a normal Heart Rate @@ -1719,7 +1724,7 @@ A szívverés-szám normális Hai riscontrato un normale battito cardiaco Freqüência Cardíaca alta - Nahmatal jsi normální srdeční tep + Nahmatal si normální srdeční puls You find no Heart Rate @@ -1731,7 +1736,7 @@ Nem észlelhető szívverés Hai riscontrato una assenza di battito cardiaco Sem Freqüência Cardíaca - Nenašel jsi + Žádný puls Response @@ -2172,7 +2177,7 @@ Gravemente herido Lourdement blessé Erősen sérült - Těžce zraněn + Těžce raněn Gravemente ferido @@ -2184,7 +2189,7 @@ Levemente herido Légèrement blessé Enyhén sérült - Lehce zraněn + Lehce raněn Levemente ferido @@ -2196,7 +2201,7 @@ Muy levemente herido Très légèrement blessé Nagyon enyhén sérült - Velmi lehce zraněn + Velmi lehce raněn Muito levemente ferido @@ -3205,6 +3210,7 @@ Ajustes médicos básicos [ACE] Réglages du système médical basic [ACE] Impostazioni Mediche Di Base [ACE] + Základní zdravotnické nastavení [ACE] Advanced Medical Settings [ACE] @@ -3321,6 +3327,7 @@ Ograniczenia adrenaliny Autoriser l'adrénaline Permette epinefrina + Povolit adrenalin Who can use Epinephrine for full heal? (Basic medical only) @@ -3329,6 +3336,7 @@ Kto może skorzystać z adrenaliny w celu pełnego uleczenia? (Tylko podstawowy system medyczny) Qui peut utiliser l'adrénaline pour les soins complets ? (Médical basique seulement) Chi può usare l'epinefrina per la cura completa? (solo per sistema medico di base) + Kdo může použít adrenalin k úplnému vyléčení? (Pouze základní zdravotní systém) Allow PAK @@ -3336,7 +3344,7 @@ Ustawienie apteczek osobistych Permitir EPA Erlaube Erste-Hilfe-Set - Povolit osobní lékárničky + Povolit osobní lékárničky (PAK) Permitir Kit de Primeiros Socorros Permettre le kit de premier secours Elsősegélycsomag engedélyezése @@ -3421,6 +3429,7 @@ Ograniczenia adrenaliny Position des adrénalines Ubicazione epinefrina + Oblast k použití adrenalinu Where can the Epinephrine be used? (Basic Medical) @@ -3429,6 +3438,7 @@ Gdzie można korzystać z adrenaliny? (Podstawowy system medyczny) Où peuvent être utilisées les adrénalines ? (Médical basique) Dove si può usare l'epinefrina? (Sistema medico di base) + Kde může být použit adrenalin? (Pouze základní zdravotní systém) Locations PAK @@ -3436,7 +3446,7 @@ Ograniczenie apteczek osobistych Ubicaciones del EPA Orte für Erste-Hilfe-Set - Lokace osobní lékárničky + Oblast k použití PAK Localizações do KPS Lieu d'utilisation du KPS Elsősegélycsomag helyek @@ -3448,7 +3458,7 @@ Gdzie można korzystać z apteczek osobistych? ¿Dónde se puede utilizar el equipo de primeros auxilios? Wo kann das Erste-Hilfe-Set verwendet werden? - Kde může být použita osobní lékárnička? + Kde může být použita osobní lékárnička (PAK)? Onde o kit de primeiros socorros pode ser utilizado? Où le Kit de Premier Secour peut être utilisé Hol lehet az elsősegélycsomagot használni? @@ -3457,7 +3467,7 @@ Condition PAK Bedingungen für d. Erste-Hilfe-Set - Podmínka osobní lékárničky + Podmínky pro použití osobní lékárničky Condición EPA Condition d'utilisation du KPS Warunek apteczek @@ -3469,7 +3479,7 @@ When can the PAK be used? Wann kann das Erste-Hilfe-Set verwendet werden? - Kde může být použita osobní lékárnička? + Kdy může být použita osobní lékárnička? ¿Cuando se puede utilizar el Equipo de primeros auxilios? Quand peut être utilisé le Kit de Premier Secours Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? @@ -3484,7 +3494,7 @@ Wszędzie Donde sea Überall - Kdekoli + Kdekoliv Qualquer lugar PArtout Akárhol @@ -4124,6 +4134,7 @@ Sanitätsausbildung Entrenamiento médico Entraînement médical + Lékařský výcvik Whether or not the object will be a medical vehicle. @@ -4137,6 +4148,7 @@ Delay cease fire of AI while player is unconscious for medical reasons. Verzögert das Ende des KI-Beschusses auf einen Spieler, wenn dieser aus medizinischen Gründen bewustlos wird. Ritarda il cessate il fuoco dell'IA quando il giocatore è svenuto per motivi medici. + Prodleva zastavení palby pro AI, pokud je hráč v bezvědomí ze zdravotních důvodů. Delay cease fire of AI for unconsciousness @@ -4144,6 +4156,7 @@ Demora antes de volverse neutral al caer inconsciente Opóźnij status captive u nieprzytomnych osób Ritarda il cessate il fuoco dell'IA quando si è svenuti + Prodleva zastavení palby AI na bezvědomé \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index f825882be6c..e9812128f4b 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -295,7 +295,7 @@ Selectioner Bras Gauche Wybierz lewą rękę Selecionar Braço Esquerdo - Vybrat Levou Ruku + Vybrat Levou ruku Seleziona Braccio Sinistro @@ -306,7 +306,7 @@ Selectioner Bras Droit Wybierz prawą rękę Selecionar Braço Direito - Vybrat Pravou Ruku + Vybrat Pravou ruku Seleziona Braccio Destro @@ -317,7 +317,7 @@ Selectioner Jambe Gauche Wybierz lewą nogę Selecionar Perna Esquerda - Vybrat Levou Nohu + Vybrat Levou nohu Seleziona Gamba Sinistra @@ -328,7 +328,7 @@ Selectioner Jambe Droite Wybierz prawą nogę Selecionar Perna Direita - Vybrat Pravou Nohu + Vybrat Pravou nohu Seleziona Gamba Destra @@ -581,7 +581,7 @@ A Perdu Bcp de Sang Stracił dużo krwi Perdeu muito sangue - Ztratil hodně Krve + Ztratil hodně krve Perso molto Sangue diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index ff14fea9f74..35b947ce97a 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -114,7 +114,7 @@ Tylko gracz Solo jugador Nur Spieler - Pouze hráči + Pouze hráč Somente jogador Seulement les joueurs Csak játékosok @@ -126,7 +126,7 @@ Gracz oraz AI Jugador e IA Spieler und KI - Hráči a AI + Hráč a AI Jogador e IA Joueurs et IA Játékosok és AI diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index f545bc8a356..1de69ece38f 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -167,6 +167,7 @@ Wyładuj pocisk Enlever l'obus Togli proiettile + Odstranit náboj Load Mortar @@ -175,6 +176,7 @@ Załaduj moździerz Charger le mortier Carica mortaio + Nabít minomet Unloading Round @@ -191,6 +193,7 @@ Przygotowywanie pocisku Praparation de l'obus Prepara il proiettile + Připavuji náboj Load HE @@ -199,6 +202,7 @@ Załaduj pocisk wybuchowy Charger HE Carica proiettile esplosivo ad alto potenziale (HE) + Nabít HE Load Smoke @@ -207,6 +211,7 @@ Załaduj pocisk dymny Charger Fumigène Carica fumogeno + Nabít Dýmovnici Load Illumination @@ -215,6 +220,7 @@ Załaduj pocisk oświetlający Charger Eclairante Carica illuminante + Nabít Světlici Load Guided HE @@ -223,6 +229,7 @@ Załaduj kierowany pocisk wybuchowy Charger HE guidé Carica HE guidata + Nabít HE (Naváděné) Load Laser Guided HE @@ -231,6 +238,7 @@ Załaduj laserowo napr. pocisk wybuchowy Charger HE guidé au laser Carica HE a guida laser + Nabít HE (Naváděné laserem) 82mm HE Round @@ -239,6 +247,7 @@ Pocisk wybuchowy kal. 82mm Obus de 82mm HE Proiettile da 82mm HE + 82mm HE náboj 82mm Smoke Round @@ -247,6 +256,7 @@ Pocisk dymny kal. 82mm Obus de 82mm fumigène Proiettile Fumogeno da 82mm + 82mm Kouřový náboj 82mm Illumination Round @@ -255,6 +265,7 @@ Pocisk oświetlający kal. 82mm Obus de 82mm éclairant Proiettile illuminante da 82mm + 82mm Osvětlovací náboj 82mm Guided HE Round @@ -263,6 +274,7 @@ Kierowany pocisk wybuchowy kal. 82mm Obus de 82mm HE guidé Proiettile HE guidato + 82mm HE náboj (naváděný) 82mm Laser Guided HE Round @@ -271,6 +283,7 @@ Laserowo napr. pocisk wybuchowy kal. 82mm Obus de 82mm HE guidé au laser Proiettile HE a guida laser + 82mm HE náboj (naváděný laserem) Used in Mk6 mortar @@ -279,6 +292,7 @@ Używany w moździerzu Mk6 Utilisé dans le mortier Mk6 Usato nel mortaio Mk6 + Používá se u minometu Mk6 [ACE] 82mm HE Rounds Box @@ -287,6 +301,7 @@ [ACE] Skrzynka amunicji wybuchowej 82mm [ACE] Obus de 82mm HE [ACE] Scatola proiettili espolisvi ad alto potenziale (HE) da 82mm + [ACE] Bedna s municí (82mm HE) [ACE] 82mm Smoke Rounds Box @@ -295,6 +310,7 @@ [ACE] Skrzynka amunicji dymnej 82mm [ACE] Obus de 82mm fumigène [ACE] Scatola fumogeni da 82mm + [ACE] Bedna s municí (82mm Dýmovnice) [ACE] 82mm Illumination Rounds Box @@ -303,6 +319,7 @@ [ACE] Skrzynka amunicji oświetlającej 82mm [ACE] Obus de 82mm éclairants [ACE] Scatola illuminanti da 82mm + [ACE] Bedna s municí (82mm Světlice) [ACE] 82mm Default Loadout Box @@ -311,6 +328,7 @@ [ACE] Skrzynka amunicji standardowej 82mm [ACE] Obus de 82mm par défaut [ACE] Scatola proiettili 82mm standard + [ACE] Bedna se standardní 82mm municí \ No newline at end of file diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 3269d9cf7e4..abbf9533e70 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -32,6 +32,7 @@ Effetti Particelle Surriscaldamento Efectos de partículas Effet de surchauffe + Částicové efekty přehřívání Show particle effects when weapon overheats @@ -48,6 +49,7 @@ Effetti Particellari Surriscaldamento per tutti Efectos de partículas para todos Effets de surchauffe pour tout le monde. + Částicové efekty přehřívání pro všechny Show particle effects when other players weapon overheats @@ -80,6 +82,7 @@ Usuń zacięcie przy przeładowaniu Des-enrayer l'arme au rechargement. Disinceppa l'arma quando si ricarica + Uvolnit zbraň při přebití Reloading clears a weapon jam. @@ -88,6 +91,7 @@ Przeładowywanie usuwa zacięcie Recharger vide la chambre de l'arme L'arma si disinceppa quando si ricarica + Přebití uvolní zaseknutou zbraň. Chance of unjam failing @@ -96,6 +100,7 @@ Szansa na porażkę usuw. zacięcia Chance de rater le des-enrayement Probabilità di sbagliare a disinceppare l'arma + Šance, že uvolnění zbraně selže Probability that an unjam action might fail, requiring to be repeated. @@ -172,6 +177,7 @@ Porażka przy usuwaniu zacięcia Toujours enrayé ! Non si è disinceppata! + Zbrań se nepodařilo uvolnit Swap barrel @@ -190,7 +196,7 @@ Lauf wird gewechselt... Cambiando el cañón... Wymienianie lufy... - Vyměňuji hlaveň... + Měním hlaveň... Changement du canon... Смена ствола... Cső kicserélése folyamatban... @@ -216,7 +222,7 @@ Sprawdź temperaturę broni Vérifier la température de l'arme Fegyver hőmérsékletének ellenőrzése - Zjistit teplotu zbraně + Zkontrolovat teplotu zbraně Conferir temperatura da arma Controlla la temperatura della canna Проверить температуру оружия diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index ee79a1d427d..0bce5cd6853 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1320,6 +1320,7 @@ Engine must be off to repair Motor muss ausgeschaltet zu reparieren sein El motor necesita desactivado para la reparación + Pro opravu je zapotřebí vypnout motor - + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index b78febbef77..bdb88a26755 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -321,7 +321,7 @@ Noc Visão Norturna Ночное - Noc + Noční Nocturna Notturno Nuit @@ -332,7 +332,7 @@ Termo Térmica Тепловизор - Termál + Termální Térmica Termico Thermique @@ -689,4 +689,4 @@ RAZ vitesse - + \ No newline at end of file diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 1849206963c..bf4056df498 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -8,6 +8,7 @@ Oznakuj na czarno Tag noir Marca nero + Označit černě Tag red @@ -16,6 +17,7 @@ Oznakuj na czerwono Tag rouge Marca rosso + Označit červeně Tag green @@ -24,6 +26,7 @@ Oznakuj na zielono Tag vert Marca verde + Označit zeleně Tag blue @@ -32,6 +35,7 @@ Oznakuj na niebiesko Tag bleu Marca blu + Označit modře Black spray paint @@ -40,6 +44,7 @@ Czarna farba w sprayu Peinture pulvérisée noire Bomboletta spray nera + Černý sprej Red spray paint @@ -48,6 +53,7 @@ Czerwona farba w sprayu Peinture pulvérisée rouge Bomboletta spray rossa + Červený sprej Green spray paint @@ -56,6 +62,7 @@ Zielona farba w sprayu Peinture pulvérisée verte Bomboletta spray verde + Zelený sprej Blue spray paint @@ -64,6 +71,7 @@ Niebieska farba w sprayu Peinture pulvérisée bleue Bomboletta spray blu + Modrý sprej A can of spray paint for tagging walls. @@ -72,6 +80,7 @@ Farba w sprayu, służy do oznakowywania terenu. Un spray de peinture pour taguer les murs. Una bomboletta di spay per contrassegnare i muri. + Plechovka se sprejem k vytváření značek. - + \ No newline at end of file diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 617a6044576..440b3537ba6 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -8,6 +8,7 @@ Pala Pala para trincheras Outil de tranchée + Polní lopatka Entrenching Tool @@ -16,6 +17,7 @@ Pala Pala para trincheras Outil de tranchée + Polní lopatky se používají k zákopovým a jiným pracem. Envelope - Small @@ -32,6 +34,7 @@ Piccola Trincea Personale Trinchera personal pequeña Petite tranchée personelle + Malý zákop pro jednoho Dig Small Trench @@ -40,6 +43,7 @@ Scava Trincea Piccola Cavar trinchera pequeña Creuser une petite tranchée + Vykopat malý zákop Envelope - Big @@ -56,6 +60,7 @@ Grande Trincea Personale Trinchera personal grande Grande tranchée personelle + Velký zákop pro jednoho Dig Big Trench @@ -64,6 +69,7 @@ Scava Trincea Grande Cavar trinchera grande Creuser une grande tranchée + Vykopat velký zákop Confirm Dig @@ -72,6 +78,7 @@ Conferma Scava Confirmar cavado Confirmer la creusée + Potvrdit kopání Cancel Dig @@ -80,6 +87,7 @@ Cancella Scava Cancelar cavado Annuler la creusée + Zrušit kopání Rotate @@ -100,6 +108,7 @@ Sto Scavando la Trincea Cavando trinchera Creuse la tranchée + Vykopat zákop - + \ No newline at end of file diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 42e79324116..74cd89e93b4 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -1,101 +1,131 @@ - + User Interface + Uživatelské rozhraní User Interface + Uživatelské rozhraní This module allows toggling visible user interface parts. Allow Selective UI + Povolit selektivní UI Allow client to modify their UI. + Povolit klientovi měnit jeho UI Soldier/Vehicle/Weapon Information + Informace o Vojákovi/Vozidlu/Zbrani Vehicle Radar + Radar vozidla Vehicle Compass + Kompas vozidla Command Menu + Menu rozkazů Group Bar + Panel skupiny Weapon Name + Název zbraně Weapon Name Background + Název zbraně v pozadí Firing Mode + Režim palby Ammo Type + Typ munice Ammo Count + Počet munice Magazine Count + Počet zásobníků Throwable Type + Typ granátů apod. Throwable Count + Počet granátů apod. Zeroing + Náměr Weapon Lower Info Background Stance + Postoj Stamina Bar + Panel výdrže Vehicle Name + Název vozidla Vehicle Name Background + Název vozidla v pozadí Vehicle Fuel Bar + Ukazatel paliva Vehicle Speed + Rychlost vozidla Vehicle Altitude + Výška vozidla Vehicle Damage + Poškození vozidla Vehicle Info Background + Info o vozidle v pozadí Vehicle Gunner Weapon + Střelcova zbraň ve vozidle Requires Soldier/Vehicle/Weapons Information. + Vyžaduje informace o Vojákovi/Vozidlu/Zbrani Modifying User Interface is disabled. + Změna uživatelského rozhraní je zakázána. - + \ No newline at end of file From 7cc2da2bb132c2d44f00aedc8d24a747be451362 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 Apr 2016 23:38:01 -0500 Subject: [PATCH 099/268] Fix self swap action --- addons/overheating/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 528f77375cc..0a86535231c 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -16,7 +16,7 @@ class CfgVehicles { class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); - statement = QUOTE( [ARR_2(_player, currentWeapon _player)] call FUNC(swapBarrel); ); + statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(swapBarrel); ); showDisabled = 0; priority = 3; icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); From 33b624c89609c4d9d7219548c3637bde2ef826f3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 2 May 2016 12:10:44 -0500 Subject: [PATCH 100/268] Tactical Ladder - Update model cfg #3745 --- addons/tacticalladder/data/model.cfg | 152 ++++++++++++--------------- 1 file changed, 66 insertions(+), 86 deletions(-) diff --git a/addons/tacticalladder/data/model.cfg b/addons/tacticalladder/data/model.cfg index ba19d58c650..bc7da07960a 100644 --- a/addons/tacticalladder/data/model.cfg +++ b/addons/tacticalladder/data/model.cfg @@ -35,76 +35,51 @@ class CfgSkeletons { "Camera","Pelvis", "weapon","Spine1", "launcher","Spine1", - //Head skeleton in hierarchy + + // Head skeleton in hierarchy "neck","Spine3", - "neck1","neck", - "head","neck1", - "HeadCutScene","head", - "jaw","head", - "chin","head", - "jaw_rf","head", - "jaw_rm","head", - "jaw_rs","head", - "jaw_lf","head", - "jaw_lm","head", - "jaw_ls","head", - "ear_r","head", - "ear_l","head", - "lip_lc","head", - "lip_lwlb","head", - "lip_lwlf","head", - "lip_lwm","head", - "lip_lwrf","head", - "lip_lwrb","head", - "lip_rc","head", - "lip_uprb","head", - "lip_uprf","head", - "lip_upm","head", - "lip_uplf","head", - "lip_uplb","head", - "nose_tip","head", - "nose_r","head", - "nose_l","head", - "zig_lt","head", - "zig_lm","head", - "zig_lb","head", - "zig_rt","head", - "zig_rm","head", - "zig_rb","head", - "cheek_r","head", - "cheek_l","head", - "eyebrow_lb","head", - "eyebrow_lm","head", - "eyebrow_lf","head", - "corr","head", - "eyebrow_rf","head", - "eyebrow_rm","head", - "eyebrow_rb","head", - "eye_upr","head", - "eye_lwr","head", - "eye_upl","head", - "eye_lwl","head", - "cheek_rf","head", - "cheek_rm","head", - "cheek_rb","head", - "cheek_lf","head", - "cheek_lm","head", - "cheek_lb","head", - "forehead_l","head", - "forehead_m","head", - "forehead_r","head", - "l_eye","head", - "r_eye","head", - "l_pupila","head", - "r_pupila","head", - "neck_t","head", - "neck_b","head", - "neck_r","head", - "neck_l","head", - "tongue_b","head", - "tongue_m","head", - "tongue_f","head", - //Left upper side + "neck1","neck", + "head","neck1", + + // New facial features + "Face_Hub","head", + "Face_Jawbone","Face_Hub", + "Face_Jowl","Face_Jawbone", + "Face_chopRight","Face_Jawbone", + "Face_chopLeft","Face_Jawbone", + "Face_LipLowerMiddle","Face_Jawbone", + "Face_LipLowerLeft","Face_Jawbone", + "Face_LipLowerRight","Face_Jawbone", + "Face_Chin","Face_Jawbone", + "Face_Tongue","Face_Jawbone", + "Face_CornerRight","Face_Hub", + "Face_CheekSideRight","Face_CornerRight", + "Face_CornerLeft","Face_Hub", + "Face_CheekSideLeft","Face_CornerLeft", + "Face_CheekFrontRight","Face_Hub", + "Face_CheekFrontLeft","Face_Hub", + "Face_CheekUpperRight","Face_Hub", + "Face_CheekUpperLeft","Face_Hub", + "Face_LipUpperMiddle","Face_Hub", + "Face_LipUpperRight","Face_Hub", + "Face_LipUpperLeft","Face_Hub", + "Face_NostrilRight","Face_Hub", + "Face_NostrilLeft","Face_Hub", + "Face_Forehead","Face_Hub", + "Face_BrowFrontRight","Face_Forehead", + "Face_BrowFrontLeft","Face_Forehead", + "Face_BrowMiddle","Face_Forehead", + "Face_BrowSideRight","Face_Forehead", + "Face_BrowSideLeft","Face_Forehead", + "Face_Eyelids","Face_Hub", + "Face_EyelidUpperRight","Face_Hub", + "Face_EyelidUpperLeft","Face_Hub", + "Face_EyelidLowerRight","Face_Hub", + "Face_EyelidLowerLeft","Face_Hub", + "EyeLeft","Face_Hub", + "EyeRight","Face_Hub", + + // Left upper side "LeftShoulder","Spine3", "LeftArm","LeftShoulder", "LeftArmRoll","LeftArm", @@ -127,7 +102,8 @@ class CfgSkeletons { "LeftHandThumb1","LeftHand", "LeftHandThumb2","LeftHandThumb1", "LeftHandThumb3","LeftHandThumb2", - //Right upper side + + // Right upper side "RightShoulder","Spine3", "RightArm","RightShoulder", "RightArmRoll","RightArm", @@ -150,25 +126,26 @@ class CfgSkeletons { "RightHandThumb1","RightHand", "RightHandThumb2","RightHandThumb1", "RightHandThumb3","RightHandThumb2", - //Left lower side + + // Left lower side "LeftUpLeg","Pelvis", "LeftUpLegRoll","LeftUpLeg", "LeftLeg","LeftUpLegRoll", "LeftLegRoll","LeftLeg", "LeftFoot","LeftLegRoll", "LeftToeBase","LeftFoot", - //Right lower side + + // Right lower side "RightUpLeg","Pelvis", "RightUpLegRoll","RightUpLeg", "RightLeg","RightUpLegRoll", "RightLegRoll","RightLeg", "RightFoot","RightLegRoll", "RightToeBase","RightFoot" - }; - // location of pivot points (local axes) for hierarchical animation - //pivotsModel="ca\Anims\Characters\Data\Skeleton\SkeletonPivots.p3d"; - pivotsModel=""; - }; + }; + // location of pivot points (local axes) for hierarchical animation + pivotsModel="A3\anims_f\data\skeleton\SkeletonPivots.p3d"; + }; }; class CfgModels { @@ -249,13 +226,14 @@ class CfgModels { }; }; class ArmaMan: Default { - htMin=60; - htMax=1800; - afMax=30; - mfMax=0; - mFact=1; - tBody=37; - sections[]= { + htMin = 60; // Minimum half-cooling time (in seconds) + htMax = 1800; // Maximum half-cooling time (in seconds) + afMax = 30; // Maximum temperature in case the model is alive (in celsius) + mfMax = 0; // Maximum temperature when the model is moving (in celsius) + mFact = 1; // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)). + tBody = 37; // Metabolism temperature of the model (in celsius) + + sections[] = { "osobnost", "Head_Injury", "Body_Injury", @@ -274,9 +252,11 @@ class CfgModels { "Camo2", "personality", "hl", - "injury_head" + "injury_head", + "insignia", + "ghillie_hide" }; - skeletonName="OFP2_ManSkeleton"; + skeletonName = "OFP2_ManSkeleton"; }; class ace_tacticalladder_pack: ArmaMan { }; From 7fcbe93b71f4c3182125d8f77a0ad8cdcdc240ea Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 3 May 2016 02:32:44 +0200 Subject: [PATCH 101/268] Cleaned up excessive whitespace --- addons/aircraft/CfgAmmo.hpp | 2 +- addons/aircraft/Heli_Attack_01_base_F.hpp | 10 +- addons/atragmx/RscTitles.hpp | 14 +- addons/atragmx/XEH_postInit.sqf | 22 +-- .../functions/fnc_calculate_solution.sqf | 35 +--- addons/atragmx/functions/fnc_change_gun.sqf | 5 +- .../atragmx/functions/fnc_create_dialog.sqf | 2 +- .../atragmx/functions/fnc_show_gun_list.sqf | 1 - .../functions/fnc_show_range_card_setup.sqf | 2 +- .../fnc_show_target_range_assist.sqf | 3 +- .../fnc_show_target_speed_assist.sqf | 4 +- addons/atragmx/functions/fnc_sord.sqf | 5 +- .../fnc_target_speed_assist_timer.sqf | 12 +- .../functions/fnc_toggle_atmo_env_data.sqf | 2 +- .../functions/fnc_toggle_gun_ammo_data.sqf | 2 +- .../atragmx/functions/fnc_toggle_gun_list.sqf | 2 +- .../functions/fnc_toggle_range_card.sqf | 4 +- .../functions/fnc_toggle_range_card_setup.sqf | 4 +- .../functions/fnc_toggle_solution_setup.sqf | 6 +- .../functions/fnc_toggle_target_data.sqf | 2 +- .../fnc_toggle_target_range_assist.sqf | 2 +- .../fnc_toggle_target_speed_assist.sqf | 2 +- .../functions/fnc_update_range_card.sqf | 14 +- .../atragmx/functions/fnc_update_result.sqf | 22 +-- addons/ballistics/CfgMagazines.hpp | 30 +-- addons/ballistics/CfgWeapons.hpp | 38 ++-- .../functions/fnc_doEscortCaptive.sqf | 2 +- addons/common/RscInfoType.hpp | 2 +- .../functions/fnc_dumpPerformanceCounters.sqf | 8 +- addons/dagr/initKeybinds.sqf | 2 +- addons/dragging/CfgVehicles.hpp | 4 +- .../explosives/functions/fnc_setSpeedDial.sqf | 3 +- addons/fastroping/$PBOPREFIX$ | 2 +- addons/finger/XEH_postInit.sqf | 2 +- addons/frag/CfgAmmo.hpp | 38 ++-- addons/frag/functions/fnc_doReflections.sqf | 4 - addons/frag/functions/fnc_drawTraces.sqf | 5 +- addons/gestures/functions/fnc_playSignal.sqf | 2 +- addons/goggles/RscTitles.hpp | 14 +- addons/huntir/CfgAmmo.hpp | 2 +- addons/huntir/CfgWeapons.hpp | 6 +- addons/interaction/CfgVehicles.hpp | 2 +- .../functions/fnc_inventoryDisplayLoad.sqf | 2 +- addons/javelin/CfgMagazines.hpp | 2 +- addons/javelin/CfgVehicles.hpp | 12 +- addons/javelin/CfgWeapons.hpp | 32 ++-- addons/javelin/RscInGameUI.hpp | 22 +-- addons/kestrel4500/initKeybinds.sqf | 6 +- addons/laser/CfgVehicles.hpp | 10 +- addons/laser/CfgWeapons.hpp | 1 - addons/laser/RscInGameUI.hpp | 9 +- addons/laser/functions/fnc_laserOff.sqf | 2 +- addons/laser/functions/fnc_laserTargetPFH.sqf | 3 +- .../functions/fnc_seekerFindLaserSpot.sqf | 2 +- addons/main/CfgSettings.hpp | 2 +- addons/map/CfgAmmo.hpp | 20 +- addons/map/XEH_postInitClient.sqf | 2 +- .../functions/fnc_compileFlashlightMenu.sqf | 2 +- .../functions/fnc_calculateMapScale.sqf | 2 +- .../functions/fnc_initInsertMarker.sqf | 2 +- .../functions/fnc_translateSelections.sqf | 2 +- .../microdagr/functions/fnc_updateDisplay.sqf | 4 +- addons/missileguidance/ACE_GuidanceConfig.hpp | 16 +- addons/missileguidance/CfgMagazines.hpp | 12 +- addons/missileguidance/CfgVehicles.hpp | 4 +- .../functions/fnc_doAttackProfile.sqf | 4 +- .../functions/fnc_doSeekerSearch.sqf | 4 +- .../missileguidance/functions/fnc_onFired.sqf | 32 ++-- addons/modules/XEH_postInit.sqf | 8 +- addons/nametags/functions/fnc_doShow.sqf | 12 +- addons/nightvision/XEH_postInitClient.sqf | 8 +- .../functions/fnc_getDistance.sqf | 2 +- addons/rangecard/RscTitles.hpp | 2 +- .../functions/fnc_calculateSolution.sqf | 41 +--- .../rangecard/functions/fnc_openRangeCard.sqf | 8 +- .../functions/fnc_updateRangeCard.sqf | 12 +- addons/realisticnames/CfgVehicles.hpp | 6 +- addons/repair/ACE_Repair.hpp | 2 +- addons/sandbag/CfgWeapons.hpp | 4 +- addons/scopes/CfgWeapons.hpp | 8 +- addons/scopes/functions/fnc_adjustScope.sqf | 2 +- addons/sitting/XEH_clientInit.sqf | 2 +- addons/spottingscope/CfgWeapons.hpp | 4 +- .../switchunits/functions/fnc_markAiOnMap.sqf | 2 +- addons/tripod/CfgWeapons.hpp | 4 +- addons/weaponselect/XEH_preInit.sqf | 4 +- addons/weather/functions/fnc_getMapData.sqf | 175 ++++++++++-------- addons/weather/functions/fnc_initWind.sqf | 2 +- .../weather/functions/fnc_updateHumidity.sqf | 2 +- addons/weather/functions/fnc_updateRain.sqf | 2 +- .../functions/fnc_acquireTarget.sqf | 10 +- addons/yardage450/functions/fnc_turnOn.sqf | 6 +- addons/yardage450/initKeybinds.sqf | 4 +- addons/zeus/CfgVehicles.hpp | 2 +- 94 files changed, 418 insertions(+), 472 deletions(-) diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp index 8aa5d3173ee..2c3701b8e0a 100644 --- a/addons/aircraft/CfgAmmo.hpp +++ b/addons/aircraft/CfgAmmo.hpp @@ -11,7 +11,7 @@ class CfgAmmo { explosive = 1.8; tracersEvery = 3; tracerEndTime = 3.5; - + CraterEffects = "ExploAmmoCrater"; explosionEffects = "ExploAmmoExplosion"; model = "\A3\Weapons_f\Data\bullettracer\tracer_red"; diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp index 26a46059106..a6868033e6a 100644 --- a/addons/aircraft/Heli_Attack_01_base_F.hpp +++ b/addons/aircraft/Heli_Attack_01_base_F.hpp @@ -860,12 +860,12 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { helmetDown[] = {0,-0.07,0}; }; }; - + class Turrets: Turrets { class MainTurret: MainTurret { weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM", "ACE_AIR_SAFETY"}; magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"}; - + outGunnerMayFire = 1; commanding = -1; primaryGunner = 1; @@ -888,13 +888,13 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { minTurn = -120; maxTurn = 120; initTurn = 0; - + class OpticsIn { delete Narrow; delete Medium; delete Wide; - + class ACE_WideUnstabilized { opticsDisplayName = "W NS"; initAngleX = 0; @@ -994,4 +994,4 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { weapon = "ACE_gatling_20mm_Comanche"; }; }; -}; \ No newline at end of file +}; diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp index 97dad6e7b63..625cd68deb2 100644 --- a/addons/atragmx/RscTitles.hpp +++ b/addons/atragmx/RscTitles.hpp @@ -230,7 +230,7 @@ class ATragMX_Display { idc=-1; x=0.55*safezoneW+safezoneX+0.315; }; - + class TEXT_GUN_FRAME: ATragMX_RscText { idc=1001; style=64; @@ -610,7 +610,7 @@ class ATragMX_Display { x=0.550*safezoneW+safezoneX+0.27; text="4"; action=QUOTE(call FUNC(toggle_solution_setup)); - }; + }; class TEXT_CALCULATE: TEXT_SCOPE_UNIT { idc=3000; style=ST_RIGHT; @@ -1059,7 +1059,7 @@ class ATragMX_Display { text="Cancel"; action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list)); }; - + class TEXT_GUN_AMMO_DATA_BORE_HEIGHT: TEXT_BORE_HEIGHT { idc=12000; w=0.22; @@ -1147,7 +1147,7 @@ class ATragMX_Display { class TEXT_GUN_AMMO_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT { idc=12011; }; - + class TEXT_ATMO_ENV_DATA_DEFAULT: TEXT_LEAD { idc=13000; w=0.08; @@ -1231,7 +1231,7 @@ class ATragMX_Display { y=0.265*safezoneH+safezoneY+0.29; text="Calc Method"; }; - + class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT { idc=14000; w=0.22; @@ -1379,7 +1379,7 @@ class ATragMX_Display { class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT { idc=14011; }; - + class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN: TEXT_GUN_AMMO_DATA_BORE_HEIGHT { idc=15000; style=64; @@ -1469,4 +1469,4 @@ class ATragMX_Display { action=QUOTE(0 call FUNC(toggle_solution_setup)); }; }; -}; \ No newline at end of file +}; diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 4b61a285516..8d4907523be 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -7,41 +7,41 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == } else { // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ], - + ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ], ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ], - + ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ], - + [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ], - + ["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ], - + [".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"], [".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"], [".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ], - + [".300WM Mk248 Mod 0", 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"], [".300WM Mk248 Mod 1", 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"], [".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"], - + ["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"], - + ["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"], ["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"], ["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"], ["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"], ["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"], - + ["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"], ["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"], ["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"], - + ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ], ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ], ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ], ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]]; - + [] call FUNC(clear_user_data); profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; }; diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf index 869ce8d098a..839cba8b697 100644 --- a/addons/atragmx/functions/fnc_calculate_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_solution.sqf @@ -42,31 +42,8 @@ * Public: No */ #include "script_component.hpp" - -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"]; -_scopeBaseAngle = _this select 0; -_bulletMass = _this select 1; -_boreHeight = _this select 2; -_airFriction = _this select 3; -_muzzleVelocity = _this select 4; -_temperature = _this select 5; -_barometricPressure = _this select 6; -_relativeHumidity = _this select 7; -_simSteps = _this select 8; -_windSpeed1 = (_this select 9) select 0; -_windSpeed2 = (_this select 9) select 1; -_windDirection = _this select 10; -_inclinationAngle = _this select 11; -_targetSpeed = _this select 12; -_targetRange = _this select 13; -_bc = _this select 14; -_dragModel = _this select 15; -_atmosphereModel = _this select 16; -_storeRangeCardData = _this select 17; -_stabilityFactor = _this select 18; -_twistDirection = _this select 19; -_latitude = _this select 20; -_directionOfFire = _this select 21; +params ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"]; +_windSpeed params ["_windSpeed1", "_windSpeed2"]; private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; _bulletPos = [0, 0, 0]; @@ -133,7 +110,7 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity]; while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { _bulletSpeed = vectorMagnitude _bulletVelocity; - + _speedTotal = _speedTotal + _bulletSpeed; _stepsTotal = _stepsTotal + 1; _speedAverage = (_speedTotal / _stepsTotal); @@ -142,7 +119,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { _trueSpeed = vectorMagnitude _trueVelocity; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { + private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) } else { ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) @@ -173,7 +150,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { }; _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2)); _kineticEnergy = _kineticEnergy * 0.737562149; - + if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then { // Coriolis _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage; @@ -190,7 +167,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { _windage1 = _windage1 + _spinDrift; _windage2 = _windage2 + _spinDrift; }; - + GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]]; _n = _n + 1; }; diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf index 7c5abac47e8..8fe89dc4fe1 100644 --- a/addons/atragmx/functions/fnc_change_gun.sqf +++ b/addons/atragmx/functions/fnc_change_gun.sqf @@ -17,10 +17,7 @@ */ #include "script_component.hpp" -private ["_gunID", "_restoreMemory", "_updateDisplay"]; -_gunID = _this select 0; -_restoreMemory = _this select 1; -_updateDisplay = _this select 2; +params ["_gunID", "_restoreMemory", "_updateDisplay"]; if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {}; diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index 07b93eb2da8..791374c9d0c 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -39,7 +39,7 @@ if (GVAR(showRangeCard)) then { }; GVAR(showRangeCardSetup) call FUNC(show_range_card_setup); GVAR(showSolutionSetup) call FUNC(show_solution_setup); -GVAR(showTargetData) call FUNC(show_target_data); +GVAR(showTargetData) call FUNC(show_target_data); GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist); GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist); GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); diff --git a/addons/atragmx/functions/fnc_show_gun_list.sqf b/addons/atragmx/functions/fnc_show_gun_list.sqf index 5e1cdfa4538..a3c45a977d1 100644 --- a/addons/atragmx/functions/fnc_show_gun_list.sqf +++ b/addons/atragmx/functions/fnc_show_gun_list.sqf @@ -21,6 +21,5 @@ GVAR(showGunList) = _this; if (_this) then { ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002); - lbSetCurSel [6000, GVAR(currentGun)]; }; diff --git a/addons/atragmx/functions/fnc_show_range_card_setup.sqf b/addons/atragmx/functions/fnc_show_range_card_setup.sqf index 3d44c14b536..b3457793b9d 100644 --- a/addons/atragmx/functions/fnc_show_range_card_setup.sqf +++ b/addons/atragmx/functions/fnc_show_range_card_setup.sqf @@ -21,7 +21,7 @@ GVAR(showRangeCardSetup) = _this; if (_this) then { ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 10006); - + ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))]; ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))]; ctrlSetText [10005, Str(Round(GVAR(rangeCardIncrement)))]; diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf index 4f46932a0b1..ec61edd1f40 100644 --- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf +++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf @@ -21,7 +21,6 @@ GVAR(showTargetRangeAssist) = _this; if (_this) then { ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018); - ctrlSetText [7012, Str(parseNumber(ctrlText 320))]; ctrlSetText [7013, Str(parseNumber(ctrlText 340))]; @@ -30,4 +29,4 @@ if (_this) then { } else { ctrlSetText [7016, "Meters"]; }; -}; \ No newline at end of file +}; diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf index 2e66b5ea7ba..b3cf1b43936 100644 --- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf +++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf @@ -21,7 +21,7 @@ GVAR(showTargetSpeedAssist) = _this; if (_this) then { ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 8012); - + ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))]; if (GVAR(currentUnit) == 1) then { @@ -29,7 +29,7 @@ if (_this) then { } else { ctrlSetText [8008, "Meters"]; }; - + if (GVAR(currentUnit) == 2) then { ctrlSetText [8011, "m/s"]; } else { diff --git a/addons/atragmx/functions/fnc_sord.sqf b/addons/atragmx/functions/fnc_sord.sqf index a433153c0e5..b3420720185 100644 --- a/addons/atragmx/functions/fnc_sord.sqf +++ b/addons/atragmx/functions/fnc_sord.sqf @@ -17,10 +17,7 @@ */ #include "script_component.hpp" -private ["_slopeDistance", "_azimuth", "_inclination"]; -_slopeDistance = _this select 0; -_azimuth = _this select 1; -_inclination = _this select 2; +params ["_slopeDistance", "_azimuth", "_inclination"]; GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)]; GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)]; diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf index 0f42f9637c6..14a0a276cc0 100644 --- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf +++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf @@ -21,26 +21,26 @@ if !(ctrlVisible 9000) then { true call FUNC(show_target_speed_assist_timer); ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002); - + [{ private ["_args", "_startTime"]; _args = _this select 0; _startTime = _args select 0; - + if (!(GVAR(speedAssistTimer))) exitWith { GVAR(speedAssistTimer) = true; - + ctrlSetText [8006, Str(Round((ACE_time - _startTime) * 10) / 10)]; [] call FUNC(calculate_target_speed_assist); false call FUNC(show_target_speed_assist_timer); true call FUNC(show_target_speed_assist); - + [_this select 1] call CBA_fnc_removePerFrameHandler; }; - + ctrlSetText [9001, Str(Round((ACE_time - _startTime) * 10) / 10)]; - + }, 0.1, [ACE_time]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf index ce761c22163..87e973c7c0d 100644 --- a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 13000) then { false call FUNC(show_atmo_env_data); true call FUNC(show_main_page); - + if (_this == 1) then { call FUNC(calculate_target_solution); }; diff --git a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf index 0fd4b913b84..f3eb814da78 100644 --- a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 12000) then { false call FUNC(show_gun_ammo_data); true call FUNC(show_main_page); - + if (_this == 1) then { call FUNC(update_zero_range); call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_toggle_gun_list.sqf b/addons/atragmx/functions/fnc_toggle_gun_list.sqf index 1cc1f9338bb..e5dbf54bd50 100644 --- a/addons/atragmx/functions/fnc_toggle_gun_list.sqf +++ b/addons/atragmx/functions/fnc_toggle_gun_list.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 6000) then { false call FUNC(show_gun_list); true call FUNC(show_main_page); - + if (_this) then { [lbCurSel 6000, true, true] call FUNC(change_gun); }; diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf index 059bc7e40bb..7d8b7a02392 100644 --- a/addons/atragmx/functions/fnc_toggle_range_card.sqf +++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf @@ -21,9 +21,9 @@ if (ctrlVisible 5006) then { } else { false call FUNC(show_main_page); true call FUNC(show_range_card); - + ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001); - + [] call FUNC(calculate_range_card); [] call FUNC(update_range_card); }; diff --git a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf index 738a154d174..96c31459b2c 100644 --- a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf +++ b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf @@ -18,12 +18,12 @@ if (ctrlVisible 10000) then { false call FUNC(show_range_card_setup); true call FUNC(show_range_card); - + if (_this == 1) then { GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000; GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000; GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000; - + [] call FUNC(calculate_range_card); [] call FUNC(update_range_card); }; diff --git a/addons/atragmx/functions/fnc_toggle_solution_setup.sqf b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf index 0e9f702383c..5372b205d0b 100644 --- a/addons/atragmx/functions/fnc_toggle_solution_setup.sqf +++ b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 15000) then { false call FUNC(show_solution_setup); true call FUNC(show_main_page); - + if (_this == 1) then { GVAR(currentScopeClickUnit) = GVAR(currentScopeClickUnitTemp); GVAR(currentScopeClickNumber) = GVAR(currentScopeClickNumberTemp); @@ -30,9 +30,9 @@ if (ctrlVisible 15000) then { } else { true call FUNC(show_solution_setup); false call FUNC(show_main_page); - + GVAR(currentScopeClickUnitTemp) = GVAR(currentScopeClickUnit); GVAR(currentScopeClickNumberTemp) = GVAR(currentScopeClickNumber); - + [] call FUNC(update_solution_setup); }; diff --git a/addons/atragmx/functions/fnc_toggle_target_data.sqf b/addons/atragmx/functions/fnc_toggle_target_data.sqf index 90fefbf37ed..2cfa2f8df5a 100644 --- a/addons/atragmx/functions/fnc_toggle_target_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_data.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 14000) then { false call FUNC(show_target_data); true call FUNC(show_main_page); - + if (_this == 1) then { call FUNC(calculate_target_solution); }; diff --git a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf index d13ef4fb2ee..83d2daa95fa 100644 --- a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 7000) then { false call FUNC(show_target_range_assist); true call FUNC(show_main_page); - + if (_this == 1) then { ctrlSetText [320, Str(parseNumber(ctrlText 7012))]; ctrlSetText [140040, Str(parseNumber(ctrlText 7012))]; diff --git a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf index 5b88a6cfcef..4d1680d1953 100644 --- a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf @@ -18,7 +18,7 @@ if (ctrlVisible 8000) then { false call FUNC(show_target_speed_assist); true call FUNC(show_main_page); - + if (_this == 1) then { [] call FUNC(calculate_target_speed_assist); private ["_targetSpeed"]; diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf index d0847549599..e8c910ca74b 100644 --- a/addons/atragmx/functions/fnc_update_range_card.sqf +++ b/addons/atragmx/functions/fnc_update_range_card.sqf @@ -43,7 +43,7 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound); _TOF = _x select 4; _velocity = _x select 5; _kineticEnergy = _x select 6; - + switch (GVAR(currentScopeUnit)) do { case 0: { _elevation = _elevation / 3.38; @@ -63,25 +63,25 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound); }; _clickNumber = GVAR(workingMemory) select 8; _clickInterval = _clickSize / _clickNumber; - + _elevation = Round(_elevation / _clickInterval); _windage1 = Round(_windage1 / _clickInterval); _windage2 = Round(_windage2 / _clickInterval); }; }; - + _elevationOutput = Str(Round(_elevation * 100) / 100); _windageOutput = Str(Round(_windage1 * 100) / 100); - + _rangeOutput = Str(_range); if (_velocity < _speedOfSound) then { _rangeOutput = _rangeOutput + "*"; }; - + if (GVAR(currentUnit) == 1) then { _velocity = _velocity * 3.2808399; }; - + switch (GVAR(rangeCardCurrentColumn)) do { case 0: { if (GVAR(showWind2)) then { @@ -100,6 +100,6 @@ _speedOfSound = GVAR(temperature) call EFUNC(weather,calculateSpeedOfSound); _lastColumnOutput = Str(Round(_TOF * 100) / 100); } }; - + lnbAddRow [5007, [_rangeOutput, _elevationOutput, _windageOutput, _lastColumnOutput]]; } forEach GVAR(rangeCardData); diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf index bb708efaab0..2b6ca29e23d 100644 --- a/addons/atragmx/functions/fnc_update_result.sqf +++ b/addons/atragmx/functions/fnc_update_result.sqf @@ -33,24 +33,24 @@ switch (GVAR(currentScopeUnit)) do { case 0: { _elevationAbs = _elevationAbs / 3.38; _windageAbs = _windageAbs / 3.38; - + _wind2 = _wind2 / 3.38; - + _elevationRel = _elevationRel / 3.38; _windageRel = _windageRel / 3.38; - + _elevationCur = _elevationCur / 3.38; _windageCur = _windageCur / 3.38; }; case 2: { _elevationAbs = _elevationAbs * 1.047; _windageAbs = _windageAbs * 1.047; - + _wind2 = _wind2 / 1.047; - + _elevationRel = _elevationRel * 1.047; _windageRel = _windageRel * 1.047; - + _elevationCur = _elevationCur * 1.047; _windageCur = _windageCur * 1.047; }; @@ -62,15 +62,15 @@ switch (GVAR(currentScopeUnit)) do { }; _clickNumber = GVAR(workingMemory) select 8; _clickInterval = _clickSize / _clickNumber; - + _elevationAbs = Round(_elevationAbs / _clickInterval); _windageAbs = Round(_windageAbs / _clickInterval); - + _wind2 = Round(_wind2 / _clickInterval); - + _elevationRel = Round(_elevationRel / _clickInterval); _windageRel = Round(_windageRel / _clickInterval); - + _elevationCur = Round(_elevationCur / _clickInterval); _windageCur = Round(_windageCur / _clickInterval); }; @@ -166,4 +166,4 @@ if (GVAR(showWind2)) then { } else { ctrlSetText [420, "0.0"]; }; -}; \ No newline at end of file +}; diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index e368381333d..931a6c23099 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -83,7 +83,7 @@ class CfgMagazines { descriptionShort = CSTRING(30Rnd_556x45_mag_Tracer_DimDescription); picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa"; }; - + class 20Rnd_762x51_Mag: CA_Magazine { initSpeed = 833; }; @@ -121,7 +121,7 @@ class CfgMagazines { descriptionShort = CSTRING(20Rnd_762x51_mag_SDDescription); initSpeed = 325; }; - + class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag { author = ECSTRING(common,ACETeam); ammo = "ACE_762x51_Ball_M118LR"; @@ -247,7 +247,7 @@ class CfgMagazines { descriptionShort = CSTRING(10Rnd_338_API526_Mag_Description); initSpeed = 880; }; - + class 5Rnd_127x108_Mag; class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag { author = ECSTRING(common,ACETeam); @@ -273,8 +273,8 @@ class CfgMagazines { descriptionShort = CSTRING(5Rnd_127x99_AMAX_Mag_Description); initSpeed = 860; }; - - + + class 30Rnd_9x21_Mag: CA_Magazine { initSpeed = 450; }; @@ -286,27 +286,27 @@ class CfgMagazines { descriptionShort = CSTRING(30Rnd_9x19_mag_Description); initSpeed = 370; }; - + class 11Rnd_45ACP_Mag: CA_Magazine { initSpeed = 250; }; - + class 6Rnd_45ACP_Cylinder : 11Rnd_45ACP_Mag { initSpeed = 250; }; - + class 30Rnd_45ACP_Mag_SMG_01: 30Rnd_9x21_Mag { initSpeed = 250; }; - + class 9Rnd_45ACP_Mag: 30Rnd_45ACP_Mag_SMG_01 { initSpeed = 250; }; - + class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 { initSpeed = 250; }; - + class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag { initSpeed = 450; }; @@ -318,7 +318,7 @@ class CfgMagazines { descriptionShort = CSTRING(16Rnd_9x19_mag_Description); initSpeed = 370; }; - + class 10Rnd_762x54_Mag: 10Rnd_762x51_Mag { initSpeed = 800; }; @@ -331,15 +331,15 @@ class CfgMagazines { initSpeed = 800; tracersEvery = 1; }; - + class 150Rnd_762x54_Box: 150Rnd_762x51_Box { initSpeed = 750; }; - + class 150Rnd_93x64_Mag: CA_Magazine { initSpeed = 860; }; - + class 10Rnd_127x54_Mag: CA_Magazine { initSpeed = 300; }; diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 3f6835bbbac..4c0495decfb 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -15,81 +15,81 @@ class CfgWeapons { class Rifle_Base_F; class Rifle_Long_Base_F; class MuzzleSlot; - + /* Long Rifles */ - + class GM6_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; - + class LRR_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00020; // radians. Equal to 0.70 MOA. }; }; - + class DMR_06_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; - + class FullAuto: Mode_FullAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; - + class DMR_05_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; - + class FullAuto: Mode_FullAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; - + class DMR_04_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; - + class DMR_03_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00032; // radians. Equal to 1.10 MOA. }; - + class FullAuto: Mode_FullAuto { dispersion = 0.00032; // radians. Equal to 1.10 MOA. }; }; - + class DMR_02_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.000262; // radians. Equal to 0.90 MOA. }; }; - + class DMR_01_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.0004; // radians. Equal to 1.375 MOA. }; }; - + class EBR_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; - + class FullAuto: Mode_FullAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. }; }; - + /* MX */ - + class arifle_MX_Base_F: Rifle_Base_F {}; class arifle_MX_SW_F: arifle_MX_Base_F { magazines[] = { @@ -158,7 +158,7 @@ class CfgWeapons { class Burst: Mode_Burst { dispersion = 0.0008727; // radians. Equal to 3 MOA. }; - + class FullAuto: Mode_FullAuto { dispersion = 0.0008727; // radians. Equal to 3 MOA. }; @@ -511,7 +511,7 @@ class CfgWeapons { ACE_barrelTwist=234.95; ACE_barrelLength=609.6; }; - + class HMG_127 : LMG_RCWS { }; class HMG_01: HMG_127 { @@ -521,7 +521,7 @@ class CfgWeapons { ACE_barrelTwist=304.8; ACE_barrelLength=1143.0; }; - + /* Silencers */ class ItemCore; diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index 484151853b3..e0d3ae8fa67 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -37,7 +37,7 @@ if (_state) then { [{ params ["_args", "_pfID"]; _args params ["_unit", "_target", "_actionID"]; - + if (_unit getVariable [QGVAR(isEscorting), false]) then { if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { _unit setVariable [QGVAR(isEscorting), false, true]; diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index 327a9814d19..e5af2454cbc 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -15,7 +15,7 @@ class RscInGameUI { class RscUnitInfoTank: RscUnitInfo { onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call FUNC(localEvent);); }; - + class RscUnitInfoAirNoWeapon: RscUnitInfo { onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent);); }; diff --git a/addons/common/functions/fnc_dumpPerformanceCounters.sqf b/addons/common/functions/fnc_dumpPerformanceCounters.sqf index bdc4588b056..afb71b423a4 100644 --- a/addons/common/functions/fnc_dumpPerformanceCounters.sqf +++ b/addons/common/functions/fnc_dumpPerformanceCounters.sqf @@ -21,7 +21,7 @@ if (!isNil "ACE_PFH_COUNTER") then { private _isActive = ["ACTIVE", "REMOVED"] select isNil {CBA_common_PFHhandles select (_pfh select 0)}; - diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2]; + diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2]; false } count ACE_PFH_COUNTER; }; @@ -42,7 +42,7 @@ diag_log text format ["-------------------------------------------"]; if (_iter > 2) then { _count = _count + 1; private _delta = (_x select 1) - (_x select 0); - + _total = _total + _delta; }; @@ -54,7 +54,7 @@ diag_log text format ["-------------------------------------------"]; _averageResult = (_total / _count) * 1000; // dump results - diag_log text format ["%1: Average: %2s / %3 = %4ms", _counterEntry select 0, _total, _count, _averageResult]; + diag_log text format ["%1: Average: %2s / %3 = %4ms", _counterEntry select 0, _total, _count, _averageResult]; } else { diag_log text format ["%1: No results", _counterEntry select 0]; }; @@ -68,7 +68,7 @@ diag_log text format["-------------------------------------------"]; { private _delay = _x select 2; //if(_delay > 0) then { _delay = _delay / 1000; }; - + diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)]; } forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER; diff --git a/addons/dagr/initKeybinds.sqf b/addons/dagr/initKeybinds.sqf index 66bd08190ed..1a2f25ac4d5 100644 --- a/addons/dagr/initKeybinds.sqf +++ b/addons/dagr/initKeybinds.sqf @@ -37,7 +37,7 @@ _conditonCode = { _toggleCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {}; - + // Statement [] call FUNC(toggleOverlay); if (!GVAR(run)) then { diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 31928e86219..1529d393195 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -90,7 +90,7 @@ class CfgVehicles { GVAR(canCarry) = 0; GVAR(canDrag) = 0; }; - + //Plastic and metal case class PlasticCase_01_base_F: Items_base_F { class EventHandlers { @@ -116,7 +116,7 @@ class CfgVehicles { GVAR(dragPosition[]) = {0,1.2,0}; GVAR(dragDirection) = 0; }; - + // Barrier class RoadCone_F: ThingX { class EventHandlers { diff --git a/addons/explosives/functions/fnc_setSpeedDial.sqf b/addons/explosives/functions/fnc_setSpeedDial.sqf index 9013c812cc1..7e68c9016f4 100644 --- a/addons/explosives/functions/fnc_setSpeedDial.sqf +++ b/addons/explosives/functions/fnc_setSpeedDial.sqf @@ -14,8 +14,7 @@ * * Public: No */ - #include "script_component.hpp" - +#include "script_component.hpp" private ["_speedDial", "_amount"]; _speedDial = ace_player getVariable [QGVAR(SpeedDial), []]; diff --git a/addons/fastroping/$PBOPREFIX$ b/addons/fastroping/$PBOPREFIX$ index 352dc2c83ad..c2389fdaf5b 100644 --- a/addons/fastroping/$PBOPREFIX$ +++ b/addons/fastroping/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\addons\fastroping +z\ace\addons\fastroping diff --git a/addons/finger/XEH_postInit.sqf b/addons/finger/XEH_postInit.sqf index 394c0cfd3b2..94a22d7224d 100644 --- a/addons/finger/XEH_postInit.sqf +++ b/addons/finger/XEH_postInit.sqf @@ -11,7 +11,7 @@ GVAR(pfeh_id) = -1; if (!GVAR(enabled)) exitWith {}; [QGVAR(fingered), {_this call FUNC(incomingFinger)}] call EFUNC(common,addEventHandler); - + ["ACE3 Common", QGVAR(finger), [(localize LSTRING(keyComb)), (localize LSTRING(keyComb_description))], diff --git a/addons/frag/CfgAmmo.hpp b/addons/frag/CfgAmmo.hpp index 41734d28065..916949bab2f 100644 --- a/addons/frag/CfgAmmo.hpp +++ b/addons/frag/CfgAmmo.hpp @@ -8,11 +8,11 @@ class CfgAmmo { //class ace_arty_105mm_m1_m782_delay: ace_arty_105mm_m1_m782_prox { // GVAR(skip) = 1; //}; - + class Bo_GBU12_LGB; class ACE_GBU12 : Bo_GBU12_LGB { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 140000; GVAR(charge) = 87000; @@ -27,7 +27,7 @@ class CfgAmmo { class Grenade; class GrenadeHand: Grenade { GVAR(enabled) = 1; - + GVAR(skip) = 0; GVAR(force) = 1; // This is a good high-drag frag type for grenades. @@ -52,7 +52,7 @@ class CfgAmmo { class R_Hydra_HE: RocketBase { // Source: http://fas.org/man/dod-101/sys/missile/hydra-70.htm GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 3850; GVAR(charge) = 1040; @@ -74,18 +74,18 @@ class CfgAmmo { class BombCore; class Bo_Mk82: BombCore { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 140000; GVAR(charge) = 87000; GVAR(gurney_c) = 2320; GVAR(gurney_k) = 1/2; }; - + class G_40mm_HE: GrenadeBase { // Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M441 GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_tiny_HD"}; GVAR(metal) = 200; GVAR(charge) = 32; @@ -95,14 +95,14 @@ class CfgAmmo { class G_40mm_HEDP: G_40mm_HE { // Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M433 GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_tiny_HD"}; GVAR(metal) = 200; GVAR(charge) = 45; GVAR(gurney_c) = 2830; GVAR(gurney_k) = 1/2; }; - + class ACE_G_40mm_HEDP: G_40mm_HEDP { }; class ACE_G_40mm_HE: G_40mm_HE { @@ -121,7 +121,7 @@ class CfgAmmo { class Sh_155mm_AMOS: ShellBase { // Source: http://www.globalsecurity.org/military/systems/munitions/m795.htm GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 36000; GVAR(charge) = 9979; @@ -131,7 +131,7 @@ class CfgAmmo { class Sh_82mm_AMOS : Sh_155mm_AMOS { // Source: http://www.arsenal-bg.com/defense_police/mortar_bombs_82mm.htm GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 3200; GVAR(charge) = 420; @@ -140,7 +140,7 @@ class CfgAmmo { }; class ModuleOrdnanceMortar_F_Ammo: Sh_82mm_AMOS { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 800; GVAR(charge) = 4200; @@ -149,7 +149,7 @@ class CfgAmmo { }; class Sh_105mm_HEAT_MP : Sh_125mm_HEAT { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 11400; GVAR(charge) = 7100; @@ -158,7 +158,7 @@ class CfgAmmo { }; class Sh_120mm_HE : ShellBase { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 23000; GVAR(charge) = 3148; @@ -167,7 +167,7 @@ class CfgAmmo { }; class Sh_125mm_HE: Sh_120mm_HE { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 16000; GVAR(charge) = 3200; @@ -176,7 +176,7 @@ class CfgAmmo { }; class ModuleOrdnanceHowitzer_F_ammo: Sh_155mm_AMOS { GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_large", "ACE_frag_large", "ACE_frag_large_HD", "ACE_frag_large", "ACE_frag_huge", "ACE_frag_huge_HD", "ACE_frag_huge"}; GVAR(metal) = 1950; GVAR(charge) = 15800; @@ -203,7 +203,7 @@ class CfgAmmo { class Missile_AGM_02_F : MissileBase { // Source: http://fas.org/man/dod-101/sys/smart/agm-65.htm GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 56250; GVAR(charge) = 39000; @@ -213,7 +213,7 @@ class CfgAmmo { class M_Hellfire_AT: MissileBase { // Source: http://www.designation-systems.net/dusrm/m-114.html GVAR(enabled) = 1; - + GVAR(classes)[] = {"ACE_frag_medium", "ACE_frag_medium_HD"}; GVAR(metal) = 8000; GVAR(charge) = 2400; @@ -471,6 +471,6 @@ class CfgAmmo { class ACE_frag_spall_huge: ACE_frag_huge { timeToLive = 0.3; }; - + #include "CfgAmmoReflections.hpp" }; diff --git a/addons/frag/functions/fnc_doReflections.sqf b/addons/frag/functions/fnc_doReflections.sqf index 7702e34fd5b..64d8ede26de 100644 --- a/addons/frag/functions/fnc_doReflections.sqf +++ b/addons/frag/functions/fnc_doReflections.sqf @@ -13,10 +13,6 @@ if(count _this > 2) then { if(_depth <= 2) then { _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHitRange"); _indirectHit = getNumber(configFile >> "CfgAmmo" >> _ammo >> "indirectHit"); - - - - _testParams = [_pos, [_indirectHitRange, _indirectHit], [], [], -4, _depth, 0]; [DFUNC(findReflections), 0, _testParams] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/frag/functions/fnc_drawTraces.sqf b/addons/frag/functions/fnc_drawTraces.sqf index ac95957ad41..494a2af7276 100644 --- a/addons/frag/functions/fnc_drawTraces.sqf +++ b/addons/frag/functions/fnc_drawTraces.sqf @@ -18,12 +18,11 @@ private ["_color", "_index", "_lastPos", "_lastSpd", "_max", "_positions", "_sta } else { _data2 = _positions select (_index + ACE_TRACE_DRAW_INC); }; - + _pos1 = _data1 select 0; _pos2 = _data2 select 0; _index = _index + ACE_TRACE_DRAW_INC; - - + drawLine3D [_pos1, _pos2, _color]; _lastPos = _pos2; _lastSpd = _data1 select 1; diff --git a/addons/gestures/functions/fnc_playSignal.sqf b/addons/gestures/functions/fnc_playSignal.sqf index feb79f53703..8f20c690efc 100644 --- a/addons/gestures/functions/fnc_playSignal.sqf +++ b/addons/gestures/functions/fnc_playSignal.sqf @@ -14,7 +14,7 @@ * Public: No */ #include "script_component.hpp" - + TRACE_1("params",_this); if (!GVAR(ReloadMutex)) exitWith {false}; diff --git a/addons/goggles/RscTitles.hpp b/addons/goggles/RscTitles.hpp index 6c1b9870b64..5544b9b1325 100644 --- a/addons/goggles/RscTitles.hpp +++ b/addons/goggles/RscTitles.hpp @@ -1,6 +1,6 @@ class RscTitles{ #include "define.hpp" - + class RscACE_Goggles_BaseTitle{ idd = -1; onLoad = "uiNamespace setVariable ['ACE_Goggles_Display', _this select 0]"; @@ -9,25 +9,25 @@ class RscTitles{ fadeOut=0.5; movingEnable = false; duration = 10e10; - name = "RscACE_Goggles_BaseTitle"; + name = "RscACE_Goggles_BaseTitle"; class controls; }; - + class RscACE_Goggles:RscACE_Goggles_BaseTitle{ idd = 1044; - name = "RscACE_Goggles"; + name = "RscACE_Goggles"; class controls{ class gogglesImage: RscPicture{ idc = 10650; }; }; }; - + class RscACE_GogglesEffects:RscACE_Goggles_BaseTitle{ idd = 1045; onLoad = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', _this select 0]"; onUnload = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', displayNull]"; - name = "RscACE_GogglesEffects"; + name = "RscACE_GogglesEffects"; fadeIn=0; fadeOut=0.5; class controls{ @@ -39,4 +39,4 @@ class RscTitles{ }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp index 86f73e97557..33328094b2f 100644 --- a/addons/huntir/CfgAmmo.hpp +++ b/addons/huntir/CfgAmmo.hpp @@ -6,7 +6,7 @@ class CfgAmmo { smokeColor[] = {0, 0, 0, 0}; timeToLive = 6; }; - + class ShellBase; class ACE_HuntIR_Propell: ShellBase { supersonicCrackNear[] = {"",0.316228,1,50}; diff --git a/addons/huntir/CfgWeapons.hpp b/addons/huntir/CfgWeapons.hpp index 6ff271d6045..6d74cbfba9f 100644 --- a/addons/huntir/CfgWeapons.hpp +++ b/addons/huntir/CfgWeapons.hpp @@ -2,7 +2,7 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - + class ACE_HuntIR_monitor: ACE_ItemCore { scope = 2; displayName = CSTRING(monitor_displayName); @@ -14,7 +14,7 @@ class CfgWeapons { mass = 20; }; }; - + class GrenadeLauncher; class UGL_F: GrenadeLauncher { magazines[] += {"ACE_HuntIR_M203"}; @@ -23,7 +23,7 @@ class CfgWeapons { //magazines[] += {"ACE_HuntIR_M203"}; magazines[] = {"1Rnd_HE_Grenade_shell","UGL_FlareWhite_F","UGL_FlareGreen_F","UGL_FlareRed_F","UGL_FlareYellow_F","UGL_FlareCIR_F","1Rnd_Smoke_Grenade_shell","1Rnd_SmokeRed_Grenade_shell","1Rnd_SmokeGreen_Grenade_shell","1Rnd_SmokeYellow_Grenade_shell","1Rnd_SmokePurple_Grenade_shell","1Rnd_SmokeBlue_Grenade_shell","1Rnd_SmokeOrange_Grenade_shell","3Rnd_HE_Grenade_shell","3Rnd_UGL_FlareWhite_F","3Rnd_UGL_FlareGreen_F","3Rnd_UGL_FlareRed_F","3Rnd_UGL_FlareYellow_F","3Rnd_UGL_FlareCIR_F","3Rnd_Smoke_Grenade_shell","3Rnd_SmokeRed_Grenade_shell","3Rnd_SmokeGreen_Grenade_shell","3Rnd_SmokeYellow_Grenade_shell","3Rnd_SmokePurple_Grenade_shell","3Rnd_SmokeBlue_Grenade_shell","3Rnd_SmokeOrange_Grenade_shell","ACE_HuntIR_M203"}; }; - + class Rifle_Base_F; class arifle_MX_Base_F: Rifle_Base_F { class GL_3GL_F: UGL_F { diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 0b71ebb4e12..6b6e0e69b07 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -577,7 +577,7 @@ class CfgVehicles { class Land_PortableLight_double_off_F: Land_PortableLight_double_F { scope = 1; }; - + class RoadCone_F: ThingX { class ACE_Actions { class ACE_MainActions { diff --git a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf index 6e48c1ec2af..ab237017600 100644 --- a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf +++ b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf @@ -28,7 +28,7 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; [{ disableSerialization; params ["_filter"]; - + // remove "All", so we can push it to the back later. // to keep localization we can keep the lbText (displayed name). private _index = lbSize _filter - 1; diff --git a/addons/javelin/CfgMagazines.hpp b/addons/javelin/CfgMagazines.hpp index 3053cf1fa12..80111d94847 100644 --- a/addons/javelin/CfgMagazines.hpp +++ b/addons/javelin/CfgMagazines.hpp @@ -10,7 +10,7 @@ class CfgMagazines { class Titan_AT: Titan_AA { ammo = "ACE_Javelin_FGM148"; //from misssileGuidance, was "M_Titan_AT" }; - + //Handheld Titan "AP" Magazine (SACLOS? "Anti-personal") // class Titan_AP: Titan_AA { //??? diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp index 1cd527089d9..74863ef08f6 100644 --- a/addons/javelin/CfgVehicles.hpp +++ b/addons/javelin/CfgVehicles.hpp @@ -3,20 +3,20 @@ class CfgVehicles { class StaticWeapon : LandVehicle { class Turrets; }; - + class StaticMGWeapon : StaticWeapon { class Turrets : Turrets { class MainTurret; }; }; class AT_01_base_F: StaticMGWeapon {}; - + class B_static_AT_F: AT_01_base_F { class Turrets : Turrets { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; @@ -34,7 +34,7 @@ class CfgVehicles { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; @@ -52,7 +52,7 @@ class CfgVehicles { class MainTurret : MainTurret { weapons[] = { QGVAR(Titan_Static) }; magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"}; - + turretInfoType = "ACE_RscOptics_javelin"; gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d); opticsZoomMin = 0.08333; @@ -65,4 +65,4 @@ class CfgVehicles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index 75aaf7c3325..1e32752145a 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -1,38 +1,38 @@ class CfgWeapons { class Launcher; class MissileLauncher; - + class Launcher_Base_F : Launcher { - class WeaponSlotsInfo; + class WeaponSlotsInfo; }; // @TODO: AA by default, motherfuckers class missiles_titan : MissileLauncher { - + }; - + class missiles_titan_at : missiles_titan { }; - class GVAR(Titan_Static) : missiles_titan_at { + class GVAR(Titan_Static) : missiles_titan_at { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); - + canLock = 0; magazines[] = {"1Rnd_GAT_missiles"}; lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; - + // @TODO: AA by default, motherfuckers class launch_Titan_base : Launcher_Base_F {}; - + class launch_Titan_short_base : launch_Titan_base { }; - + class launch_B_Titan_short_F: launch_Titan_short_base { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); - + canLock = 0; lockingTargetSound[] = {"",0,1}; @@ -42,7 +42,7 @@ class CfgWeapons { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); - + canLock = 0; lockingTargetSound[] = {"",0,1}; @@ -52,10 +52,10 @@ class CfgWeapons { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); - + canLock = 0; - - + + lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; @@ -63,10 +63,10 @@ class CfgWeapons { GVAR(enabled) = 1; weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); - + canLock = 0; lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; -}; \ No newline at end of file +}; diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp index ea1e12626cd..d3fff71db04 100644 --- a/addons/javelin/RscInGameUI.hpp +++ b/addons/javelin/RscInGameUI.hpp @@ -15,7 +15,7 @@ class RscInGameUI { controls[] = { "ACE_javelin_elements_group", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"}; onLoad = QUOTE(_this call FUNC(onOpticLoad)); onUnload = QUOTE(_this call FUNC(onOpticUnload)); - + class ACE_javelin_elements_group: RscControlsGroup { x = "SafezoneX"; @@ -44,7 +44,7 @@ class RscInGameUI { w = 0; h = 0; }; - + class ACE_javelin_Day_mode_off: RscPicture { idc = 1001; x = "(SafezoneX+(SafezoneW -SafezoneH*3/4)/2)+ (0.03/4)*3*SafezoneH - SafezoneX"; @@ -123,7 +123,7 @@ class RscInGameUI { h = 0; colorText[] = {0.2941,0.8745,0.2157,1}; }; - + }; }; class CA_Javelin_NFOV_mode_off: ACE_javelin_Day_mode_off { @@ -191,7 +191,7 @@ class RscInGameUI { h = "0.1895*SafezoneH"; colorText[] = {0.2941,0.8745,0.2157,1}; }; - + }; }; @@ -253,12 +253,12 @@ class RscInGameUI { }; class ACE_Targeting : RscControlsGroup { idc = 6999; - + x = "SafezoneX"; y = "SafezoneY"; w = "SafezoneW"; h = "SafezoneH"; - + enabled = 0; class Controls { class ACE_TargetingConstrains: RscControlsGroup { @@ -266,7 +266,7 @@ class RscInGameUI { y = "SafezoneY"; w = "SafezoneW-SafezoneX"; h = "SafezoneH-SafezoneY"; - + enabled = 0; class VScrollbar { autoScrollSpeed = -1; @@ -315,7 +315,7 @@ class RscInGameUI { }; }; }; - + class ACE_TargetingGate : ACE_TargetingConstrains { idc = 699200; class Controls { @@ -401,8 +401,8 @@ class RscInGameUI { }; }; }; - - + + class ACE_TargetingLines: ACE_TargetingConstrains { idc = 699300; class Controls { @@ -451,4 +451,4 @@ ACE_Titan_TOP_off: 1006 ACE_Titan_DIR: 1007 ACE_Titan_FLTR_mode_off: 1002 ACE_Titan_FLTR_mode: 161 -*/ \ No newline at end of file +*/ diff --git a/addons/kestrel4500/initKeybinds.sqf b/addons/kestrel4500/initKeybinds.sqf index 5793d36976c..581ab1a1aee 100644 --- a/addons/kestrel4500/initKeybinds.sqf +++ b/addons/kestrel4500/initKeybinds.sqf @@ -5,7 +5,7 @@ if (GVAR(Kestrel4500)) exitWith { closeDialog 0; false - }; + }; // Statement [] call FUNC(createKestrelDialog); false @@ -17,7 +17,7 @@ { // Conditions: canInteract if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; - + // Statement [] call FUNC(displayKestrel); false @@ -34,7 +34,7 @@ _conditonCode = { _toggleCode = { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {}; - + // Statement if (!GVAR(Overlay)) then { //If no overlay, show it: diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp index d8976ac204c..780107fdf7e 100644 --- a/addons/laser/CfgVehicles.hpp +++ b/addons/laser/CfgVehicles.hpp @@ -6,20 +6,20 @@ class CfgVehicles { model = "\A3\Weapons_F\empty.p3d"; destrType = "DestructNo"; simulation = "LaserTarget"; - + class EventHandlers { init = QUOTE(_this call FUNC(laser_init)); }; }; - + // Visual laserTarget override class ACE_LaserTarget_Visual : LaserTarget { simulation = "LaserTarget"; model = "\A3\Weapons_f\laserTgt.p3d"; }; - + // Vehicle lockable configurations - + class AllVehicles; class Air: AllVehicles { class Turrets; @@ -42,4 +42,4 @@ class CfgVehicles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/laser/CfgWeapons.hpp b/addons/laser/CfgWeapons.hpp index 70a25e6f85d..6dff36a4e81 100644 --- a/addons/laser/CfgWeapons.hpp +++ b/addons/laser/CfgWeapons.hpp @@ -1,7 +1,6 @@ class CfgWeapons { class Binocular; - class Laserdesignator : Binocular { visionMode[] = {"Normal","NVG"}; }; diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp index d87136c960a..08f0a794bea 100644 --- a/addons/laser/RscInGameUI.hpp +++ b/addons/laser/RscInGameUI.hpp @@ -8,11 +8,10 @@ class RscInGameUI { class RscOptics_LaserDesignator { idd = 300; controls[] = {"CA_IGUI_elements_group"}; - + onLoad = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',(_this select 0)];"; onUnload = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',nil];"; - - + class CA_IGUI_elements_group: RscControlsGroup { idc = 170; @@ -118,7 +117,7 @@ class RscInGameUI { w = "3.5 * (0.01875 * SafezoneH)"; h = "1.6 * (0.025 * SafezoneH)"; }; - + class ACE_LaserCode_Helper : RscMapControl { idc = -1; onDraw = QUOTE(_this call FUNC(onLaserDesignatorDraw)); @@ -141,4 +140,4 @@ class RscInGameUI { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/laser/functions/fnc_laserOff.sqf b/addons/laser/functions/fnc_laserOff.sqf index 84613cd9887..7899ec12539 100644 --- a/addons/laser/functions/fnc_laserOff.sqf +++ b/addons/laser/functions/fnc_laserOff.sqf @@ -8,7 +8,7 @@ * Return value: * None */ - + #include "script_component.hpp" private ["_uuid"]; diff --git a/addons/laser/functions/fnc_laserTargetPFH.sqf b/addons/laser/functions/fnc_laserTargetPFH.sqf index 6d993b07de4..8726ce42017 100644 --- a/addons/laser/functions/fnc_laserTargetPFH.sqf +++ b/addons/laser/functions/fnc_laserTargetPFH.sqf @@ -12,7 +12,7 @@ _uuid = _args select 2; if(isNull _laserTarget || !alive _shooter) exitWith { [(_this select 1)] call CBA_fnc_removePerFrameHandler; REM(GVAR(VanillaLasers), _laserTarget); - + // Remove laseron [_uuid] call FUNC(laserOff); }; @@ -28,4 +28,3 @@ drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\select_target_ca.paa", [1,0,0,1], (A } forEach DRAW_LINES; DRAW_LINES = []; #endif - diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index 22287f1342c..45b60a69c15 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -62,7 +62,7 @@ _finalOwner = nil; }; }; }; - + //Handle Weird Data Return if (_laser params [["_laserPos", [], [[]], 3], ["_laserDir", [], [[]], 3]]) then { _res = [_laserPos, _laserDir, _divergence] call FUNC(shootCone); diff --git a/addons/main/CfgSettings.hpp b/addons/main/CfgSettings.hpp index 661108c53a7..58cb824a6f7 100644 --- a/addons/main/CfgSettings.hpp +++ b/addons/main/CfgSettings.hpp @@ -6,7 +6,7 @@ class CfgSettings { class dependencies { //ACE will hard exit if this is missing CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "(true)"}; - + //Warnings for missing RHS compat pbos compat_rhs_afrf3[] = {"ace_compat_rhs_afrf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhs_main')"}; compat_rhs_usf3[] = {"ace_compat_rhs_usf3", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'rhsusf_main')"}; diff --git a/addons/map/CfgAmmo.hpp b/addons/map/CfgAmmo.hpp index 9e98d0efea0..01cd9427e83 100644 --- a/addons/map/CfgAmmo.hpp +++ b/addons/map/CfgAmmo.hpp @@ -1,21 +1,21 @@ class CfgAmmo { class FlareCore; - + class FlareBase: FlareCore {}; class F_20mm_White: FlareBase {}; - + class ACE_FlashlightProxy_White: F_20mm_White { model = "\A3\Weapons_f\empty"; effectFlare = "FlareShell"; - + triggerTime = 0; intensity = 0.5; flareSize = 1; timeToLive = 10e10; - + lightColor[] = {1,1,1,1}; - + grenadeBurningSound[] = {}; grenadeFireSound[] = {}; soundTrigger[] = {}; @@ -25,24 +25,24 @@ class CfgAmmo { SmokeShellSoundLoop1[] = {}; SmokeShellSoundLoop2[] = {}; }; - + class ACE_FlashlightProxy_Red: ACE_FlashlightProxy_White { intensity = 1; lightColor[] = {1,0,0,1}; }; - + class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White { intensity = 1; lightColor[] = {0,1,0,1}; }; - + class ACE_FlashlightProxy_Blue: ACE_FlashlightProxy_White { intensity = 1.5; lightColor[] = {0.25,0.25,1,1}; }; - + class ACE_FlashlightProxy_Yellow: ACE_FlashlightProxy_White { intensity = 1; lightColor[] = {1,1,0.5,1}; }; -}; \ No newline at end of file +}; diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index 00e9e737cfb..f3b3ba6106c 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -12,7 +12,7 @@ if (isServer) then { deleteVehicle _x; }; } forEach attachedObjects _disconnectedPlayer; - + nil }]; }; diff --git a/addons/map/functions/fnc_compileFlashlightMenu.sqf b/addons/map/functions/fnc_compileFlashlightMenu.sqf index bc6746f46ed..836b483a20d 100644 --- a/addons/map/functions/fnc_compileFlashlightMenu.sqf +++ b/addons/map/functions/fnc_compileFlashlightMenu.sqf @@ -30,7 +30,7 @@ _flashlights = [_player] call FUNC(getUnitFlashlights); _cfg = (configFile >> "CfgWeapons" >> _x); _displayName = getText (_cfg >> "displayName"); _icon = getText (_cfg >> "picture"); - + _statement = if (GVAR(flashlightInUse) == _x) then { _displayName = format [localize LSTRING(turnLightOff), _displayName]; {[""] call FUNC(switchFlashlight)} diff --git a/addons/maptools/functions/fnc_calculateMapScale.sqf b/addons/maptools/functions/fnc_calculateMapScale.sqf index 78bfae43af5..018edf68d98 100644 --- a/addons/maptools/functions/fnc_calculateMapScale.sqf +++ b/addons/maptools/functions/fnc_calculateMapScale.sqf @@ -14,7 +14,7 @@ private ["_screenOffset", "_pos"]; -_pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5]; +_pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5]; _screenOffset = ((findDisplay 12) displayCtrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)]; (_screenOffset select 0) - 0.5 diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf index 08c078c4f5d..2de05575f71 100644 --- a/addons/markers/functions/fnc_initInsertMarker.sqf +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -22,7 +22,7 @@ disableserialization; params ["_display"]; TRACE_1("params",_display); - + //Can't place markers when can't interact if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith { _display closeDisplay 2; //emulate "Cancel" button diff --git a/addons/medical/functions/fnc_translateSelections.sqf b/addons/medical/functions/fnc_translateSelections.sqf index 98a4cf8c51d..e6624507d12 100644 --- a/addons/medical/functions/fnc_translateSelections.sqf +++ b/addons/medical/functions/fnc_translateSelections.sqf @@ -46,7 +46,7 @@ if (_hitPointIndex isEqualTo true) exitWith { if (!isNil {_unit getHitPointDamage _returnHitPoint}) exitWith { _returnHitPoint; }; - + //Those VR fuckers have weird limb hitpoints private _hitPoints = switch (_selection) do { case ("hand_l"): {L_ARM_HITPOINTS}; diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index 4b609085a8c..5042cbac975 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -171,7 +171,7 @@ case (APP_MODE_WAYPOINTS): { _currentIndex = (_currentIndex max 0) min (count _waypoints); _wpListBox lbSetCurSel _currentIndex; - + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; @@ -193,7 +193,7 @@ case (APP_MODE_SETUP): { } else { _settingListBox lbSetTextRight [1, (localize LSTRING(settingOff))]; }; - + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; diff --git a/addons/missileguidance/ACE_GuidanceConfig.hpp b/addons/missileguidance/ACE_GuidanceConfig.hpp index f3434fef9be..96e417a7e83 100644 --- a/addons/missileguidance/ACE_GuidanceConfig.hpp +++ b/addons/missileguidance/ACE_GuidanceConfig.hpp @@ -3,42 +3,42 @@ class GVAR(AttackProfiles) { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_LIN); }; class DIR { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_DIR); }; class MID { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_MID); }; class HI { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_HI); }; class JAV_DIR { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_JAV_DIR); }; class JAV_TOP { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(attackProfile_JAV_TOP); }; }; @@ -48,14 +48,14 @@ class GVAR(SeekerTypes) { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(seekerType_SALH); }; class Optic { name = ""; visualName = ""; description = ""; - + functionName = QFUNC(seekerType_Optic); }; }; diff --git a/addons/missileguidance/CfgMagazines.hpp b/addons/missileguidance/CfgMagazines.hpp index 31f47394176..a7e729cf32f 100644 --- a/addons/missileguidance/CfgMagazines.hpp +++ b/addons/missileguidance/CfgMagazines.hpp @@ -1,6 +1,6 @@ class CfgMagazines { class 12Rnd_PG_missiles; - + class 6Rnd_ACE_Hydra70_DAGR : 12Rnd_PG_missiles { ammo = "ACE_Hydra70_DAGR"; count = 12; @@ -8,7 +8,7 @@ class CfgMagazines { displayNameShort = "6 Round DAGR"; descriptionShort = "6 Round DAGR"; weight = 36; - + }; class 12Rnd_ACE_Hydra70_DAGR : 6Rnd_ACE_Hydra70_DAGR { count = 12; @@ -24,7 +24,7 @@ class CfgMagazines { descriptionShort = "24 Round DAGR"; weight = 72; }; - + // Hellfires class 6Rnd_ACE_Hellfire_AGM114K : 12Rnd_PG_missiles { count = 12; @@ -33,7 +33,7 @@ class CfgMagazines { displayNameShort = "6Rnd_ACE_Hellfire_AGM114K"; descriptionShort = "6Rnd_ACE_Hellfire_AGM114K"; weight = 36; - + }; class 12Rnd_ACE_Hellfire_AGM114K : 6Rnd_ACE_Hydra70_DAGR { count = 12; @@ -49,5 +49,5 @@ class CfgMagazines { descriptionShort = "24Rnd_ACE_Hellfire_AGM114K"; weight = 72; }; - -}; \ No newline at end of file + +}; diff --git a/addons/missileguidance/CfgVehicles.hpp b/addons/missileguidance/CfgVehicles.hpp index 5069556078f..16b4b877674 100644 --- a/addons/missileguidance/CfgVehicles.hpp +++ b/addons/missileguidance/CfgVehicles.hpp @@ -17,7 +17,7 @@ class CfgVehicles { class MainTurret; }; }; - + class ACE_Comanche_Test : B_Heli_Attack_01_F { scope = 1; scopeCurator = 0; @@ -32,5 +32,5 @@ class CfgVehicles { }; }; }; - + }; diff --git a/addons/missileguidance/functions/fnc_doAttackProfile.sqf b/addons/missileguidance/functions/fnc_doAttackProfile.sqf index b9a3502035f..171e169651e 100644 --- a/addons/missileguidance/functions/fnc_doAttackProfile.sqf +++ b/addons/missileguidance/functions/fnc_doAttackProfile.sqf @@ -15,7 +15,7 @@ for [{_i=0}, {_i< (count _attackProfilesCfg) }, {_i=_i+1}] do { _testProfile = _attackProfilesCfg select _i; _testName = configName _testProfile; TRACE_3("", _testName, _testProfile, _attackProfilesCfg); - + if( _testName == _attackProfileName) exitWith { _attackProfile = _attackProfilesCfg select _i; }; @@ -26,4 +26,4 @@ if(!isNil "_attackProfile") then { _attackProfilePos = _this call (missionNamespace getVariable (getText (_attackProfile >> "functionName"))); }; -_attackProfilePos; \ No newline at end of file +_attackProfilePos; diff --git a/addons/missileguidance/functions/fnc_doSeekerSearch.sqf b/addons/missileguidance/functions/fnc_doSeekerSearch.sqf index 081ab163538..bd300effe87 100644 --- a/addons/missileguidance/functions/fnc_doSeekerSearch.sqf +++ b/addons/missileguidance/functions/fnc_doSeekerSearch.sqf @@ -16,7 +16,7 @@ for [{_i=0}, {_i< (count _seekerTypesCfg) }, {_i=_i+1}] do { _testProfile = _seekerTypesCfg select _i; _testName = configName _testProfile; TRACE_3("", _testName, _testProfile, _seekerTypesCfg); - + if( _testName == _seekerTypeName) exitWith { _seekerType = _seekerTypesCfg select _i; }; @@ -27,4 +27,4 @@ if(!isNil "_seekerType") then { _seekerProfilePos = _this call (missionNamespace getVariable (getText (_seekerType >> "functionName"))); }; -_seekerProfilePos; \ No newline at end of file +_seekerProfilePos; diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf index 7fc77fdd566..26f8d14c6ea 100644 --- a/addons/missileguidance/functions/fnc_onFired.sqf +++ b/addons/missileguidance/functions/fnc_onFired.sqf @@ -11,7 +11,7 @@ if(GVAR(enabled) < 1 || {!local _projectile} ) exitWith { false }; if( !isPlayer _shooter && { GVAR(enabled) < 2 } ) exitWith { false }; // Bail on not missile -if(! (_ammo isKindOf "MissileBase") ) exitWith { false }; +if(! (_ammo isKindOf "MissileBase") ) exitWith { false }; private["_config", "_configs", "_enabled", "_target", "_seekerType", "_attackProfile"]; private["_args", "_canUseLock", "_guidingUnit", "_launchPos", "_lockMode", "_targetPos", "_vanillaTarget"]; @@ -30,7 +30,7 @@ _target = (vehicle _shooter) getVariable [QGVAR(target), nil]; _targetPos = (vehicle _shooter) getVariable [QGVAR(targetPosition), nil]; _seekerType = (vehicle _shooter) getVariable [QGVAR(seekerType), nil]; _attackProfile = (vehicle _shooter) getVariable [QGVAR(attackProfile), nil]; -_lockMode = (vehicle _shooter) getVariable [QGVAR(lockMode), nil]; +_lockMode = (vehicle _shooter) getVariable [QGVAR(lockMode), nil]; // @TODO: make this vehicle shooter, but we need to differentiate where its set in ace_laser _laserCode = _shooter getVariable [QEGVAR(laser,code), ACE_DEFAULT_LASER_CODE]; @@ -40,14 +40,14 @@ _launchPos = getPosASL (vehicle _shooter); TRACE_3("Begin guidance", _target, _seekerType, _attackProfile); -if ( isNil "_seekerType" || { ! ( _seekerType in (getArray (_config >> "seekerTypes" ) ) ) } ) then { +if (isNil "_seekerType" || {!(_seekerType in (getArray (_config >> "seekerTypes")))}) then { _seekerType = getText (_config >> "defaultSeekerType"); -}; -if ( isNil "_attackProfile" || { ! ( _attackProfile in (getArray (_config >> "attackProfiles" ) ) ) } ) then { - _attackProfile = getText (_config >> "defaultAttackProfile"); }; -if ( isNil "_lockMode" || { ! ( _lockMode in (getArray (_config >> "seekerLockModes" ) ) ) } ) then { - _lockMode = getText (_config >> "defaultSeekerLockMode"); +if (isNil "_attackProfile" || {!(_attackProfile in (getArray (_config >> "attackProfiles")))}) then { + _attackProfile = getText (_config >> "defaultAttackProfile"); +}; +if (isNil "_lockMode" || {!(_lockMode in (getArray (_config >> "seekerLockModes")))}) then { + _lockMode = getText (_config >> "defaultSeekerLockMode"); }; // If we didn't get a target, try to fall back on tab locking @@ -61,7 +61,7 @@ if(isNil "_target") then { // @TODO: Get vanilla target if(_canUseLock > 0 || difficulty < 1) then { _vanillaTarget = cursorTarget; - + TRACE_1("Using Vanilla Locking", _vanillaTarget); if(!isNil "_vanillaTarget") then { _target = _vanillaTarget; @@ -71,14 +71,14 @@ if(isNil "_target") then { }; TRACE_4("Beginning ACE guidance system",_target,_ammo,_seekerType,_attackProfile); -_args = [_this, - [_shooter, - [_target, _targetPos, _launchPos], - _seekerType, +_args = [_this, + [_shooter, + [_target, _targetPos, _launchPos], + _seekerType, _attackProfile, _lockMode, _laserInfo - ], + ], [ getNumber ( _config >> "minDeflection" ), getNumber ( _config >> "maxDeflection" ), @@ -91,7 +91,7 @@ _args = [_this, ], [ ACE_diagTime, [], [] ] ]; - + // Hand off to the guiding unit. We just use local player so local PFH fires for now // Laser code needs to give us a shooter for LOBL, or the seeker unit needs to be able to shift locality // Based on its homing laser @@ -115,4 +115,4 @@ _args = [_this, (vehicle _shooter) setVariable [QGVAR(seekerType), nil]; (vehicle _shooter) setVariable [QGVAR(attackProfile), nil]; (vehicle _shooter) setVariable [QGVAR(lockMode), nil]; -*/ \ No newline at end of file +*/ diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index 0b8cc67842a..8f0c430db2d 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -4,7 +4,7 @@ ["InitSettingsFromModules", { // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. - + private _uniqueModulesHandled = []; { [_x] call { @@ -28,8 +28,8 @@ }; if (_isSingular && {_logicType in _uniqueModulesHandled}) then { //ToDo: should this be an exit? ACE_LOGWARNING_1("Module [%1] - More than 1 singular module placed", _logicType); - }; - if (_isSingular) then {_uniqueModulesHandled pushBack _logicType;}; + }; + if (_isSingular) then {_uniqueModulesHandled pushBack _logicType;}; if (_isGlobal || isServer) then { [_logic, (synchronizedObjects _logic), true] call _function; @@ -44,7 +44,7 @@ }; }; } forEach GVAR(moduleInitCollection); - + if (isServer) then { GVAR(serverModulesRead) = true; publicVariable QGVAR(serverModulesRead); diff --git a/addons/nametags/functions/fnc_doShow.sqf b/addons/nametags/functions/fnc_doShow.sqf index 615916de7f6..18c434f4c63 100644 --- a/addons/nametags/functions/fnc_doShow.sqf +++ b/addons/nametags/functions/fnc_doShow.sqf @@ -35,16 +35,16 @@ _turretRoles = _data apply {_x select 1}; _roleType = CARGO; _toShow = []; { - switch (_x) do { + switch (_x) do { case commander _vehicle: { _roleType = COMMANDER; }; case gunner _vehicle: { _roleType = GUNNER; - }; - case driver _vehicle: { + }; + case driver _vehicle: { _roleType = if(_isAir) then { PILOT } else { DRIVER }; - }; + }; default { _index = _turretUnits find _x; if(_index !=-1 ) then { @@ -61,7 +61,7 @@ _toShow = [ _toShow, [], { - _x select 1 + _x select 1 }, "ASCEND", { @@ -71,7 +71,7 @@ _toShow = [ ] call BIS_fnc_sortBy; _roleImages = ROLE_IMAGES; -{ +{ _unit = _x select 0; _roleType = _x select 1; _text = _text + format["%1
", [_unit] call EFUNC(common,getName), _roleImages select _roleType]; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 17cb92f9ccb..5a6714a3749 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -29,18 +29,18 @@ GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; // Setup the event handlers -["playerInventoryChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); +["playerInventoryChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); ["playerVisionModeChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onVisionModeChanged); }] call EFUNC(common,addEventHandler); -["cameraViewChanged", { +["cameraViewChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onCameraViewChanged); }] call EFUNC(common,addEventHandler); -["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); -["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); +["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); +["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); // Add keybinds ["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness), diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 341da388cae..616feb86609 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -30,7 +30,7 @@ private _distance = 999; { _x params ["_intersectPosASL", "_surfaceNormal", "_intersectObject"]; TRACE_3("Intersect",_intersectPosASL,_surfaceNormal,_intersectObject); - + //Hit something solid that can reflect - (Static covers Building) [Need to manually filter out _shoot for FFV shots] if ((isNull _intersectObject) || {(_intersectObject != _shooter) && {(_intersectObject isKindOf "Static") || {_intersectObject isKindOf "AllVehicles"}}}) exitWith { _distance = _posASL vectorDistance _intersectPosASL; diff --git a/addons/rangecard/RscTitles.hpp b/addons/rangecard/RscTitles.hpp index c4da1862ca3..bc4101c4831 100644 --- a/addons/rangecard/RscTitles.hpp +++ b/addons/rangecard/RscTitles.hpp @@ -64,7 +64,7 @@ class ACE_RangeCard_Dialog { onLoad = "uiNamespace setVariable ['RangleCard_Display', (_this select 0)]"; onUnload = QUOTE(_this call FUNC(onCloseDialog)); objects[] = {}; - + class controls { class BACKGROUND { moving=1; diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index ea86d9986e4..e1659016bbf 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -45,33 +45,8 @@ * Public: No */ #include "script_component.hpp" - -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"]; -_scopeBaseAngle = _this select 0; -_bulletMass = _this select 1; -_boreHeight = _this select 2; -_airFriction = _this select 3; -_muzzleVelocity = _this select 4; -_temperature = _this select 5; -_barometricPressure = _this select 6; -_relativeHumidity = _this select 7; -_simSteps = _this select 8; -_windSpeed1 = (_this select 9) select 0; -_windSpeed2 = (_this select 9) select 1; -_windDirection = _this select 10; -_inclinationAngle = _this select 11; -_targetSpeed = _this select 12; -_targetRange = _this select 13; -_bc = _this select 14; -_dragModel = _this select 15; -_atmosphereModel = _this select 16; -_storeRangeCardData = _this select 17; -_stabilityFactor = _this select 18; -_twistDirection = _this select 19; -_latitude = _this select 20; -_directionOfFire = _this select 21; -_rangeCardSlot = _this select 22; -_useABConfig = _this select 23; +params ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"]; +_windSpeed params ["_windSpeed1", "_windSpeed2"]; if (_storeRangeCardData) then { GVAR(rangeCardDataMVs) set [_rangeCardSlot, format[" %1", round(_muzzleVelocity)]]; @@ -138,19 +113,19 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity]; while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _bulletSpeed = vectorMagnitude _bulletVelocity; - + _speedTotal = _speedTotal + _bulletSpeed; _stepsTotal = _stepsTotal + 1; _speedAverage = (_speedTotal / _stepsTotal); - + if (_speedAverage > 450 && _bulletSpeed < _speedOfSound) exitWith {}; if (atan((_bulletPos select 2) / (abs(_bulletPos select 1) + 1)) < -2.254) exitWith {}; - + _trueVelocity = _bulletVelocity vectorDiff _wind1; _trueSpeed = vectorMagnitude _trueVelocity; - + if (_useABConfig) then { - _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { + private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) } else { ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) @@ -215,4 +190,4 @@ if (_targetRange != 0) then { _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2)); _kineticEnergy = _kineticEnergy * 0.737562149; -[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60] \ No newline at end of file +[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60] diff --git a/addons/rangecard/functions/fnc_openRangeCard.sqf b/addons/rangecard/functions/fnc_openRangeCard.sqf index 3e886eb97a1..ea085ed5b12 100644 --- a/addons/rangecard/functions/fnc_openRangeCard.sqf +++ b/addons/rangecard/functions/fnc_openRangeCard.sqf @@ -20,17 +20,17 @@ if (GVAR(RangeCardOpened)) exitWith {}; if (_this) then { if (GVAR(ammoClassCopy) != "" && GVAR(magazineClassCopy) != "" && GVAR(weaponClassCopy) != "") then { GVAR(RangeCardOpened) = true; - + createDialog "ACE_RangeCard_Dialog"; - + [GVAR(ammoClassCopy), GVAR(magazineClassCopy), GVAR(weaponClassCopy)] call FUNC(updateRangeCard); }; } else { if (ACE_player call FUNC(updateClassNames)) then { GVAR(RangeCardOpened) = true; - + createDialog "ACE_RangeCard_Dialog"; - + [GVAR(ammoClass), GVAR(magazineClass), GVAR(weaponClass)] call FUNC(updateRangeCard); }; }; diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index 04317d46d7d..a7b0b996e27 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -107,7 +107,7 @@ _dragModel = _ammoConfig select 5; _atmosphereModel = _ammoConfig select 8; _bulletMass = 5; _boreHeight = 3.81; -_zeroRange = 100; +_zeroRange = 100; if (_bc == 0) then { _useABConfig = false; @@ -169,13 +169,13 @@ if (isNil {_cacheEntry}) then { { _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); _mv = _muzzleVelocity + _mvShift; - + [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex,_useABConfig] call FUNC(calculateSolution); } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; - } else { + } else { [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_muzzleVelocity,15,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3,_useABConfig] call FUNC(calculateSolution); }; - + for "_i" from 0 to 9 do { GVAR(lastValidRow) pushBack count (GVAR(rangeCardDataElevation) select _i); while {count (GVAR(rangeCardDataElevation) select _i) < 50} do { @@ -190,7 +190,7 @@ if (isNil {_cacheEntry}) then { }; }; }; - + missionNamespace setVariable [format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]]; } else { GVAR(rangeCardDataElevation) = _cacheEntry select 0; @@ -246,4 +246,4 @@ if (_useABConfig) then { } else { ctrlSetText [770020, ""]; ctrlSetText [770021, ""]; -}; \ No newline at end of file +}; diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index 4ecbbe1b897..db42e693bf1 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -636,11 +636,11 @@ class CfgVehicles { class Weapon_MMG_02_sand_F: Weapon_Base_F { displayName = CSTRING(MMG_02_sand); };*/ - + //attachments - + class Item_Base_F; - + class Item_acc_flashlight: Item_Base_F { displayName="UTG Defender 126"; }; diff --git a/addons/repair/ACE_Repair.hpp b/addons/repair/ACE_Repair.hpp index d47773cd83c..6e5eac4fa81 100644 --- a/addons/repair/ACE_Repair.hpp +++ b/addons/repair/ACE_Repair.hpp @@ -12,7 +12,7 @@ class ACE_Repair { condition = QUOTE(call FUNC(canReplaceWheel)); itemConsumed = 0; claimObjects[] = {{"ACE_Wheel"}}; - + callbackSuccess = QUOTE(call FUNC(doReplaceWheel)); callbackFailure = ""; callbackProgress = ""; diff --git a/addons/sandbag/CfgWeapons.hpp b/addons/sandbag/CfgWeapons.hpp index 1a26fc78d41..5f8ef613158 100644 --- a/addons/sandbag/CfgWeapons.hpp +++ b/addons/sandbag/CfgWeapons.hpp @@ -9,7 +9,7 @@ class CfgWeapons { displayName = CSTRING(sandbagEmpty_displayName); model = PATHTOF(data\ace_sandbag_m.p3d); picture = PATHTOF(data\m_sandbag_ca.paa); - + class ItemInfo: InventoryItem_Base_F { mass = 8; }; @@ -21,7 +21,7 @@ class CfgWeapons { displayName = CSTRING(sandbag_displayName); model = PATHTOF(data\ace_sandbag_build.p3d); picture = PATHTOF(data\m_sandbag_ca.paa); - + class ItemInfo: InventoryItem_Base_F { mass = 160; }; diff --git a/addons/scopes/CfgWeapons.hpp b/addons/scopes/CfgWeapons.hpp index 442d4c39d06..eb1d8400a29 100644 --- a/addons/scopes/CfgWeapons.hpp +++ b/addons/scopes/CfgWeapons.hpp @@ -1,7 +1,7 @@ class CfgWeapons { class ItemCore; class InventoryOpticsItem_Base_F; - + class optic_LRPS : ItemCore { ACE_ScopeAdjust_Vertical[] = { -4, 30 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; @@ -46,7 +46,7 @@ class CfgWeapons { }; }; }; - + class optic_AMS_base : ItemCore { ACE_ScopeAdjust_Vertical[] = { -4, 30 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; @@ -61,7 +61,7 @@ class CfgWeapons { }; }; }; - + class optic_KHS_base : ItemCore { ACE_ScopeAdjust_Vertical[] = { -4, 30 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; @@ -76,7 +76,7 @@ class CfgWeapons { }; }; }; - + class optic_KHS_old : ItemCore { ACE_ScopeAdjust_Vertical[] = { -4, 30 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf index 50ee1a4f718..5b0c6d11a65 100644 --- a/addons/scopes/functions/fnc_adjustScope.sqf +++ b/addons/scopes/functions/fnc_adjustScope.sqf @@ -47,7 +47,7 @@ if ((count _maxHorizontal < 2) || (count _maxVertical < 2)) exitWith {false}; if ((_verticalIncrement == 0) && (_turretAndDirection in [ELEVATION_UP, ELEVATION_DOWN])) exitWith {false}; if ((_horizontalIncrement == 0) && (_turretAndDirection in [WINDAGE_UP, WINDAGE_DOWN])) exitWith {false}; -_zeroing = _adjustment select _weaponIndex; +_zeroing = _adjustment select _weaponIndex; _zeroing params ["_elevation", "_windage", "_zero"]; switch (_turretAndDirection) do { diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index a167e0fea54..e15017d715d 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -5,7 +5,7 @@ if (!hasInterface) exitWith {}; ["SettingsInitialized", { TRACE_1("SettingInit", GVAR(enable)); - + //If not enabled, then do not add CanInteractWith Condition or event handlers: if (!GVAR(enable)) exitWith {}; diff --git a/addons/spottingscope/CfgWeapons.hpp b/addons/spottingscope/CfgWeapons.hpp index 9b5825572b8..3b550f9f5dd 100644 --- a/addons/spottingscope/CfgWeapons.hpp +++ b/addons/spottingscope/CfgWeapons.hpp @@ -2,14 +2,14 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - + class ACE_SpottingScope: ACE_ItemCore { scope = 2; displayName = CSTRING(DisplayName); descriptionShort = ""; picture = PATHTOF(UI\w_spottingscope_ca.paa); model = PATHTOF(data\ace_spottingscope.p3d); - + class ItemInfo: InventoryItem_Base_F { mass = 40; }; diff --git a/addons/switchunits/functions/fnc_markAiOnMap.sqf b/addons/switchunits/functions/fnc_markAiOnMap.sqf index d29e75b6a43..5d7eac6f1a8 100644 --- a/addons/switchunits/functions/fnc_markAiOnMap.sqf +++ b/addons/switchunits/functions/fnc_markAiOnMap.sqf @@ -37,7 +37,7 @@ GVAR(AllMarkerNames) = []; // create markers { if (([_x] call FUNC(isValidAi) && (side group _x in _sides)) || (_x getVariable [QGVAR(IsPlayerControlled), false])) then { - + private _markerName = str _x; private _marker = createMarkerLocal [_markerName, position _x]; diff --git a/addons/tripod/CfgWeapons.hpp b/addons/tripod/CfgWeapons.hpp index adc14912c2e..6322ef1906d 100644 --- a/addons/tripod/CfgWeapons.hpp +++ b/addons/tripod/CfgWeapons.hpp @@ -1,7 +1,7 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - + class ACE_Tripod: ACE_ItemCore { author[] = {"Rocko", "Scubaman3D"}; scope = 2; @@ -9,7 +9,7 @@ class CfgWeapons { descriptionShort = ""; model = PATHTOF(data\w_sniper_tripod.p3d); picture = PATHTOF(UI\w_sniper_tripod_ca.paa); - + class ItemInfo: InventoryItem_Base_F { mass = 40; }; diff --git a/addons/weaponselect/XEH_preInit.sqf b/addons/weaponselect/XEH_preInit.sqf index b457e10cadf..41662475050 100644 --- a/addons/weaponselect/XEH_preInit.sqf +++ b/addons/weaponselect/XEH_preInit.sqf @@ -5,8 +5,8 @@ ADDON = false; #include "XEH_PREP.hpp" // collect frag and other grenades separately -GVAR(GrenadesAll) = []; -GVAR(GrenadesFrag) = []; +GVAR(GrenadesAll) = []; +GVAR(GrenadesFrag) = []; GVAR(GrenadesNonFrag) = []; { diff --git a/addons/weather/functions/fnc_getMapData.sqf b/addons/weather/functions/fnc_getMapData.sqf index b344ad2bdf0..e1b56f2ed27 100644 --- a/addons/weather/functions/fnc_getMapData.sqf +++ b/addons/weather/functions/fnc_getMapData.sqf @@ -17,24 +17,26 @@ // Assume default wind values // Source: https://weatherspark.com/averages/32194/Lemnos-Limnos-North-Aegean-Islands-Greece -GVAR(WindSpeedMax) = [[8.8, 5.5], [8.8, 5], [8.6, 4.8], [7.6, 3.4], [7.0, 3.0], [7.1, 3.0], [7.5, 3.1], [8.0, 3.2], [7.6, 3.5], [7.8, 4.6], [7.9, 5.0], [8.2, 5.5]]; +GVAR(WindSpeedMax) = [[8.8, 5.5], [8.8, 5], [8.6, 4.8], [7.6, 3.4], [7.0, 3.0], [7.1, 3.0], [7.5, 3.1], [8.0, 3.2], [7.6, 3.5], [7.8, 4.6], [7.9, 5.0], [8.2, 5.5]]; GVAR(WindSpeedMean) = [4.8, 4.9, 4.6, 4.1, 3.5, 3.5, 4.3, 4.4, 4.1, 4.5, 4.5, 5.0]; -GVAR(WindSpeedMin) = [[0.2, 5.0], [0.1, 5.0], [0.2, 4.3], [0.0, 3.0], [0.0, 2.1], [0.0, 2.0], [0.1, 3.1], [0.3, 3.1], [0.0, 3.6], [0.0, 4.2], [0.1, 5.0], [0.2, 5.5]]; -GVAR(WindDirectionProbabilities) = [[0.06, 0.32, 0.05, 0.04, 0.15, 0.06, 0.02, 0.02], // January - [0.08, 0.32, 0.04, 0.04, 0.18, 0.06, 0.02, 0.02], // February - [0.09, 0.30, 0.04, 0.04, 0.20, 0.06, 0.02, 0.03], // March - [0.10, 0.25, 0.03, 0.04, 0.22, 0.06, 0.02, 0.04], // April - [0.18, 0.25, 0.03, 0.04, 0.18, 0.04, 0.01, 0.05], // May - [0.25, 0.25, 0.03, 0.03, 0.15, 0.03, 0.00, 0.08], // June - [0.32, 0.30, 0.02, 0.02, 0.10, 0.01, 0.00, 0.09], // July - [0.28, 0.35, 0.02, 0.01, 0.08, 0.01, 0.00, 0.08], // August - [0.20, 0.37, 0.03, 0.01, 0.11, 0.01, 0.01, 0.05], // September - [0.10, 0.39, 0.04, 0.02, 0.15, 0.02, 0.01, 0.03], // October - [0.08, 0.38, 0.06, 0.04, 0.19, 0.03, 0.02, 0.02], // November - [0.06, 0.37, 0.05, 0.03, 0.18, 0.04, 0.02, 0.02]];// December - +GVAR(WindSpeedMin) = [[0.2, 5.0], [0.1, 5.0], [0.2, 4.3], [0.0, 3.0], [0.0, 2.1], [0.0, 2.0], [0.1, 3.1], [0.3, 3.1], [0.0, 3.6], [0.0, 4.2], [0.1, 5.0], [0.2, 5.5]]; +GVAR(WindDirectionProbabilities) = [ + [0.06, 0.32, 0.05, 0.04, 0.15, 0.06, 0.02, 0.02], // January + [0.08, 0.32, 0.04, 0.04, 0.18, 0.06, 0.02, 0.02], // February + [0.09, 0.30, 0.04, 0.04, 0.20, 0.06, 0.02, 0.03], // March + [0.10, 0.25, 0.03, 0.04, 0.22, 0.06, 0.02, 0.04], // April + [0.18, 0.25, 0.03, 0.04, 0.18, 0.04, 0.01, 0.05], // May + [0.25, 0.25, 0.03, 0.03, 0.15, 0.03, 0.00, 0.08], // June + [0.32, 0.30, 0.02, 0.02, 0.10, 0.01, 0.00, 0.09], // July + [0.28, 0.35, 0.02, 0.01, 0.08, 0.01, 0.00, 0.08], // August + [0.20, 0.37, 0.03, 0.01, 0.11, 0.01, 0.01, 0.05], // September + [0.10, 0.39, 0.04, 0.02, 0.15, 0.02, 0.01, 0.03], // October + [0.08, 0.38, 0.06, 0.04, 0.19, 0.03, 0.02, 0.02], // November + [0.06, 0.37, 0.05, 0.03, 0.18, 0.04, 0.02, 0.02] // December +]; + // Check if the wind data is defined in the map config -if (isArray (configFile >> "CfgWorlds" >> worldName >> "ACE_WindSpeedMean")) then { +if (isArray (configFile >> "CfgWorlds" >> worldName >> "ACE_WindSpeedMean")) then { GVAR(WindSpeedMin) = getArray (configFile >> "CfgWorlds" >> worldName >> "ACE_WindSpeedMin"); GVAR(WindSpeedMean) = getArray (configFile >> "CfgWorlds" >> worldName >> "ACE_WindSpeedMean"); GVAR(WindSpeedMax) = getArray (configFile >> "CfgWorlds" >> worldName >> "ACE_WindSpeedMax"); @@ -55,23 +57,25 @@ if (toLower worldName in ["chernarus", "bootcamp_acr", "woodland_acr", "utes"]) GVAR(TempNight) = [-4, -3, 0, 4, 9, 12, 14, 14, 10, 6, 2, -2]; // Source: http://www.weather-and-climate.com/average-monthly-Humidity-perc,Prague,Czech-Republic GVAR(Humidity) = [82, 80, 78, 70, 71, 72, 70, 73, 78, 80, 83, 82]; - + // Source: https://weatherspark.com/averages/32335/Prague-Central-Bohemia-Czech-Republic GVAR(WindSpeedMax) = [[6.7, 2.4], [6.8, 2.2], [7.1, 2.0], [6.7, 1.9], [6.5, 1.8], [6.4, 1.8], [6.4, 1.8], [5.9, 1.9], [5.8, 2.1], [5.9, 2.3], [6.4, 2.8], [7.0, 3.0]]; GVAR(WindSpeedMean) = [4.5, 4.3, 4.4, 4.1, 3.6, 3.6, 3.6, 3.4, 3.6, 0, 4.1, 4.6]; GVAR(WindSpeedMin) = [[1.5, 1.1], [1.5, 1.1], [1.5, 1.0], [1.2, 0.9], [1.1, 0.8], [1.0, 0.8], [1.0, 1.0], [1.0, 0.9], [1.1, 1.0], [1.0, 1.0], [1.3, 1.1], [1.8, 1.2]]; - GVAR(WindDirectionProbabilities) = [[0.06, 0.02, 0.06, 0.06, 0.10, 0.23, 0.15, 0.06], // January - [0.08, 0.03, 0.08, 0.06, 0.08, 0.18, 0.15, 0.08], // February - [0.08, 0.02, 0.10, 0.06, 0.07, 0.17, 0.15, 0.08], // March - [0.12, 0.04, 0.10, 0.05, 0.06, 0.12, 0.13, 0.10], // April - [0.12, 0.05, 0.09, 0.05, 0.05, 0.10, 0.13, 0.10], // May - [0.12, 0.04, 0.06, 0.03, 0.05, 0.13, 0.16, 0.10], // June - [0.09, 0.03, 0.07, 0.04, 0.06, 0.16, 0.18, 0.10], // July - [0.09, 0.03, 0.08, 0.04, 0.06, 0.15, 0.16, 0.09], // August - [0.07, 0.03, 0.08, 0.06, 0.08, 0.18, 0.15, 0.08], // September - [0.06, 0.03, 0.10, 0.07, 0.10, 0.19, 0.13, 0.05], // October - [0.06, 0.02, 0.08, 0.07, 0.10, 0.15, 0.13, 0.05], // November - [0.06, 0.02, 0.06, 0.06, 0.10, 0.24, 0.15, 0.05]];// December + GVAR(WindDirectionProbabilities) = [ + [0.06, 0.02, 0.06, 0.06, 0.10, 0.23, 0.15, 0.06], // January + [0.08, 0.03, 0.08, 0.06, 0.08, 0.18, 0.15, 0.08], // February + [0.08, 0.02, 0.10, 0.06, 0.07, 0.17, 0.15, 0.08], // March + [0.12, 0.04, 0.10, 0.05, 0.06, 0.12, 0.13, 0.10], // April + [0.12, 0.05, 0.09, 0.05, 0.05, 0.10, 0.13, 0.10], // May + [0.12, 0.04, 0.06, 0.03, 0.05, 0.13, 0.16, 0.10], // June + [0.09, 0.03, 0.07, 0.04, 0.06, 0.16, 0.18, 0.10], // July + [0.09, 0.03, 0.08, 0.04, 0.06, 0.15, 0.16, 0.09], // August + [0.07, 0.03, 0.08, 0.06, 0.08, 0.18, 0.15, 0.08], // September + [0.06, 0.03, 0.10, 0.07, 0.10, 0.19, 0.13, 0.05], // October + [0.06, 0.02, 0.08, 0.07, 0.10, 0.15, 0.13, 0.05], // November + [0.06, 0.02, 0.06, 0.06, 0.10, 0.24, 0.15, 0.05] // December + ]; }; if (toLower worldName in ["takistan", "zargabad", "mountains_acr", "shapur_baf", "provinggrounds_pmc"]) exitWith { @@ -80,23 +84,25 @@ if (toLower worldName in ["takistan", "zargabad", "mountains_acr", "shapur_baf", GVAR(TempNight) = [-7.1, -5.7, 0.7, 6, 8.8, 12.4, 15.3, 14.3, 9.4, 3.9, -1.2, -4.7]; // Source: http://www.weather-and-climate.com/average-monthly-Humidity-perc,Kabul,Afghanistan GVAR(Humidity) = [68, 69, 62, 60, 49, 37, 38, 39, 40, 41, 56, 61]; - + // Source: https://weatherspark.com/averages/32750/Kabul-Afghanistan GVAR(WindSpeedMax) = [[4.0, 1.0], [4.1, 1.0], [5.1, 1.1], [6.9, 1.2], [8.9, 1.2], [10.0, 1.1], [9.1,1.0], [8.2, 1.0], [6.9, 1.0], [5.2, 1.0], [3.8, 0.9], [3.7, 0.9]]; GVAR(WindSpeedMean) = [2.2, 2.2, 2.5, 2.8, 3.8, 4.4, 0, 3.3, 2.7, 2.4, 1.8, 1.9]; GVAR(WindSpeedMin) = [[0.2, 0.4], [0.2, 0.4], [0.2, 0.4], [0.3, 0.4], [0.6, 0.4], [0.9, 0.4], [0.7, 0.4], [0.5, 0.4], [0.2, 0.5], [0.1, 0.1], [0, 0.1], [0, 0.1]]; - GVAR(WindDirectionProbabilities) = [[0.04, 0.02, 0.05, 0.04, 0.05, 0.04, 0.11, 0.29], // January - [0.08, 0.04, 0.06, 0.04, 0.06, 0.04, 0.10, 0.20], // February - [0.12, 0.06, 0.08, 0.04, 0.05, 0.04, 0.09, 0.19], // March - [0.18, 0.07, 0.09, 0.05, 0.05, 0.04, 0.08, 0.16], // April - [0.27, 0.05, 0.05, 0.03, 0.04, 0.03, 0.08, 0.16], // May - [0.35, 0.04, 0.04, 0.02, 0.02, 0.02, 0.07, 0.13], // June - [0.30, 0.07, 0.09, 0.04, 0.02, 0.02, 0.05, 0.10], // July - [0.23, 0.07, 0.08, 0.06, 0.03, 0.02, 0.05, 0.10], // August - [0.15, 0.06, 0.10, 0.06, 0.04, 0.02, 0.07, 0.13], // September - [0.12, 0.04, 0.07, 0.06, 0.04, 0.03, 0.10, 0.17], // October - [0.07, 0.03, 0.06, 0.05, 0.06, 0.02, 0.10, 0.20], // November - [0.05, 0.03, 0.06, 0.05, 0.06, 0.04, 0.11, 0.26]];// December + GVAR(WindDirectionProbabilities) = [ + [0.04, 0.02, 0.05, 0.04, 0.05, 0.04, 0.11, 0.29], // January + [0.08, 0.04, 0.06, 0.04, 0.06, 0.04, 0.10, 0.20], // February + [0.12, 0.06, 0.08, 0.04, 0.05, 0.04, 0.09, 0.19], // March + [0.18, 0.07, 0.09, 0.05, 0.05, 0.04, 0.08, 0.16], // April + [0.27, 0.05, 0.05, 0.03, 0.04, 0.03, 0.08, 0.16], // May + [0.35, 0.04, 0.04, 0.02, 0.02, 0.02, 0.07, 0.13], // June + [0.30, 0.07, 0.09, 0.04, 0.02, 0.02, 0.05, 0.10], // July + [0.23, 0.07, 0.08, 0.06, 0.03, 0.02, 0.05, 0.10], // August + [0.15, 0.06, 0.10, 0.06, 0.04, 0.02, 0.07, 0.13], // September + [0.12, 0.04, 0.07, 0.06, 0.04, 0.03, 0.10, 0.17], // October + [0.07, 0.03, 0.06, 0.05, 0.06, 0.02, 0.10, 0.20], // November + [0.05, 0.03, 0.06, 0.05, 0.06, 0.04, 0.11, 0.26] // December + ]; }; if (toLower worldName in ["fallujah"]) exitWith { @@ -113,24 +119,25 @@ if (toLower worldName in ["fata", "Abbottabad"]) exitWith { GVAR(TempNight) = [-0.6, 2.4, 7.4, 13.1, 18.2, 22.8, 23.8, 22.9, 19.2, 12, 5.6, 1.2]; // Source: http://www.weather-and-climate.com/average-monthly-Humidity-perc,Zhob,Pakistan GVAR(Humidity) = [50, 40, 42, 40, 30, 30, 50, 49, 40, 32, 38, 41]; - + // Source: https://weatherspark.com/averages/31382/Shkin-Paktika-Afghanistan GVAR(WindSpeedMax) = [[3.0, 1.0], [3.3, 1.0], [4.0, 1.0], [4.3, 1.4], [4.3, 1.5], [4.6, 1.4], [4.5, 1.3], [4.0, 0.9], [4.0, 1.0], [3.5, 1.0], [3.4, 1.0], [3.1, 1.0]]; GVAR(WindSpeedMean) = [1.3, 1.5, 1.6, 1.7, 1.7, 1.7, 1.6, 1.5, 1.5, 1.4, 1.4, 1.2]; GVAR(WindSpeedMin) = [[0.2, 0.1], [0.2, 0.1], [0.2, 0.1], [0.2, 0.1], [0.1, 0.1], [0.1, 0.1], [0.3, 0.1], [0.2, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1], [0.1, 0.1]]; - GVAR(WindDirectionProbabilities) = [[0.09, 0.03, 0.02, 0.03, 0.05, 0.07, 0.07, 0.18], // January - [0.07, 0.02, 0.01, 0.05, 0.10, 0.10, 0.06, 0.12], // February - [0.07, 0.02, 0.01, 0.07, 0.14, 0.11, 0.08, 0.12], // March - [0.07, 0.04, 0.03, 0.05, 0.12, 0.08, 0.06, 0.13], // April - [0.10, 0.03, 0.02, 0.04, 0.10, 0.09, 0.08, 0.18], // May - [0.12, 0.05, 0.04, 0.05, 0.08, 0.06, 0.06, 0.16], // June - [0.06, 0.04, 0.02, 0.06, 0.05, 0.01, 0.02, 0.06], // July - [0.08, 0.03, 0.04, 0.05, 0.09, 0.04, 0.02, 0.06], // August - [0.10, 0.04, 0.02, 0.06, 0.11, 0.09, 0.06, 0.13], // September - [0.07, 0.02, 0.01, 0.04, 0.11, 0.08, 0.08, 0.19], // October - [0.06, 0.01, 0.00, 0.05, 0.11, 0.09, 0.08, 0.13], // November - [0.07, 0.01, 0.01, 0.03, 0.08, 0.09, 0.09, 0.18]];// December - + GVAR(WindDirectionProbabilities) = [ + [0.09, 0.03, 0.02, 0.03, 0.05, 0.07, 0.07, 0.18], // January + [0.07, 0.02, 0.01, 0.05, 0.10, 0.10, 0.06, 0.12], // February + [0.07, 0.02, 0.01, 0.07, 0.14, 0.11, 0.08, 0.12], // March + [0.07, 0.04, 0.03, 0.05, 0.12, 0.08, 0.06, 0.13], // April + [0.10, 0.03, 0.02, 0.04, 0.10, 0.09, 0.08, 0.18], // May + [0.12, 0.05, 0.04, 0.05, 0.08, 0.06, 0.06, 0.16], // June + [0.06, 0.04, 0.02, 0.06, 0.05, 0.01, 0.02, 0.06], // July + [0.08, 0.03, 0.04, 0.05, 0.09, 0.04, 0.02, 0.06], // August + [0.10, 0.04, 0.02, 0.06, 0.11, 0.09, 0.06, 0.13], // September + [0.07, 0.02, 0.01, 0.04, 0.11, 0.08, 0.08, 0.19], // October + [0.06, 0.01, 0.00, 0.05, 0.11, 0.09, 0.08, 0.13], // November + [0.07, 0.01, 0.01, 0.03, 0.08, 0.09, 0.09, 0.18] // December + ]; }; if (worldName in ["sfp_wamako"]) exitWith { @@ -155,23 +162,25 @@ if (worldName in ["Bornholm"]) exitWith { GVAR(TempNight) = [-1.6, -2.1, -0.7, 1.7, 6.2, 10.7, 13, 13.1, 10.6, 7.2, 3.5, 0.1]; // Source: http://www.weather-and-climate.com/average-monthly-Humidity-perc,allinge,Denmark GVAR(Humidity) = [85, 84, 80, 76, 69, 69, 76, 77, 79, 81, 86, 86]; - + // Source: https://weatherspark.com/averages/28830/R-nne-Capital-Region-of-Denmark GVAR(WindSpeedMax) = [[9.3, 2.2], [8.4, 2.2], [7.9, 2.2], [7.1, 2.1], [7.2, 2.1], [6.8, 2.0], [6.8, 2.0], [7.1, 2.1], [7.7, 2.2], [8.6, 2.2], [8.8, 2.2], [9.3, 2.2]]; GVAR(WindSpeedMean) = [6.9, 6.0, 5.7, 4.9, 4.8, 4.6, 4.7, 4.9, 5.5, 6.2, 6.5, 6.7]; GVAR(WindSpeedMin) = [[3.9, 2.0], [3.0, 2.0], [2.3, 2.0], [1.8, 1.8], [1.7, 1.8], [1.7, 1.7], [1.7, 1.8], [1.9, 1.9], [2.6, 2.0], [2.9, 2.0], [3.3, 2.1], [3.5, 2.0]]; - GVAR(WindDirectionProbabilities) = [[0.07, 0.04, 0.07, 0.05, 0.09, 0.12, 0.20, 0.07], // January - [0.08, 0.06, 0.10, 0.06, 0.06, 0.08, 0.20, 0.08], // February - [0.05, 0.06, 0.13, 0.08, 0.07, 0.08, 0.19, 0.06], // March - [0.05, 0.11, 0.16, 0.09, 0.05, 0.06, 0.17, 0.06], // April - [0.04, 0.10, 0.15, 0.08, 0.05, 0.06, 0.20, 0.05], // May - [0.03, 0.07, 0.10, 0.07, 0.05, 0.07, 0.28, 0.06], // June - [0.04, 0.06, 0.11, 0.07, 0.04, 0.07, 0.28, 0.06], // July - [0.05, 0.06, 0.11, 0.07, 0.06, 0.08, 0.26, 0.06], // August - [0.06, 0.06, 0.11, 0.07, 0.06, 0.09, 0.21, 0.06], // September - [0.07, 0.05, 0.09, 0.08, 0.08, 0.12, 0.18, 0.07], // October - [0.08, 0.06, 0.08, 0.07, 0.10, 0.12, 0.16, 0.07], // November - [0.08, 0.05, 0.06, 0.04, 0.10, 0.14, 0.19, 0.07]];// December + GVAR(WindDirectionProbabilities) = [ + [0.07, 0.04, 0.07, 0.05, 0.09, 0.12, 0.20, 0.07], // January + [0.08, 0.06, 0.10, 0.06, 0.06, 0.08, 0.20, 0.08], // February + [0.05, 0.06, 0.13, 0.08, 0.07, 0.08, 0.19, 0.06], // March + [0.05, 0.11, 0.16, 0.09, 0.05, 0.06, 0.17, 0.06], // April + [0.04, 0.10, 0.15, 0.08, 0.05, 0.06, 0.20, 0.05], // May + [0.03, 0.07, 0.10, 0.07, 0.05, 0.07, 0.28, 0.06], // June + [0.04, 0.06, 0.11, 0.07, 0.04, 0.07, 0.28, 0.06], // July + [0.05, 0.06, 0.11, 0.07, 0.06, 0.08, 0.26, 0.06], // August + [0.06, 0.06, 0.11, 0.07, 0.06, 0.09, 0.21, 0.06], // September + [0.07, 0.05, 0.09, 0.08, 0.08, 0.12, 0.18, 0.07], // October + [0.08, 0.06, 0.08, 0.07, 0.10, 0.12, 0.16, 0.07], // November + [0.08, 0.05, 0.06, 0.04, 0.10, 0.14, 0.19, 0.07] // December + ]; }; if (worldName in ["Imrali"]) exitWith { // Source: http://www.iten-online.ch/klima/europa/tuerkei/bursa.htm @@ -186,23 +195,25 @@ if (worldName in ["Kunduz"]) exitWith { GVAR(TempNight) = [-2.4, 0, 5.7, 11.6, 15.7, 20.9, 21.5, 21.5, 16.3, 10.6, 4.1, 0]; // Source: http://www.weather-and-climate.com/average-monthly-Humidity-perc,Kabul,Afghanistan GVAR(Humidity) = [70, 72, 64, 61, 49, 34, 36, 38, 39, 52, 51, 63]; - + // Source: https://weatherspark.com/averages/32753/Kunduz-Afghanistan GVAR(WindSpeedMax) = [[3.5, 0.8], [4.0, 0.6], [4.3, 2.0], [4.6, 1.1], [5.1, 1.2], [5.7, 1.0], [4.9, 0.8], [4.5, 0.3], [4.3, 0.3], [3.8, 0.5], [3.0, 1.3], [3.1, 0.8]]; GVAR(WindSpeedMean) = [1.5, 1.8, 2.1, 2.4, 2.5, 2.8, 2.7, 2.5, 2.3, 2.1, 1.7, 1.6]; GVAR(WindSpeedMin) = [[0.2, 0.1], [0.3, 0.3], [0.4, 0.1], [0.8, 0.2], [0.8, 0.1], [1.0, 0.3], [0.9, 0.5], [0.8, 0.2], [0.8, 0.1], [0.7, 0.1], [0.5, 0.1], [0.2, 0.2]]; - GVAR(WindDirectionProbabilities) = [[0.04, 0.02, 0.05, 0.11, 0.12, 0.06, 0.09, 0.06], // January - [0.04, 0.02, 0.05, 0.11, 0.12, 0.06, 0.08, 0.07], // February - [0.05, 0.04, 0.06, 0.14, 0.12, 0.06, 0.10, 0.08], // March - [0.09, 0.05, 0.08, 0.13, 0.07, 0.05, 0.07, 0.07], // April - [0.14, 0.07, 0.13, 0.13, 0.06, 0.05, 0.05, 0.08], // May - [0.16, 0.06, 0.12, 0.12, 0.05, 0.04, 0.05, 0.10], // June - [0.17, 0.06, 0.08, 0.12, 0.06, 0.04, 0.05, 0.12], // July - [0.15, 0.05, 0.06, 0.16, 0.08, 0.05, 0.07, 0.13], // August - [0.15, 0.04, 0.08, 0.20, 0.13, 0.05, 0.10, 0.14], // September - [0.08, 0.02, 0.08, 0.22, 0.15, 0.06, 0.13, 0.13], // October - [0.06, 0.02, 0.05, 0.20, 0.17, 0.06, 0.12, 0.10], // November - [0.04, 0.02, 0.05, 0.14, 0.19, 0.07, 0.10, 0.07]];// December + GVAR(WindDirectionProbabilities) = [ + [0.04, 0.02, 0.05, 0.11, 0.12, 0.06, 0.09, 0.06], // January + [0.04, 0.02, 0.05, 0.11, 0.12, 0.06, 0.08, 0.07], // February + [0.05, 0.04, 0.06, 0.14, 0.12, 0.06, 0.10, 0.08], // March + [0.09, 0.05, 0.08, 0.13, 0.07, 0.05, 0.07, 0.07], // April + [0.14, 0.07, 0.13, 0.13, 0.06, 0.05, 0.05, 0.08], // May + [0.16, 0.06, 0.12, 0.12, 0.05, 0.04, 0.05, 0.10], // June + [0.17, 0.06, 0.08, 0.12, 0.06, 0.04, 0.05, 0.12], // July + [0.15, 0.05, 0.06, 0.16, 0.08, 0.05, 0.07, 0.13], // August + [0.15, 0.04, 0.08, 0.20, 0.13, 0.05, 0.10, 0.14], // September + [0.08, 0.02, 0.08, 0.22, 0.15, 0.06, 0.13, 0.13], // October + [0.06, 0.02, 0.05, 0.20, 0.17, 0.06, 0.12, 0.10], // November + [0.04, 0.02, 0.05, 0.14, 0.19, 0.07, 0.10, 0.07] // December + ]; }; // Assume default values diff --git a/addons/weather/functions/fnc_initWind.sqf b/addons/weather/functions/fnc_initWind.sqf index 4c88f59f959..ddd314c0c66 100644 --- a/addons/weather/functions/fnc_initWind.sqf +++ b/addons/weather/functions/fnc_initWind.sqf @@ -19,7 +19,7 @@ private _month = date select 1; private _windDirectionProbabilities = GVAR(WindDirectionProbabilities) select (_month - 1); ACE_wind = [0, 0, 0]; - + GVAR(wind_direction_reference) = random 360; private _sum = 0; for "_i" from 0 to 7 do { diff --git a/addons/weather/functions/fnc_updateHumidity.sqf b/addons/weather/functions/fnc_updateHumidity.sqf index 3ea28d6a449..66a351096c7 100644 --- a/addons/weather/functions/fnc_updateHumidity.sqf +++ b/addons/weather/functions/fnc_updateHumidity.sqf @@ -27,7 +27,7 @@ if ((rain > 0) && {overcast > 0.7}) then { private _PS2 = 6.112 * exp((17.62 * GVAR(currentTemperature)) / (243.12 + GVAR(currentTemperature))); GVAR(currentHumidity) = GVAR(currentHumidity) * _PS1 / _PS2; GVAR(currentHumidity) = GVAR(currentHumidity) + GVAR(humidityShift); - + TRACE_1("humidityShift",GVAR(humidityShift)); }; diff --git a/addons/weather/functions/fnc_updateRain.sqf b/addons/weather/functions/fnc_updateRain.sqf index 8fa18500e88..9146b266b34 100644 --- a/addons/weather/functions/fnc_updateRain.sqf +++ b/addons/weather/functions/fnc_updateRain.sqf @@ -22,6 +22,6 @@ if (!isNil "ACE_RAIN_PARAMS") then { private _periodPercent = (_periodPosition / _period) min 1; GVAR(ACE_Rain) = linearConversion [GVAR(rain_period_start_time), (GVAR(rain_period_start_time) + _period), ACE_time, _oldRain, _newRain]; - + TRACE_3("Update Rain",rain,ACE_RAIN_PARAMS,GVAR(ACE_Rain)); }; diff --git a/addons/yardage450/functions/fnc_acquireTarget.sqf b/addons/yardage450/functions/fnc_acquireTarget.sqf index 1d89bf59712..a7e56e815db 100644 --- a/addons/yardage450/functions/fnc_acquireTarget.sqf +++ b/addons/yardage450/functions/fnc_acquireTarget.sqf @@ -32,15 +32,15 @@ GVAR(distanceIndex) = -1; GVAR(lasing) = false; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - + _result = [eyePos ACE_player, ACE_player weaponDirection (currentWeapon ACE_player)] call EFUNC(laser,shootRay); _distance = _result select 1; - + _distance = _distance - 1 + (random 2); - + GVAR(distanceIndex) = (GVAR(distanceIndex) + 1) % METERING_POINT_NUMBER; GVAR(distances) set [GVAR(distanceIndex), _distance]; - + if (count GVAR(distances) == METERING_POINT_NUMBER) then { _min = MAX_DISTANCE; _max = MIN_DISTANCE; @@ -48,7 +48,7 @@ GVAR(distanceIndex) = -1; _min = _x min _min; _max = _max max _x; } forEach GVAR(distances); - + if (abs(_max - _min) < 5) then { _range = (_min + _max) / 2; if (_range >= MIN_DISTANCE && _range <= MAX_DISTANCE) then { diff --git a/addons/yardage450/functions/fnc_turnOn.sqf b/addons/yardage450/functions/fnc_turnOn.sqf index 5f123b8cb26..1cb20e71b60 100644 --- a/addons/yardage450/functions/fnc_turnOn.sqf +++ b/addons/yardage450/functions/fnc_turnOn.sqf @@ -35,10 +35,10 @@ GVAR(active) = true; 74210 cutText ["", "PLAIN"]; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - + if (currentWeapon ACE_player == "ACE_Yardage450" && cameraView == "GUNNER") then { 74210 cutRsc ["ACE_RscYardage450", "PLAIN", 1, false]; - + __ctrlLaser ctrlShow GVAR(lasing); if (GVAR(targetAcquired)) then { __ctrlTarget ctrlSetText "Target Acquired"; @@ -52,5 +52,5 @@ GVAR(active) = true; } else { 74210 cutText ["", "PLAIN"]; }; - + }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/yardage450/initKeybinds.sqf b/addons/yardage450/initKeybinds.sqf index 578f55ee404..9ad3005d289 100644 --- a/addons/yardage450/initKeybinds.sqf +++ b/addons/yardage450/initKeybinds.sqf @@ -6,7 +6,7 @@ // Conditions: specific if !(GVAR(active)) exitWith {false}; if (currentWeapon ACE_player != "ACE_Yardage450" || cameraView != "GUNNER") exitWith {false}; - + // Statement if !(GVAR(powerButtonPressed)) then { GVAR(powerButtonPressed) = true; @@ -19,7 +19,7 @@ if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if (currentWeapon ACE_player != "ACE_Yardage450" || cameraView != "GUNNER") exitWith {false}; - + // Statement GVAR(powerButtonPressed) = false; call FUNC(turnOn); diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 0013355370e..c7ea7b6ec8d 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -167,7 +167,7 @@ class CfgVehicles { sync[] = {}; }; }; - + // class GVAR(moduleSetSuppression): GVAR(moduleBase) { // curatorCanAttach = 1; // displayName = CSTRING(ModuleSetSupp_DisplayName); From 75cbe7df4f98f2973db779da1cca9b3654717a83 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 3 May 2016 15:15:10 +0200 Subject: [PATCH 102/268] Change start line count of config validation at 1 --- tools/config_style_checker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/config_style_checker.py b/tools/config_style_checker.py index 65bd57a449d..03d8f222fe2 100644 --- a/tools/config_style_checker.py +++ b/tools/config_style_checker.py @@ -40,7 +40,7 @@ def popClosing(): checkForSemiColumn = False # Extra information so we know what line we find errors at - lineNumber = 0 + lineNumber = 1 indexOfCharacter = 0 # Parse all characters in the content of this file to search for potential errors From 0c55d0ca0639438452fbce55e9c6083f5544f9ab Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 3 May 2016 15:15:55 +0200 Subject: [PATCH 103/268] Change start line number count sqf validation at 1 --- tools/sqf_validator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sqf_validator.py b/tools/sqf_validator.py index 7414d7d715a..7a905a33151 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -50,7 +50,7 @@ def popClosing(): checkForSemiColumn = False # Extra information so we know what line we find errors at - lineNumber = 0 + lineNumber = 1 indexOfCharacter = 0 # Parse all characters in the content of this file to search for potential errors From 8585ea568845ef63f6ed1b2b6a487906c33a14c1 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 3 May 2016 18:12:47 +0200 Subject: [PATCH 104/268] add framework to add virtual mass to containers --- addons/movement/XEH_PREP.hpp | 2 + addons/movement/XEH_postInit.sqf | 3 ++ .../functions/fnc_addLoadToUnitContainer.sqf | 31 ++++++++++++++ .../functions/fnc_handleVirtualMass.sqf | 42 +++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 addons/movement/functions/fnc_addLoadToUnitContainer.sqf create mode 100644 addons/movement/functions/fnc_handleVirtualMass.sqf diff --git a/addons/movement/XEH_PREP.hpp b/addons/movement/XEH_PREP.hpp index 8e465970eb8..04913f76705 100644 --- a/addons/movement/XEH_PREP.hpp +++ b/addons/movement/XEH_PREP.hpp @@ -1,5 +1,7 @@ +PREP(addLoadToUnitContainer); PREP(getWeight); PREP(canClimb); PREP(climb); PREP(handleClimb); +PREP(handleVirtualMass); diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index 806823f4c48..d9179a912a3 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -3,6 +3,9 @@ if (!hasInterface) exitWith {}; +["playerChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); +["playerInventoryChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); + ["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), { // Conditions: canInteract diff --git a/addons/movement/functions/fnc_addLoadToUnitContainer.sqf b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf new file mode 100644 index 00000000000..28fea8f6977 --- /dev/null +++ b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf @@ -0,0 +1,31 @@ +/* + * Author: commy2 + * Add (negative numbers to subtract) a virtual mass to a units container. + * + * Arguments: + * 0: The Unit + * 1: The Container + * 2: The Virtual Load + * + * Return Value: + * Success? + * + * Public: No + */ +#include "script_component.hpp" + +params [["_unit", objNull, [objNull]], ["_container", objNull, [objNull]], ["_virtualLoadToAdd", 0, [0]]]; + +if !(_container in [ + uniformContainer _unit, + vestContainer _unit, + backpackContainer _unit +]) exitWith {false}; + +private _virtualLoad = (_container getVariable [QGVAR(vLoad), 0]) + _virtualLoadToAdd; +_container setVariable [QGVAR(vLoad), _virtualLoad]; + +// update +_unit call FUNC(handleVirtualMass); + +true diff --git a/addons/movement/functions/fnc_handleVirtualMass.sqf b/addons/movement/functions/fnc_handleVirtualMass.sqf new file mode 100644 index 00000000000..5d71c58df4b --- /dev/null +++ b/addons/movement/functions/fnc_handleVirtualMass.sqf @@ -0,0 +1,42 @@ +/* + * Author: commy2 + * Recalculate the units loadCoef to emulate a mass added to uniform, vest or backpack. + * + * Arguments: + * 0: The Unit (usually the player) + * + * Return Value: + * Nothing + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit"]; + +// add sum of virtual loads +private _virtualLoad = 0; + +{ + _virtualLoad = _virtualLoad + (_x getVariable [QGVAR(vLoad), 0]); +} forEach [ + uniformContainer _unit, + vestContainer _unit, + backpackContainer _unit +]; + +// get absolute vanilla load +private _absLoad = loadAbs _unit / load _unit; + +// try to preserve other changes to the "LoadCoef" unitTrait +private _loadCoef = _unit getVariable QGVAR(loadCoef); + +if (isNil "_loadCoef") then { + _loadCoef = _unit getUnitTrait "loadCoef"; + _unit setVariable [QGVAR(loadCoef), _loadCoef, true]; +}; + +// calc. new "virtual" loadCoef +private _virtualLoadCoef = (1 + _virtualLoad / _absLoad) * _loadCoef; + +_unit setUnitTrait ["loadCoef", _virtualLoadCoef]; From 736807f994f62405333a591fcf4c261a21b87a67 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 3 May 2016 18:16:39 +0200 Subject: [PATCH 105/268] fix typo, make variable global --- addons/movement/functions/fnc_addLoadToUnitContainer.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/movement/functions/fnc_addLoadToUnitContainer.sqf b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf index 28fea8f6977..3928d1c822c 100644 --- a/addons/movement/functions/fnc_addLoadToUnitContainer.sqf +++ b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: The Unit - * 1: The Container + * 1: The Container * 2: The Virtual Load * * Return Value: @@ -23,7 +23,7 @@ if !(_container in [ ]) exitWith {false}; private _virtualLoad = (_container getVariable [QGVAR(vLoad), 0]) + _virtualLoadToAdd; -_container setVariable [QGVAR(vLoad), _virtualLoad]; +_container setVariable [QGVAR(vLoad), _virtualLoad, true]; // update _unit call FUNC(handleVirtualMass); From 66c2bf050625d51ae453a662d3d7d78253840b04 Mon Sep 17 00:00:00 2001 From: Cuel Date: Tue, 3 May 2016 20:10:28 +0200 Subject: [PATCH 106/268] Fix dead bodies removal, when forced = 1 - Removed unused(?) GVAR(Module) - Removed "white space alignment" in module.sqf --- addons/respawn/CfgEventHandlers.hpp | 1 + addons/respawn/XEH_serverPostInit.sqf | 17 +++++++++++++++++ addons/respawn/functions/fnc_module.sqf | 20 ++------------------ 3 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 addons/respawn/XEH_serverPostInit.sqf diff --git a/addons/respawn/CfgEventHandlers.hpp b/addons/respawn/CfgEventHandlers.hpp index a4601c6f95a..481d36cf30b 100644 --- a/addons/respawn/CfgEventHandlers.hpp +++ b/addons/respawn/CfgEventHandlers.hpp @@ -14,6 +14,7 @@ class Extended_PreInit_EventHandlers { class Extended_PostInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_postInit)); + serverInit = QUOTE(call COMPILE_FILE(XEH_serverPostInit)); }; }; diff --git a/addons/respawn/XEH_serverPostInit.sqf b/addons/respawn/XEH_serverPostInit.sqf new file mode 100644 index 00000000000..d472bb0d5c2 --- /dev/null +++ b/addons/respawn/XEH_serverPostInit.sqf @@ -0,0 +1,17 @@ +#include "script_component.hpp" + +["SettingsInitialized", { + if (GVAR(RemoveDeadBodiesDisconnected)) then { + addMissionEventHandler ["HandleDisconnect", { + [{ + params ["_unit"]; + + if (!alive _unit) then { + deleteVehicle _unit; + }; + }, + _this, 4] call EFUNC(common,waitAndExecute); + false + }]; + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/respawn/functions/fnc_module.sqf b/addons/respawn/functions/fnc_module.sqf index ea6ba555d5c..bc4f197c07b 100644 --- a/addons/respawn/functions/fnc_module.sqf +++ b/addons/respawn/functions/fnc_module.sqf @@ -19,25 +19,9 @@ params ["_logic", "_units", "_activated"]; -if !(_activated) exitWith {}; +if (!_activated) exitWith {}; -GVAR(Module) = true; - -[_logic, QGVAR(SavePreDeathGear), "SavePreDeathGear"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(SavePreDeathGear), "SavePreDeathGear"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(RemoveDeadBodiesDisconnected), "RemoveDeadBodiesDisconnected"] call EFUNC(common,readSettingFromModule); -if (isServer && {GVAR(RemoveDeadBodiesDisconnected)}) then { - addMissionEventHandler ["HandleDisconnect", { - [{ - params ["_unit"]; - - if (!alive _unit) then { - deleteVehicle _unit; - }; - }, - _this, 4] call EFUNC(common,waitAndExecute); - false - }]; -}; - ACE_LOGINFO("Respawn Module Initialized."); From e125911c3b88259d6b307dc46a09ec79b2441184 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 3 May 2016 20:52:43 +0200 Subject: [PATCH 107/268] Added blockEngine status effect --- addons/common/CfgEventHandlers.hpp | 6 ++++++ addons/common/XEH_PREP.hpp | 1 + addons/common/XEH_postInit.sqf | 6 ++++++ addons/common/functions/fnc_handleEngine.sqf | 19 +++++++++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 addons/common/functions/fnc_handleEngine.sqf diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 6e8528cf03f..5d55e40f2d8 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -76,3 +76,9 @@ class Extended_FiredBIS_EventHandlers { ADDON = QUOTE(_this call FUNC(firedEH)); }; }; + +class Extended_Engine_EventHandlers { + class All { + ADDON = QUOTE(_this call FUNC(handleEngine)); + }; +}; diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 0b125af1aaf..3dea56a98d3 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -87,6 +87,7 @@ PREP(getWindDirection); PREP(getZoom); PREP(goKneeling); PREP(hadamardProduct); +PREP(handleEngine); PREP(handleModifierKey); PREP(handleModifierKeyUp); PREP(handleScrollWheel); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 22257e3cb54..a6b952062e7 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -64,6 +64,7 @@ ["blockSprint", false, []] call FUNC(statusEffect_addType); ["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType); ["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType); +["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType); ["forceWalk", { params ["_object", "_set"]; @@ -90,6 +91,11 @@ _object allowDamage (_set == 0); }; }] call FUNC(addEventHandler); +["blockEngine", { + params ["_vehicle", "_set"]; + _vehicle setVariable [QGVAR(blockEngine), _set > 0, true]; + _vehicle engineOn false; +}] call FUNC(addEventHandler); //Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit //This variable is used for isPlayer checks diff --git a/addons/common/functions/fnc_handleEngine.sqf b/addons/common/functions/fnc_handleEngine.sqf new file mode 100644 index 00000000000..829ad5bb49d --- /dev/null +++ b/addons/common/functions/fnc_handleEngine.sqf @@ -0,0 +1,19 @@ +/* + * Author: BaerMitUmlaut + * Blocks turning on the vehicles engine if set by the status effect handler. + * + * Arguments: + * 0: Vehicle + * 1: Engine state + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" +params ["_vehicle", "_engineOn"]; + +if (local _vehicle && {_engineOn} && {_vehicle getVariable [QGVAR(blockEngine), false]}) then { + _vehicle engineOn false; +}; From 304f1a22b444f32c198b99984ae257b25245a1f2 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 3 May 2016 21:08:22 +0200 Subject: [PATCH 108/268] Use blockeEngine status effect in refuel --- addons/refuel/functions/fnc_reset.sqf | 4 +--- addons/refuel/functions/fnc_returnNozzle.sqf | 3 +-- addons/refuel/functions/fnc_takeNozzle.sqf | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/addons/refuel/functions/fnc_reset.sqf b/addons/refuel/functions/fnc_reset.sqf index 6e3bdbe7746..767e4b6c88d 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -17,9 +17,7 @@ params [["_target", objNull, [objNull]]]; -["setVanillaHitPointDamage", _target, [_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]] ] ] call EFUNC(common,objectEvent); - -_target setVariable [QGVAR(engineHit), nil, true]; +[_target, "blockEngine", "ACE_Refuel", false] call EFUNC(common,statusEffect_set); _target setVariable [QGVAR(isConnected), false, true]; private _nozzle = _target getVariable [QGVAR(ownedNozzle), nil]; diff --git a/addons/refuel/functions/fnc_returnNozzle.sqf b/addons/refuel/functions/fnc_returnNozzle.sqf index bd4da5569b4..1bd364eafb6 100644 --- a/addons/refuel/functions/fnc_returnNozzle.sqf +++ b/addons/refuel/functions/fnc_returnNozzle.sqf @@ -48,8 +48,7 @@ if (isNull _nozzle || {_source != _target}) exitWith {false}; }; deleteVehicle _nozzle; - ["setVanillaHitPointDamage", _target, [_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]] ] ] call EFUNC(common,objectEvent); - _target setVariable [QGVAR(engineHit), nil, true]; + [_target, "blockEngine", "ACE_Refuel", false] call EFUNC(common,statusEffect_set); }, "", localize LSTRING(ReturnAction), diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index 3d557f9a2e8..75601002a3d 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -26,8 +26,7 @@ REFUEL_HOLSTER_WEAPON private _endPosOffset = [0, 0, 0]; if (isNull _nozzle) then { // func is called on fuel truck - _target setVariable [QGVAR(engineHit), _target getHitPointDamage "HitEngine", true]; - ["setVanillaHitPointDamage", _target, [_target, ["HitEngine", 1]] ] call EFUNC(common,objectEvent); + [_target, "blockEngine", "ACE_Refuel", true] call EFUNC(common,statusEffect_set); _target setVariable [QGVAR(isConnected), true, true]; _endPosOffset = getArray (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(hooks)); From b6324e61e9c231cefac974094a3c0082eb1a407f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 3 May 2016 21:24:10 +0200 Subject: [PATCH 109/268] Improved params formatting --- addons/atragmx/functions/fnc_calculate_solution.sqf | 8 +++++++- addons/rangecard/functions/fnc_calculateSolution.sqf | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf index 839cba8b697..e71658f490c 100644 --- a/addons/atragmx/functions/fnc_calculate_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_solution.sqf @@ -42,7 +42,13 @@ * Public: No */ #include "script_component.hpp" -params ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"]; +params [ + "_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", + "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", + "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", + "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", + "_directionOfFire" +]; _windSpeed params ["_windSpeed1", "_windSpeed2"]; private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"]; diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index e1659016bbf..b921b71ff88 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -45,7 +45,13 @@ * Public: No */ #include "script_component.hpp" -params ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"]; +params [ + "_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", + "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", + "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", + "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", + "_directionOfFire", "_rangeCardSlot", "_useABConfig" +]; _windSpeed params ["_windSpeed1", "_windSpeed2"]; if (_storeRangeCardData) then { From 012ce9fb16940b043bf7f50aa323bc1cc037eb00 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 3 May 2016 21:38:36 +0200 Subject: [PATCH 110/268] Removed old occurances of AGM and CSE --- addons/missionmodules/config.cpp | 2 +- addons/nametags/functions/fnc_getVehicleData.sqf | 2 +- addons/optionsmenu/gui/define.hpp | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp index 0867b486c6b..c373b846159 100644 --- a/addons/missionmodules/config.cpp +++ b/addons/missionmodules/config.cpp @@ -2,7 +2,7 @@ class CfgPatches { class ADDON { - units[] = {"cse_moduleAmbianceSound"}; + units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; diff --git a/addons/nametags/functions/fnc_getVehicleData.sqf b/addons/nametags/functions/fnc_getVehicleData.sqf index b0e0b1ff34a..656cb8dc81c 100644 --- a/addons/nametags/functions/fnc_getVehicleData.sqf +++ b/addons/nametags/functions/fnc_getVehicleData.sqf @@ -1,6 +1,6 @@ /* * Author: aeroson - * Gathers and caches data needed by AGM_CrewInfo_fnc_doShow. + * Gathers and caches data needed by ace_nametags_fnc_doShow. * What really does make difference for the engine is simulation of CfgAmmo. * Priority of roles is: driver/pilot, gunner, copilot, commander, FFV, cargo. * diff --git a/addons/optionsmenu/gui/define.hpp b/addons/optionsmenu/gui/define.hpp index ef9ef0d02b2..c2b1faf9cf9 100644 --- a/addons/optionsmenu/gui/define.hpp +++ b/addons/optionsmenu/gui/define.hpp @@ -92,6 +92,5 @@ class RscText; // Listbox styles #define LB_TEXTURES 0x10 #define LB_MULTI 0x20 -#define FontCSE "RobotoCondensed" #endif From 98a74aca6ef2badc22121f604adb0b7b3d6ea229 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 3 May 2016 22:49:05 -0500 Subject: [PATCH 111/268] UI - Don't overwrite other showHud indexes --- addons/ui/functions/fnc_setElements.sqf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index b94b0f9a228..64b716ee297 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -23,15 +23,13 @@ if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured); }; -private _shownHUD = shownHUD; // [hud, info, radar, compass, direction, menu, group, cursors] - ["ui", [ - _shownHUD select 0, + true, GVAR(soldierVehicleWeaponInfo), GVAR(vehicleRadar), GVAR(vehicleCompass), - _shownHUD select 4, + true, GVAR(commandMenu), GVAR(groupBar), - _shownHUD select 7 + true ]] call EFUNC(common,showHud); From 398b76f30bc0e8a6dffeaff0050038b77cee0ac6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 3 May 2016 23:13:43 -0500 Subject: [PATCH 112/268] Get reload time from QGVAR(buddyReloadTime) --- addons/reloadlaunchers/functions/fnc_load.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index 9f0b36ce8de..db18e7edaa4 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -18,8 +18,11 @@ params ["_unit", "_target", "_weapon", "_magazine"]; TRACE_4("params",_unit,_target,_weapon,_magazine); -// private _reloadTime = getNumber (configFile >> "CfgWeapons" >> _weapon >> "magazineReloadTime"); //Not a good config value, use a constant for now: -private _reloadTime = 2.5; +private _reloadTime = if (isNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(buddyReloadTime))) then { + getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(buddyReloadTime)) +} else { + 2.5 +}; // do animation [_unit] call EFUNC(common,goKneeling); From cf92ba9c46203fb734c9949b6d4f3617009620f6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 4 May 2016 14:59:04 -0500 Subject: [PATCH 113/268] Overheating - Add Master Enabled Setting (barrelPR) --- addons/overheating/ACE_Settings.hpp | 6 ++ addons/overheating/CfgEventHandlers.hpp | 8 -- addons/overheating/CfgVehicles.hpp | 12 +-- addons/overheating/XEH_postInit.sqf | 87 ++++++++++--------- .../functions/fnc_swapBarrelCallback.sqf | 2 +- ...c_updateSpareBarrelsTemperaturesThread.sqf | 2 +- addons/overheating/stringtable.xml | 10 ++- 7 files changed, 70 insertions(+), 57 deletions(-) diff --git a/addons/overheating/ACE_Settings.hpp b/addons/overheating/ACE_Settings.hpp index 6cff3268ff5..abf08c9874f 100644 --- a/addons/overheating/ACE_Settings.hpp +++ b/addons/overheating/ACE_Settings.hpp @@ -38,4 +38,10 @@ class ACE_Settings { displayName = CSTRING(unJamFailChance_displayName); description = CSTRING(unJamFailChance_description); }; + class GVAR(enabled) { + typeName = "BOOL"; + value = 1; + displayName = CSTRING(enabled_displayName); + description = CSTRING(enabled_description); + }; }; diff --git a/addons/overheating/CfgEventHandlers.hpp b/addons/overheating/CfgEventHandlers.hpp index 492230513fe..5da5fd0dc24 100644 --- a/addons/overheating/CfgEventHandlers.hpp +++ b/addons/overheating/CfgEventHandlers.hpp @@ -16,11 +16,3 @@ class Extended_PostInit_EventHandlers { init = QUOTE( call COMPILE_FILE(XEH_postInit) ); }; }; - -class Extended_Take_EventHandlers { - class CAManBase { - class GVAR(UnjamReload) { - clientTake = QUOTE( _this call FUNC(handleTakeEH) ); - }; - }; -}; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index 0a86535231c..23a2b613f54 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -6,7 +6,7 @@ class CfgVehicles { class ACE_Equipment { class GVAR(UnJam) { displayName = CSTRING(UnjamWeapon); - condition = QUOTE( [_player] call FUNC(canUnjam) ); + condition = QUOTE( GVAR(enabled) && {[_player] call FUNC(canUnjam)} ); exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [ARR_2(_player, currentMuzzle _player)] call FUNC(clearJam); ); showDisabled = 0; @@ -15,7 +15,7 @@ class CfgVehicles { }; class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); - condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); + condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player} && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _player >> 'ACE_Overheating_allowSwapBarrel') == 1} ); statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(swapBarrel); ); showDisabled = 0; priority = 3; @@ -23,7 +23,7 @@ class CfgVehicles { }; class GVAR(CheckTemperature) { displayName = CSTRING(CheckTemperatureShort); - condition = "switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}"; + condition = "ace_overheating_enabled && {switch (currentWeapon _player) do {case (''): {false}; case (primaryWeapon _player); case (handgunWeapon _player): {true}; default {false}}}"; exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [ARR_3(_player, _player, currentWeapon _player)] call FUNC(checkTemperature); ); showDisabled = 0; @@ -32,7 +32,7 @@ class CfgVehicles { }; class GVAR(CheckTemperatureSpareBarrels) { displayName = CSTRING(CheckTemperatureSpareBarrelsShort); - condition = QUOTE( 'ACE_SpareBarrel' in magazines _player); + condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player}); exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [_player] call FUNC(checkSpareBarrelsTemperatures); ); showDisabled = 0; @@ -46,13 +46,13 @@ class CfgVehicles { class ACE_Weapon { class GVAR(SwapBarrel) { displayName = CSTRING(SwapBarrel); - condition = QUOTE( 'ACE_SpareBarrel' in magazines _player && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _target >> 'ACE_Overheating_allowSwapBarrel') == 1} ); + condition = QUOTE( GVAR(enabled) && {'ACE_SpareBarrel' in magazines _player} && {getNumber (configFile >> 'CfgWeapons' >> currentWeapon _target >> 'ACE_Overheating_allowSwapBarrel') == 1} ); statement = QUOTE([ARR_3(_player, _target, currentWeapon _target)] call FUNC(swapBarrelAssistant);); icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); }; class GVAR(CheckTemperature) { displayName = CSTRING(CheckTemperatureShort); - condition = "switch (currentWeapon _target) do {case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}"; + condition = "ace_overheating_enabled && {switch (currentWeapon _target) do {case (''): {false}; case (primaryWeapon _target); case (handgunWeapon _target): {true}; default {false}}}"; exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [ARR_3(_player, _target, currentWeapon _target)] call FUNC(checkTemperature); ); icon = QUOTE(PATHTOF(UI\temp_ca.paa)); diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 96d518ac9ff..e4935b88317 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -1,62 +1,69 @@ // by esteldunedain #include "script_component.hpp" -if (isServer) then { - GVAR(pseudoRandomList) = []; - // Construct a list of pseudo random 2D vectors - for "_i" from 0 to 30 do { - GVAR(pseudoRandomList) pushBack [-1 + random 2, -1 + random 2]; - }; - publicVariable QGVAR(pseudoRandomList); - - // Keep track of the temperature of stored spare barrels - GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; +if (hasInterface) then { + // Add keybinds + ["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), + { + // Conditions: canInteract + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; + // Conditions: specific - // Install event handlers for spare barrels - ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler); - ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler); + if !(GVAR(enabled) && {[ACE_player] call FUNC(canUnjam)}) exitWith {false}; - // Schedule cool down calculation of stored spare barrels - [] call FUNC(updateSpareBarrelsTemperaturesThread); + // Statement + [ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam); + true + }, + {false}, + [19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key }; +["SettingsInitialized", { + TRACE_1("SettingsInitialized eh", GVAR(enabled)); + if (!GVAR(enabled)) exitWith {}; -if !(hasInterface) exitWith {}; + if (isServer) then { + GVAR(pseudoRandomList) = []; + // Construct a list of pseudo random 2D vectors + for "_i" from 0 to 30 do { + GVAR(pseudoRandomList) pushBack [-1 + random 2, -1 + random 2]; + }; + publicVariable QGVAR(pseudoRandomList); -GVAR(cacheWeaponData) = call CBA_fnc_createNamespace; -GVAR(cacheAmmoData) = call CBA_fnc_createNamespace; -GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; + // Keep track of the temperature of stored spare barrels + GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; -// Add keybinds -["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), -{ - // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; - // Conditions: specific + // Install event handlers for spare barrels + ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler); + ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler); - if !([ACE_player] call FUNC(canUnjam)) exitWith {false}; + // Schedule cool down calculation of stored spare barrels + [] call FUNC(updateSpareBarrelsTemperaturesThread); + }; - // Statement - [ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam); - true -}, -{false}, -[19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key + if !(hasInterface) exitWith {}; + GVAR(cacheWeaponData) = call CBA_fnc_createNamespace; + GVAR(cacheAmmoData) = call CBA_fnc_createNamespace; + GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; -// Schedule cool down calculation of player weapons at (infrequent) regular intervals -[] call FUNC(updateTemperatureThread); + //Add Take EH (for reload) + ["CAManBase", "Take", {_this call FUNC(handleTakeEH);}] call CBA_fnc_addClassEventHandler; -["SettingsInitialized", { // Register fire event handler ["firedPlayer", DFUNC(firedEH)] call EFUNC(common,addEventHandler); // Only add eh to non local players if dispersion is enabled if (GVAR(overheatingDispersion)) then { ["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler); }; -}] call EFUNC(common,addEventHandler); -// Install event handler to display temp when a barrel was swapped -["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler); -// Install event handler to initiate an assisted barrel swap -["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler); + // Schedule cool down calculation of player weapons at (infrequent) regular intervals + [] call FUNC(updateTemperatureThread); + + // Install event handler to display temp when a barrel was swapped + ["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler); + // Install event handler to initiate an assisted barrel swap + ["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler); + +}] call EFUNC(common,addEventHandler); diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 339b6627b18..403989decab 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -15,7 +15,7 @@ * * Public: No */ -#define DEBUG_MODE_FULL +// #define DEBUG_MODE_FULL #include "script_component.hpp" params ["_assistant", "_gunner", "_weapon"]; diff --git a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf index 852cb1c580b..d6b74f6769b 100644 --- a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf +++ b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf @@ -13,7 +13,7 @@ * * Public: No */ -#define DEBUG_MODE_FULL +// #define DEBUG_MODE_FULL #include "script_component.hpp" private _pairs = []; diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 3eb67701dea..e49ad433fcc 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -282,7 +282,15 @@ Very Hot Spare Barrel/s - Extremele Hot Spare Barrel/s + Extremely Hot Spare Barrel/s + + + Overheating Enabled + Überhitzen Aktiviert + Activada Sobrecalentamiento + + + Master enable for the overheating/jamming module \ No newline at end of file From 28c65c4bed0a87c09eef0ce10cb9bb46df481fe3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 5 May 2016 14:36:56 -0500 Subject: [PATCH 114/268] Fix explosive sync on dedi --- addons/explosives/XEH_postInit.sqf | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 57cbecba756..fe12a88b7f7 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -27,18 +27,7 @@ if (isServer) then { TRACE_1("Knocked Out, Doing Deadman", _unit); [_unit] call FUNC(onIncapacitated); }] call EFUNC(common,addEventHandler); -}; - -if (!hasInterface) exitWith {}; -GVAR(PlacedCount) = 0; -GVAR(Setup) = objNull; -GVAR(pfeh_running) = false; -GVAR(CurrentSpeedDial) = 0; - -// In case we are a JIP client, ask the server for orientation of any previously -// placed mine. -if (isServer) then { ["clientRequestsOrientations", { params ["_logic"]; TRACE_1("clientRequestsOrientations received:",_logic); @@ -50,7 +39,18 @@ if (isServer) then { TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations)); ["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent); }] call EFUNC(common,addEventHandler); -} else { +}; + +if (!hasInterface) exitWith {}; + +GVAR(PlacedCount) = 0; +GVAR(Setup) = objNull; +GVAR(pfeh_running) = false; +GVAR(CurrentSpeedDial) = 0; + +// In case we are a JIP client, ask the server for orientation of any previously +// placed mine. +if (didJIP) then { ["serverSendsOrientations", { params ["_explosivesOrientations"]; TRACE_1("serverSendsOrientations received:",_explosivesOrientations); @@ -59,14 +59,12 @@ if (isServer) then { TRACE_3("orientation set:",_explosive,_direction,_pitch); [_explosive, _direction, _pitch] call FUNC(setPosition); } forEach _explosivesOrientations; - private _group = group GVAR(localLogic); deleteVehicle GVAR(localLogic); GVAR(localLogic) = nil; - deleteGroup _group; }] call EFUNC(common,addEventHandler); // Create a logic to get the client ID - GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; + GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic)); ["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent); }; From 9b46e77f662faf4212ec0579b704f901864ad0e5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 May 2016 12:47:59 -0500 Subject: [PATCH 115/268] Add key to toggle wind info display --- addons/weather/XEH_postInit.sqf | 13 +++++++++++++ addons/weather/stringtable.xml | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index a19e0003322..9c32634060b 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -39,6 +39,19 @@ GVAR(WindInfo) = false; }, {false}, [37, [true, false, false]], false, 0] call CBA_fnc_addKeybind; // (SHIFT + K) +["ACE3 Common", QGVAR(WindInfoKey_hold), localize LSTRING(WindInfoKey_hold), +{ + // Conditions: canInteract + if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; + + // Statement + [] call FUNC(displayWindInfo); +}, +{ + GVAR(WindInfo) = false; + (["RscWindIntuitive"] call BIS_fnc_rscLayer) cutText ["", "PLAIN", 2]; +}, +[0, [false, false, false]], false, 0] call CBA_fnc_addKeybind; // (empty default key) simulWeatherSync; diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 0b0ed8fd17d..571fa9c25aa 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -13,6 +13,18 @@ Zobrazit údaje o větru Mostrar informação do vento + + Show Wind Info (Toggle) + Pokaż inf. o wietrze (przełącz) + Показать информацию о ветре (перекл.) + Afficher information sur le vent (bascule) + Mostrar información del viento (cambiar) + Mostra informazioni sul vento (camb.) + Zeige Windinformationen (umsch.) + Széladatok mutatása (pecek) + Zobrazit údaje o větru (přep.) + Mostrar informação do vento (alternar) + Weather Pogoda From b8abec0c61806ec9b90fe71aacde13dc8ce14bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20E=C4=9Fitmen?= Date: Sat, 7 May 2016 23:14:56 +0300 Subject: [PATCH 116/268] Fix Capitalization of ACE Settings classes. (#3627) --- addons/common/ACE_Settings.hpp | 2 +- addons/common/functions/fnc_progressBar.sqf | 2 +- addons/explosives/ACE_Settings.hpp | 6 +++--- addons/frag/ACE_Settings.hpp | 10 +++++----- addons/hearing/ACE_Settings.hpp | 8 ++++---- addons/interact_menu/ACE_Settings.hpp | 6 +++--- addons/interaction/ACE_Settings.hpp | 2 +- addons/magazinerepack/ACE_Settings.hpp | 6 +++--- addons/map/ACE_Settings.hpp | 2 +- addons/map_gestures/ACE_Settings.hpp | 12 ++++++------ addons/maptools/ACE_Settings.hpp | 2 +- addons/microdagr/ACE_Settings.hpp | 2 +- addons/overheating/ACE_Settings.hpp | 2 +- addons/reload/ACE_Settings.hpp | 2 +- addons/repair/ACE_Settings.hpp | 10 +++++----- addons/respawn/ACE_Settings.hpp | 6 +++--- addons/switchunits/ACE_Settings.hpp | 14 +++++++------- addons/vehiclelock/ACE_Settings.hpp | 6 +++--- addons/weaponselect/ACE_Settings.hpp | 2 +- 19 files changed, 51 insertions(+), 51 deletions(-) diff --git a/addons/common/ACE_Settings.hpp b/addons/common/ACE_Settings.hpp index d6226fd0ab4..2d8a5d7a27d 100644 --- a/addons/common/ACE_Settings.hpp +++ b/addons/common/ACE_Settings.hpp @@ -49,7 +49,7 @@ class ACE_Settings { description = CSTRING(SettingFeedbackIconsDesc); values[] = {ECSTRING(optionsmenu,Hide), ECSTRING(optionsmenu,TopRightDown), ECSTRING(optionsmenu,TopRightLeft), ECSTRING(optionsmenu,TopLeftDown), ECSTRING(optionsmenu,TopLeftRight)}; }; - class GVAR(SettingProgressBarLocation) { + class GVAR(settingProgressBarLocation) { value = 0; typeName = "SCALAR"; force = 0; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index e842590f357..6129f14a65b 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -34,7 +34,7 @@ createDialog QGVAR(ProgressBar_Dialog); //Adjust position based on user setting: private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)); -_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))]; +_ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))]; (uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos; (uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0; diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index ceb6b62d25a..e103b6e018f 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -1,17 +1,17 @@ class ACE_Settings { - class GVAR(RequireSpecialist) { + class GVAR(requireSpecialist) { displayName = CSTRING(RequireSpecialist_DisplayName); description = CSTRING(RequireSpecialist_Description); value = 0; typeName = "BOOL"; }; - class GVAR(PunishNonSpecialists) { + class GVAR(punishNonSpecialists) { displayName = CSTRING(PunishNonSpecialists_DisplayName); description = CSTRING(PunishNonSpecialists_Description); value = 1; typeName = "BOOL"; }; - class GVAR(ExplodeOnDefuse) { + class GVAR(explodeOnDefuse) { displayName = CSTRING(ExplodeOnDefuse_DisplayName); description = CSTRING(ExplodeOnDefuse_Description); value = 1; diff --git a/addons/frag/ACE_Settings.hpp b/addons/frag/ACE_Settings.hpp index 3e1c83839b7..4dfa172bb36 100644 --- a/addons/frag/ACE_Settings.hpp +++ b/addons/frag/ACE_Settings.hpp @@ -1,19 +1,19 @@ class ACE_Settings { - class GVAR(Enabled) { + class GVAR(enabled) { category = CSTRING(Module_DisplayName); displayName = CSTRING(EnableFrag); description = CSTRING(EnableFrag_Desc); typeName = "BOOL"; value = 1; }; - class GVAR(SpallEnabled) { + class GVAR(spallEnabled) { category = CSTRING(Module_DisplayName); displayName = CSTRING(EnableSpall); description = CSTRING(EnableSpall_Desc); typeName = "BOOL"; value = 0; }; - class GVAR(ReflectionsEnabled) { + class GVAR(reflectionsEnabled) { category = CSTRING(Module_DisplayName); displayName = CSTRING(EnableReflections); description = CSTRING(EnableReflections_Desc); @@ -27,7 +27,7 @@ class ACE_Settings { typeName = "SCALAR"; value = 500; }; - class GVAR(MaxTrackPerFrame) { + class GVAR(maxTrackPerFrame) { category = CSTRING(Module_DisplayName); displayName = CSTRING(MaxTrackPerFrame); description = CSTRING(MaxTrackPerFrame_Desc); @@ -35,7 +35,7 @@ class ACE_Settings { value = 50; }; - class GVAR(EnableDebugTrace) { + class GVAR(enableDebugTrace) { category = CSTRING(Module_DisplayName); displayName = CSTRING(EnableDebugTrace); description = CSTRING(EnableDebugTrace_Desc); diff --git a/addons/hearing/ACE_Settings.hpp b/addons/hearing/ACE_Settings.hpp index dcae85fa25e..2fb2a462116 100644 --- a/addons/hearing/ACE_Settings.hpp +++ b/addons/hearing/ACE_Settings.hpp @@ -1,22 +1,22 @@ class ACE_Settings { - class GVAR(EnableCombatDeafness) { + class GVAR(enableCombatDeafness) { category = CSTRING(Module_DisplayName); value = 1; typeName = "BOOL"; displayName = CSTRING(EnableCombatDeafness_DisplayName); description = CSTRING(EnableCombatDeafness_Description); }; - class GVAR(EarplugsVolume) { + class GVAR(earplugsVolume) { category = CSTRING(Module_DisplayName); value = 0.5; typeName = "SCALAR"; }; - class GVAR(UnconsciousnessVolume) { + class GVAR(unconsciousnessVolume) { category = CSTRING(Module_DisplayName); value = 0.4; typeName = "SCALAR"; }; - class GVAR(DisableEarRinging) { + class GVAR(disableEarRinging) { category = CSTRING(Module_DisplayName); value = 0; typeName = "BOOL"; diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 075408499ba..a36d3dd98d5 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(AlwaysUseCursorSelfInteraction) { + class GVAR(alwaysUseCursorSelfInteraction) { value = 0; typeName = "BOOL"; isClientSettable = 1; @@ -14,14 +14,14 @@ class ACE_Settings { displayName = CSTRING(cursorKeepCentered); description = CSTRING(cursorKeepCenteredDescription); }; - class GVAR(AlwaysUseCursorInteraction) { + class GVAR(alwaysUseCursorInteraction) { value = 0; typeName = "BOOL"; isClientSettable = 1; category = CSTRING(Category_InteractionMenu); displayName = CSTRING(AlwaysUseCursorInteraction); }; - class GVAR(UseListMenu) { + class GVAR(useListMenu) { value = 0; typeName = "BOOL"; isClientSettable = 1; diff --git a/addons/interaction/ACE_Settings.hpp b/addons/interaction/ACE_Settings.hpp index 1cb8b747ef0..e95947ec759 100644 --- a/addons/interaction/ACE_Settings.hpp +++ b/addons/interaction/ACE_Settings.hpp @@ -1,6 +1,6 @@ class ACE_Settings { - class GVAR(EnableTeamManagement) { + class GVAR(enableTeamManagement) { displayName = CSTRING(EnableTeamManagement_DisplayName); description = CSTRING(EnableTeamManagement_Description); value = 1; diff --git a/addons/magazinerepack/ACE_Settings.hpp b/addons/magazinerepack/ACE_Settings.hpp index 0b7b2d46289..940af87d150 100644 --- a/addons/magazinerepack/ACE_Settings.hpp +++ b/addons/magazinerepack/ACE_Settings.hpp @@ -1,16 +1,16 @@ class ACE_Settings { //Time to move a round from one magazine to another - class GVAR(TimePerAmmo) { + class GVAR(timePerAmmo) { value = 1.5; typeName = "SCALAR"; }; //Time to swap between magazines when repacking - class GVAR(TimePerMagazine) { + class GVAR(timePerMagazine) { value = 2.0; typeName = "SCALAR"; }; //Time to relink 2 belts together - class GVAR(TimePerBeltLink) { + class GVAR(timePerBeltLink) { value = 8.0; typeName = "SCALAR"; }; diff --git a/addons/map/ACE_Settings.hpp b/addons/map/ACE_Settings.hpp index 6ff2e1e8671..b04c7b39b37 100644 --- a/addons/map/ACE_Settings.hpp +++ b/addons/map/ACE_Settings.hpp @@ -62,7 +62,7 @@ class ACE_Settings { displayName = CSTRING(MapShowCursorCoordinates_DisplayName); description = CSTRING(MapShowCursorCoordinates_Description); }; - class GVAR(DefaultChannel) { + class GVAR(defaultChannel) { category = CSTRING(Module_DisplayName); value = -1; typeName = "SCALAR"; diff --git a/addons/map_gestures/ACE_Settings.hpp b/addons/map_gestures/ACE_Settings.hpp index 0038027e3b4..3730c08c586 100644 --- a/addons/map_gestures/ACE_Settings.hpp +++ b/addons/map_gestures/ACE_Settings.hpp @@ -44,16 +44,16 @@ class ACE_Settings { typeName = "COLOR"; value[] = {1, 0.88, 0, 0.7}; }; - class GVAR(GroupColorConfigurations) { - displayName = CSTRING(GroupColorConfigurations_displayName); - description = CSTRING(GroupColorConfigurations_description); + class GVAR(groupColorConfigurations) { + displayName = CSTRING(groupColorConfigurations_displayName); + description = CSTRING(groupColorConfigurations_description); category = CSTRING(mapGestures_category); typeName = "ARRAY"; value[] = {}; }; - class GVAR(GroupColorConfigurationMapping) { - displayName = CSTRING(GroupColorConfigurationMapping_displayName); - description = CSTRING(GroupColorConfigurationMapping_description); + class GVAR(groupColorConfigurationMapping) { + displayName = CSTRING(groupColorConfigurationMapping_displayName); + description = CSTRING(groupColorConfigurationMapping_description); category = CSTRING(mapGestures_category); typeName = "ARRAY"; value[] = {{}, {}}; diff --git a/addons/maptools/ACE_Settings.hpp b/addons/maptools/ACE_Settings.hpp index 9c53a84a7cb..0a88948a7fc 100644 --- a/addons/maptools/ACE_Settings.hpp +++ b/addons/maptools/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(EveryoneCanDrawOnBriefing) { + class GVAR(everyoneCanDrawOnBriefing) { value = 1; typeName = "BOOL"; }; diff --git a/addons/microdagr/ACE_Settings.hpp b/addons/microdagr/ACE_Settings.hpp index 637584178c6..f1e7595b744 100644 --- a/addons/microdagr/ACE_Settings.hpp +++ b/addons/microdagr/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(MapDataAvailable) { + class GVAR(mapDataAvailable) { displayName = CSTRING(MapDataAvailable_DisplayName); description = CSTRING(MapDataAvailable_Description); value = 2; diff --git a/addons/overheating/ACE_Settings.hpp b/addons/overheating/ACE_Settings.hpp index abf08c9874f..fc3237da0f7 100644 --- a/addons/overheating/ACE_Settings.hpp +++ b/addons/overheating/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(DisplayTextOnJam) { + class GVAR(displayTextOnJam) { typeName = "BOOL"; isClientSettable = 1; value = 1; diff --git a/addons/reload/ACE_Settings.hpp b/addons/reload/ACE_Settings.hpp index 7b605274498..72d26b46cf5 100644 --- a/addons/reload/ACE_Settings.hpp +++ b/addons/reload/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(DisplayText) { + class GVAR(displayText) { typeName = "BOOL"; isClientSettable = 1; value = 1; diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index 9ee40529e75..46228e2e44e 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -1,5 +1,5 @@ class ACE_Settings { - class GVAR(DisplayTextOnRepair) { + class GVAR(displayTextOnRepair) { displayName = CSTRING(SettingDisplayTextName); description = CSTRING(SettingDisplayTextDesc); typeName = "BOOL"; @@ -7,7 +7,7 @@ class ACE_Settings { value = 1; category = ECSTRING(OptionsMenu,CategoryLogistics); }; - class GVAR(engineerSetting_Repair) { + class GVAR(engineerSetting_repair) { displayName = CSTRING(enginerSetting_Repair_name); description = CSTRING(enginerSetting_Repair_description); typeName = "SCALAR"; @@ -15,7 +15,7 @@ class ACE_Settings { values[] = {CSTRING(engineerSetting_anyone), CSTRING(engineerSetting_EngineerOnly), CSTRING(engineerSetting_RepairSpecialistOnly)}; category = ECSTRING(OptionsMenu,CategoryLogistics); }; - class GVAR(engineerSetting_Wheel) { + class GVAR(engineerSetting_wheel) { displayName = CSTRING(enginerSetting_Wheel_name); description = CSTRING(enginerSetting_Wheel_description); typeName = "SCALAR"; @@ -30,14 +30,14 @@ class ACE_Settings { value = 0.6; category = ECSTRING(OptionsMenu,CategoryLogistics); }; - class GVAR(repairDamageThreshold_Engineer) { + class GVAR(repairDamageThreshold_engineer) { displayName = CSTRING(repairDamageThreshold_Engineer_name); description = CSTRING(repairDamageThreshold_Engineer_description); typeName = "SCALAR"; value = 0.4; category = ECSTRING(OptionsMenu,CategoryLogistics); }; - class GVAR(consumeItem_ToolKit) { + class GVAR(consumeItem_toolKit) { displayName = CSTRING(consumeItem_ToolKit_name); description = CSTRING(consumeItem_ToolKit_description); typeName = "SCALAR"; diff --git a/addons/respawn/ACE_Settings.hpp b/addons/respawn/ACE_Settings.hpp index 86083d6d076..7f0c4f9d96c 100644 --- a/addons/respawn/ACE_Settings.hpp +++ b/addons/respawn/ACE_Settings.hpp @@ -1,18 +1,18 @@ class ACE_Settings { - class GVAR(SavePreDeathGear) { + class GVAR(savePreDeathGear) { displayName = CSTRING(SavePreDeathGear_DisplayName); description = CSTRING(SavePreDeathGear_Description); value = 0; typeName = "BOOL"; }; - class GVAR(RemoveDeadBodiesDisconnected) { + class GVAR(removeDeadBodiesDisconnected) { displayName = CSTRING(RemoveDeadBodiesDisconnected_DisplayName); description = CSTRING(RemoveDeadBodiesDisconnected_Description); value = 1; typeName = "BOOL"; }; - class GVAR(BodyRemoveTimer) { + class GVAR(bodyRemoveTimer) { value = 0; typeName = "SCALAR"; }; diff --git a/addons/switchunits/ACE_Settings.hpp b/addons/switchunits/ACE_Settings.hpp index fe15e63e87f..e3fc653cb2b 100644 --- a/addons/switchunits/ACE_Settings.hpp +++ b/addons/switchunits/ACE_Settings.hpp @@ -1,39 +1,39 @@ class ACE_Settings { - class GVAR(EnableSwitchUnits) { + class GVAR(enableSwitchUnits) { value = 0; typeName = "BOOL"; }; - class GVAR(SwitchToWest) { + class GVAR(switchToWest) { displayName = CSTRING(SwitchToWest_DisplayName); description = CSTRING(SwitchToWest_Description); value = 0; typeName = "BOOL"; }; - class GVAR(SwitchToEast) { + class GVAR(switchToEast) { displayName = CSTRING(SwitchToEast_DisplayName); description = CSTRING(SwitchToEast_Description); value = 0; typeName = "BOOL"; }; - class GVAR(SwitchToIndependent) { + class GVAR(switchToIndependent) { displayName = CSTRING(SwitchToIndependent_DisplayName); description = CSTRING(SwitchToIndependent_Description); value = 0; typeName = "BOOL"; }; - class GVAR(SwitchToCivilian) { + class GVAR(switchToCivilian) { displayName = CSTRING(SwitchToCivilian_DisplayName); description = CSTRING(SwitchToCivilian_Description); value = 0; typeName = "BOOL"; }; - class GVAR(EnableSafeZone) { + class GVAR(enableSafeZone) { displayName = CSTRING(EnableSafeZone_DisplayName); description = CSTRING(EnableSafeZone_Description); value = 1; typeName = "BOOL"; }; - class GVAR(SafeZoneRadius) { + class GVAR(safeZoneRadius) { displayName = CSTRING(SafeZoneRadius_DisplayName); description = CSTRING(SafeZoneRadius_Description); value = 100; diff --git a/addons/vehiclelock/ACE_Settings.hpp b/addons/vehiclelock/ACE_Settings.hpp index fabc8b94ad8..f8a431410fa 100644 --- a/addons/vehiclelock/ACE_Settings.hpp +++ b/addons/vehiclelock/ACE_Settings.hpp @@ -1,17 +1,17 @@ class ACE_Settings { - class GVAR(DefaultLockpickStrength) { + class GVAR(defaultLockpickStrength) { displayName = CSTRING(DefaultLockpickStrength_DisplayName); description = CSTRING(DefaultLockpickStrength_Description); value = 10; typeName = "SCALAR"; }; - class GVAR(LockVehicleInventory) { + class GVAR(lockVehicleInventory) { displayName = CSTRING(LockVehicleInventory_DisplayName); description = CSTRING(LockVehicleInventory_Description); value = 0; typeName = "BOOL"; }; - class GVAR(VehicleStartingLockState) { + class GVAR(vehicleStartingLockState) { displayName = CSTRING(VehicleStartingLockState_DisplayName); description = CSTRING(VehicleStartingLockState_Description); value = -1; diff --git a/addons/weaponselect/ACE_Settings.hpp b/addons/weaponselect/ACE_Settings.hpp index 22144512479..5b58659f6e5 100644 --- a/addons/weaponselect/ACE_Settings.hpp +++ b/addons/weaponselect/ACE_Settings.hpp @@ -1,6 +1,6 @@ class ACE_Settings { - class GVAR(DisplayText) { + class GVAR(displayText) { typeName = "BOOL"; isClientSettable = 1; value = 1; From 4a8e727ba5ac8e2e77d7258418019c3e94810084 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 7 May 2016 22:17:21 +0200 Subject: [PATCH 117/268] end spectator by global mission end event from server (#3659) * end spectator by global mission end event from server * add ; --- addons/spectator/XEH_postInit.sqf | 12 +++++++++++- addons/spectator/functions/fnc_setSpectator.sqf | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 4b1f6532233..43c812d1a29 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -16,4 +16,14 @@ if (isServer) then { }; // Should prevent unending spectator on mission end -addMissionEventHandler ["Ended",{ [QGVAR(EndMission)] call FUNC(interrupt) }]; +if (isServer) then { + addMissionEventHandler ["Ended", { + [QGVAR(endMission), []] call EFUNC(common,globalEvent); + }]; +}; + +[QGVAR(endMission), { + if (GVAR(isSet)) then { + [false] call FUNC(setSpectator); + }; +}] call EFUNC(common,addEventHandler); diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index ce9428cea49..1f010962b5d 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -92,7 +92,7 @@ if (_set) then { if (_this) then { _display displayAddEventHandler ["KeyDown", { if (_this select 1 == 1) then { - [false] call ace_spectator_fnc_setSpectator; + [false] call FUNC(setSpectator); true }; }]; From fd8167b7e7471b34d9e577575cf4a792b1d134f6 Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Sat, 7 May 2016 22:20:50 +0200 Subject: [PATCH 118/268] AB - correct mildot reticle LRPS/AMS/KHS (#3664) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * correct mildot reticle LRPS/AMS/KHS correct mildot reticle LRPS/AMS/KHS * replace 1 tab with 1 space replace 1 tab with 1 space * fix tab * ace_scope : correct mildot reticle for LRPS and SOS 2D/PiP SFP scopes ace_scope : correct mildot reticle for LRPS and SOS 2D/PiP SFP scopes, same opticszoommax/min for each scopes : 1µ (1meter for 1000meter) / 4µ (4meter for 1000meter), LRPS : variable magnification / SOS : 2 magnifications --- addons/optics/CfgWeapons.hpp | 12 ++++++--- addons/scopes/CfgWeapons.hpp | 52 +++++++++++++++++++++++------------- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp index 1be66d3aa25..2089a1dc808 100644 --- a/addons/optics/CfgWeapons.hpp +++ b/addons/optics/CfgWeapons.hpp @@ -228,6 +228,12 @@ class CfgWeapons { class OpticsModes: OpticsModes { class Snip: Snip { modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)),QUOTE(PATHTOF(models\ace_optics_reticle90.p3d))}; + useModelOptics = 1; + opticsZoomInit = 0.0116; + opticsZoomMax = 0.0464; + opticsZoomMin = 0.0116; + discreteFOV[] = {0.0464, 0.0116}; + opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1","ACE_OpticsRadBlur1"}; opticsDisablePeripherialVision = 0; }; class Iron: Iron {}; @@ -275,9 +281,9 @@ class CfgWeapons { class Snip: Snip { modelOptics[] = {QUOTE(PATHTOF(models\ace_optics_reticle90.p3d)),QUOTE(PATHTOF(models\ace_optics_reticle90.p3d))}; useModelOptics = 1; - opticsZoomInit = 0.01234; - opticsZoomMax = 0.04673; - opticsZoomMin = 0.01234; + opticsZoomInit = 0.0116; + opticsZoomMax = 0.0464; + opticsZoomMin = 0.0116; discreteFOV[] = {}; opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1","ACE_OpticsRadBlur1"}; opticsDisablePeripherialVision = 0; diff --git a/addons/scopes/CfgWeapons.hpp b/addons/scopes/CfgWeapons.hpp index eb1d8400a29..cd87167f22d 100644 --- a/addons/scopes/CfgWeapons.hpp +++ b/addons/scopes/CfgWeapons.hpp @@ -3,14 +3,18 @@ class CfgWeapons { class InventoryOpticsItem_Base_F; class optic_LRPS : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 30}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class Snip { - discreteDistance[] = { 100 }; + opticsZoomMin = 0.011; + opticsZoomMax = 0.045; + opticsZoomInit = 0.045; + discretefov[] = {0.045, 0.011}; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; @@ -18,14 +22,14 @@ class CfgWeapons { }; class optic_SOS : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 30}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class Snip { - discreteDistance[] = { 100 }; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; @@ -33,14 +37,14 @@ class CfgWeapons { }; class optic_DMS : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 20 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 20}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class Snip { - discreteDistance[] = { 100 }; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; @@ -48,14 +52,18 @@ class CfgWeapons { }; class optic_AMS_base : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 30}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class AMS { - discreteDistance[] = { 100 }; + opticsZoomMin = 0.0285; + opticsZoomMax = 0.085; + opticsZoomInit = 0.085; + discretefov[] = {0.085, 0.0285}; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; @@ -63,14 +71,18 @@ class CfgWeapons { }; class optic_KHS_base : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 30}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class KHS { - discreteDistance[] = { 100 }; + opticsZoomMin = 0.026; + opticsZoomMax = 0.06; + opticsZoomInit = 0.06; + discretefov[] = {0.06, 0.026}; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; @@ -78,14 +90,18 @@ class CfgWeapons { }; class optic_KHS_old : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_Vertical[] = {-4, 30}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class KHS { - discreteDistance[] = { 100 }; + opticsZoomMin = 0.026; + opticsZoomMax = 0.06; + opticsZoomInit = 0.06; + discretefov[] = {0.06, 0.026}; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; From 8bd4afed6bbfdc7e3faa837967a733f2ee36b2e4 Mon Sep 17 00:00:00 2001 From: Rebel Date: Sat, 7 May 2016 23:23:38 +0300 Subject: [PATCH 119/268] Drag and carry icons. (#3676) --- addons/dragging/UI/icons/box_carry.paa | Bin 0 -> 5625 bytes addons/dragging/UI/icons/box_drag.paa | Bin 0 -> 5625 bytes addons/dragging/UI/icons/person_carry.paa | Bin 0 -> 5625 bytes addons/dragging/UI/icons/person_drag.paa | Bin 0 -> 5625 bytes addons/dragging/functions/fnc_setCarryable.sqf | 4 +++- addons/dragging/functions/fnc_setDraggable.sqf | 4 +++- 6 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 addons/dragging/UI/icons/box_carry.paa create mode 100644 addons/dragging/UI/icons/box_drag.paa create mode 100644 addons/dragging/UI/icons/person_carry.paa create mode 100644 addons/dragging/UI/icons/person_drag.paa diff --git a/addons/dragging/UI/icons/box_carry.paa b/addons/dragging/UI/icons/box_carry.paa new file mode 100644 index 0000000000000000000000000000000000000000..5e9c83057c8df68f73fdc54dfbecdc4292570eed GIT binary patch literal 5625 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 literal 0 HcmV?d00001 diff --git a/addons/dragging/functions/fnc_setCarryable.sqf b/addons/dragging/functions/fnc_setCarryable.sqf index 9e15e424467..0253c6ed4b5 100644 --- a/addons/dragging/functions/fnc_setCarryable.sqf +++ b/addons/dragging/functions/fnc_setCarryable.sqf @@ -43,7 +43,9 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses_carry) = _initializedClasses; -private _carryAction = [QGVAR(carry), localize LSTRING(Carry), "", {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); +private _icon = [QUOTE(PATHTOF(UI\icons\box_carry.paa)), QUOTE(PATHTOF(UI\icons\person_carry.paa))] select (_object isKindOf "Man"); + +private _carryAction = [QGVAR(carry), localize LSTRING(Carry), _icon, {[_player, _target] call FUNC(startCarry)}, {[_player, _target] call FUNC(canCarry)}] call EFUNC(interact_menu,createAction); private _dropAction = [QGVAR(drop_carry), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject_carry)}, {[_player, _target] call FUNC(canDrop_carry)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _carryAction] call EFUNC(interact_menu,addActionToClass); diff --git a/addons/dragging/functions/fnc_setDraggable.sqf b/addons/dragging/functions/fnc_setDraggable.sqf index 0adcb624d89..4c4d11ecf67 100644 --- a/addons/dragging/functions/fnc_setDraggable.sqf +++ b/addons/dragging/functions/fnc_setDraggable.sqf @@ -44,7 +44,9 @@ if (_type in _initializedClasses) exitWith {}; _initializedClasses pushBack _type; GVAR(initializedClasses) = _initializedClasses; -private _dragAction = [QGVAR(drag), localize LSTRING(Drag), "", {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); +private _icon = [QUOTE(PATHTOF(UI\icons\box_drag.paa)), QUOTE(PATHTOF(UI\icons\person_drag.paa))] select (_object isKindOf "Man"); + +private _dragAction = [QGVAR(drag), localize LSTRING(Drag), _icon, {[_player, _target] call FUNC(startDrag)}, {[_player, _target] call FUNC(canDrag)}] call EFUNC(interact_menu,createAction); private _dropAction = [QGVAR(drop), localize LSTRING(Drop), "", {[_player, _target] call FUNC(dropObject)}, {[_player, _target] call FUNC(canDrop)}] call EFUNC(interact_menu,createAction); [_type, 0, ["ACE_MainActions"], _dragAction] call EFUNC(interact_menu,addActionToClass); From 174262904534eabef674e76cead1fa0eb1ee7c55 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 7 May 2016 15:26:02 -0500 Subject: [PATCH 120/268] Add NonSteerable Reserve Parachute (#3689) * Add NonSteerable Reserve Parachute Close #3364 * Use params --- addons/parachute/CfgVehicles.hpp | 7 ++++++- addons/parachute/functions/fnc_storeParachute.sqf | 13 +++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index ff9196ca605..4127bad166c 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -83,7 +83,8 @@ class CfgVehicles { //model = "\A3\Weapons_F\Ammoboxes\Bags\Backpack_Parachute"; // @todo // backpackSimulation = "ParachuteNonSteerable"; //ParachuteSteerable //Bis broke this in 1.40 ParachuteClass = "NonSteerable_Parachute_F"; - MACRO_HASRESERVE + ace_hasReserveParachute = 1; + ace_reserveParachute = "ACE_NonSteerableReserveParachute"; maximumLoad = 0; mass = 100; }; @@ -97,6 +98,10 @@ class CfgVehicles { ace_reserveParachute = ""; ace_hasReserveParachute = 0; }; + + class ACE_NonSteerableReserveParachute: ACE_ReserveParachute { + ParachuteClass = "NonSteerable_Parachute_F"; + }; class B_Soldier_05_f; class B_Pilot_F: B_Soldier_05_f {backpack = "ACE_NonSteerableParachute";}; class I_Soldier_04_F; class I_pilot_F: I_Soldier_04_F {backpack = "ACE_NonSteerableParachute";}; diff --git a/addons/parachute/functions/fnc_storeParachute.sqf b/addons/parachute/functions/fnc_storeParachute.sqf index 42ad18b3047..55e887f3e62 100644 --- a/addons/parachute/functions/fnc_storeParachute.sqf +++ b/addons/parachute/functions/fnc_storeParachute.sqf @@ -15,16 +15,17 @@ * Public: No */ #include "script_component.hpp" -private ["_unit","_backpack"]; -_unit = _this select 0; -_backpack = (_this select 1) select 6; -if ((vehicle _unit) isKindOf "ParachuteBase" && backpack _unit == "" && !(_unit getVariable [QGVAR(chuteIsCut),false]) && (_unit getVariable [QGVAR(hasReserve),false])) then { + +params ["_unit", "_gear"]; +private _backpack = _gear select 6; + +if ((vehicle _unit) isKindOf "ParachuteBase" && {backpack _unit == ""} && {!(_unit getVariable [QGVAR(chuteIsCut),false])} && {_unit getVariable [QGVAR(hasReserve),false]}) then { _unit addBackpackGlobal (_unit getVariable[QGVAR(backpackClass),"ACE_NonSteerableParachute"]); } else { - if ([false,true] select (getNumber(configFile >> "CfgVehicles" >> _backpack >> "ace_hasReserveParachute"))) then { + if ((getNumber(configFile >> "CfgVehicles" >> _backpack >> "ace_hasReserveParachute")) == 1) then { _unit setVariable[QGVAR(backpackClass),getText(configFile >> "CfgVehicles" >> _backpack >> "ace_reserveParachute"),true]; }; - if (!(_unit getVariable [QGVAR(chuteIsCut),false]) && !(animationState _unit == 'para_pilot')) then { + if (!(_unit getVariable [QGVAR(chuteIsCut),false]) && {!(animationState _unit == 'para_pilot')}) then { _unit setVariable [QGVAR(hasReserve),[false,true] select (getNumber(configFile >> "CfgVehicles" >> _backpack >> "ace_hasReserveParachute")),true]; }; }; From 82f8eb758c68880257c3a2028328e8e2b434b3a7 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 7 May 2016 22:27:33 +0200 Subject: [PATCH 121/268] Removed remaining usage of player (#3710) --- addons/common/functions/fnc_setHearingCapability.sqf | 2 +- addons/rearm/functions/fnc_makeDummy.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_setHearingCapability.sqf b/addons/common/functions/fnc_setHearingCapability.sqf index 7bd375a58b9..2366081ec1d 100644 --- a/addons/common/functions/fnc_setHearingCapability.sqf +++ b/addons/common/functions/fnc_setHearingCapability.sqf @@ -54,5 +54,5 @@ private _lowestVolume = 1; 0 fadeMusic _lowestVolume; // Set Radio mod variables. -player setVariable ["tf_globalVolume", _lowestVolume]; +ACE_player setVariable ["tf_globalVolume", _lowestVolume]; if (!isNil "acre_api_fnc_setGlobalVolume") then { [_lowestVolume^0.33] call acre_api_fnc_setGlobalVolume; }; diff --git a/addons/rearm/functions/fnc_makeDummy.sqf b/addons/rearm/functions/fnc_makeDummy.sqf index 390ff658e0b..5c19f8f12dc 100644 --- a/addons/rearm/functions/fnc_makeDummy.sqf +++ b/addons/rearm/functions/fnc_makeDummy.sqf @@ -20,4 +20,4 @@ params [["_obj", objNull, [objNull]], ["_dirAndUp", [[1,0,0],[0,0,1]], [[]]]]; _obj setVectorDirAndUp _dirAndUp; _obj allowDamage false; -player disableCollisionWith _obj; +ACE_player disableCollisionWith _obj; From 4eb2ecb0b617befd762c49ca1e4f32190a3d6025 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 7 May 2016 22:35:18 +0200 Subject: [PATCH 122/268] Fixed getting stuck on rope whilst fastroping (#3734) --- addons/fastroping/functions/fnc_fastRope.sqf | 2 +- .../fastroping/functions/fnc_fastRopeServerPFH.sqf | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf index bf2730efc70..adeb5363620 100644 --- a/addons/fastroping/functions/fnc_fastRope.sqf +++ b/addons/fastroping/functions/fnc_fastRope.sqf @@ -35,6 +35,6 @@ _deployedRopes set [_usableRopeIndex, _usableRope]; _vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true]; //Start server PFH asap -[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex]] call EFUNC(common,serverEvent); +[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call EFUNC(common,serverEvent); moveOut _unit; [FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf index ed78d435921..2ebffe680ef 100644 --- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" params ["_arguments", "_pfhHandle"]; -_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"]; +_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex", "_hasBeenAttached"]; _rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"]; private ["_vectorUp", "_vectorDir", "_origin"]; @@ -37,10 +37,15 @@ if (getMass _dummy != 80) exitWith { ropeUnwind [_ropeBottom, 6, 0.5]; }; -//Check if rope broke and unit is falling +//Check if the player has been attached to the rope yet +if (!_hasBeenAttached && {!(isNull attachedTo _unit)}) then { + _hasBeenAttached = true; + _arguments set [4, true]; +}; + +//Exit when the unit has been detached and is falling (rope broke, heli flew too fast, etc.) //Make sure this isn't executed before the unit is actually fastroping -//Note: Stretching ropes does not change ropeLength -if ((isNull attachedTo _unit) && {ropeLength _ropeTop > 0.5}) exitWith { +if (_hasBeenAttached && {isNull attachedTo _unit}) exitWith { [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; From 9f6661f4db00ecd7586c3bfb118db5ec3274412b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 7 May 2016 15:35:39 -0500 Subject: [PATCH 123/268] Make 40mm Grenades Frag (#3679) * Make 40mm Grenades Frag * Just use existing force cfg instead of adding new Add RHS compat entries --- addons/frag/CfgAmmo.hpp | 2 + addons/frag/XEH_PREP.hpp | 1 + addons/frag/functions/fnc_dev_debugAmmo.sqf | 62 +++++++++++++++++++++ optionals/compat_rhs_afrf3/CfgAmmo.hpp | 16 ++++++ 4 files changed, 81 insertions(+) create mode 100644 addons/frag/functions/fnc_dev_debugAmmo.sqf diff --git a/addons/frag/CfgAmmo.hpp b/addons/frag/CfgAmmo.hpp index 916949bab2f..cd6cc64cfdc 100644 --- a/addons/frag/CfgAmmo.hpp +++ b/addons/frag/CfgAmmo.hpp @@ -85,6 +85,7 @@ class CfgAmmo { class G_40mm_HE: GrenadeBase { // Source: http://www.inetres.com/gp/military/infantry/grenade/40mm_ammo.html#M441 GVAR(enabled) = 1; + GVAR(force) = 1; GVAR(classes)[] = {"ACE_frag_tiny_HD"}; GVAR(metal) = 200; @@ -109,6 +110,7 @@ class CfgAmmo { }; class ACE_G_40mm_Practice: ACE_G_40mm_HE { GVAR(skip) = 1; + GVAR(force) = 0; }; class ACE_G40mm_HE_VOG25P: G_40mm_HE { GVAR(skip) = 0; diff --git a/addons/frag/XEH_PREP.hpp b/addons/frag/XEH_PREP.hpp index 926cbaab0cb..2fed1630f25 100644 --- a/addons/frag/XEH_PREP.hpp +++ b/addons/frag/XEH_PREP.hpp @@ -1,3 +1,4 @@ +PREP(dev_debugAmmo); PREP(doSpall); PREP(fired); diff --git a/addons/frag/functions/fnc_dev_debugAmmo.sqf b/addons/frag/functions/fnc_dev_debugAmmo.sqf new file mode 100644 index 00000000000..13236396214 --- /dev/null +++ b/addons/frag/functions/fnc_dev_debugAmmo.sqf @@ -0,0 +1,62 @@ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +params [["_debugMissing", true, [false]], ["_debugForce", false, [false]], ["_debugNonFrag", false, [false]]]; + +diag_log text format ["~~~~~~~~~~~~~Start [%1]~~~~~~~~~~~~~", _this]; + +private _allMagsConfigs = configProperties [configFile >> "CfgMagazines", "isClass _x", true]; +private _processedCfgAmmos = []; + +{ + private _ammo = toLower getText (_x >> "ammo"); + if ((_ammo != "") && {!(_ammo in _processedCfgAmmos)}) then { + _processedCfgAmmos pushBack _ammo; + + //Ignore mines/bombs + if (_ammo isKindOf "TimeBombCore") exitWith {}; + + _ammoConfig = configFile >> "CfgAmmo" >> _ammo; + + //Read configs and test if it would actually cause a frag, using same logic as FUNC(pfhRound) + private _skip = getNumber (_ammoConfig >> QGVAR(skip)); + private _explosive = getNumber (_ammoConfig >> "explosive"); + private _indirectRange = getNumber (_ammoConfig >> "indirectHitRange"); + private _force = getNumber (_ammoConfig >> QGVAR(force)); + private _fragPower = getNumber(_ammoConfig >> "indirecthit")*(sqrt((getNumber (_ammoConfig >> "indirectHitRange")))); + + private _shouldAdd = (_skip == 0) && {(_force == 1) || {_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}}}; + + if (_shouldAdd) then { + if (_debugForce && {((getNumber(_ammoConfig >> "hit")) < 5) || {_fragPower < 10}}) then { + diag_log text format ["Ammo [%1] from Mag [%2] - Weak but will still frag!",_ammo,configName _x]; + diag_log text format [" - _force=%1,_fragPower=%2",_force,_fragPower]; + }; + + _warn = false; + + _fragTypes = getArray (_ammoConfig >> "ACE_frag_CLASSES"); + if(_fragTypes isEqualTo []) then {_warn = true;}; + _c = getNumber(_ammoConfig >> "ACE_frag_CHARGE"); + if(_c == 0) then {_warn = true;}; + _m = getNumber(_ammoConfig >> "ACE_frag_METAL"); + if(_m == 0) then {_warn = true;}; + _k = getNumber(_ammoConfig >> "ACE_frag_GURNEY_K"); + if(_k == 0) then {_warn = true;}; + _gC = getNumber(_ammoConfig >> "ACE_frag_GURNEY_C"); + if(_gC == 0) then { _warn = true;}; + + if(_debugMissing && _warn) then { + diag_log text format ["Ammo [%1] from Mag [%2] MISSING frag configs:",_ammo,configName _x]; + diag_log text format [" - _c=%1,_m=%2,_k=%3,_gC=%4,_fragTypes=%5",_c,_m,_k,_gC,_fragTypes]; + }; + } else { + if (_debugNonFrag && {isArray (_ammoConfig >> "ACE_frag_CLASSES")}) then { + diag_log text format ["Ammo [%1] from Mag [%2] has frag configs but will NOT frag:",_ammo,configName _x]; + diag_log text format ["- skip=%1,explosive=%2,indirectHitRange=%3,force=%4,fragPower=%5",_skip,_explosive,_indirectRange,_force,_fragPower]; + }; + }; + }; +} forEach _allMagsConfigs; + +diag_log text format ["~~~~~~~~~~~~~End [%1-%2]~~~~~~~~~~~~~", count _allMagsConfigs, count _processedCfgAmmos]; diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index ead78866c11..3a00fdea688 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -202,4 +202,20 @@ class CfgAmmo { ace_frag_skip = 1; ace_frag_force = 0; }; + + class G_40mm_HE; + class rhs_g_vog25: G_40mm_HE {}; + class rhs_g_vg40tb: rhs_g_vog25 { //Thermobaric + ace_frag_force = 0; + }; + class rhs_g_vg40sz: rhs_g_vog25 { //Flashbang + ace_frag_force = 0; + }; + class rhs_GDM40: rhs_g_vog25 { //Smoke + ace_frag_force = 0; + }; + class rhs_g_vg40md_white: rhs_g_vog25 { //Smoke + ace_frag_force = 0; + }; + }; From d79cbe0844b5368c7de0cfb80a0502b5f863643a Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Sat, 7 May 2016 22:37:58 +0200 Subject: [PATCH 124/268] Getmgrsdata update2 (#3736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * correct mildot reticle LRPS/AMS/KHS correct mildot reticle LRPS/AMS/KHS * replace 1 tab with 1 space replace 1 tab with 1 space * fix tab * ace_scope : correct mildot reticle for LRPS and SOS 2D/PiP SFP scopes ace_scope : correct mildot reticle for LRPS and SOS 2D/PiP SFP scopes, same opticszoommax/min for each scopes : 1µ (1meter for 1000meter) / 4µ (4meter for 1000meter), LRPS : variable magnification / SOS : 2 magnifications * fnc_getMGRSdata.sqf update2 fnc_getMGRSdata.sqf update2 * fnc_getMGRSdata.sqf update2 add new maps, in alphabetic order now --- addons/common/functions/fnc_getMGRSdata.sqf | 79 +++++++++++++++------ 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index 8da838848a5..04c063ac796 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -23,38 +23,71 @@ private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); _map = toLower _map; -if (_map in ["chernarus", "chernarus_summer", "chernarus_winter", "bootcamp_acr", "woodland_acr", "utes"]) then { _lat = 50; _altitude = 0; }; -if (_map in ["altis", "stratis"]) then { _lat = 40; _altitude = 0; }; -if (_map in ["takistan", "zargabad", "mountains_acr"]) then { _lat = 35; _altitude = 2000; }; -if (_map in ["shapur_baf", "provingGrounds_pmc"]) then { _lat = 35; _altitude = 100; }; -if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; }; -if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; }; -if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; -if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; -if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; +if (_map in ["abbottabad", "abbottabad1"]) then { _lat = 34; _altitude = 1256; }; +if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; }; +if (_map in ["af_kandahar_province"]) then { _lat = 42; _altitude = 0; }; +if (_map in ["altis"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["angel"]) then { _lat = 38; _altitude = 0; }; +if (_map in ["anim_helvantis_v2"]) then { _lat = 50; _altitude = 0; }; +if (_map in ["australia"]) then { _lat = -25; _altitude = 0; }; +if (_map in ["bootcamp_acr"]) then { _lat = 50; _altitude = 0; }; if (_map in ["bornholm"]) then { _lat = 55; _altitude = 0; }; -if (_map in ["bozcaada", "imrali", "imralispring"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["bozcaada"]) then { _lat = 40; _altitude = 0; }; if (_map in ["caribou"]) then { _lat = 68; _altitude = 0; }; -if (_map in ["namalsk"]) then { _lat = 65; _altitude = 0; }; -if (_map in ["mcn_aliabad"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) then { _lat = 50; _altitude = 0; }; if (_map in ["clafghan"]) then { _lat = 34; _altitude = 640; }; -if (_map in ["sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; }; -if (_map in ["sara", "sara_dbe1", "saralite", "intro", "desert_e", "porto"]) then { _lat = 40; _altitude = 0; }; -if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; }; -if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; }; -if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; }; -if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; }; +if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; +if (_map in ["desert_e"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["esseker"]) then { _lat = 43; _altitude = 2000; }; +if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; }; +if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; }; +if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; }; +if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 0; }; +if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["intro"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; }; +if (_map in ["jacobi"]) then { _lat = -19; _altitude = 0; }; +if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; }; if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; }; -if (_map in ["angel"]) then { _lat = 38; _altitude = 0; }; -if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; }; -if (_map in ["napf"]) then { _lat = 47; _altitude = 0; }; +if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; }; +if (_map in ["lost", "lostw"]) then { _lat = 60; _altitude = 0; }; +if (_map in ["mcn_aliabad"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["malvinas"]) then { _lat = -52; _altitude = 0; }; +if (_map in ["namalsk"]) then { _lat = 65; _altitude = 0; }; if (_map in ["mef_alaska"]) then { _lat = 60; _altitude = 5; }; -if (_map in ["australia"]) then { _lat = -25; _altitude = 0; }; +if (_map in ["mountains_acr"]) then { _lat = 35; _altitude = 2000; }; +if (_map in ["napf", "napfwinter"]) then { _lat = 47; _altitude = 0; }; +if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; }; if (_map in ["pja301"]) then { _lat = 42; _altitude = 0; }; if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; if (_map in ["pja306"]) then { _lat = 35; _altitude = 300; }; if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; -if (_map in ["pja308", "pja310"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; }; +if (_map in ["porto"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["provingGrounds_pmc"]) then { _lat = 35; _altitude = 100; }; +if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; }; +if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["sb3"]) then { _lat = 53; _altitude = 0; }; +if (_map in ["shapur_baf"]) then { _lat = 35; _altitude = 100; }; +if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; +if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; +if (_map in ["stratis"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["sugarlake"]) then { _lat = 29; _altitude = 0; }; +if (_map in ["takistan"]) then { _lat = 35; _altitude = 2000; }; +if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; }; +if (_map in ["tilos"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["utes"]) then { _lat = 50; _altitude = 0; }; +if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; +if (_map in ["wake"]) then { _lat = 19; _altitude = 0; }; +if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; +if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 0; }; +if (_map in ["woodland_acr"]) then { _lat = 50; _altitude = 0; }; +if (_map in ["xcam_prototype"]) then { _lat = 35; _altitude = 0; }; +if (_map in ["zargabad"]) then { _lat = 35; _altitude = 2000; }; private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM; private _easting = _UTM select 0; From 2a5ec421487f08faf9e47fdfa7c98ff609d168f1 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 7 May 2016 16:04:27 -0500 Subject: [PATCH 125/268] Repair - Improve wheel detection for RHS (#3760) * Repair - Improve backup wheel detection Fix #3759 * Cleanup --- addons/repair/functions/fnc_getWheelHitPointsWithSelections.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/repair/functions/fnc_getWheelHitPointsWithSelections.sqf b/addons/repair/functions/fnc_getWheelHitPointsWithSelections.sqf index 2611d10b384..2ed50c5d0e3 100644 --- a/addons/repair/functions/fnc_getWheelHitPointsWithSelections.sqf +++ b/addons/repair/functions/fnc_getWheelHitPointsWithSelections.sqf @@ -70,6 +70,8 @@ _wheelHitPointSelections = []; _bestIndex = -1; { if (_x != "") then { + //Filter out things that definitly aren't wheeels (#3759) + if ((toLower (_hitPoints select _forEachIndex)) in ["hitengine", "hitfuel", "hitbody"]) exitWith {TRACE_1("filter",_x)}; _xPos = _vehicle selectionPosition _x; if (_xPos isEqualTo [0,0,0]) exitWith {}; _xDist = _wheelCenterPos distance _xPos; From 7d063d099509924c90e1705f08699ca5acbcf612 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 7 May 2016 23:26:44 +0200 Subject: [PATCH 126/268] Add downloads count shield --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ead78c57fd..37b5f2a626a 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,15 @@

- + ACE3 Version ACE3 Issues + + ACE3 Downloads + BIF Thread From a0bd521a4058f9717ee827f3948a969e77c2434c Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 7 May 2016 23:48:31 +0200 Subject: [PATCH 127/268] Remove difficulties component --- addons/difficulties/$PBOPREFIX$ | 1 - addons/difficulties/CfgDifficulties.hpp | 33 ------------------------ addons/difficulties/README.md | 12 --------- addons/difficulties/config.cpp | 15 ----------- addons/difficulties/script_component.hpp | 17 ------------ 5 files changed, 78 deletions(-) delete mode 100644 addons/difficulties/$PBOPREFIX$ delete mode 100644 addons/difficulties/CfgDifficulties.hpp delete mode 100644 addons/difficulties/README.md delete mode 100644 addons/difficulties/config.cpp delete mode 100644 addons/difficulties/script_component.hpp diff --git a/addons/difficulties/$PBOPREFIX$ b/addons/difficulties/$PBOPREFIX$ deleted file mode 100644 index 6280fc47319..00000000000 --- a/addons/difficulties/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\difficulties \ No newline at end of file diff --git a/addons/difficulties/CfgDifficulties.hpp b/addons/difficulties/CfgDifficulties.hpp deleted file mode 100644 index a65d31f1a55..00000000000 --- a/addons/difficulties/CfgDifficulties.hpp +++ /dev/null @@ -1,33 +0,0 @@ - -class CfgDifficulties { - class Mercenary { - class Flags { - armor[] = {0,0}; - friendlyTag[] = {0,0}; - enemyTag[] = {0,0}; - mineTag[] = {0,0}; - hud[] = {0,1};//{1,1}; - hudPerm[] = {0,0}; - hudWp[] = {0,0}; - hudWpPerm[] = {0,0}; - autoSpot[] = {0,1}; - map[] = {0,0}; - weaponCursor[] = {0,1};//{1,1}; - autoGuideAT[] = {0,0}; - clockIndicator[] = {0,0}; - 3rdPersonView[] = {0,0}; - autoAim[] = {0,0}; - unlimitedSaves[] = {0,0}; - deathMessages[] = {0,1};//{1,1}; - netStats[] = {0,1};//{1,1}; - vonID[] = {0,1}; - cameraShake[] = {1,0}; - hudGroupInfo[] = {0,0}; - extendetInfoType[] = {0,0}; - roughLanding[] = {0,0}; - windEnabled[] = {1,0}; - autoTrimEnabled[] = {0,0}; - stressDamageEnabled[] = {1,0}; - }; - }; -}; diff --git a/addons/difficulties/README.md b/addons/difficulties/README.md deleted file mode 100644 index 4aefb4570a7..00000000000 --- a/addons/difficulties/README.md +++ /dev/null @@ -1,12 +0,0 @@ -ace_difficulties -================ - -Changes the elite difficulty setting to more closely resemble Arma 2. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [KoffeinFlummi](https://github.com/KoffeinFlummi) -- [commy2](https://github.com/commy2) diff --git a/addons/difficulties/config.cpp b/addons/difficulties/config.cpp deleted file mode 100644 index 34784706a06..00000000000 --- a/addons/difficulties/config.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; - VERSION_CONFIG; - }; -}; - -#include "CfgDifficulties.hpp" diff --git a/addons/difficulties/script_component.hpp b/addons/difficulties/script_component.hpp deleted file mode 100644 index b6f387b02f5..00000000000 --- a/addons/difficulties/script_component.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#define COMPONENT difficulties -#include "\z\ace\addons\main\script_mod.hpp" - -// #define DEBUG_MODE_FULL -// #define DISABLE_COMPILE_CACHE -// #define CBA_DEBUG_SYNCHRONOUS -// #define ENABLE_PERFORMANCE_COUNTERS - -#ifdef DEBUG_ENABLED_DIFFICULTIES - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_ENABLED_DIFFICULTIES - #define DEBUG_SETTINGS DEBUG_ENABLED_DIFFICULTIES -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From b08af3fea627cd4529f5187c31dd4e996b2a212f Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 8 May 2016 13:42:45 +0200 Subject: [PATCH 128/268] Add read auto add objects setting from module --- addons/zeus/functions/fnc_moduleZeusSettings.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/zeus/functions/fnc_moduleZeusSettings.sqf b/addons/zeus/functions/fnc_moduleZeusSettings.sqf index 0b9c0f8dd8c..0f3d720599b 100644 --- a/addons/zeus/functions/fnc_moduleZeusSettings.sqf +++ b/addons/zeus/functions/fnc_moduleZeusSettings.sqf @@ -24,3 +24,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(radioOrdnance), "radioOrdnance"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(revealMines), "revealMines"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(remoteWind), "remoteWind"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(autoAddObjects), "autoAddObjects"] call EFUNC(common,readSettingFromModule); From a526d33aba5d39f1133211bdb2252ad5630fd302 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 8 May 2016 13:44:51 +0200 Subject: [PATCH 129/268] Fix inconsistent name for module setting --- addons/zeus/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 332f13d982d..fbf63930c4d 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -71,7 +71,7 @@ class CfgVehicles { }; }; }; - class GVAR(autoAddObjects) { + class autoAddObjects { displayName = CSTRING(AddObjectsToCurator); description = CSTRING(AddObjectsToCurator_desc); typeName = "BOOL"; From 74fd4b4b5260a63ae53de030e0d3882987a7b244 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 8 May 2016 13:47:35 +0200 Subject: [PATCH 130/268] Add run at settings initialized auto add objects --- addons/zeus/functions/fnc_addObjectToCurator.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/zeus/functions/fnc_addObjectToCurator.sqf b/addons/zeus/functions/fnc_addObjectToCurator.sqf index 085fff09d18..176b55dfdcc 100644 --- a/addons/zeus/functions/fnc_addObjectToCurator.sqf +++ b/addons/zeus/functions/fnc_addObjectToCurator.sqf @@ -15,6 +15,11 @@ params ["_object"]; +if !(EGVAR(common,settingsInitFinished)) exitWith { + TRACE_1("pushing to runAtSettingsInitialized", _this); + EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(addObjectToCurator), _this]; +}; + if (!(_object getVariable [QGVAR(addObject), GVAR(autoAddObjects)])) exitWith {}; [{ From 3f96e11cbb54e45eec9b1f75a7213c8b08fba2ca Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sun, 8 May 2016 18:52:33 +0200 Subject: [PATCH 131/268] Made icons grey --- addons/microdagr/images/button_pushedDown.paa | Bin 11080 -> 11080 bytes addons/microdagr/images/button_pushedUp.paa | Bin 11080 -> 11080 bytes addons/microdagr/images/icon_compass.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_info.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_infoClock.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_infoCompass.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_map.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_menuLaser.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_menuMark.paa | Bin 22016 -> 22016 bytes addons/microdagr/images/icon_menuSettings.paa | Bin 22016 -> 22016 bytes .../microdagr/images/icon_menuWaypoints.paa | Bin 22016 -> 22016 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/microdagr/images/button_pushedDown.paa b/addons/microdagr/images/button_pushedDown.paa index 68e301e7cf2154466f8d359c851c20732c783e48..30ac306c5b1755eea180eba840356b2c604e649a 100644 GIT binary patch literal 11080 zcmeI2J4?hs6orqnMHVb<0+uOdEp__@A*sZ|9kJNLeh~x_3qjJ@T1ozaAPYA3X>Be2 zDO;}hBn*hvEJ8HyxkETiGMPtm=gybM#fC%K9gj!Ywp0SIkL|kKVHn*Zcy3m X`)zv~mBj{@BH-Z)sH)2Tgr$7~Np#ru%2}`RR=DD_++L zaI+8GPJo>Q;E-2$t55++Q?N1>@4$lAy?|k+R6k>y22?!=>i&EF?f+i?!`#)nx7z!k z_kW*%KK}#v1U3Jdf6PDTpY9|v%#`LI^N;z*{1dn*sQJhIWBxJ!43lcQx7z$;{xScU ze**UeHUDfj|LAL|PJd~h|8I@s&+op$|2I`P^`|qDPf10zG_|>zHSzp3{?WSTa2S(Py0HxOPEp`6i8$Y>mQ9N=MMDb5+ z>2x~5E<*)ezO)ZR-`zmJ>*c{u@9(`eEPht=-5&0s0U~f>?95v5l`XfAV?RF;-Y8h>gwoG9QDQOA_yWV zl>Q&2kI+JzUz4=Z)UIioOb6*K2_!{PRMh9m$k(qH{`_P(9LH8)T3LnCrXy{;QZtfz zRz8nRnH1`hpYy#%b+adP?vhtC`(6_WAb+Xis&%Hub<{+>f?-tTcBGg@uK^O-j*H>yRLrN-Q+uG3+b^N#jv$yo^WiC~?NsMi4|W5PSoh zk0n2odC3e5JFP0uv(+?TXOW~NNy2=S&3#^(`T6B+wn%NhwXut(!$3L?rS3=?+xXl{ zl~R0vu;1hk{!=~bq6pFdpL+Bd1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SGjoK&n*g*!KTDl*cx>YS-A@dkX>z2mS-{fI2`Opbpeo2Q1^-VHt3KbisY0 uq;0d)wx^!Ah4!!Vp2*^z{`xa_Y(;85Ca3TkPknV8DY6T7*@w&QXm$g34=?!u diff --git a/addons/microdagr/images/icon_compass.paa b/addons/microdagr/images/icon_compass.paa index 32528e3cd3b23755fbc3b8d4fedce1a86bcf8c4d..4449ce17bc05b25c87932962f6c70783a4886529 100644 GIT binary patch literal 22016 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 I*igy;0JQD~7ytkO diff --git a/addons/microdagr/images/icon_info.paa b/addons/microdagr/images/icon_info.paa index ad7476ba0f72f807c2d487083a323bfbd0427cf0..00247b826757d58220cf2d22b8e79e2b55a42d2a 100644 GIT binary patch literal 22016 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 b!lWE{RPb}1@M@X(OUn-lO%3}8HVOX+=X8~X literal 22016 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 literal 22016 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 diff --git a/addons/microdagr/images/icon_map.paa b/addons/microdagr/images/icon_map.paa index 552717b7ed38af79373d840702f516e8e9905368..7fe52c455b6657bfe0ddbc0b948616c78ead35eb 100644 GIT binary patch literal 22016 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 literal 22016 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 CO?FxU diff --git a/addons/microdagr/images/icon_menuLaser.paa b/addons/microdagr/images/icon_menuLaser.paa index 5e82f6459b8723052dc8670eb910a7ff6d78ef03..43b546b88d6847d218d4f7cc67097e3ecaf55604 100644 GIT binary patch literal 22016 zcmeHPUuYaf7@yr{FD-g)5tbI((uJIsqF^87UP`?U!o^^vSG*Mw#cT2)mfppu*wCc6 zRjvgeywIvo);#zosOduwB$OToYC)(-3r6#xkV<{2Nn0T~de`;$&Ftoqy=!yZyS8UK zL-ulCW_M=3-}h&~nfWG~)6>(Pe5vR4?heM-#KgpAPQTIpD$x!K(LLRJ<3uaCh<+^| z-)G{xjq3!ye3D@7vm|3*Sd7i!YP{IghS~W2@=l3>L_i`S5s(N-1SA3y0f~S_Kq4R! zkO)WwBmxfz0f+UTj3^t~{5i%fOHnw@R723F`GC5W&9(^w4ukMr`70<6gYaGXn<#BE zOgRh}fpD&n-V*J*%I#Cvlu*t-{X_P~d7=}LR*3Am_rr*=Ukgi@_b#oLe+c7y;qNhr z_m5Roj5j=etWxB3l13;?GYEuo7iY`yfv*TprYM>NgQYTm?$>i)ql5+kc6KgC^^NF5 zQ27h}I@!VHX<2$YTR3p-Ql86O(-bVM`^J;Y&TV@BttmcUW@0&AmSzwD{-Y6?IN_;V zmX*#f43q~mTLivZV0{QGf0kwH)r-Qu;eKl6J>cBx+^}^~-XZof{E--M660-#clm5B z0(JEvn%OP%LD6gM5&mHgn_pB<#^{7;>#OQNoG??D($Ct3BUjz~HB{8LC*@6ewM+5q zL$_U?Enk@B^2Yl@@yjnL9U}XVRsInAWt!5yTPt~*f3bC=Vm_w9pR-=q9x*>dSAl82 zef!?eLFMoF4}r(iEI*In`G~2Ccsh}I;PHz?!e2Ma`-Au`Aud5f{K4rk=_k$aMSK`o z-hO@I?J;AqJ!+mcF}}8c9>O<8`~vZ}ef;8&&%5nA1LaFUbN>(bU-SMBst@r0mCNq@ zf>sAae~r&Kxwz#=%MkF(8}qUL8FxOW*O52m=Qta-yYV?oz@MWm@ee-x4yAGbyO}QW zzGs2w7cFB{HdGgZP&Rt-n!DbjAwc)rGmqEqF&|rL{^yS;L+Mh!9QX90`SpjoOvyjq z6@gGLdhp*%`7+s~R^Pq@&A(TYzkeWs^&yw5V12Ta&o@nfYmyF%K=}K?%twU-(}bs@ z=~gJ`+}^bF$@^Y!2`Yd8cx&__SIOUr_pcG}3q=d(;C#l@e7t5N+4k|1pTE^kH!J_u zj?Zf6kIUa(pH&o#=9jAB(xxfbYgfDcC4UkDiGV~vA|Mfv2uK7Z0ulj?GEOxj-aih(cKP;)oc8I!ccL+XRHhrs^9W}~svsTgguEZtN2zxtE-@j`lcG&4c` z=*WAD4UJc(vSrR6rLn8NV-1e2JZ0d=OG6U%)wJ|I!<3dT(v&GJJ$AgXZTiI9d>bmc zB#ocKqzf z)ETi25BImSeiHL22Cj#}KlMe$z|~NHHeP}m{c-J+D$HsmP;B@i}7hym{VU{}pum2REMpUN>BgJTDOW`y>ZGmh$HZr%X^z?0-Hi$5D zq6*#FGPKmAt#DYZ}8KdBo=}ujO~x4pq6gZCWZ5xQ|k_SVmFr@;=Nz7tz~OzS@bel&(K((7?#3z5xviw6edx> n^YeL6yP=)C7`wBm?J&O%cvRrI{)56dYd=nLB}O3V#)AI=6e*xD literal 22016 zcmeHPU2GIp6uz_Ffp&$m(M(cWc|KeSicaFDT&hz^1L&@7z1HyA0LsbeFK! zd(+vOvvc>}bG~!V{XMrj@9gYIyxh6HBghz=o}O+J^y?j4h~`K{cXn)!5v}1O`n6bW ztA*zjuKjp8*u~fv3C6y)8M}&W{wYOeSo6=Xaw-HA0tx|zfI>hapb$_9Cy)5O_cca27w*s)ey2!kBGqnxI+0l(c0%plVgIHG%+VP`;yo4GCrtFdh9{NHxNy zV#7gTGS!aogNYvZXcXBtKZiSB~7BIM8Uy{*!JZ7f~>d#bkn9~sYdxBWbZ z9I8|a0+G|_ZqCH|zb8DIrs?92M_SOPawA6o_MThqM9s$@ z{OVuY*P$SlZ`-yJ;nAJXzIjI2o33l3A0a+me%g4$NO;xe3z9nv%jqgrf&lOzZiR~z zo(2>U8P5;R4D_v*`0Bpx!LR<=2^P3^ZcJDknxFgh9XY~tOIJKm(07EriuOqIn*hI+ z$gX~SKLT^wL#*#PX%Ctq??r#qkBr>DL(U2N38Of^iMGCq@A)PcD5dq26Yu@zUekzscA^g783dr$vSJwj{zi?81 z!>}`+(ru|ONkdcq=}n|xn%^%_-(GtWYtgsEVW;q_W$*Hi@xf-SPlkzKwfg5p z(?7l9Vyy4S%o|gLr=}Zr8;^e#Ze6zE^%lSS_j2sDhc;S|iuKgV)<@Gfp2A|##BRZ_ z)s?9E@sn4+#ZFhM|HY2aVwX?o-&vp4G@Is^0n?!^ORd)~cKs{)6aoqXg@8gpA)pXY z2q**;0tx|zfI>hapb)4W0gG8O&`K6%;^uD6&^L-!cqn_2n+3`re6$BCHr$^7yq%CM z-BbCmwkM6FneNrmei6oOAnYx~_tCcDAjwDDh9S?f2AAj(lGXOW*Nbru(`R z_CjIljYlV%FN`;fZL&m37+0;}1^({|>kjeFJ!_Wq?h~GYF#phD3hTcMaU~w9$-C*6 ze2&D&H;nE0CewTUoTLmLcpbhs3_J7>VVVz3{uFT?xI*0H6oDcB;ZFQdAq{Ohgi@LA zDTg*dcTY|a@jS^V<&~eszN34R=UaFYk5CGGj?VAJrX$r?Qogsos?gfIBK*R(6NO_p zCaQIL#$&O+Pq9Y%4q^O=<7X*8)++K+F53wwp~$P!drgz>7^7+F62)j&YzwsnYdh@{LmpBD{;e^D9i!&%=ecZD@Xy4cDR6B zc4(CUGE)+kBK@U!4944j5HFNWTy7Z;lMWq^?#g9)g}%}J86n!%U-f)pTi@%ybF_cn z_9KAyqgUFArZ*lh??Y= zxI{8>DgNBnOW~pH;s4KaFy-qP&3UhUjpkmzMPvPh*3=r<*>QjrTyltD-i{ zd+Kue%e?<3)FZkn9unquZ87q_r0BtXwEHmtXX5^3FUjeC* z579r#EWjU-(R)ECU~psr_&D!%+uksEZ26Q!S7Vq5sYEjI>B>xBELJ*9XD&68P$Uzd z3laMO%&sXu+)rx5Au&z6@xy0(mwo*f(c4hwx+HAGF;kk1G$o<4%xG5Rw{7bH%YPaC zWJH?1q1)Px_s;YPU)b@tVlI5dP~~Jz4Wp=fT#; z$&Vyk8e6g+^zl(~#sJ2R_uF^YJJ!ZvolDloO_vP@_Y0y$1)hx`WPYmuG$|W}!dUQc DZi;w? diff --git a/addons/microdagr/images/icon_menuMark.paa b/addons/microdagr/images/icon_menuMark.paa index 5cd2fe84e0aa80ffe35d07ec053656aeb8958b28..44e62af43dddbd37f00cfb3e891261c36d6f3b3b 100644 GIT binary patch literal 22016 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 HK~eq(LWjqs literal 22016 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 diff --git a/addons/microdagr/images/icon_menuSettings.paa b/addons/microdagr/images/icon_menuSettings.paa index e979a74c8623b6a378d31626c9482975080922b2..f8e307ff55c66b1132a873d02240d7a638753218 100644 GIT binary patch literal 22016 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 G$o~U{aNrOC literal 22016 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 diff --git a/addons/microdagr/images/icon_menuWaypoints.paa b/addons/microdagr/images/icon_menuWaypoints.paa index 54d0952d905aebfb608f1d6eb78b9069416e1a35..92ebdb17ad8bbaa4b99dc8c5ee64d545f588393b 100644 GIT binary patch literal 22016 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 Date: Mon, 9 May 2016 11:51:28 +0100 Subject: [PATCH 132/268] Moved IR Strobe to left shoulder when attached. --- addons/attach/functions/fnc_attach.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 305c3c09607..faaead9f152 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -40,7 +40,7 @@ _onAtachText = format [localize LSTRING(Item_Attached), _onAtachText]; if (_unit == _attachToVehicle) then { //Self Attachment _attachedItem = _itemVehClass createVehicle [0,0,0]; - _attachedItem attachTo [_unit, [-0.05, 0, 0.12], "rightshoulder"]; + _attachedItem attachTo [_unit, [0.05, -0.09, 0.1], "leftshoulder"]; if (!_silentScripted) then { _unit removeItem _itemClassname; // Remove item [_onAtachText] call EFUNC(common,displayTextStructured); From 505fa0d7737007ed03b4ee24924fb3e8daaf33f4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 10 May 2016 11:50:59 +0200 Subject: [PATCH 133/268] add missing magazines, fix #3685 --- addons/ballistics/CfgWeapons.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 3f6835bbbac..b2c6728a37e 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -285,6 +285,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -305,6 +307,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -320,6 +324,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -335,6 +341,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -356,6 +364,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -371,6 +381,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", @@ -386,6 +398,8 @@ class CfgWeapons { "30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_Tracer_Green", "30Rnd_556x45_Stanag_Tracer_Yellow", + "30Rnd_556x45_Stanag_red", + "30Rnd_556x45_Stanag_green", "ACE_30Rnd_556x45_Stanag_M995_AP_mag", "ACE_30Rnd_556x45_Stanag_Mk262_mag", "ACE_30Rnd_556x45_Stanag_Mk318_mag", From 29e7dbf757f3a37094f0276f0d329185acda230c Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Tue, 10 May 2016 12:39:56 +0200 Subject: [PATCH 134/268] fnc_getMGRSdata.sqf update3 --- addons/common/functions/fnc_getMGRSdata.sqf | 38 +++++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index 04c063ac796..2087b0c4bfc 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -23,7 +23,7 @@ private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); _map = toLower _map; -if (_map in ["abbottabad", "abbottabad1"]) then { _lat = 34; _altitude = 1256; }; +if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 1256; }; //Abbottabad elevation 1256m (Wikipedia) if (_map in ["abramia"]) then { _lat = 60; _altitude = 0; }; if (_map in ["af_kandahar_province"]) then { _lat = 42; _altitude = 0; }; if (_map in ["altis"]) then { _lat = 40; _altitude = 0; }; @@ -34,21 +34,27 @@ if (_map in ["bootcamp_acr"]) then { _lat = 50; _altitude = 0; }; if (_map in ["bornholm"]) then { _lat = 55; _altitude = 0; }; if (_map in ["bozcaada"]) then { _lat = 40; _altitude = 0; }; if (_map in ["caribou"]) then { _lat = 68; _altitude = 0; }; +if (_map in ["catalina"]) then { _lat = 33; _altitude = 0; }; if (_map in ["chernarus", "chernarus_summer", "chernarus_winter"]) then { _lat = 50; _altitude = 0; }; +if (_map in ["chernobylzone", "chernobylzonea2"]) then { _lat = 51; _altitude = 0; }; if (_map in ["clafghan"]) then { _lat = 34; _altitude = 640; }; -if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; -if (_map in ["desert_e"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["dakrong"]) then { _lat = 17; _altitude = 0; }; //Unsung Mod +if (_map in ["desert_e"]) then { _lat = 40; _altitude = 800; }; +if (_map in ["dya"]) then { _lat = 34; _altitude = 110; }; //Diyala Iraq - default elevationOffset if (_map in ["esseker"]) then { _lat = 43; _altitude = 2000; }; +if (_map in ["evergreen"]) then { _lat = 41; _altitude = 0; }; //Burgazada, Turkey - default elevationOffset if (_map in ["fallujah"]) then { _lat = 33; _altitude = 0; }; if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; }; if (_map in ["gorgona"]) then { _lat = 43; _altitude = 0; }; -if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 0; }; +if (_map in ["hellskitchen", "hellskitchens"]) then { _lat = 32; _altitude = 900; }; //Sangin summer, Sangin winter - Sangin elevation 888m (Wikipedia) if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; }; if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; }; if (_map in ["intro"]) then { _lat = 40; _altitude = 0; }; if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; }; if (_map in ["jacobi"]) then { _lat = -19; _altitude = 0; }; +if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; }; if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; }; if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; }; if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; }; if (_map in ["lost", "lostw"]) then { _lat = 60; _altitude = 0; }; @@ -59,19 +65,20 @@ if (_map in ["mef_alaska"]) then { _lat = 60; _altitude = 5; }; if (_map in ["mountains_acr"]) then { _lat = 35; _altitude = 2000; }; if (_map in ["napf", "napfwinter"]) then { _lat = 47; _altitude = 0; }; if (_map in ["panthera3"]) then { _lat = 46; _altitude = 0; }; -if (_map in ["pja301"]) then { _lat = 42; _altitude = 0; }; -if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; -if (_map in ["pja306"]) then { _lat = 35; _altitude = 300; }; -if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; -if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; -if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; +if (_map in ["pianosa_aut"]) then { _lat = 43; _altitude = 0; }; //Pianosa, Italy - default elevationOffset +if (_map in ["pja305"]) then { _lat = 0; _altitude = 0; }; //G.O.S N'Ziwasogo +if (_map in ["pja306"]) then { _lat = 35; _altitude = 0; }; //G.O.S Kalu Khan +if (_map in ["pja307"]) then { _lat = 17; _altitude = 0; }; //F.S.F Daryah +if (_map in ["pja308"]) then { _lat = 36; _altitude = 0; }; //G.O.S Gunkizli +if (_map in ["pja310"]) then { _lat = 36; _altitude = 0; }; //G.O.S Al Rayak +if (_map in ["pja312"]) then { _lat = 16; _altitude = 0; }; //G.O.S Song Bin Tanh if (_map in ["porquerolles"]) then { _lat = 43; _altitude = 0; }; if (_map in ["porto"]) then { _lat = 40; _altitude = 0; }; -if (_map in ["provingGrounds_pmc"]) then { _lat = 35; _altitude = 100; }; +if (_map in ["provinggrounds_pmc"]) then { _lat = 35; _altitude = 100; }; if (_map in ["reshmaan"]) then { _lat = 35; _altitude = 2000; }; if (_map in ["sara", "sara_dbe1"]) then { _lat = 40; _altitude = 0; }; if (_map in ["saralite"]) then { _lat = 40; _altitude = 0; }; -if (_map in ["sb3"]) then { _lat = 53; _altitude = 0; }; +if (_map in ["sb3"]) then { _lat = 53; _altitude = 25; }; //TrpUebPl Einfelde Nord (Munster North Training Area, Germany) - default elevationOffset if (_map in ["shapur_baf"]) then { _lat = 35; _altitude = 100; }; if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; @@ -81,10 +88,11 @@ if (_map in ["takistan"]) then { _lat = 35; _altitude = 2000; }; if (_map in ["thirsk"]) then { _lat = 65; _altitude = 0; }; if (_map in ["tilos"]) then { _lat = 36; _altitude = 0; }; if (_map in ["utes"]) then { _lat = 50; _altitude = 0; }; -if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; +if (_map in ["vt5"]) then { _lat = 61; _altitude = 100; }; //Vt5, Suomi Finland - default elevationOffset if (_map in ["wake"]) then { _lat = 19; _altitude = 0; }; -if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; -if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 0; }; +if (_map in ["waziristan"]) then { _lat = 33; _altitude = 0; }; +if (_map in ["wintermap"]) then { _lat = 61; _altitude = 0; }; //Nordkvingo - default elevationOffset +if (_map in ["wintertown", "wintertowna3"]) then { _lat = 39; _altitude = 600; }; //U.S. state Kansas mean elevation 610m (Wikipedia) if (_map in ["woodland_acr"]) then { _lat = 50; _altitude = 0; }; if (_map in ["xcam_prototype"]) then { _lat = 35; _altitude = 0; }; if (_map in ["zargabad"]) then { _lat = 35; _altitude = 2000; }; From 980da168263b595674a9b602b2e9a36078793791 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 10 May 2016 10:09:52 -0500 Subject: [PATCH 135/268] FastRope Sounds - Fix Config, Merge PFEH, Add CC Attribution --- AUTHORS.txt | 1 + LICENSE | 2 ++ addons/fastroping/config.cpp | 1 + addons/fastroping/functions/fnc_fastRope.sqf | 2 +- .../functions/fnc_fastRopeLocalPFH.sqf | 19 +++++++------------ 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 46a5e504575..42923c77e5e 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -112,6 +112,7 @@ Sniperwolf572 System98 SzwedzikPL Tachi +Tessa Elieff Toaster Tonic Tourorist diff --git a/LICENSE b/LICENSE index 037f1df2f3f..f748d222de4 100644 --- a/LICENSE +++ b/LICENSE @@ -26,6 +26,8 @@ Some folders of this project may contain a separate LICENSE file. Should that be the case, everything in that folder and all subfolders is subject to that license instead. + - ARMA PUBLIC LICENSE (\addons\apl) + - CreativeCommons Attributions 3.0 (\addons\fastroping\data\sounds) ============================================================================ Full GNU General Public License Text diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index a74abeb3b8e..7275741f40f 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -14,5 +14,6 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgMoves.hpp" +#include "CfgSounds.hpp" #include "CfgVehicles.hpp" #include "CfgWaypoints.hpp" diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf index adeb5363620..17991c538e5 100644 --- a/addons/fastroping/functions/fnc_fastRope.sqf +++ b/addons/fastroping/functions/fnc_fastRope.sqf @@ -37,4 +37,4 @@ _vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true]; //Start server PFH asap [QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call EFUNC(common,serverEvent); moveOut _unit; -[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex]] call CBA_fnc_addPerFrameHandler; +[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, ACE_diagTime]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 8334e079294..03df460f55a 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" params ["_arguments", "_pfhHandle"]; -_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"]; +_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex", "_timeToPlayRopeSound"]; _rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"]; private ["_vectorUp", "_vectorDir", "_origin"]; @@ -29,22 +29,12 @@ if (animationState _unit != "ACE_FastRoping") exitWith { _unit disableCollisionWith _dummy; _unit attachTo [_dummy, [0, 0, -1.45]]; [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); - - [{ - params ["_args", "_idPFH"]; - _args params ["_unit"]; - - if (isNull (attachedTo _unit)) exitWith { - [_idPFH] call CBA_fnc_removePerFrameHandler; - }; - - playSound QGVAR(Rope); - }, 1, [_unit]] call CBA_fnc_addPerFrameHandler; }; //End of fast rope if (isNull attachedTo _unit) exitWith { + TRACE_1("exit pfeh",_unit); [_unit, "", 2] call EFUNC(common,doAnimation); _unit setVectorUp [0, 0, 1]; @@ -52,3 +42,8 @@ if (isNull attachedTo _unit) exitWith { [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; + +if (ACE_diagTime > _timeToPlayRopeSound) then { + _arguments set [4, (_timeToPlayRopeSound + 1)]; + playSound QGVAR(Rope); +}; From 518a873efdbe7f197aa7d48d1499666d57cd547a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 10 May 2016 10:14:15 -0500 Subject: [PATCH 136/268] Add module readme --- addons/fastroping/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 addons/fastroping/README.md diff --git a/addons/fastroping/README.md b/addons/fastroping/README.md new file mode 100644 index 00000000000..49fcf009604 --- /dev/null +++ b/addons/fastroping/README.md @@ -0,0 +1,11 @@ +ace_fastroping +========== + +Introducing the ability to fastrope out of heliocopters. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [BaerMitUmlaut](https://github.com/BaerMitUmlaut) +- [KoffeinFlummi](https://github.com/KoffeinFlummi) From c619bcb5a3822741865a56ff5ead2dd58106efce Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Tue, 10 May 2016 19:39:01 +0200 Subject: [PATCH 137/268] Fix "jacobi" latitude and elevationOffset --- addons/common/functions/fnc_getMGRSdata.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index 2087b0c4bfc..2747752ce11 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -51,7 +51,7 @@ if (_map in ["hindukush"]) then { _lat = 36; _altitude = 0; }; if (_map in ["imrali", "imralispring"]) then { _lat = 40; _altitude = 0; }; if (_map in ["intro"]) then { _lat = 40; _altitude = 0; }; if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; }; -if (_map in ["jacobi"]) then { _lat = -19; _altitude = 0; }; +if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; }; if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; }; if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; }; From 53c9a96c772da960cd055745d4c8007c1f05a23b Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 10 May 2016 22:14:01 +0200 Subject: [PATCH 138/268] fix getWeaponState, fix #3777 --- .../common/functions/fnc_getWeaponMuzzles.sqf | 2 +- .../common/functions/fnc_getWeaponState.sqf | 26 ++++++++----------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/addons/common/functions/fnc_getWeaponMuzzles.sqf b/addons/common/functions/fnc_getWeaponMuzzles.sqf index d75a01f2e32..e252d879f98 100644 --- a/addons/common/functions/fnc_getWeaponMuzzles.sqf +++ b/addons/common/functions/fnc_getWeaponMuzzles.sqf @@ -18,7 +18,7 @@ private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles") { if (_x == "this") then { - _muzzles set [_forEachIndex, _weapon]; + _muzzles set [_forEachIndex, configName (configFile >> "CfgWeapons" >> _weapon)]; }; } forEach _muzzles; diff --git a/addons/common/functions/fnc_getWeaponState.sqf b/addons/common/functions/fnc_getWeaponState.sqf index e7b7bb80ec3..73e58972365 100644 --- a/addons/common/functions/fnc_getWeaponState.sqf +++ b/addons/common/functions/fnc_getWeaponState.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: unit - * 1: weapon + * 1: weapon (optional, default: units current weapon) * * Return Value: * 0: Attachements @@ -16,21 +16,19 @@ */ #include "script_component.hpp" -params ["_unit", "_weapon"]; +params [["_unit", objNull, [objNull]], ["_weapon", nil, [""]]]; -private _muzzles = _weapon call FUNC(getWeaponMuzzles); +if (isNil "_weapon") then { + _weapon = currentWeapon _unit; +}; -private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0); +private _attachments = [_unit weaponAccessories _weapon] param [0, ["","","",""]]; -// get loaded magazines and ammo -private _magazines = []; -private _ammo = []; +private _muzzles = _weapon call FUNC(getWeaponMuzzles); -{ - _magazines pushBack ""; - _ammo pushBack 0; - false -} count _muzzles; +// get loaded magazines and ammo +private _magazines = _muzzles apply {""}; +private _ammo = _muzzles apply {0}; { if (_x select 2) then { @@ -44,6 +42,4 @@ private _ammo = []; false } count magazinesAmmoFull _unit; -_weaponInfo append [_muzzles, _magazines, _ammo]; - -_weaponInfo +[_attachments, _muzzles, _magazines, _ammo]; From f738b17db7dd02b7775537c42ddf1061ce4ab81d Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 10 May 2016 22:32:40 +0200 Subject: [PATCH 139/268] show virtual load in inventory menu --- .../functions/fnc_addLoadToUnitContainer.sqf | 1 + addons/movement/functions/fnc_getWeight.sqf | 13 ++++++++++++- addons/movement/functions/fnc_handleVirtualMass.sqf | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/movement/functions/fnc_addLoadToUnitContainer.sqf b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf index 3928d1c822c..a79b2ab9173 100644 --- a/addons/movement/functions/fnc_addLoadToUnitContainer.sqf +++ b/addons/movement/functions/fnc_addLoadToUnitContainer.sqf @@ -17,6 +17,7 @@ params [["_unit", objNull, [objNull]], ["_container", objNull, [objNull]], ["_virtualLoadToAdd", 0, [0]]]; if !(_container in [ + _unit, uniformContainer _unit, vestContainer _unit, backpackContainer _unit diff --git a/addons/movement/functions/fnc_getWeight.sqf b/addons/movement/functions/fnc_getWeight.sqf index 11dd8c4ee6d..b64abc3623e 100644 --- a/addons/movement/functions/fnc_getWeight.sqf +++ b/addons/movement/functions/fnc_getWeight.sqf @@ -17,7 +17,18 @@ params ["_unit"]; -private _weight = loadAbs _unit * 0.1; +private _virtualLoad = 0; + +{ + _virtualLoad = _virtualLoad + (_x getVariable [QGVAR(vLoad), 0]); +} forEach [ + _unit, + uniformContainer _unit, + vestContainer _unit, + backpackContainer _unit +]; + +private _weight = (loadAbs _unit + _virtualLoad) * 0.1; if (GVAR(useImperial)) then { _weight = format ["%1lb", (round (_weight * 100)) / 100]; diff --git a/addons/movement/functions/fnc_handleVirtualMass.sqf b/addons/movement/functions/fnc_handleVirtualMass.sqf index 5d71c58df4b..13a7b77f9a1 100644 --- a/addons/movement/functions/fnc_handleVirtualMass.sqf +++ b/addons/movement/functions/fnc_handleVirtualMass.sqf @@ -20,6 +20,7 @@ private _virtualLoad = 0; { _virtualLoad = _virtualLoad + (_x getVariable [QGVAR(vLoad), 0]); } forEach [ + _unit, uniformContainer _unit, vestContainer _unit, backpackContainer _unit From 38bb4f6c2921f9984f72a9ac05ff8c4ae14fe47b Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 10 May 2016 23:40:03 +0200 Subject: [PATCH 140/268] Adjusted weight of bodybag --- addons/medical/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp index 4bd5452794f..235e3c154bc 100644 --- a/addons/medical/CfgWeapons.hpp +++ b/addons/medical/CfgWeapons.hpp @@ -236,7 +236,7 @@ class CfgWeapons { descriptionShort = CSTRING(Bodybag_Desc_Short); descriptionUse = CSTRING(Bodybag_Desc_Use); class ItemInfo: InventoryItem_Base_F { - mass = 20; + mass = 7.4; }; }; }; From 078c1d585f003df0f07e536edc705340399c72c1 Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Wed, 11 May 2016 00:01:35 +0200 Subject: [PATCH 141/268] =?UTF-8?q?Add=20Kerama=20Islands=20by=20"Les=20V?= =?UTF-8?q?=C3=A9t=C3=A9rans"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add Kerama Islands by "Les Vétérans" with the correct latitude (default config latitude : 1°) --- addons/common/functions/fnc_getMGRSdata.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index 2747752ce11..44fc2046383 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -53,6 +53,7 @@ if (_map in ["intro"]) then { _lat = 40; _altitude = 0; }; if (_map in ["isladuala3"]) then { _lat = -19; _altitude = 0; }; if (_map in ["jacobi"]) then { _lat = 34; _altitude = 2000; }; //default elevationOffset if (_map in ["kapaulio"]) then { _lat = 0; _altitude = 0; }; +if (_map in ["kerama"]) then { _lat = 26; _altitude = 0; }; //Kerama Islands, Japan - default elevationOffset if (_map in ["kholm"]) then { _lat = 36; _altitude = 0; }; if (_map in ["koplic"]) then { _lat = 42; _altitude = 0; }; if (_map in ["kunduz"]) then { _lat = 37; _altitude = 0; }; From 9364ae60dfd05d53a08d8d46df2c846a8bcd3d4b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 11 May 2016 13:30:17 +0100 Subject: [PATCH 142/268] Fix spectator unit tree refreshing - Account for decrement in node index when culling the tree of sides/groups/units - Fix non-zero-based index `to` value when navigating the units in the tree --- .../functions/fnc_handleInterface.sqf | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index a8a607d5376..ea20d0fcddf 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -331,31 +331,40 @@ switch (toLower _mode) do { }; case "onunitsupdate": { _args params ["_tree"]; - private ["_cachedUnits","_cachedGrps","_cachedSides","_s","_g","_grp","_u","_unit","_side"]; + private ["_cachedUnits","_cachedGrps","_cachedSides","_sT","_gT","_uT","_s","_g","_u","_grp","_unit","_side"]; // Cache existing group and side nodes and cull removed data _cachedUnits = []; _cachedGrps = []; _cachedSides = []; - for "_s" from 0 to ((_tree tvCount []) - 1) do { - for "_g" from 0 to ((_tree tvCount [_s]) - 1) do { + // Track deleted nodes to account for decrease in index + _sT = _tree tvCount []; + for [{_s = 0;}, {_s < _sT}, {_s = _s + 1}] do { + _gT = _tree tvCount [_s]; + + for [{_g = 0;}, {_g < _gT}, {_g = _g + 1}] do { _grp = groupFromNetID (_tree tvData [_s,_g]); if (_grp in GVAR(groupList)) then { _cachedGrps pushBack _grp; _cachedGrps pushBack _g; - for "_u" from 0 to ((_tree tvCount [_s,_g])) do { + _uT = _tree tvCount [_s,_g]; + for [{_u = 0;}, {_u < _uT}, {_u = _u + 1}] do { _unit = objectFromNetId (_tree tvData [_s,_g,_u]); if (_unit in GVAR(unitList)) then { _cachedUnits pushBack _unit; } else { _tree tvDelete [_s,_g,_u]; + _u = _u - 1; + _uT = _uT - 1; }; }; } else { _tree tvDelete [_s,_g]; + _g = _g - 1; + _gT = _gT - 1; }; }; @@ -364,6 +373,8 @@ switch (toLower _mode) do { _cachedSides pushBack _s; } else { _tree tvDelete [_s]; + _s = _s - 1; + _sT = _sT - 1; }; }; From 1b1329b3507a8be5e52b7326985def6d624ebd50 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 11 May 2016 16:01:07 +0100 Subject: [PATCH 143/268] Increase spectator unit tree refresh rate Reduce the time between automated refreshing of the unit tree. Also makes an initial call to the tree populating code upon first opening to remove the initial delay. --- addons/spectator/functions/fnc_handleInterface.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index ea20d0fcddf..381f64505cd 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -27,8 +27,11 @@ switch (toLower _mode) do { // Always show interface and hide map upon opening [_display,nil,nil,!GVAR(showInterface),GVAR(showMap)] call FUNC(toggleInterface); + // Initalize the unit tree + ["onUnitsUpdate",[(_display displayCtrl IDC_UNIT) controlsGroupCtrl IDC_UNIT_TREE]] call FUNC(handleInterface); + // Keep unit list and tree up to date - [FUNC(handleUnits), 21, _display] call CBA_fnc_addPerFrameHandler; + [FUNC(handleUnits), 9, _display] call CBA_fnc_addPerFrameHandler; // Handle 3D unit icons GVAR(iconHandler) = addMissionEventHandler ["Draw3D",FUNC(handleIcons)]; From f9c643b941321c8f928a37f53633f927ebb44c9c Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 11 May 2016 21:05:59 +0200 Subject: [PATCH 144/268] Modified fastroping thud sound --- .../data/sounds/fastroping_thud.ogg | Bin 20522 -> 7314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/fastroping/data/sounds/fastroping_thud.ogg b/addons/fastroping/data/sounds/fastroping_thud.ogg index 136a638ea9033a059138df2443eca54539344e4b..40fd823fcf0f17df67e7840ea0c8b227f9bbd555 100644 GIT binary patch delta 5824 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 delta 19135 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 From 5147f366a5b76664f2de8ef9b7f488c2535f7d14 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 17:11:35 +0200 Subject: [PATCH 145/268] Execute take nozzle actions only on progress bar success (#3783) * Execute take nozzle actions only on progress bar success - fix #3739, Prettify params * Fix animation on holster --- addons/refuel/functions/fnc_takeNozzle.sqf | 37 ++++++++++++++++------ addons/refuel/script_component.hpp | 1 + 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index 75601002a3d..87a212cd444 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -18,17 +18,16 @@ */ #include "script_component.hpp" -params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_nozzle", objNull, [objNull]]]; - -[_unit, "forceWalk", "ACE_refuel", true] call EFUNC(common,statusEffect_set); +params [ + ["_unit", objNull, [objNull]], + ["_target", objNull, [objNull]], + ["_nozzle", objNull, [objNull]] +]; REFUEL_HOLSTER_WEAPON private _endPosOffset = [0, 0, 0]; if (isNull _nozzle) then { // func is called on fuel truck - [_target, "blockEngine", "ACE_Refuel", true] call EFUNC(common,statusEffect_set); - - _target setVariable [QGVAR(isConnected), true, true]; _endPosOffset = getArray (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(hooks)); if (count _endPosOffset == 2) then { if (_unit distance (_target modelToWorld (_endPosOffset select 0)) < _unit distance (_target modelToWorld (_endPosOffset select 1))) then { @@ -44,7 +43,11 @@ if (isNull _nozzle) then { // func is called on fuel truck [_unit, _target, _endPosOffset], { params ["_args"]; - _args params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_endPosOffset", [0,0,0], [[]], 3]]; + _args params [ + ["_unit", objNull, [objNull]], + ["_target", objNull, [objNull]], + ["_endPosOffset", [0, 0, 0], [[]], 3] + ]; private _newNozzle = "ACE_refuel_fuelNozzle" createVehicle position _unit; _newNozzle attachTo [_unit, [-0.02,0.05,-0.12], "righthandmiddle1"]; @@ -57,8 +60,12 @@ if (isNull _nozzle) then { // func is called on fuel truck }; _newNozzle setVariable [QGVAR(attachPos), _endPosOffset, true]; _newNozzle setVariable [QGVAR(source), _target, true]; + + [_target, "blockEngine", "ACE_Refuel", true] call EFUNC(common,statusEffect_set); + _target setVariable [QGVAR(isConnected), true, true]; _target setVariable [QGVAR(ownedNozzle), _newNozzle, true]; + [_unit, "forceWalk", "ACE_refuel", true] call EFUNC(common,statusEffect_set); _unit setVariable [QGVAR(isRefueling), true]; private _actionID = _unit getVariable [QGVAR(ReleaseActionID), -1]; if (_actionID != -1) then { @@ -87,7 +94,11 @@ if (isNull _nozzle) then { // func is called on fuel truck [_unit, _nozzle], { params ["_args"]; - _args params [["_unit", objNull, [objNull]], ["_nozzle", objNull, [objNull]]]; + _args params [ + ["_unit", objNull, [objNull]], + ["_nozzle", objNull, [objNull]] + ]; + if (_nozzle getVariable [QGVAR(jerryCan), false]) then { _nozzle attachTo [_unit, [0,1,0], "pelvis"]; } else { @@ -95,6 +106,7 @@ if (isNull _nozzle) then { // func is called on fuel truck }; _unit setVariable [QGVAR(nozzle), _nozzle, true]; + [_unit, "forceWalk", "ACE_refuel", true] call EFUNC(common,statusEffect_set); _unit setVariable [QGVAR(isRefueling), true]; private _actionID = _unit getVariable [QGVAR(ReleaseActionID), -1]; if (_actionID != -1) then { @@ -124,8 +136,13 @@ if (isNull _nozzle) then { // func is called on fuel truck if !(_nozzle getVariable [QGVAR(jerryCan), false]) then { [{ params ["_args", "_pfID"]; - _args params [["_unit", player, [objNull]], ["_source", objNull, [objNull]], ["_endPosOffset", [0, 0, 0], [[]], 3]]; - _args params ["", "", "", ["_nozzle", _unit getVariable [QGVAR(nozzle), objNull], [objNull]]]; + _args params [ + ["_unit", player, [objNull]], + ["_source", objNull, [objNull]], + ["_endPosOffset", [0, 0, 0], [[]], 3], + ["_nozzle", _unit getVariable [QGVAR(nozzle), objNull], [objNull]] + ]; + if (isNull _source || {_unit distance (_source modelToWorld _endPosOffset) > (REFUEL_HOSE_LENGTH - 2)} || {!alive _source}) exitWith { if !(isNull _nozzle) then { [_unit, _nozzle] call FUNC(dropNozzle); diff --git a/addons/refuel/script_component.hpp b/addons/refuel/script_component.hpp index 02a9660bddc..f05018d3e85 100644 --- a/addons/refuel/script_component.hpp +++ b/addons/refuel/script_component.hpp @@ -22,6 +22,7 @@ #define REFUEL_HOLSTER_WEAPON \ _unit setVariable [QGVAR(selectedWeaponOnRefuel), currentWeapon _unit]; \ + _unit call EFUNC(common,fixLoweredRifleAnimation); \ _unit action ["SwitchWeapon", _unit, _unit, 99]; #define REFUEL_UNHOLSTER_WEAPON \ From c591c7af64e60525ce0561c0c96fcaa7c7e2bf52 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 21:30:32 +0200 Subject: [PATCH 146/268] Add interaction support to Motorcycle class --- addons/interaction/CfgVehicles.hpp | 26 ++++++++++++++++++++++++++ addons/repair/CfgEventHandlers.hpp | 6 ++++++ addons/repair/CfgVehicles.hpp | 4 ++++ 3 files changed, 36 insertions(+) diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 6b6e0e69b07..b1c1cf852fa 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -355,6 +355,32 @@ class CfgVehicles { }; }; + class Motorcycle: LandVehicle { + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 10; + condition = "true"; + class ACE_Passengers { + displayName = CSTRING(Passengers); + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + + class ACE_SelfActions { + class ACE_Passengers { + displayName = CSTRING(Passengers); + condition = "true"; + statement = ""; + insertChildren = QUOTE(_this call DFUNC(addPassengersActions)); + }; + }; + }; + class Air; class Helicopter: Air { class ACE_Actions { diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index 06647d8dd5c..f10cccba3a4 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -31,6 +31,12 @@ class Extended_InitPost_EventHandlers { serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; + class Motorcycle { + class ADDON { + init = QUOTE(_this call DFUNC(addRepairActions)); + serverInit = QUOTE(_this call DFUNC(addSpareParts)); + }; + }; class Helicopter { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 0a1d6f55dce..da5f42e9a80 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -290,6 +290,10 @@ class CfgVehicles { MACRO_REPAIRVEHICLE }; + class Motorcycle: LandVehicle { + MACRO_REPAIRVEHICLE + }; + class Air; class Helicopter: Air { MACRO_REPAIRVEHICLE From f6e4bd7a6b42a43f37d6984820691415cdc5cff5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 21:37:54 +0200 Subject: [PATCH 147/268] Remove redundant spare part adding --- addons/repair/CfgEventHandlers.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index f10cccba3a4..2d8f54b7257 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -28,13 +28,11 @@ class Extended_InitPost_EventHandlers { class Tank { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; class Motorcycle { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; class Helicopter { From 58cc686aac9b21d802e9b5d20985329a31d7c715 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 21:49:45 +0200 Subject: [PATCH 148/268] Remove initial spare part adding for classes not Car or Tank, Improve addSpareParts --- addons/repair/CfgEventHandlers.hpp | 7 ++----- addons/repair/functions/fnc_addSpareParts.sqf | 12 ++---------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index 06647d8dd5c..a2f95875242 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -22,32 +22,29 @@ class Extended_InitPost_EventHandlers { class Car { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); + serverInit = QUOTE([ARR_3(_this select 0,1,'ACE_Wheel')] call DFUNC(addSpareParts)); }; }; class Tank { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); + serverInit = QUOTE([ARR_3(_this select 0,1,'ACE_Wheel')] call DFUNC(addSpareParts)); }; }; class Helicopter { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); exclude[] = {QEGVAR(fastroping,helper), "ACE_friesBase"}; }; }; class Plane { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; class Ship_F { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; }; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 74ea0d4c102..3d7247fcaac 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -21,8 +21,8 @@ params ["_vehicle", ["_amount", 1], ["_part", ""], ["_force", false]]; TRACE_2("params",_vehicle,_amount); -// Exit if ace_cargo is not loaded -if !(["ace_cargo"] call EFUNC(common,isModLoaded)) exitWith {}; +// Exit if ace_cargo is not loaded or no part supplied +if (!(["ace_cargo"] call EFUNC(common,isModLoaded)) || {_part == ""}) exitWith {}; // Collect until SettingsInitialized if (!EGVAR(common,settingsInitFinished)) exitWith { @@ -32,13 +32,5 @@ if (!EGVAR(common,settingsInitFinished)) exitWith { // Exit if not forced and add spare parts is disabled (after settings initted to make sure it really is) if (!_force && !GVAR(addSpareParts)) exitWith {}; -// Select appropriate part -if (_part == "") then { - if (_vehicle isKindOf "Car") then { _part = "ACE_Wheel" }; - if (_vehicle isKindOf "Tank") then { _part = "ACE_Track" }; -}; -// Exit if no appropriate part -if (_part == "") exitWith {}; - // Load ["AddCargoByClass", [_part, _vehicle, _amount]] call EFUNC(common,localEvent); From 2d2d5bc828366b5168a477c2557e2a9f26792c0e Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 21:52:06 +0200 Subject: [PATCH 149/268] Readd mistakenly removed spare part adding --- addons/repair/CfgEventHandlers.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index 2d8f54b7257..f38dc21d23f 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -28,6 +28,7 @@ class Extended_InitPost_EventHandlers { class Tank { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); + serverInit = QUOTE(_this call DFUNC(addSpareParts)); }; }; class Motorcycle { From e984fcf7154bf147c5ec98c40779a84a04055e6e Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 12 May 2016 21:56:12 +0200 Subject: [PATCH 150/268] Fix part name for Tank class --- addons/repair/CfgEventHandlers.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index a2f95875242..6ec3a2cefdf 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -28,7 +28,7 @@ class Extended_InitPost_EventHandlers { class Tank { class ADDON { init = QUOTE(_this call DFUNC(addRepairActions)); - serverInit = QUOTE([ARR_3(_this select 0,1,'ACE_Wheel')] call DFUNC(addSpareParts)); + serverInit = QUOTE([ARR_3(_this select 0,1,'ACE_Track')] call DFUNC(addSpareParts)); }; }; class Helicopter { From a950b2c2fe79d40263027d50a14c21270165d754 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 13 May 2016 16:33:15 +0200 Subject: [PATCH 151/268] Add canPush config entry to enable pushing on boats with mass higher than 2600 --- addons/interaction/CfgVehicles.hpp | 2 +- addons/interaction/XEH_PREP.hpp | 1 + addons/interaction/functions/fnc_canPush.sqf | 22 ++++++++++++++++++++ addons/interaction/functions/fnc_push.sqf | 3 +-- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 addons/interaction/functions/fnc_canPush.sqf diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 6b6e0e69b07..5a81d0b6fc7 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -420,7 +420,7 @@ class CfgVehicles { class ACE_Push { displayName = CSTRING(Push); distance = 6; - condition = QUOTE(getMass _target <= 2600 && {alive _target} && {vectorMagnitude velocity _target < 3}); + condition = QUOTE(_target call FUNC(canPush)); statement = QUOTE(_this call FUNC(push)); showDisabled = 0; priority = -1; diff --git a/addons/interaction/XEH_PREP.hpp b/addons/interaction/XEH_PREP.hpp index 71facedc3fc..be6158cdd5c 100644 --- a/addons/interaction/XEH_PREP.hpp +++ b/addons/interaction/XEH_PREP.hpp @@ -32,6 +32,7 @@ PREP(handleScrollWheel); PREP(openDoor); // interaction with boats +PREP(canPush); PREP(push); PREP(switchLamp); diff --git a/addons/interaction/functions/fnc_canPush.sqf b/addons/interaction/functions/fnc_canPush.sqf new file mode 100644 index 00000000000..478c89ca450 --- /dev/null +++ b/addons/interaction/functions/fnc_canPush.sqf @@ -0,0 +1,22 @@ +/* + * Author: Jonpas + * Checks if the boat can be pushed. + * + * Arguments: + * 0: Target + * + * Return Value: + * Can Push + * + * Example: + * [target] call ace_interaction_fnc_canPush + * + * Public: No + */ +#include "script_component.hpp" + +params ["_target"]; + +alive _target && +{getMass _target <= 2600 || getNumber (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(canPush)) == 1} && +{vectorMagnitude velocity _target < 3} diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index 9a6c86a18ea..bdeaf290129 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -18,8 +18,7 @@ params ["_boat", "_unit"]; -private "_newVelocity"; -_newVelocity = vectorDir _unit; +private _newVelocity = vectorDir _unit; _newVelocity set [2, 0.25]; _newVelocity = _newVelocity vectorMultiply 2; From d48bd3ca8359ba65f165b7978ed16b0e7d238fb3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 13 May 2016 19:54:14 -0500 Subject: [PATCH 152/268] Remove old testmission addon --- addons/testmissions/$PBOPREFIX$ | 1 - .../ACETestingMap1.Stratis/description.ext | 17 - .../ACETestingMap1.Stratis/init.sqf | 1 - .../ACETestingMap1.Stratis/mission.sqm | 1248 ----------------- addons/testmissions/README.md | 11 - addons/testmissions/config.cpp | 20 - addons/testmissions/script_component.hpp | 17 - 7 files changed, 1315 deletions(-) delete mode 100644 addons/testmissions/$PBOPREFIX$ delete mode 100644 addons/testmissions/MPMissions/ACETestingMap1.Stratis/description.ext delete mode 100644 addons/testmissions/MPMissions/ACETestingMap1.Stratis/init.sqf delete mode 100644 addons/testmissions/MPMissions/ACETestingMap1.Stratis/mission.sqm delete mode 100644 addons/testmissions/README.md delete mode 100644 addons/testmissions/config.cpp delete mode 100644 addons/testmissions/script_component.hpp diff --git a/addons/testmissions/$PBOPREFIX$ b/addons/testmissions/$PBOPREFIX$ deleted file mode 100644 index c899a561270..00000000000 --- a/addons/testmissions/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\testmissions \ No newline at end of file diff --git a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/description.ext b/addons/testmissions/MPMissions/ACETestingMap1.Stratis/description.ext deleted file mode 100644 index d61b2cf2001..00000000000 --- a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/description.ext +++ /dev/null @@ -1,17 +0,0 @@ -enableDebugConsole = 2; //note security risk - -// respawn = "GROUP"; -respawn = "BASE"; -// respawn = "BIRD"; -respawnDelay = 2; - -class Header { - gameType = Coop; - minPlayers = 1; - maxPlayers = 491; -}; - -onLoadName = "ACE3 Testing"; -// onLoadMission = ""; -// author = ""; -// loadScreen = ""; \ No newline at end of file diff --git a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/init.sqf b/addons/testmissions/MPMissions/ACETestingMap1.Stratis/init.sqf deleted file mode 100644 index f2c95b8ca24..00000000000 --- a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/init.sqf +++ /dev/null @@ -1 +0,0 @@ -enableSaving [false, false]; diff --git a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/mission.sqm b/addons/testmissions/MPMissions/ACETestingMap1.Stratis/mission.sqm deleted file mode 100644 index 08bba0bcb15..00000000000 --- a/addons/testmissions/MPMissions/ACETestingMap1.Stratis/mission.sqm +++ /dev/null @@ -1,1248 +0,0 @@ -version=12; -class Mission -{ - addOns[]= - { - "A3_Characters_F_BLUFOR", - "a3_characters_f", - "a3_map_stratis", - "A3_armor_f_beta_APC_Tracked_02", - "A3_Characters_F_INDEP", - "ace_vehiclelock", - "A3_Soft_F_MRAP_01", - "A3_Soft_F_Car", - "ace_map", - "A3_Static_F_Gamma_AA", - "A3_Static_F_Mortar_01", - "A3_Static_F_Gamma", - "a3_static_f", - "ace_captives", - "A3_Armor_F_Slammer", - "A3_Air_F_Beta_Heli_Attack_01", - "ace_medical", - "ace_common", - "A3_Weapons_F_Ammoboxes", - "A3_Armor_F_EPB_APC_tracked_03", - "A3_Air_F_Heli_Light_01", - "A3_Air_F_Beta_Heli_Transport_01", - "A3_Armor_F_T100K", - "A3_Boat_F_Boat_Armed_01", - "A3_Boat_F_Civilian_Boat", - "A3_Boat_F_Boat_Transport_01", - "A3_Characters_F_Gamma", - "A3_Air_F_Gamma_UAV_02", - "A3_Static_F_Gamma_AT" - }; - addOnsAuto[]= - { - "A3_Characters_F_BLUFOR", - "a3_characters_f", - "A3_Characters_F_INDEP", - "ace_vehiclelock", - "ace_captives", - "A3_Air_F_Gamma_UAV_02", - "A3_Characters_F_Gamma", - "A3_Soft_F_MRAP_01", - "A3_Soft_F_Car", - "A3_Static_F_Gamma_AA", - "A3_Static_F_Mortar_01", - "A3_Static_F_Gamma", - "a3_static_f", - "A3_Armor_F_Slammer", - "ace_medical", - "ace_common", - "A3_Weapons_F_Ammoboxes", - "A3_Armor_F_EPB_APC_tracked_03", - "A3_Air_F_Beta_Heli_Attack_01", - "A3_Air_F_Heli_Light_01", - "A3_Air_F_Beta_Heli_Transport_01", - "A3_Armor_F_T100K", - "A3_Boat_F_Boat_Armed_01", - "A3_Boat_F_Civilian_Boat", - "A3_Boat_F_Boat_Transport_01", - "A3_Static_F_Gamma_AT", - "a3_map_stratis" - }; - randomSeed=709402; - class Intel - { - startWeather=0; - startWind=0; - startWaves=0.099999994; - forecastWeather=0; - forecastWind=0; - forecastWaves=0.099999994; - forecastLightnings=0.099999994; - year=2035; - month=7; - day=6; - hour=12; - minute=0; - startFogDecay=0.013; - forecastFogDecay=0.013; - }; - class Groups - { - items=19; - class Item0 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1716.1971,5.5,5752.0244}; - azimut=-50.831005; - id=0; - side="WEST"; - vehicle="B_Soldier_F"; - player="PLAY CDG"; - leader=1; - skill=0.60000002; - init="this addItem ""ACE_key_civ"""; - description="Keys For CD"; - syncId=0; - synchronizations[]={3}; - }; - }; - }; - class Item1 - { - side="GUER"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1709.5989,5.5,5740.709}; - azimut=-67.220284; - id=1; - side="GUER"; - vehicle="I_soldier_F"; - player="PLAY CDG"; - leader=1; - skill=0.60000002; - init="this addItem ""ACE_key_east"""; - description="Keys for AB"; - syncId=1; - synchronizations[]={2}; - }; - }; - }; - class Item2 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1712.0765,5.5,5743.5811}; - id=2; - side="LOGIC"; - vehicle="ACE_VehicleLock_ModuleSyncedAssign"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - syncId=2; - synchronizations[]={1,6}; - }; - }; - }; - class Item3 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1714.5892,5.5,5748.7002}; - id=3; - side="LOGIC"; - vehicle="ACE_VehicleLock_ModuleSyncedAssign"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - syncId=3; - synchronizations[]={7,0}; - }; - }; - }; - class Item4 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1715.7699,5.5,5745.752}; - class args - { - items=3; - class Item0 - { - value="1"; - parentCls="ACE_VehicleLock_ModuleSetup"; - typeName="LockVehicleInventory"; - }; - class Item1 - { - value="0"; - parentCls="ACE_VehicleLock_ModuleSetup"; - typeName="SetLockState"; - }; - class Item2 - { - value="15"; - parentCls="ACE_VehicleLock_ModuleSetup"; - typeName="DefaultLockpickStrength"; - }; - }; - id=4; - side="LOGIC"; - vehicle="ACE_VehicleLock_ModuleSetup"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - }; - }; - }; - class Item5 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1703.6329,5.5,5730.1909}; - azimut=119.576; - id=5; - side="WEST"; - vehicle="B_Soldier_F"; - player="PLAY CDG"; - leader=1; - skill=0.60000002; - text="Q"; - init="nul = this spawn {sleep 3; [_this] call ace_medical_fnc_setUnconscious};"; - description="Q Unconscious at start"; - }; - }; - }; - class Item6 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1702.6882,5.5,5728.8687}; - azimut=103.13899; - id=6; - side="WEST"; - vehicle="B_Soldier_F"; - player="PLAY CDG"; - leader=1; - skill=0.60000002; - text="a1"; - description="Surrender At Start"; - syncId=4; - synchronizations[]={5}; - }; - }; - }; - class Item7 - { - side="LOGIC"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1701.0719,5.5,5727.5586}; - azimut=15.1769; - id=7; - side="LOGIC"; - vehicle="ace_captives_ModuleSurrender"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - syncId=5; - synchronizations[]={4}; - }; - }; - }; - class Item8 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1703.7711,5.5,5715.2427}; - azimut=11.294894; - id=8; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_A1_0"; - description="NATO Alpha 1 Fireteam Leader"; - }; - class Item1 - { - position[]={1706.2533,5.5,5712.9951}; - azimut=11.294894; - id=9; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A1_1"; - description="NATO Alpha 1 Rifleman (AT)"; - }; - class Item2 - { - position[]={1709.2836,5.5,5712.2866}; - azimut=11.294894; - id=10; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A1_2"; - description="NATO Alpha 1 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1712.4042,5.5,5711.6323}; - azimut=11.294894; - id=11; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A1_3"; - description="NATO Alpha 1 Automatic Rifleman"; - }; - }; - }; - class Item9 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1700.8379,5.5,5704.4658}; - azimut=11.294894; - id=12; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_A2_0"; - description="NATO Alpha 2 Fireteam Leader"; - }; - class Item1 - { - position[]={1703.1456,5.5,5702.0576}; - azimut=11.294894; - id=13; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A2_1"; - description="NATO Alpha 2 Rifleman (AT)"; - }; - class Item2 - { - position[]={1706.1492,5.5,5701.3618}; - azimut=11.294894; - id=14; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A2_2"; - description="NATO Alpha 2 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1709.3947,5.5,5700.7007}; - azimut=11.294894; - id=15; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A2_3"; - description="NATO Alpha 2 Automatic Rifleman"; - }; - }; - }; - class Item10 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1696.9097,5.5,5693.7847}; - azimut=11.294894; - id=16; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_A3_0"; - description="NATO Alpha 3 Fireteam Leader"; - }; - class Item1 - { - position[]={1699.3469,5.5,5691.3257}; - azimut=11.294894; - id=17; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A3_1"; - description="NATO Alpha 3 Rifleman (AT)"; - }; - class Item2 - { - position[]={1702.4423,5.5,5690.4912}; - azimut=11.294894; - id=18; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A3_2"; - description="NATO Alpha 3 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1705.6521,5.5,5689.7666}; - azimut=11.294894; - id=19; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_A3_3"; - description="NATO Alpha 3 Automatic Rifleman"; - }; - }; - }; - class Item11 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1685.6747,5.5,5720.1187}; - azimut=11.294894; - id=20; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_B1_0"; - description="NATO Bravo 1 Fireteam Leader"; - }; - class Item1 - { - position[]={1688.1687,5.5,5717.9639}; - azimut=11.294894; - id=21; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B1_1"; - description="NATO Bravo 1 Rifleman (AT)"; - }; - class Item2 - { - position[]={1691.0776,5.5,5717.2754}; - azimut=11.294894; - id=22; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B1_2"; - description="NATO Bravo 1 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1694.293,5.5,5716.6172}; - azimut=11.294894; - id=23; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B1_3"; - description="NATO Bravo 1 Automatic Rifleman"; - }; - }; - }; - class Item12 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1682.364,5.5,5709.4131}; - azimut=11.294894; - id=24; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_B2_0"; - description="NATO Bravo 2 Fireteam Leader"; - }; - class Item1 - { - position[]={1685.1151,5.5,5707.0654}; - azimut=11.294894; - id=25; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B2_1"; - description="NATO Bravo 2 Rifleman (AT)"; - }; - class Item2 - { - position[]={1688.1718,5.5,5706.313}; - azimut=11.294894; - id=26; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B2_2"; - description="NATO Bravo 2 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1691.5254,5.5,5705.6113}; - azimut=11.294894; - id=27; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B2_3"; - description="NATO Bravo 2 Automatic Rifleman"; - }; - }; - }; - class Item13 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1678.4825,5.5,5697.4468}; - azimut=11.294894; - id=28; - side="WEST"; - vehicle="B_Soldier_TL_F"; - player="PLAY CDG"; - leader=1; - rank="CORPORAL"; - skill=0.60000002; - text="GrpNATO_B3_0"; - description="NATO Bravo 3 Fireteam Leader"; - }; - class Item1 - { - position[]={1681.5645,5.5,5696.561}; - azimut=11.294894; - id=29; - side="WEST"; - vehicle="B_Soldier_LAT_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B3_1"; - description="NATO Bravo 3 Rifleman (AT)"; - }; - class Item2 - { - position[]={1684.6531,5.5,5695.8491}; - azimut=11.294894; - id=30; - side="WEST"; - vehicle="B_Soldier_AAR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B3_2"; - description="NATO Bravo 3 Assistant Automatic Rifleman"; - }; - class Item3 - { - position[]={1687.8109,5.5,5695.1021}; - azimut=11.294894; - id=31; - side="WEST"; - vehicle="B_Soldier_AR_F"; - player="PLAY CDG"; - skill=0.60000002; - text="GrpNATO_B3_3"; - description="NATO Bravo 3 Automatic Rifleman"; - }; - }; - }; - class Item14 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1540.8328,-27.831757,6018.0283}; - azimut=4.41886; - special="FLY"; - id=32; - side="WEST"; - vehicle="B_UAV_02_CAS_F"; - isUAV=1; - leader=1; - skill=0.60000002; - }; - }; - }; - class Item15 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={2861.0947,0,6407.8574}; - azimut=4.41886; - special="FLY"; - id=33; - side="WEST"; - vehicle="B_UAV_02_CAS_F"; - isUAV=1; - leader=1; - skill=0.60000002; - }; - }; - }; - class Item16 - { - side="WEST"; - class Vehicles - { - items=1; - class Item0 - { - position[]={1944.1785,0,6868.8906}; - azimut=4.41886; - special="FLY"; - id=34; - side="WEST"; - vehicle="B_UAV_02_CAS_F"; - isUAV=1; - leader=1; - skill=0.60000002; - }; - }; - }; - class Item17 - { - side="WEST"; - class Vehicles - { - items=4; - class Item0 - { - position[]={1713.3085,5.5,5725.0205}; - azimut=98.173798; - id=35; - side="WEST"; - vehicle="B_medic_F"; - player="PLAY CDG"; - leader=1; - rank="LIEUTENANT"; - skill=0.60000002; - text="Medic2"; - description="Medic 2"; - }; - class Item1 - { - position[]={1712.2098,5.5,5727.1675}; - azimut=98.173798; - id=36; - side="WEST"; - vehicle="B_medic_F"; - player="PLAY CDG"; - skill=0.60000002; - text="Medic1"; - description="Medic 1"; - }; - class Item2 - { - position[]={1711.6387,5.5,5725.041}; - azimut=98.173798; - id=37; - side="WEST"; - vehicle="B_medic_F"; - player="PLAY CDG"; - skill=0.60000002; - text="Medic3"; - description="Medic 3"; - }; - class Item3 - { - position[]={1710.0735,5.5,5726.4287}; - id=38; - side="WEST"; - vehicle="B_soldier_UAV_F"; - player="PLAY CDG"; - skill=0.60000002; - text="uavGuy"; - }; - }; - }; - class Item18 - { - side="WEST"; - class Vehicles - { - items=2; - class Item0 - { - position[]={1722.298,5.5,5733.4629}; - azimut=4.41886; - special="FLY"; - id=39; - side="WEST"; - vehicle="B_Soldier_F"; - player="PLAYER COMMANDER"; - leader=1; - skill=0.60000002; - text="R1"; - description="sp tester"; - }; - class Item1 - { - position[]={1722.7957,5.5,5732.481}; - azimut=4.41886; - special="FLY"; - id=40; - side="WEST"; - vehicle="B_Soldier_F"; - player="PLAY CDG"; - skill=0.60000002; - text="R2"; - description="sp tester2"; - }; - }; - }; - }; - class Vehicles - { - items=38; - class Item0 - { - position[]={1706.5913,5.5,5748.0903}; - azimut=-68.59301; - id=41; - side="EMPTY"; - vehicle="B_MRAP_01_F"; - leader=1; - skill=0.60000002; - text="car1"; - syncId=6; - synchronizations[]={2}; - }; - class Item1 - { - position[]={1707.5599,5.5,5753.0518}; - azimut=-65.45974; - id=42; - side="EMPTY"; - vehicle="B_MRAP_01_F"; - leader=1; - lock="LOCKED"; - skill=0.60000002; - text="car3"; - syncId=7; - synchronizations[]={3}; - }; - class Item2 - { - position[]={1708.7251,5.5,5757.8809}; - azimut=-65.45974; - id=43; - side="EMPTY"; - vehicle="C_Hatchback_01_F"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - text="car4"; - }; - class Item3 - { - position[]={1704.4299,5.5,5742.8721}; - azimut=-68.59301; - id=44; - side="EMPTY"; - vehicle="C_Hatchback_01_F"; - leader=1; - lock="UNLOCKED"; - skill=0.60000002; - text="car0"; - init="this setVariable [""ACE_VehicleLock_lockSide"", east];"; - }; - class Item4 - { - position[]={1738.8502,5.5,5728.8525}; - azimut=101.05981; - id=45; - side="EMPTY"; - vehicle="B_static_AA_F"; - skill=0.60000002; - text="q1"; - }; - class Item5 - { - position[]={1738.4388,5.5,5726.1929}; - azimut=101.05981; - id=46; - side="EMPTY"; - vehicle="B_Mortar_01_F"; - skill=0.60000002; - text="q2"; - }; - class Item6 - { - position[]={1737.8582,5.5,5723.3979}; - azimut=101.05981; - id=47; - side="EMPTY"; - vehicle="B_HMG_01_high_F"; - skill=0.60000002; - text="q3"; - }; - class Item7 - { - position[]={1738.9786,5.5,5734.6968}; - azimut=104.535; - id=48; - side="EMPTY"; - vehicle="B_MBT_01_cannon_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item8 - { - position[]={1734.713,5.5,5720.061}; - azimut=10.202663; - id=49; - side="EMPTY"; - vehicle="ACE_medicalSupplyCrate"; - leader=1; - skill=0.60000002; - }; - class Item9 - { - position[]={1737.2236,5.5,5719.5591}; - azimut=10.202663; - id=50; - side="EMPTY"; - vehicle="ACE_medicalSupplyCrate"; - leader=1; - skill=0.60000002; - }; - class Item10 - { - position[]={1733.2904,5.5,5717.6465}; - azimut=13.57355; - id=51; - side="EMPTY"; - vehicle="ACE_Box_Misc"; - leader=1; - skill=0.60000002; - }; - class Item11 - { - position[]={1736.1099,5.5,5717.1831}; - azimut=13.57355; - id=52; - side="EMPTY"; - vehicle="ACE_Box_Misc"; - leader=1; - skill=0.60000002; - }; - class Item12 - { - position[]={1732.4794,5.5,5715.4067}; - azimut=9.5156059; - id=53; - side="EMPTY"; - vehicle="Box_NATO_AmmoOrd_F"; - leader=1; - skill=0.60000002; - }; - class Item13 - { - position[]={1735.2601,5.5,5714.7891}; - azimut=9.5156059; - id=54; - side="EMPTY"; - vehicle="Box_NATO_AmmoOrd_F"; - leader=1; - skill=0.60000002; - }; - class Item14 - { - position[]={1743.4641,5.5,5753.5161}; - azimut=104.535; - id=55; - side="EMPTY"; - vehicle="B_MRAP_01_hmg_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item15 - { - position[]={1741.916,5.5,5747.4302}; - azimut=104.535; - id=56; - side="EMPTY"; - vehicle="I_APC_tracked_03_cannon_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item16 - { - position[]={1722.1113,5.5,5768.3818}; - azimut=193.13876; - id=57; - side="EMPTY"; - vehicle="B_Heli_Attack_01_F"; - skill=0.60000002; - }; - class Item17 - { - position[]={1733.6005,5.5,5765.2881}; - azimut=198.2417; - id=58; - side="EMPTY"; - vehicle="B_Heli_Light_01_armed_F"; - skill=0.60000002; - }; - class Item18 - { - position[]={1746.17,5.5,5764.1099}; - azimut=198.97742; - id=59; - side="EMPTY"; - vehicle="B_Heli_Transport_01_F"; - skill=0.60000002; - }; - class Item19 - { - position[]={1909.3875,10.094501,5668.21}; - azimut=4.41886; - id=60; - side="EMPTY"; - vehicle="O_MBT_02_cannon_F"; - skill=0.60000002; - }; - class Item20 - { - position[]={1724.0231,5.5,5722.8857}; - azimut=104.535; - id=61; - side="EMPTY"; - vehicle="Box_IND_Wps_F"; - skill=0.60000002; - }; - class Item21 - { - position[]={1724.6892,5.5,5724.7744}; - azimut=104.535; - id=62; - side="EMPTY"; - vehicle="Box_IND_Ammo_F"; - skill=0.60000002; - }; - class Item22 - { - position[]={1717.6512,5.5,5724.0181}; - azimut=104.535; - id=63; - side="EMPTY"; - vehicle="Box_IND_Wps_F"; - skill=0.60000002; - }; - class Item23 - { - position[]={1718.2023,5.5,5726.3066}; - azimut=104.535; - id=64; - side="EMPTY"; - vehicle="Box_IND_Ammo_F"; - skill=0.60000002; - }; - class Item24 - { - position[]={1733.6895,5.5,5706.4785}; - azimut=104.535; - id=65; - side="EMPTY"; - vehicle="Box_NATO_WpsLaunch_F"; - skill=0.60000002; - }; - class Item25 - { - position[]={1733.21,5.5,5704.1836}; - azimut=104.535; - id=66; - side="EMPTY"; - vehicle="Box_East_WpsLaunch_F"; - skill=0.60000002; - }; - class Item26 - { - position[]={1732.4906,5.5,5701.6831}; - azimut=104.535; - id=67; - side="EMPTY"; - vehicle="Box_IND_WpsLaunch_F"; - skill=0.60000002; - }; - class Item27 - { - position[]={1825.109,5.5,5676.3613}; - azimut=4.41886; - id=68; - side="EMPTY"; - vehicle="O_MBT_02_cannon_F"; - skill=0.60000002; - text="t1"; - }; - class Item28 - { - position[]={1894.5531,5.6621442,5745.1523}; - azimut=4.41886; - id=69; - side="EMPTY"; - vehicle="O_MBT_02_cannon_F"; - skill=0.60000002; - }; - class Item29 - { - position[]={1863.2545,5.5,5712.0615}; - azimut=4.41886; - id=70; - side="EMPTY"; - vehicle="O_MBT_02_cannon_F"; - skill=0.60000002; - }; - class Item30 - { - position[]={1740.923,5.5,5741.1685}; - azimut=104.535; - id=71; - side="EMPTY"; - vehicle="B_MBT_01_cannon_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item31 - { - position[]={1721.363,5.5,5724.4956}; - azimut=104.535; - id=72; - side="EMPTY"; - vehicle="Box_NATO_Grenades_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item32 - { - position[]={1722.3844,5.5,5727.0381}; - azimut=104.535; - id=73; - side="EMPTY"; - vehicle="Box_NATO_WpsSpecial_F"; - lock="UNLOCKED"; - skill=0.60000002; - }; - class Item33 - { - position[]={1644.8666,0,5751.0166}; - azimut=-19.956911; - id=74; - side="EMPTY"; - vehicle="B_Boat_Armed_01_minigun_F"; - skill=0.60000002; - }; - class Item34 - { - position[]={1639.6296,0,5741.1772}; - azimut=-19.956911; - id=75; - side="EMPTY"; - vehicle="B_Boat_Armed_01_minigun_F"; - skill=0.60000002; - }; - class Item35 - { - position[]={1636.3765,0,5727.1333}; - azimut=-19.9569; - id=76; - side="EMPTY"; - vehicle="C_Boat_Civil_01_F"; - skill=0.60000002; - }; - class Item36 - { - position[]={1652.0231,-0.71640843,5760.2349}; - azimut=-19.9569; - id=77; - side="EMPTY"; - vehicle="B_Boat_Transport_01_F"; - skill=0.60000002; - }; - class Item37 - { - position[]={1739.5898,5.5,5730.6455}; - azimut=101.06; - id=78; - side="EMPTY"; - vehicle="B_static_AT_F"; - skill=0.60000002; - text="q0"; - }; - }; -}; -class Intro -{ - addOns[]= - { - "a3_map_stratis" - }; - addOnsAuto[]= - { - "a3_map_stratis" - }; - randomSeed=13628778; - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=12; - minute=0; - startFogDecay=0.013; - forecastFogDecay=0.013; - }; -}; -class OutroWin -{ - addOns[]= - { - "a3_map_stratis" - }; - addOnsAuto[]= - { - "a3_map_stratis" - }; - randomSeed=8997795; - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=12; - minute=0; - startFogDecay=0.013; - forecastFogDecay=0.013; - }; -}; -class OutroLoose -{ - addOns[]= - { - "a3_map_stratis" - }; - addOnsAuto[]= - { - "a3_map_stratis" - }; - randomSeed=1617621; - class Intel - { - timeOfChanges=1800.0002; - startWeather=0.30000001; - startWind=0.1; - startWaves=0.1; - forecastWeather=0.30000001; - forecastWind=0.1; - forecastWaves=0.1; - forecastLightnings=0.1; - year=2035; - month=7; - day=6; - hour=12; - minute=0; - startFogDecay=0.013; - forecastFogDecay=0.013; - }; -}; diff --git a/addons/testmissions/README.md b/addons/testmissions/README.md deleted file mode 100644 index e8737f0ab6d..00000000000 --- a/addons/testmissions/README.md +++ /dev/null @@ -1,11 +0,0 @@ -ace_testmissions -=========== - -Provides test missions. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- None diff --git a/addons/testmissions/config.cpp b/addons/testmissions/config.cpp deleted file mode 100644 index 3a73a661d59..00000000000 --- a/addons/testmissions/config.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - VERSION_CONFIG; - }; -}; - -class CfgMissions { - class MPMissions { - class ACETestingMap1 { - briefingName = "ACE Testing Map 1"; - directory = QUOTE(PATHTO_R(MPMissions\ACETestingMap1.Stratis)); - }; - }; -}; diff --git a/addons/testmissions/script_component.hpp b/addons/testmissions/script_component.hpp deleted file mode 100644 index 718356494d6..00000000000 --- a/addons/testmissions/script_component.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#define COMPONENT testmissions -#include "\z\ace\addons\main\script_mod.hpp" - -// #define DEBUG_MODE_FULL -// #define DISABLE_COMPILE_CACHE -// #define CBA_DEBUG_SYNCHRONOUS -// #define ENABLE_PERFORMANCE_COUNTERS - -#ifdef DEBUG_ENABLED_TESTMISSIONS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_ENABLED_TESTMISSIONS - #define DEBUG_SETTINGS DEBUG_ENABLED_TESTMISSIONS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From eb8390741b744d75c0ad0273eda61fd75b364b0b Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 14 May 2016 09:23:29 +0200 Subject: [PATCH 153/268] Change round down mass of body bag Mass is an integer. --- addons/medical/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp index 235e3c154bc..1c752c2aeaa 100644 --- a/addons/medical/CfgWeapons.hpp +++ b/addons/medical/CfgWeapons.hpp @@ -236,7 +236,7 @@ class CfgWeapons { descriptionShort = CSTRING(Bodybag_Desc_Short); descriptionUse = CSTRING(Bodybag_Desc_Use); class ItemInfo: InventoryItem_Base_F { - mass = 7.4; + mass = 7; }; }; }; From 04b61ff32ea6ef0a1c96c3ce975689ea6e31f102 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 14 May 2016 10:37:29 +0200 Subject: [PATCH 154/268] Fix missing semicolon --- addons/medical/functions/fnc_reviveStateLoop.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf index 3e55f7b7ce4..77a48c93402 100644 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -13,7 +13,7 @@ #include "script_component.hpp" -params ["_unit"] +params ["_unit"]; // If locality changed finish the local loop // @todo: reinitiate the loop elsewhere From c5275813a450670372e082e6db2853fdf8b7fd98 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 May 2016 10:49:09 +0200 Subject: [PATCH 155/268] use 'getUnitLoadout' instead of 'FUNC(getAllGear)' and deprecate it --- addons/common/XEH_postInit.sqf | 4 +- .../common/functions/fnc_assignedItemFix.sqf | 40 ++++------------- addons/common/functions/fnc_getAllGear.sqf | 2 + addons/common/functions/fnc_setAllGear.sqf | 2 + addons/goggles/XEH_postInit.sqf | 4 +- addons/medical/XEH_postInit.sqf | 4 +- addons/nightvision/XEH_postInitClient.sqf | 2 +- addons/parachute/XEH_postInit.sqf | 3 +- addons/respawn/functions/fnc_handleKilled.sqf | 10 ++--- .../respawn/functions/fnc_handleRespawn.sqf | 6 ++- addons/respawn/functions/fnc_restoreGear.sqf | 43 +++++++++++-------- addons/scopes/XEH_postInit.sqf | 5 +-- 12 files changed, 53 insertions(+), 72 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index a6b952062e7..2b5637a78fd 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -333,7 +333,7 @@ enableCamShake true; GVAR(OldPlayerVehicle) = vehicle objNull; GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex); GVAR(OldPlayerWeapon) = currentWeapon objNull; -GVAR(OldPlayerInventory) = [objNull] call FUNC(getAllGear); +GVAR(OldPlayerInventory) = []; GVAR(OldPlayerVisionMode) = currentVisionMode objNull; GVAR(OldCameraView) = ""; GVAR(OldVisibleMap) = false; @@ -381,7 +381,7 @@ GVAR(OldIsCamera) = false; }; // "playerInventoryChanged" event - _data = [ACE_player] call FUNC(getAllGear); + _data = getUnitLoadout ACE_player; if !(_data isEqualTo GVAR(OldPlayerInventory)) then { // Raise ACE event locally GVAR(OldPlayerInventory) = _data; diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf index d93409ce7c1..3f454f83ff6 100644 --- a/addons/common/functions/fnc_assignedItemFix.sqf +++ b/addons/common/functions/fnc_assignedItemFix.sqf @@ -31,37 +31,15 @@ GVAR(AssignedItemsShownItems) = [ ["playerInventoryChanged", { params ["_unit", "_assignedItems"]; - _assignedItems = _assignedItems select 17; - - GVAR(AssignedItemsShownItems) = [true, true, true, true, true]; - - { - if !(_x in GVAR(AssignedItems)) then { - GVAR(AssignedItems) pushBack _x; - GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType"); - }; - - switch (GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x)) do { - case ("map"): { - GVAR(AssignedItemsShownItems) set [0, false]; - }; - case ("compass"): { - GVAR(AssignedItemsShownItems) set [1, false]; - }; - case ("watch"): { - GVAR(AssignedItemsShownItems) set [2, false]; - }; - case ("radio"): { - GVAR(AssignedItemsShownItems) set [3, false]; - }; - case ("gps"): { - GVAR(AssignedItemsShownItems) set [4, false]; - }; - }; - false - } count _assignedItems; - - //systemChat str GVAR(AssignedItemsShownItems); + _assignedItems = _assignedItems param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] + + GVAR(AssignedItemsShownItems) = [ + !((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"}, + !((_assignedItems select 3) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 3 >> "ACE_hideItemType") != "compass"}, + !((_assignedItems select 4) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 4 >> "ACE_hideItemType") != "watch"}, + !((_assignedItems select 2) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 2 >> "ACE_hideItemType") != "radio"}, + !((_assignedItems select 1) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 1 >> "ACE_hideItemType") != "gps"} + ]; GVAR(AssignedItemsShownItems) params ["_showMap", "_showCompass", "_showWatch", "_showRadio", "_showGPS"]; diff --git a/addons/common/functions/fnc_getAllGear.sqf b/addons/common/functions/fnc_getAllGear.sqf index 715966b176e..716793f7bde 100644 --- a/addons/common/functions/fnc_getAllGear.sqf +++ b/addons/common/functions/fnc_getAllGear.sqf @@ -33,6 +33,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout"); + params ["_unit"]; if (isNull _unit) exitWith {[ diff --git a/addons/common/functions/fnc_setAllGear.sqf b/addons/common/functions/fnc_setAllGear.sqf index 152eb4fd60c..63349917960 100644 --- a/addons/common/functions/fnc_setAllGear.sqf +++ b/addons/common/functions/fnc_setAllGear.sqf @@ -18,6 +18,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_setAllGear","3.7.0","setUnitLoadout"); + params ["_unit", "_allGear", ["_clearAttachments", false], ["_clearBackpack", false]]; if (!local _unit) exitWith { diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 832c961178a..3a038ed9230 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -42,10 +42,10 @@ GVAR(surfaceCache) = ""; GVAR(surfaceCacheIsDust) = false; // init GlassesChanged eventhandler -GVAR(OldGlasses) = "#NULLSTRING"; +GVAR(OldGlasses) = ""; ["playerInventoryChanged", { - (_this select 1) params ["", "_currentGlasses"]; + private _currentGlasses = (_this select 1) param [7, ""]; if (GVAR(OldGlasses) != _currentGlasses) then { ["GlassesChanged", [ACE_player, _currentGlasses]] call EFUNC(common,localEvent); diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 5d29d22cecc..8d8911a6bf9 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -298,9 +298,7 @@ GVAR(lastHeartBeatSound) = ACE_time; ["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition); // Item Event Handler -["playerInventoryChanged", { - [ACE_player] call FUNC(itemCheck); -}] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(itemCheck)] call EFUNC(common,addEventHandler); if (hasInterface) then { ["PlayerJip", { diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 5a6714a3749..96badd59aff 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -29,7 +29,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; // Setup the event handlers -["playerInventoryChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(updatePPEffects)] call EFUNC(common,addEventHandler); ["playerVisionModeChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onVisionModeChanged); diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index 598661a3da6..ad4044e6e57 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -43,5 +43,4 @@ GVAR(PFH) = false; // don't show speed and height when in expert mode ["infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call EFUNC(common,addEventHandler); -//[ACE_Player,([ACE_player] call EFUNC(common,getAllGear))] call FUNC(storeParachute); -["playerInventoryChanged", FUNC(storeParachute) ] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(storeParachute)] call EFUNC(common,addEventHandler); diff --git a/addons/respawn/functions/fnc_handleKilled.sqf b/addons/respawn/functions/fnc_handleKilled.sqf index cd1ad33491c..2b9509f39d3 100644 --- a/addons/respawn/functions/fnc_handleKilled.sqf +++ b/addons/respawn/functions/fnc_handleKilled.sqf @@ -19,13 +19,9 @@ params ["_unit"]; // Saves the gear when the player! (and only him) is killed -if (ACE_player == _unit) then { - GVAR(unitGear) = []; - - if (GVAR(SavePreDeathGear)) then { - GVAR(unitGear) = [_unit] call EFUNC(common,getAllGear); - GVAR(unitGear) append [currentWeapon _unit, currentMuzzle _unit, currentWeaponMode _unit]; - }; +if (ACE_player == _unit && {GVAR(SavePreDeathGear)}) then { + _unit setVariable [QGVAR(unitGear), getUnitLoadout _unit]; + _unit setVariable [QGVAR(activeWeaponAndMuzzle), [currentWeapon _unit, currentMuzzle _unit, currentWeaponMode _unit]]; }; if (missionNamespace getVariable [QGVAR(showFriendlyFireMessage), false]) then { diff --git a/addons/respawn/functions/fnc_handleRespawn.sqf b/addons/respawn/functions/fnc_handleRespawn.sqf index ab5ecedbda8..3b1ae1c86f8 100644 --- a/addons/respawn/functions/fnc_handleRespawn.sqf +++ b/addons/respawn/functions/fnc_handleRespawn.sqf @@ -20,7 +20,11 @@ params ["_unit"]; // Restores the gear when the player respawns if (GVAR(SavePreDeathGear)) then { - [_unit, GVAR(unitGear)] call FUNC(restoreGear); + [ + _unit, + _unit getVariable QGVAR(unitGear), + _unit getVariable QGVAR(activeWeaponAndMuzzle) + ] call FUNC(restoreGear); }; // fix for setVariable public being lost on respawn for machines that JIP after the command was broadcasted diff --git a/addons/respawn/functions/fnc_restoreGear.sqf b/addons/respawn/functions/fnc_restoreGear.sqf index af3acb7fb4c..a035bdd52d7 100644 --- a/addons/respawn/functions/fnc_restoreGear.sqf +++ b/addons/respawn/functions/fnc_restoreGear.sqf @@ -19,30 +19,35 @@ params ["_unit", "_allGear", "_activeWeaponAndMuzzle"]; // restore all gear -[_unit, _allGear, true, true] call EFUNC(common,setAllGear); +if (!isNil "_allGear") then { + _unit setUnitLoadout _allGear; +}; // restore the last active weapon, muzzle and weaponMode -_activeWeaponAndMuzzle params ["_activeWeapon", "_activeMuzzle", "_activeWeaponMode"]; +if (!isNil "_activeWeaponAndMuzzle") then { + // @todo, replace this with CBA_fnc_selectWeapon after next CBA update + _activeWeaponAndMuzzle params ["_activeWeapon", "_activeMuzzle", "_activeWeaponMode"]; -if ( - (_activeMuzzle != "") && - {_activeMuzzle != _activeWeapon} && - {_activeMuzzle in getArray (configFile >> "CfgWeapons" >> _activeWeapon >> "muzzles")} -) then { - _unit selectWeapon _activeMuzzle; -} else { - if (_activeWeapon != "") then { - _unit selectWeapon _activeWeapon; + if ( + (_activeMuzzle != "") && + {_activeMuzzle != _activeWeapon} && + {_activeMuzzle in getArray (configFile >> "CfgWeapons" >> _activeWeapon >> "muzzles")} + ) then { + _unit selectWeapon _activeMuzzle; + } else { + if (_activeWeapon != "") then { + _unit selectWeapon _activeWeapon; + }; }; -}; -if (currentWeapon _unit != "") then { - private _index = 0; + if (currentWeapon _unit != "") then { + private _index = 0; - while { - _index < 100 && {currentWeaponMode _unit != _activeWeaponMode} - } do { - _unit action ["SwitchWeapon", _unit, _unit, _index]; - _index = _index + 1; + while { + _index < 100 && {currentWeaponMode _unit != _activeWeaponMode} + } do { + _unit action ["SwitchWeapon", _unit, _unit, _index]; + _index = _index + 1; + }; }; }; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 8f2adeb0b7b..625f963f33a 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -10,10 +10,7 @@ if (!hasInterface) exitWith {}; // Check inventory when it changes -["playerInventoryChanged", { - [ACE_player] call FUNC(inventoryCheck); -}] call EFUNC(common,addEventhandler); - +["playerInventoryChanged", FUNC(inventoryCheck)] call EFUNC(common,addEventhandler); // Instantly hide knobs when scoping in ["cameraViewChanged", { From e4c86a8af5738035d0985e6a8df08ea33cf93e07 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 May 2016 19:50:08 +0200 Subject: [PATCH 156/268] don't do 'playerInventoryChanged' just because ammo decreased after firing --- addons/common/XEH_postInit.sqf | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 2b5637a78fd..0eac9a3e634 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -334,6 +334,7 @@ GVAR(OldPlayerVehicle) = vehicle objNull; GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex); GVAR(OldPlayerWeapon) = currentWeapon objNull; GVAR(OldPlayerInventory) = []; +GVAR(OldPlayerInventoryNoAmmo) = []; GVAR(OldPlayerVisionMode) = currentVisionMode objNull; GVAR(OldCameraView) = ""; GVAR(OldVisibleMap) = false; @@ -385,7 +386,19 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerInventory)) then { // Raise ACE event locally GVAR(OldPlayerInventory) = _data; - ["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent); + + // we don't want to trigger this just because your ammo counter decreased. + _data = + GVAR(OldPlayerInventory); + (_data param [0, []]) set [4, primaryWeaponMagazine ACE_player]; + (_data param [0, []]) set [5, nil]; + (_data param [1, []]) set [4, secondaryWeaponMagazine ACE_player]; + (_data param [1, []]) set [5, nil]; + (_data param [2, []]) set [4, handgunMagazine ACE_player]; + (_data param [2, []]) set [5, nil]; + if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then { + GVAR(OldPlayerInventoryNoAmmo) = _data; + ["playerInventoryChanged", [ACE_player, GVAR(OldPlayerInventory)]] call FUNC(localEvent); + }; }; // "playerVisionModeChanged" event From 7628f9a4ab879a8f7e9b89fb6f585cd39417245f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 14 May 2016 13:08:58 -0500 Subject: [PATCH 157/268] Fix nils in array --- addons/common/XEH_postInit.sqf | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 0eac9a3e634..14e09e2c5bf 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -389,12 +389,18 @@ GVAR(OldIsCamera) = false; // we don't want to trigger this just because your ammo counter decreased. _data = + GVAR(OldPlayerInventory); - (_data param [0, []]) set [4, primaryWeaponMagazine ACE_player]; - (_data param [0, []]) set [5, nil]; - (_data param [1, []]) set [4, secondaryWeaponMagazine ACE_player]; - (_data param [1, []]) set [5, nil]; - (_data param [2, []]) set [4, handgunMagazine ACE_player]; - (_data param [2, []]) set [5, nil]; + if (!((_data select 0) isEqualTo [])) then { + (_data param [0, []]) set [4, primaryWeaponMagazine ACE_player]; + (_data param [0, []]) set [5, []]; + }; + if (!((_data select 1) isEqualTo [])) then { + (_data param [1, []]) set [4, secondaryWeaponMagazine ACE_player]; + (_data param [1, []]) set [5, []]; + }; + if (!((_data select 2) isEqualTo [])) then { + (_data param [2, []]) set [4, handgunMagazine ACE_player]; + (_data param [2, []]) set [5, []]; + }; if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then { GVAR(OldPlayerInventoryNoAmmo) = _data; ["playerInventoryChanged", [ACE_player, GVAR(OldPlayerInventory)]] call FUNC(localEvent); From 07caf1b0bdf56aeebb5940b887ef2c91789d881e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 14 May 2016 20:33:33 +0200 Subject: [PATCH 158/268] fix for null player --- addons/common/XEH_postInit.sqf | 25 ++++++++++++------- .../medical/functions/fnc_reviveStateLoop.sqf | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 14e09e2c5bf..e75841cb8ef 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -389,18 +389,25 @@ GVAR(OldIsCamera) = false; // we don't want to trigger this just because your ammo counter decreased. _data = + GVAR(OldPlayerInventory); - if (!((_data select 0) isEqualTo [])) then { - (_data param [0, []]) set [4, primaryWeaponMagazine ACE_player]; - (_data param [0, []]) set [5, []]; + + private _weaponInfo = _data param [0, []]; + if !(_weaponInfo isEqualTo []) then { + _weaponInfo set [4, primaryWeaponMagazine ACE_player]; + _weaponInfo deleteAt 5; }; - if (!((_data select 1) isEqualTo [])) then { - (_data param [1, []]) set [4, secondaryWeaponMagazine ACE_player]; - (_data param [1, []]) set [5, []]; + + _weaponInfo = _data param [1, []]; + if !(_weaponInfo isEqualTo []) then { + _weaponInfo set [4, secondaryWeaponMagazine ACE_player]; + _weaponInfo deleteAt 5; }; - if (!((_data select 2) isEqualTo [])) then { - (_data param [2, []]) set [4, handgunMagazine ACE_player]; - (_data param [2, []]) set [5, []]; + + _weaponInfo = _data param [2, []]; + if !(_weaponInfo isEqualTo []) then { + _weaponInfo set [4, handgunMagazine ACE_player]; + _weaponInfo deleteAt 5; }; + if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then { GVAR(OldPlayerInventoryNoAmmo) = _data; ["playerInventoryChanged", [ACE_player, GVAR(OldPlayerInventory)]] call FUNC(localEvent); diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf index 3e55f7b7ce4..77a48c93402 100644 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -13,7 +13,7 @@ #include "script_component.hpp" -params ["_unit"] +params ["_unit"]; // If locality changed finish the local loop // @todo: reinitiate the loop elsewhere From 3d74c25c977fff2d9cc3036cd8a164abde8d849a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 May 2016 19:38:24 +0200 Subject: [PATCH 159/268] Add deprecate component solution --- addons/common/XEH_PREP.hpp | 1 + .../functions/fnc_deprecateComponent.sqf | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 addons/common/functions/fnc_deprecateComponent.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 3dea56a98d3..d8a25211b3d 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -24,6 +24,7 @@ PREP(debugModule); PREP(defineVariable); PREP(deviceKeyFindValidIndex); PREP(deviceKeyRegisterNew); +PREP(deprecateComponent); PREP(disableAI); PREP(disableUserInput); PREP(displayIcon); diff --git a/addons/common/functions/fnc_deprecateComponent.sqf b/addons/common/functions/fnc_deprecateComponent.sqf new file mode 100644 index 00000000000..fc23b0e57f4 --- /dev/null +++ b/addons/common/functions/fnc_deprecateComponent.sqf @@ -0,0 +1,40 @@ +/* + * Author: Glowbal + * Mark a component as deprecated and switches it to a new component if that is available + * + * Arguments: + * 0: Component + * 1: New component + * 2: Version when the compent will be removed + * + * Return Value: + * Replaced by new component + * + * Public: No + * + * Example: + * [["ace_sitting", "ace_sitting_enabled"], ["acex_sitting", "acex_sitting_enabled"], "3.7.0"] call ace_common_fnc_deprecateComponent; + */ +#include "script_component.hpp" + +params ["_oldComponent", "_newComponent", "_version"]; + +_oldComponent params ["_oldComponentName", "_oldSettingName"]; +_newComponent params ["_newComponentName", "_newSettingName"]; + +private _isReplacementAvailable = isClass (configFile >> "CfgPatches" >> _newComponentName); +private _isDeprecatedLoaded = missionNamespace getvariable [_oldSettingName, false]; +private _isReplacementLoaded = missionNamespace getvariable [_newSettingName, false]; + +if (_isDeprecatedLoaded && {_isReplacementAvailable} && {!_isReplacementLoaded}) then { + [_newSettingName, true, true, true] call FUNC(setSetting); +}; + +if (_isDeprecatedLoaded && {!_isReplacementLoaded}) then { + // Log deprecated component is loaded + private _message = format["Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version]; + systemChat format["ACE [WARNING] - %1", _message]; + ACE_LOGWARNING(_message); +}; + +_isReplacementAvailable; From 7a7e930024499a071bb3566d7de74eec3a040ca9 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 May 2016 19:38:37 +0200 Subject: [PATCH 160/268] Add deprecate sitting component --- addons/sitting/CfgVehicles.hpp | 2 +- addons/sitting/XEH_clientInit.sqf | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index d92d92fc49d..f7b1c9c197f 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -8,7 +8,7 @@ class CfgVehicles { category = "ACE"; displayName = CSTRING(ModuleDisplayName); function = QFUNC(moduleInit); - scope = 2; + scope = 1; isGlobal = 1; isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index e15017d715d..f681a3df8d3 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -3,11 +3,12 @@ // Exit on Headless if (!hasInterface) exitWith {}; +GVAR(isEnabled) = false; ["SettingsInitialized", { - TRACE_1("SettingInit", GVAR(enable)); - + if ([[QUOTE(ADDON), QGVAR(enable)], ["acex_sitting", "acex_sitting_enable"], "3.7.0"] call EFUNC(common,deprecateComponent)) exitwith {}; //If not enabled, then do not add CanInteractWith Condition or event handlers: - if (!GVAR(enable)) exitWith {}; + if (!GVAR(enable) || GVAR(isEnabled)) exitWith {}; + GVAR(isEnabled) = true; // Add interaction menu exception ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); From 487400b14248845b1e566ab23ec4cc3c38b6ea70 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 15 May 2016 20:13:10 +0200 Subject: [PATCH 161/268] Add different warning messages based on current version of component --- .../functions/fnc_deprecateComponent.sqf | 31 ++++++++++++++++--- addons/sitting/XEH_clientInit.sqf | 2 +- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_deprecateComponent.sqf b/addons/common/functions/fnc_deprecateComponent.sqf index fc23b0e57f4..21905e8e4e6 100644 --- a/addons/common/functions/fnc_deprecateComponent.sqf +++ b/addons/common/functions/fnc_deprecateComponent.sqf @@ -31,10 +31,33 @@ if (_isDeprecatedLoaded && {_isReplacementAvailable} && {!_isReplacementLoaded}) }; if (_isDeprecatedLoaded && {!_isReplacementLoaded}) then { - // Log deprecated component is loaded - private _message = format["Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version]; - systemChat format["ACE [WARNING] - %1", _message]; - ACE_LOGWARNING(_message); + private _componentVersion = getText (configFile >> "CfgPatches" >> _oldComponentName >> "version"); + ((_componentVersion splitString ".") apply {parseNumber _x}) params ["_componentMajor", "_componentMinor", "_componentPatch"]; + ((_version splitString ".") apply {parseNumber _x}) params ["_major", "_minor", "_patch"]; + + switch (true) do { + case (_componentMajor >= _major && {_componentMinor >= _minor} && {_componentPatch >= _patch}): { // Removed from this version + private _message = format[ + "Component %1 is deprecated. It has been replaced by %2. The component %1 is no longer usable on this version. ", _oldComponentName, _newComponentName, _version]; + systemChat format["ACE [ERROR] - %1", _message]; + ACE_LOGERROR(_message); + }; + case (_componentMajor >= _major && {_componentMinor >= _minor-1}): { // Removed the next this version + private _message = format[ + "Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. " + + "The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version]; + systemChat format["ACE [WARNING] - %1", _message]; + ACE_LOGWARNING(_message); + }; + case (_componentMajor == _major && {_componentMinor >= _minor - 2}): { // we are in a version leading up to removal + private _message = format[ + "Component %1 is deprecated. It is replaced by %2. Please disable %1 and make use of %2. " + + "The component (%1) will no longer be available from version %3 and later.", _oldComponentName, _newComponentName, _version]; + ACE_LOGWARNING(_message); + }; + default { + }; + }; }; _isReplacementAvailable; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index f681a3df8d3..60b50c4d091 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -5,7 +5,7 @@ if (!hasInterface) exitWith {}; GVAR(isEnabled) = false; ["SettingsInitialized", { - if ([[QUOTE(ADDON), QGVAR(enable)], ["acex_sitting", "acex_sitting_enable"], "3.7.0"] call EFUNC(common,deprecateComponent)) exitwith {}; + if ([[QUOTE(ADDON), QGVAR(enable)], ["acex_sitting", "acex_sitting_enable"], "3.8.0"] call EFUNC(common,deprecateComponent)) exitwith {}; //If not enabled, then do not add CanInteractWith Condition or event handlers: if (!GVAR(enable) || GVAR(isEnabled)) exitWith {}; GVAR(isEnabled) = true; From 32055401d3be3b0d38bb173d58d773559c5b437a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 16 May 2016 00:09:53 +0200 Subject: [PATCH 162/268] Add backwards compatability for InventoryChanged The output of `getUnitLoadout` is different as `getAllGear`. Using a different format in the event would mean that any eventhandler depending on the inventory output would now be broken. --- addons/common/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 2b5637a78fd..82cf0da2ea5 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -385,7 +385,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerInventory)) then { // Raise ACE event locally GVAR(OldPlayerInventory) = _data; - ["playerInventoryChanged", [ACE_player, _data]] call FUNC(localEvent); + ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear) ]] call FUNC(localEvent); }; // "playerVisionModeChanged" event From cac7b9c0c36e7ad18c2a8e52e5e93f4a6d92dd19 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 16 May 2016 15:15:51 +0200 Subject: [PATCH 163/268] optional param to skip deprecated warning --- addons/common/functions/fnc_getAllGear.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_getAllGear.sqf b/addons/common/functions/fnc_getAllGear.sqf index 716793f7bde..cebcc489f1c 100644 --- a/addons/common/functions/fnc_getAllGear.sqf +++ b/addons/common/functions/fnc_getAllGear.sqf @@ -33,9 +33,11 @@ */ #include "script_component.hpp" -ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout"); +params ["_unit", ["_showDeprecated", true]]; -params ["_unit"]; +if (_showDeprecated) then { + ACE_DEPRECATED("ace_common_fnc_getAllGear","3.7.0","getUnitLoadout"); +}; if (isNull _unit) exitWith {[ "", From 473149b8ca2da3a7cea3029316b44f413a04bf04 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 16 May 2016 15:22:37 +0200 Subject: [PATCH 164/268] revert changes from other PR to make it compatible --- addons/common/functions/fnc_assignedItemFix.sqf | 4 ++-- addons/goggles/XEH_postInit.sqf | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf index 3f454f83ff6..18dd6b4e0c6 100644 --- a/addons/common/functions/fnc_assignedItemFix.sqf +++ b/addons/common/functions/fnc_assignedItemFix.sqf @@ -29,9 +29,9 @@ GVAR(AssignedItemsShownItems) = [ ]; ["playerInventoryChanged", { - params ["_unit", "_assignedItems"]; + params ["_unit"]; - _assignedItems = _assignedItems param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] + private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] GVAR(AssignedItemsShownItems) = [ !((_assignedItems select 0) isEqualTo "") && {getText (configFile >> "CfgWeapons" >> _assignedItems select 0 >> "ACE_hideItemType") != "map"}, diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 3a038ed9230..37edd7184b0 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -45,10 +45,12 @@ GVAR(surfaceCacheIsDust) = false; GVAR(OldGlasses) = ""; ["playerInventoryChanged", { - private _currentGlasses = (_this select 1) param [7, ""]; + params ["_unit"]; + + private _currentGlasses = goggles _unit; if (GVAR(OldGlasses) != _currentGlasses) then { - ["GlassesChanged", [ACE_player, _currentGlasses]] call EFUNC(common,localEvent); + ["GlassesChanged", [_unit, _currentGlasses]] call EFUNC(common,localEvent); GVAR(OldGlasses) = _currentGlasses; }; }] call EFUNC(common,addEventHandler); From d93132dac815a1bc661a6077c9164b4907c51a50 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 18 May 2016 11:57:40 +0200 Subject: [PATCH 165/268] more replacing --- addons/fastroping/functions/fnc_fastRope.sqf | 2 +- addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf | 2 +- addons/medical/functions/fnc_addVitalLoop.sqf | 2 +- addons/medical/functions/fnc_litterCleanupLoop.sqf | 2 +- addons/medical/functions/fnc_reviveStateLoop.sqf | 2 +- addons/medical/functions/fnc_vitalLoop.sqf | 4 ++-- addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- .../functions/fnc_updateSpareBarrelsTemperaturesThread.sqf | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf index 17991c538e5..e3bd21482ff 100644 --- a/addons/fastroping/functions/fnc_fastRope.sqf +++ b/addons/fastroping/functions/fnc_fastRope.sqf @@ -37,4 +37,4 @@ _vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true]; //Start server PFH asap [QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call EFUNC(common,serverEvent); moveOut _unit; -[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, ACE_diagTime]] call CBA_fnc_addPerFrameHandler; +[FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, diag_tickTime]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 03df460f55a..3a1e8d57074 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -43,7 +43,7 @@ if (isNull attachedTo _unit) exitWith { [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; -if (ACE_diagTime > _timeToPlayRopeSound) then { +if (diag_tickTime > _timeToPlayRopeSound) then { _arguments set [4, (_timeToPlayRopeSound + 1)]; playSound QGVAR(Rope); }; diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index 52b2cc11f91..29a1d559b43 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -27,4 +27,4 @@ if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force // Schedule the loop to be executed again 1 sec later // @todo: should the loop be started righ away instead? _unit setVariable [QGVAR(addedToUnitLoop), true, true]; -[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); +[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call EFUNC(common,waitAndExecute); diff --git a/addons/medical/functions/fnc_litterCleanupLoop.sqf b/addons/medical/functions/fnc_litterCleanupLoop.sqf index ac102d5d59d..4b7577e9314 100644 --- a/addons/medical/functions/fnc_litterCleanupLoop.sqf +++ b/addons/medical/functions/fnc_litterCleanupLoop.sqf @@ -15,7 +15,7 @@ { _x params ["_time", "_objects"]; - if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then { + if (CBA_missionTime - _time >= GVAR(litterCleanUpDelay)) then { { deleteVehicle _x; } forEach _objects; diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf index 77a48c93402..5be2510c787 100644 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -35,7 +35,7 @@ if ((alive _unit) && {(vehicle _unit) != _unit} && {!alive (vehicle _unit)}) the }; // If the timer run out, let the unit die and exit the loop -if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { +if (GVAR(maxReviveTime) > 0 && {CBA_missionTime - _startTime > GVAR(maxReviveTime)}) exitwith { _unit setVariable [QGVAR(inReviveState), nil, true]; _unit setVariable [QGVAR(reviveStartTime), nil]; [_unit, true] call FUNC(setDead); diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf index c9df4c6e91e..0c05c919708 100644 --- a/addons/medical/functions/fnc_vitalLoop.sqf +++ b/addons/medical/functions/fnc_vitalLoop.sqf @@ -29,7 +29,7 @@ if (!local _unit) exitWith { }; // Handle unit vitals -[_unit, ACE_time - _lastTime] call FUNC(handleUnitVitals); +[_unit, CBA_missionTime - _lastTime] call FUNC(handleUnitVitals); // Play injured sounds private _pain = _unit getVariable [QGVAR(pain), 0]; @@ -45,4 +45,4 @@ if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { }; // Schedule the loop to be executed again 1 sec later -[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); +[DFUNC(vitalLoop), [_unit, CBA_missionTime], 1] call EFUNC(common,waitAndExecute); diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index 08cb85083ce..7887a87ce6c 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -47,7 +47,7 @@ TRACE_3("loadCoolestSpareBarrel5",_coolestTemp,_coolestMag,_weaponTemp); _gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; // Heat up the coolest barrel to the former weapon temperature -[GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; +[GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, CBA_missionTime, _barrelMass]] call CBA_fnc_hashSet; // Send an event so the machines of the assistant and gunner can show the hint ["showWeaponTemperature", [_assistant, _gunner], [_gunner, _weapon]] call EFUNC(common,targetEvent); diff --git a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf index d6b74f6769b..31ffbf0b594 100644 --- a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf +++ b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf @@ -25,14 +25,14 @@ TRACE_1("updateSpareBarrelsTemperaturesThread2",_pairs); _value params ["_initialTemp","_initialTime", "_barrelMass"]; // Calculate cooling - private _finalTemp = [_initialTemp, _barrelMass, ACE_time - _initialTime] call FUNC(calculateCooling); + private _finalTemp = [_initialTemp, _barrelMass, CBA_missionTime - _initialTime] call FUNC(calculateCooling); TRACE_4("updateSpareBarrelsTemperaturesThread3",_barrelMagazineID,_initialTemp,_finalTemp,_barrelMass); if (_finalTemp < 5) then { // The barrel is cool enough to keep calculating. Remove it from the hash [GVAR(storedSpareBarrels), _barrelMagazineID] call CBA_fnc_hashRem; } else { // Store the new temp - [GVAR(storedSpareBarrels), _barrelMagazineID, [_finalTemp, ACE_time, _barrelMass]] call CBA_fnc_hashSet; + [GVAR(storedSpareBarrels), _barrelMagazineID, [_finalTemp, CBA_missionTime, _barrelMass]] call CBA_fnc_hashSet; }; } forEach _pairs; From 655277cc17b83281e64a44dbc58746ad44f507d4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 18 May 2016 11:58:42 +0200 Subject: [PATCH 166/268] remove previously deleted block --- addons/common/XEH_preInit.sqf | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 48865125259..3a9fe126836 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -46,29 +46,6 @@ if (isServer) then { GVAR(statusEffect_Names) = []; GVAR(statusEffect_isGlobal) = []; -////////////////////////////////////////////////// -// Set up PlayerChanged eventhandler for pre init (EH is installed in postInit) -////////////////////////////////////////////////// - -ACE_player = objNull; -uiNamespace setVariable ["ACE_player", objNull]; - -// @todo check if this can be removed -if (hasInterface) then { - // PFH to update the ACE_player variable - GVAR(PreInit_playerChanged_PFHID) = [{ - if !(ACE_player isEqualTo (call FUNC(player))) then { - private _oldPlayer = ACE_player; - - ACE_player = call FUNC(player); - uiNamespace setVariable ["ACE_player", ACE_player]; - - // Raise ACE event - ["playerChanged", [ACE_player, _oldPlayer]] call FUNC(localEvent); - }; - }, 0, []] call CBA_fnc_addPerFrameHandler; -}; - // Init toHex [0] call FUNC(toHex); From 08bafd535f1c18b463277cf187f07effde9cb65e Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 18 May 2016 12:00:13 +0200 Subject: [PATCH 167/268] deleted to much --- addons/common/XEH_preInit.sqf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3a9fe126836..69a52da367e 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -46,6 +46,13 @@ if (isServer) then { GVAR(statusEffect_Names) = []; GVAR(statusEffect_isGlobal) = []; +////////////////////////////////////////////////// +// Set up PlayerChanged eventhandler for pre init (EH is installed in postInit) +////////////////////////////////////////////////// + +ACE_player = objNull; +uiNamespace setVariable ["ACE_player", objNull]; + // Init toHex [0] call FUNC(toHex); From 25876d82caeef935058b0335e4fc701ef989ad58 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 18 May 2016 12:21:53 +0200 Subject: [PATCH 168/268] manual merge --- addons/common/XEH_postInit.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 8922da7c6fe..88012a78843 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -386,7 +386,6 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerInventory)) then { // Raise ACE event locally GVAR(OldPlayerInventory) = _data; -<<<<<<< HEAD // we don't want to trigger this just because your ammo counter decreased. _data = + GVAR(OldPlayerInventory); From 709916c0f3dfec70c6b4131b2f01972be612b1f0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 May 2016 19:53:23 -0500 Subject: [PATCH 169/268] Fix UBC errors for RHS 4.1 (#3800) --- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgVehicles.hpp | 4 ++-- optionals/compat_rhs_usf3/CfgAmmo.hpp | 3 ++- optionals/compat_rhs_usf3/CfgWeapons.hpp | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 3a00fdea688..0ab559f96c1 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -39,7 +39,7 @@ class CfgAmmo { ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { + class rhs_B_762x54_Ball_Tracer_Green: rhs_B_762x54_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp index 87d8673cd8e..34effc0a586 100644 --- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -243,8 +243,8 @@ class CfgVehicles { EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); class UserActions { - class openDoor; - class closeDoor_L: openDoor { + class openDoor_L; + class closeDoor_L: openDoor_L { condition = QUOTE((this doorPhase 'LeftDoor' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])}); }; }; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index b830d5e5641..930976bf33a 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -2,7 +2,8 @@ class CfgAmmo { class BulletBase; - class rhsusf_B_300winmag: BulletBase { + class B_762x54_Ball; + class rhsusf_B_300winmag: B_762x54_Ball { ACE_caliber=7.823; ACE_bulletLength=37.821; ACE_bulletMass=14.256; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index c49b9bc5e48..8ef39bd666a 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -111,8 +111,8 @@ class CfgWeapons }; }; }; - class rhs_weap_m4a1; - class rhs_weap_mk18: rhs_weap_m4a1 { + class rhs_weap_m4a1_blockII; + class rhs_weap_mk18: rhs_weap_m4a1_blockII { ACE_barrelTwist = 177.8; ACE_barrelLength = 261.62; ACE_Overheating_dispersion = 1; From 508b71e7bab96342ba2d1f2be7484959450cdc49 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 May 2016 21:39:15 -0500 Subject: [PATCH 170/268] Scopes - Allow Scope Adjust from FFV --- addons/fcs/functions/fnc_adjustRange.sqf | 1 + .../fcs/functions/fnc_calculateSolution.sqf | 1 + addons/fcs/functions/fnc_canUseFCS.sqf | 11 ++++++- addons/fcs/functions/fnc_keyUp.sqf | 1 + addons/scopes/XEH_PREP.hpp | 1 + addons/scopes/XEH_postInit.sqf | 32 ++++++++++++++----- addons/scopes/XEH_preInit.sqf | 2 -- .../scopes/functions/fnc_canAdjustScope.sqf | 26 +++++++++++++++ addons/scopes/functions/fnc_firedEH.sqf | 1 + 9 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 addons/scopes/functions/fnc_canAdjustScope.sqf diff --git a/addons/fcs/functions/fnc_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf index f6f543d35a1..bed93897167 100644 --- a/addons/fcs/functions/fnc_adjustRange.sqf +++ b/addons/fcs/functions/fnc_adjustRange.sqf @@ -22,6 +22,7 @@ private _min = getNumber (_turretConfig >> QGVAR(MinDistance)); private _max = getNumber (_turretConfig >> QGVAR(MaxDistance)); private _distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], _min]; +TRACE_4("",_distance,_delta,_min,_max); _distance = _distance + _delta; _distance = _distance min _max; diff --git a/addons/fcs/functions/fnc_calculateSolution.sqf b/addons/fcs/functions/fnc_calculateSolution.sqf index 9908832824c..6d489de006c 100644 --- a/addons/fcs/functions/fnc_calculateSolution.sqf +++ b/addons/fcs/functions/fnc_calculateSolution.sqf @@ -15,6 +15,7 @@ */ #include "script_component.hpp" params ["_vehicle","_turret","_distance","_angleTarget"]; +TRACE_4("params",_vehicle,_turret,_distance,_angleTarget); private _FCSMagazines = []; private _FCSElevation = []; diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index 91b49554c2b..1dcd1ca49ee 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -8,9 +8,18 @@ * Return Value: * Boolean * + * Example: + * [] call ace_fcs_fnc_canUseFCS + * * Public: No */ #include "script_component.hpp" getNumber ([configFile >> "CfgVehicles" >> typeOf vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 -&& {cameraView == "GUNNER"} // return +&& {cameraView == "GUNNER"} +&& { + private _animationState = animationState ACE_player; + private _moves = configFile >> getText (configFile >> "CfgVehicles" >> (typeof ACE_player) >> "moves"); + + (getNumber (_moves >> "States" >> _animationState >> "canPullTrigger") == 0) +} diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 919ac3a58ed..4fbd247d167 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -14,6 +14,7 @@ #include "script_component.hpp" params ["_vehicle", "_turret", "_distance", ["_showHint", false], ["_playSound", true]]; +TRACE_5("params",_vehicle,_turret,_distance,_showHint,_playSound); private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); diff --git a/addons/scopes/XEH_PREP.hpp b/addons/scopes/XEH_PREP.hpp index 908d8064f02..05f58a59224 100644 --- a/addons/scopes/XEH_PREP.hpp +++ b/addons/scopes/XEH_PREP.hpp @@ -2,6 +2,7 @@ PREP(adjustScope); PREP(adjustZero); PREP(applyScopeAdjustment); +PREP(canAdjustScope); PREP(canAdjustZero); PREP(firedEH); PREP(getOptics); diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 625f963f33a..cc1d9e9c5cb 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -33,8 +33,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustUpMinor), localize LSTRING(AdjustUpMinor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -46,8 +48,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustDownMinor), localize LSTRING(AdjustDownMinor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -59,8 +63,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustLeftMinor), localize LSTRING(AdjustLeftMinor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -72,8 +78,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustRightMinor), localize LSTRING(AdjustRightMinor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -85,8 +93,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustUpMajor), localize LSTRING(AdjustUpMajor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -98,8 +108,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustDownMajor), localize LSTRING(AdjustDownMajor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -111,8 +123,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustLeftMajor), localize LSTRING(AdjustLeftMajor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement @@ -124,8 +138,10 @@ if (!hasInterface) exitWith {}; ["ACE3 Scope Adjustment", QGVAR(AdjustRightMajor), localize LSTRING(AdjustRightMajor), { // Conditions: canInteract - if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific + if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + [ACE_player] call FUNC(inventoryCheck); // Statement diff --git a/addons/scopes/XEH_preInit.sqf b/addons/scopes/XEH_preInit.sqf index e33c54337db..a7feade1c39 100644 --- a/addons/scopes/XEH_preInit.sqf +++ b/addons/scopes/XEH_preInit.sqf @@ -4,6 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -GVAR(fadeScript) = scriptNull; - ADDON = true; diff --git a/addons/scopes/functions/fnc_canAdjustScope.sqf b/addons/scopes/functions/fnc_canAdjustScope.sqf new file mode 100644 index 00000000000..b5cc729cbbd --- /dev/null +++ b/addons/scopes/functions/fnc_canAdjustScope.sqf @@ -0,0 +1,26 @@ +/* + * Author: PabstMirror + * Tests if player would be in a position to adjust scope + * Mainly for determining edge cases with turned-out / FFV. + * + * Argument: + * 0: Unit + * + * Return value: + * + * + * Example: + * [player] call ace_scopes_fnc_canAdjustScope + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit"]; + +if ((vehicle _unit) == _unit) exitWith {true}; + +private _animationState = animationState _unit; +private _moves = configFile >> getText (configFile >> "CfgVehicles" >> (typeof _unit) >> "moves"); + +(getNumber (_moves >> "States" >> _animationState >> "canPullTrigger") == 1) diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index d28c0dee7e2..07eadb5620d 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -24,6 +24,7 @@ _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex); if (_weaponIndex < 0) exitWith {}; _zeroing = _adjustment select _weaponIndex; +TRACE_1("Adjusting With",_zeroing); if (_zeroing isEqualTo [0, 0, 0]) exitWith {}; From 0d5385ffaf99e05e1f8b1a973174b39541648fe2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 May 2016 21:50:51 -0500 Subject: [PATCH 171/268] Update FCS hud when manually setting range. --- addons/fcs/functions/fnc_keyUp.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 4fbd247d167..113d369a3c9 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -24,6 +24,8 @@ if (isNil "_distance") then { getNumber (_turretConfig >> QGVAR(MaxDistance)), getNumber (_turretConfig >> QGVAR(MinDistance)) ] call FUNC(getRange); +} else { + ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) ctrlSetText ([_distance, 4, 0] call CBA_fnc_formatNumber); }; // MOVING TARGETS From d464a23d21ae7d45834fc3aa5f06b1e2828eb1a9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 20 May 2016 01:10:12 -0500 Subject: [PATCH 172/268] Use the lovely CBA_fnc_canUseWeapon function --- addons/fcs/functions/fnc_canUseFCS.sqf | 7 +---- addons/scopes/XEH_PREP.hpp | 1 - addons/scopes/XEH_postInit.sqf | 16 ++++++------ .../scopes/functions/fnc_canAdjustScope.sqf | 26 ------------------- 4 files changed, 9 insertions(+), 41 deletions(-) delete mode 100644 addons/scopes/functions/fnc_canAdjustScope.sqf diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index 1dcd1ca49ee..3899584788e 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -17,9 +17,4 @@ getNumber ([configFile >> "CfgVehicles" >> typeOf vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 && {cameraView == "GUNNER"} -&& { - private _animationState = animationState ACE_player; - private _moves = configFile >> getText (configFile >> "CfgVehicles" >> (typeof ACE_player) >> "moves"); - - (getNumber (_moves >> "States" >> _animationState >> "canPullTrigger") == 0) -} +&& {!([ACE_player] call CBA_fnc_canUseWeapon)} //Not Turned Out diff --git a/addons/scopes/XEH_PREP.hpp b/addons/scopes/XEH_PREP.hpp index 05f58a59224..908d8064f02 100644 --- a/addons/scopes/XEH_PREP.hpp +++ b/addons/scopes/XEH_PREP.hpp @@ -2,7 +2,6 @@ PREP(adjustScope); PREP(adjustZero); PREP(applyScopeAdjustment); -PREP(canAdjustScope); PREP(canAdjustZero); PREP(firedEH); PREP(getOptics); diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index cc1d9e9c5cb..1763bb7a328 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -35,7 +35,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -50,7 +50,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -65,7 +65,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -80,7 +80,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -95,7 +95,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -110,7 +110,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -125,7 +125,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); @@ -140,7 +140,7 @@ if (!hasInterface) exitWith {}; // Conditions: canInteract if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (!([ACE_player] call FUNC(canAdjustScope))) exitWith {false}; + if (!([ACE_player] call CBA_fnc_canUseWeapon)) exitWith {false}; [ACE_player] call FUNC(inventoryCheck); diff --git a/addons/scopes/functions/fnc_canAdjustScope.sqf b/addons/scopes/functions/fnc_canAdjustScope.sqf deleted file mode 100644 index b5cc729cbbd..00000000000 --- a/addons/scopes/functions/fnc_canAdjustScope.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: PabstMirror - * Tests if player would be in a position to adjust scope - * Mainly for determining edge cases with turned-out / FFV. - * - * Argument: - * 0: Unit - * - * Return value: - * - * - * Example: - * [player] call ace_scopes_fnc_canAdjustScope - * - * Public: No - */ -#include "script_component.hpp" - -params ["_unit"]; - -if ((vehicle _unit) == _unit) exitWith {true}; - -private _animationState = animationState _unit; -private _moves = configFile >> getText (configFile >> "CfgVehicles" >> (typeof _unit) >> "moves"); - -(getNumber (_moves >> "States" >> _animationState >> "canPullTrigger") == 1) From f69142dd45a9aaa8a318237a5b78185caa9c8c0b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 20 May 2016 11:23:14 -0500 Subject: [PATCH 173/268] Hearing - New XEH, Fix dead effects, Medical var (#3802) * Hearing - New XEH, Fix dead effects, Medical var * Use setHearingCapability * Cleanup dead player vol update * Don't change global hearing in medical * Fix exitWith --- addons/common/XEH_preInit.sqf | 2 + .../functions/fnc_setHearingCapability.sqf | 42 +++++++++---------- addons/hearing/CfgEventHandlers.hpp | 16 ------- addons/hearing/XEH_postInit.sqf | 4 ++ .../hearing/functions/fnc_explosionNear.sqf | 3 -- addons/hearing/functions/fnc_firedNear.sqf | 3 -- addons/hearing/functions/fnc_updateVolume.sqf | 13 +++--- addons/medical/XEH_postInit.sqf | 4 -- 8 files changed, 32 insertions(+), 55 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 16e0a651596..dea4e645382 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -46,6 +46,8 @@ if (isServer) then { GVAR(statusEffect_Names) = []; GVAR(statusEffect_isGlobal) = []; +GVAR(setHearingCapabilityMap) = []; + ////////////////////////////////////////////////// // Set up PlayerChanged eventhandler for pre init (EH is installed in postInit) ////////////////////////////////////////////////// diff --git a/addons/common/functions/fnc_setHearingCapability.sqf b/addons/common/functions/fnc_setHearingCapability.sqf index 2366081ec1d..5b1e7a5a3a5 100644 --- a/addons/common/functions/fnc_setHearingCapability.sqf +++ b/addons/common/functions/fnc_setHearingCapability.sqf @@ -5,49 +5,45 @@ * Arguments: * 0: id * 1: settings - * 2: add (default: true) + * 2: add [true] OR remove [false] (default: true) * * Return Value: * None * - * Public: Yes + * Example: + * ["earwax", 0.5, true] call ace_common_fnc_setHearingCapability * - * Note: uses player + * Public: Yes */ #include "script_component.hpp" -params ["_id", "_settings", ["_add", true]]; - -private _map = missionNamespace getVariable [QGVAR(setHearingCapabilityMap),[]]; +params ["_id", "_setting", ["_add", true]]; private _exists = false; +private _lowestVolume = 1; -{ - if (_id == _x select 0) exitWith { +GVAR(setHearingCapabilityMap) = GVAR(setHearingCapabilityMap) select { + _x params ["_xID", "_xSetting"]; + if (_id == _xID) then { _exists = true; if (_add) then { - _x set [1, _settings]; + _x set [1, _setting]; + _lowestVolume = _lowestVolume min _setting; + true } else { - _map set [_forEachIndex, 0]; - _map = _map - [0]; + false }; + } else { + _lowestVolume = _lowestVolume min _xSetting; + true }; -} forEach _map; +}; if (!_exists && _add) then { - _map pushBack [_id, _settings]; + _lowestVolume = _lowestVolume min _setting; + GVAR(setHearingCapabilityMap) pushBack [_id, _setting]; }; -missionNamespace setVariable [QGVAR(setHearingCapabilityMap), _map]; - -// find lowest volume -private _lowestVolume = 1; - -{ - _lowestVolume = (_x select 1) min _lowestVolume; - false -} count _map; - // in game sounds 0 fadeSound _lowestVolume; 0 fadeRadio _lowestVolume; diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp index 352f802435a..aa8dbf51342 100644 --- a/addons/hearing/CfgEventHandlers.hpp +++ b/addons/hearing/CfgEventHandlers.hpp @@ -25,22 +25,6 @@ class Extended_Init_EventHandlers { }; }; -class Extended_FiredNear_EventHandlers { - class AllVehicles { - class GVAR(FiredNear) { - clientFiredNear = QUOTE(_this call FUNC(firedNear);); - }; - }; -}; - -class Extended_Explosion_EventHandlers { - class CAManBase { - class GVAR(ExplosionNear) { - clientExplosion = QUOTE(_this call FUNC(explosionNear);); - }; - }; -}; - class Extended_Respawn_EventHandlers { class CAManBase { class ADDON { diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index cbae40dee0c..fdd61ccfde8 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -17,6 +17,10 @@ GVAR(volumeAttenuation) = 1; // Only run PFEH and install event handlers if combat deafness is enabled if (!GVAR(EnableCombatDeafness)) exitWith {}; + //Add XEH: + ["CAManBase", "FiredNear", FUNC(firedNear)] call CBA_fnc_addClassEventHandler; + ["CAManBase", "Explosion", FUNC(explosionNear)] call CBA_fnc_addClassEventHandler; + // Update hearing protection now: [] call FUNC(updateHearingProtection); diff --git a/addons/hearing/functions/fnc_explosionNear.sqf b/addons/hearing/functions/fnc_explosionNear.sqf index 799de523200..76c6707de52 100644 --- a/addons/hearing/functions/fnc_explosionNear.sqf +++ b/addons/hearing/functions/fnc_explosionNear.sqf @@ -16,9 +16,6 @@ */ #include "script_component.hpp" -// Only run if combat deafness is enabled -if (!GVAR(EnableCombatDeafness)) exitWith {}; - params ["_unit", "_damage"]; if (_unit != ACE_player) exitWith {}; diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index f583ab00502..46bbee4fae9 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -22,9 +22,6 @@ */ #include "script_component.hpp" -// Only run if combat deafness is enabled -if (!GVAR(EnableCombatDeafness)) exitWith {}; - params ["_object", "_firer", "_distance", "_weapon", "", "", "_ammo"]; //Only run if firedNear object is player or player's vehicle: diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index 58eedc7b39d..2212bd62223 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -16,6 +16,12 @@ */ #include "script_component.hpp" +if (!alive ACE_player) exitWith { + if (missionNameSpace getVariable [QGVAR(disableVolumeUpdate), false]) exitWith {}; + TRACE_1("dead - removing hearing effects",ACE_player); + [QUOTE(ADDON), 1, true] call EFUNC(common,setHearingCapability); +}; + (_this select 0) params ["_justUpdateVolume"]; GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0; @@ -54,9 +60,4 @@ if (ACE_player getVariable ["ACE_isUnconscious", false]) then { _volume = _volume min GVAR(UnconsciousnessVolume); }; -private _soundTransitionTime = if (_justUpdateVolume) then {0.1} else {1}; - -_soundTransitionTime fadeSound _volume; -_soundTransitionTime fadeSpeech _volume; -ACE_player setVariable ["tf_globalVolume", _volume]; -if (!isNil "acre_api_fnc_setGlobalVolume") then {[_volume^(0.33)] call acre_api_fnc_setGlobalVolume;}; +[QUOTE(ADDON), _volume, true] call EFUNC(common,setHearingCapability); diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 8d8911a6bf9..f0d3b907f68 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -37,19 +37,15 @@ if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call EFUNC(commo params ["_unit", "_status"]; if (local _unit) then { if (_status) then { - _unit setVariable ["tf_globalVolume", 0.4]; _unit setVariable ["tf_voiceVolume", 0, true]; _unit setVariable ["tf_unable_to_use_radio", true, true]; _unit setVariable ["acre_sys_core_isDisabled", true, true]; - if (!isNil "acre_api_fnc_setGlobalVolume") then { [0.4^0.33] call acre_api_fnc_setGlobalVolume; }; } else { - _unit setVariable ["tf_globalVolume", 1]; _unit setVariable ["tf_voiceVolume", 1, true]; _unit setVariable ["tf_unable_to_use_radio", false, true]; _unit setVariable ["acre_sys_core_isDisabled", false, true]; - if (!isNil "acre_api_fnc_setGlobalVolume") then { [1] call acre_api_fnc_setGlobalVolume; }; }; }; }] call EFUNC(common,addEventHandler); From dd60ac8170aeb7e61cff4b95b5fe97d1daaa9b0d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 21 May 2016 00:41:49 +0200 Subject: [PATCH 174/268] Remove isEnabled check in sitting IsEnabled check is not necessary here. It should not have been included, as it was a left over from testing for migrating sitting to ACEX. --- addons/sitting/XEH_clientInit.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 60b50c4d091..7efb38d41e8 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -3,12 +3,10 @@ // Exit on Headless if (!hasInterface) exitWith {}; -GVAR(isEnabled) = false; ["SettingsInitialized", { if ([[QUOTE(ADDON), QGVAR(enable)], ["acex_sitting", "acex_sitting_enable"], "3.8.0"] call EFUNC(common,deprecateComponent)) exitwith {}; //If not enabled, then do not add CanInteractWith Condition or event handlers: - if (!GVAR(enable) || GVAR(isEnabled)) exitWith {}; - GVAR(isEnabled) = true; + if (!GVAR(enable)) exitWith {}; // Add interaction menu exception ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); From aee4d23bdbbb2ad9e4a7243acf19d1933f84d260 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 21 May 2016 13:07:17 +0200 Subject: [PATCH 175/268] fullCrew new parameter to improve FUNC(getTurretX) --- .../functions/fnc_getTurretCommander.sqf | 17 +------------ .../common/functions/fnc_getTurretCopilot.sqf | 19 +++------------ .../common/functions/fnc_getTurretGunner.sqf | 17 +------------ addons/common/functions/fnc_getTurrets.sqf | 4 +++- addons/common/functions/fnc_getTurretsFFV.sqf | 17 +------------ .../common/functions/fnc_getTurretsOther.sqf | 24 +++---------------- 6 files changed, 12 insertions(+), 86 deletions(-) diff --git a/addons/common/functions/fnc_getTurretCommander.sqf b/addons/common/functions/fnc_getTurretCommander.sqf index e73795e1487..3e7f09215fb 100644 --- a/addons/common/functions/fnc_getTurretCommander.sqf +++ b/addons/common/functions/fnc_getTurretCommander.sqf @@ -14,19 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -private _turrets = allTurrets [_vehicle, true]; - -private _turret = []; - -{ - private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; - - _config = [_config, _x] call FUNC(getTurretConfigPath); - - if (getNumber (_config >> "primaryObserver") == 1) exitWith { - _turret = _x; - }; - false -} count _turrets; - -_turret +fullCrew [_vehicle, "commander", true] apply {_x select 3} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretCopilot.sqf b/addons/common/functions/fnc_getTurretCopilot.sqf index 6161f5c4cc3..49002cc40e7 100644 --- a/addons/common/functions/fnc_getTurretCopilot.sqf +++ b/addons/common/functions/fnc_getTurretCopilot.sqf @@ -14,19 +14,6 @@ params [["_vehicle", objNull, [objNull]]]; -private _turrets = allTurrets [_vehicle, true]; - -private _turret = []; - -{ - private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; - - _config = [_config, _x] call FUNC(getTurretConfigPath); - - if (getNumber (_config >> "isCopilot") == 1 && {getNumber (_config >> "primaryGunner") != 1} && {getNumber (_config >> "primaryObserver") != 1}) exitWith { - _turret = _x; - }; - false -} count _turrets; - -_turret +fullCrew [_vehicle, "turret", true] apply {_x select 3} select { + getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1 +} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretGunner.sqf b/addons/common/functions/fnc_getTurretGunner.sqf index 6f59798cc6d..4a26e2c03df 100644 --- a/addons/common/functions/fnc_getTurretGunner.sqf +++ b/addons/common/functions/fnc_getTurretGunner.sqf @@ -14,19 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -private _turrets = allTurrets [_vehicle, true]; - -private _turret = []; - -{ - private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; - - _config = [_config, _x] call FUNC(getTurretConfigPath); - - if (getNumber (_config >> "primaryGunner") == 1) exitWith { - _turret = _x; - }; - false -} count _turrets; - -_turret +fullCrew [_vehicle, "gunner", true] apply {_x select 3} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurrets.sqf b/addons/common/functions/fnc_getTurrets.sqf index 229f3ab1f79..04795807643 100644 --- a/addons/common/functions/fnc_getTurrets.sqf +++ b/addons/common/functions/fnc_getTurrets.sqf @@ -8,12 +8,14 @@ * Return Value: * Turret Indecies * - * Public: Yes + * Public: No * * Note: It's advised to use allTurrets [_vehicle, true] instead whenever possible */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_getTurrets","3.7.0","allTurrets [_vehicle, true]"); + params ["_type"]; private _varName = format [QGVAR(CachedTurrets_%1), _type]; diff --git a/addons/common/functions/fnc_getTurretsFFV.sqf b/addons/common/functions/fnc_getTurretsFFV.sqf index 8c471824cf5..5c36e201975 100644 --- a/addons/common/functions/fnc_getTurretsFFV.sqf +++ b/addons/common/functions/fnc_getTurretsFFV.sqf @@ -14,19 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -private _turrets = allTurrets [_vehicle, true]; - -private _turret = []; - -{ - private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; - - _config = [_config, _x] call FUNC(getTurretConfigPath); - - if (getNumber (_config >> "isPersonTurret") == 1) then { - _turret pushBack _x; - }; - false -} count _turrets; - -_turret +fullCrew [_vehicle, "turret", true] select {_x select 4} apply {_x select 3} // return diff --git a/addons/common/functions/fnc_getTurretsOther.sqf b/addons/common/functions/fnc_getTurretsOther.sqf index 408a5529d56..ef2a1278dc1 100644 --- a/addons/common/functions/fnc_getTurretsOther.sqf +++ b/addons/common/functions/fnc_getTurretsOther.sqf @@ -14,24 +14,6 @@ params [["_vehicle", objNull, [objNull]]]; -private _turrets = allTurrets [_vehicle, true]; - -private _turret = []; - -{ - private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; - - _config = [_config, _x] call FUNC(getTurretConfigPath); - - if ( - getNumber (_config >> "isCopilot") != 1 - && {getNumber (_config >> "primaryGunner") != 1} - && {getNumber (_config >> "primaryObserver") != 1} - && {getNumber (_config >> "isPersonTurret") != 1} - ) then { - _turret pushBack _x; - }; - false -} count _turrets; - -_turret +fullCrew [_vehicle, "turret", true] select {!(_x select 4)} apply {_x select 3} select { + getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1 +} // return From d395fcd7927c9e68cf6b418f1d941b14b6191a3a Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 21 May 2016 13:22:13 +0200 Subject: [PATCH 176/268] travis pls --- addons/common/functions/fnc_getTurretCommander.sqf | 2 +- addons/common/functions/fnc_getTurretCopilot.sqf | 4 +--- addons/common/functions/fnc_getTurretGunner.sqf | 2 +- addons/common/functions/fnc_getTurretsFFV.sqf | 2 +- addons/common/functions/fnc_getTurretsOther.sqf | 4 +--- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/addons/common/functions/fnc_getTurretCommander.sqf b/addons/common/functions/fnc_getTurretCommander.sqf index 3e7f09215fb..30860652cc2 100644 --- a/addons/common/functions/fnc_getTurretCommander.sqf +++ b/addons/common/functions/fnc_getTurretCommander.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -fullCrew [_vehicle, "commander", true] apply {_x select 3} param [0, []] // return +(fullCrew [_vehicle, "commander", true] apply {_x select 3}) param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretCopilot.sqf b/addons/common/functions/fnc_getTurretCopilot.sqf index 49002cc40e7..fb4d4cff2e9 100644 --- a/addons/common/functions/fnc_getTurretCopilot.sqf +++ b/addons/common/functions/fnc_getTurretCopilot.sqf @@ -14,6 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -fullCrew [_vehicle, "turret", true] apply {_x select 3} select { - getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1 -} param [0, []] // return +((fullCrew [_vehicle, "turret", true] apply {_x select 3}) select {getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1}) param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretGunner.sqf b/addons/common/functions/fnc_getTurretGunner.sqf index 4a26e2c03df..666e70f3c9a 100644 --- a/addons/common/functions/fnc_getTurretGunner.sqf +++ b/addons/common/functions/fnc_getTurretGunner.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -fullCrew [_vehicle, "gunner", true] apply {_x select 3} param [0, []] // return +(fullCrew [_vehicle, "gunner", true] apply {_x select 3}) param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretsFFV.sqf b/addons/common/functions/fnc_getTurretsFFV.sqf index 5c36e201975..5fc5bd159b5 100644 --- a/addons/common/functions/fnc_getTurretsFFV.sqf +++ b/addons/common/functions/fnc_getTurretsFFV.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -fullCrew [_vehicle, "turret", true] select {_x select 4} apply {_x select 3} // return +(fullCrew [_vehicle, "turret", true] select {_x select 4}) apply {_x select 3} // return diff --git a/addons/common/functions/fnc_getTurretsOther.sqf b/addons/common/functions/fnc_getTurretsOther.sqf index ef2a1278dc1..7dcaff42210 100644 --- a/addons/common/functions/fnc_getTurretsOther.sqf +++ b/addons/common/functions/fnc_getTurretsOther.sqf @@ -14,6 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -fullCrew [_vehicle, "turret", true] select {!(_x select 4)} apply {_x select 3} select { - getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1 -} // return +((fullCrew [_vehicle, "turret", true] select {!(_x select 4)}) apply {_x select 3}) select {getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1} // return From 54caadfb88a42ae36d638e0414f58e8ce8a7a6d8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 21 May 2016 13:26:04 +0200 Subject: [PATCH 177/268] Add support for new script command select in travis --- tools/sqf_validator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/sqf_validator.py b/tools/sqf_validator.py index 7a905a33151..8827aaa4bab 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -8,7 +8,7 @@ import argparse def validKeyWordAfterCode(content, index): - keyWords = ["for", "do", "count", "each", "forEach", "else", "and", "not", "isEqualTo", "in", "call", "spawn", "execVM", "catch"]; + keyWords = ["for", "do", "count", "each", "forEach", "else", "and", "not", "isEqualTo", "in", "call", "spawn", "execVM", "catch", "param", "select"]; for word in keyWords: try: subWord = content.index(word, index, index+len(word)) @@ -112,7 +112,7 @@ def popClosing(): elif (c== '\t'): print("ERROR: Tab detected at {0} Line number: {1}".format(filepath,lineNumber)) bad_count_file += 1 - + if (checkForSemiColumn): if (c not in [' ', '\t', '\n', '/']): # keep reading until no white space or comments checkForSemiColumn = False From c9ea5676eab699ab0a600b829f871437679867a5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 21 May 2016 13:29:42 +0200 Subject: [PATCH 178/268] travis test --- addons/common/functions/fnc_getTurretCommander.sqf | 2 +- addons/common/functions/fnc_getTurretCopilot.sqf | 4 +++- addons/common/functions/fnc_getTurretGunner.sqf | 2 +- addons/common/functions/fnc_getTurretsFFV.sqf | 2 +- addons/common/functions/fnc_getTurretsOther.sqf | 4 +++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_getTurretCommander.sqf b/addons/common/functions/fnc_getTurretCommander.sqf index 30860652cc2..3e7f09215fb 100644 --- a/addons/common/functions/fnc_getTurretCommander.sqf +++ b/addons/common/functions/fnc_getTurretCommander.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -(fullCrew [_vehicle, "commander", true] apply {_x select 3}) param [0, []] // return +fullCrew [_vehicle, "commander", true] apply {_x select 3} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretCopilot.sqf b/addons/common/functions/fnc_getTurretCopilot.sqf index fb4d4cff2e9..49002cc40e7 100644 --- a/addons/common/functions/fnc_getTurretCopilot.sqf +++ b/addons/common/functions/fnc_getTurretCopilot.sqf @@ -14,4 +14,6 @@ params [["_vehicle", objNull, [objNull]]]; -((fullCrew [_vehicle, "turret", true] apply {_x select 3}) select {getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1}) param [0, []] // return +fullCrew [_vehicle, "turret", true] apply {_x select 3} select { + getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") == 1 +} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretGunner.sqf b/addons/common/functions/fnc_getTurretGunner.sqf index 666e70f3c9a..4a26e2c03df 100644 --- a/addons/common/functions/fnc_getTurretGunner.sqf +++ b/addons/common/functions/fnc_getTurretGunner.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -(fullCrew [_vehicle, "gunner", true] apply {_x select 3}) param [0, []] // return +fullCrew [_vehicle, "gunner", true] apply {_x select 3} param [0, []] // return diff --git a/addons/common/functions/fnc_getTurretsFFV.sqf b/addons/common/functions/fnc_getTurretsFFV.sqf index 5fc5bd159b5..5c36e201975 100644 --- a/addons/common/functions/fnc_getTurretsFFV.sqf +++ b/addons/common/functions/fnc_getTurretsFFV.sqf @@ -14,4 +14,4 @@ params [["_vehicle", objNull, [objNull]]]; -(fullCrew [_vehicle, "turret", true] select {_x select 4}) apply {_x select 3} // return +fullCrew [_vehicle, "turret", true] select {_x select 4} apply {_x select 3} // return diff --git a/addons/common/functions/fnc_getTurretsOther.sqf b/addons/common/functions/fnc_getTurretsOther.sqf index 7dcaff42210..ef2a1278dc1 100644 --- a/addons/common/functions/fnc_getTurretsOther.sqf +++ b/addons/common/functions/fnc_getTurretsOther.sqf @@ -14,4 +14,6 @@ params [["_vehicle", objNull, [objNull]]]; -((fullCrew [_vehicle, "turret", true] select {!(_x select 4)}) apply {_x select 3}) select {getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1} // return +fullCrew [_vehicle, "turret", true] select {!(_x select 4)} apply {_x select 3} select { + getNumber ([_vehicle, _x] call CBA_fnc_getTurret >> "isCopilot") != 1 +} // return From 391191241ba55cbfd22659ea45b051cf6142138d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 21 May 2016 13:46:26 +0200 Subject: [PATCH 179/268] Add apply to script validation --- tools/sqf_validator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sqf_validator.py b/tools/sqf_validator.py index 8827aaa4bab..c824b352683 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -8,7 +8,7 @@ import argparse def validKeyWordAfterCode(content, index): - keyWords = ["for", "do", "count", "each", "forEach", "else", "and", "not", "isEqualTo", "in", "call", "spawn", "execVM", "catch", "param", "select"]; + keyWords = ["for", "do", "count", "each", "forEach", "else", "and", "not", "isEqualTo", "in", "call", "spawn", "execVM", "catch", "param", "select", "apply"]; for word in keyWords: try: subWord = content.index(word, index, index+len(word)) From d902d1182a2f3078c9a35da680d1d83d1a639fea Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 21 May 2016 19:59:44 +0200 Subject: [PATCH 180/268] Replace ace_common_fnc_execRemoteFunc with events --- addons/common/XEH_postInit.sqf | 8 ++++++++ addons/common/functions/fnc_checkPBOs.sqf | 3 ++- addons/common/functions/fnc_onAnswerRequest.sqf | 2 +- addons/common/functions/fnc_sendRequest.sqf | 2 +- addons/common/functions/fnc_serverLog.sqf | 2 +- addons/common/scripts/checkVersionNumber.sqf | 8 ++++---- addons/explosives/XEH_postInit.sqf | 1 + addons/explosives/functions/fnc_startDefuse.sqf | 2 +- addons/repair/XEH_postInit.sqf | 2 ++ addons/repair/functions/fnc_useItem.sqf | 2 +- addons/respawn/XEH_postInit.sqf | 2 ++ addons/respawn/functions/fnc_handleKilled.sqf | 2 +- addons/spectator/XEH_postInit.sqf | 2 ++ .../spectator/functions/fnc_respawnTemplate.sqf | 2 +- .../spectator/functions/fnc_stageSpectator.sqf | 2 +- addons/switchunits/XEH_postInit.sqf | 8 ++++++++ addons/switchunits/functions/fnc_switchUnit.sqf | 16 ++-------------- 17 files changed, 39 insertions(+), 27 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 88012a78843..c3cda091d85 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -163,9 +163,17 @@ if (isServer) then { ["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler); ["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); +// Request framework +[QGVAR(requestCallback), FUNC(requestCallback)] call FUNC(addEventHandler); +[QGVAR(receiveRequest), FUNC(receiveRequest)] call FUNC(addEventHandler); + +[QGVAR(systemChatGlobal), {systemChat _this}] call FUNC(addEventHandler); + if (isServer) then { ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); ["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call FUNC(addEventHandler); + ["setOwner", {(_this select 0) setOwner (_this select 1)}] call FUNC(addEventHandler); + [QGVAR(serverLog), FUNC(serverLog)] call FUNC(addEventHandler); }; diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index f447d126af4..991b4e11f92 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -61,7 +61,8 @@ if (!isServer) then { _error = _error + "Newer version; "; }; - //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + //[QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + ACE_LOGERROR(_error); if (_mode < 2) then { diff --git a/addons/common/functions/fnc_onAnswerRequest.sqf b/addons/common/functions/fnc_onAnswerRequest.sqf index d88969b059f..e462a4bbf8e 100644 --- a/addons/common/functions/fnc_onAnswerRequest.sqf +++ b/addons/common/functions/fnc_onAnswerRequest.sqf @@ -20,7 +20,7 @@ if (!isNil "_info") then { _info params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"]; private _replyParams = [_info, _accepted]; - [_replyParams, QFUNC(requestCallback), _caller, false] call FUNC(execRemoteFnc); + [QGVAR(requestCallback), _caller, _replyParams] call FUNC(objectEvent); _unit setVariable [_id, nil]; }; diff --git a/addons/common/functions/fnc_sendRequest.sqf b/addons/common/functions/fnc_sendRequest.sqf index c8d2ef7e2bf..6df60cf24d8 100644 --- a/addons/common/functions/fnc_sendRequest.sqf +++ b/addons/common/functions/fnc_sendRequest.sqf @@ -20,7 +20,7 @@ params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"]; if (isPlayer _target) then { // Pass request on to target locality for player accept/decline. - [[_caller, _target, _requestID, _requestMessage, _callBack], QFUNC(receiveRequest), _target, false] call FUNC(execRemoteFnc); + [QGVAR(receiveRequest), _target, [_caller, _target, _requestID, _requestMessage, _callBack]] call FUNC(objectEvent); } else { // accept it, since it's an AI. [_caller, _target, true] call compile _callBack; diff --git a/addons/common/functions/fnc_serverLog.sqf b/addons/common/functions/fnc_serverLog.sqf index 2525f81c950..ca4ba69f5db 100644 --- a/addons/common/functions/fnc_serverLog.sqf +++ b/addons/common/functions/fnc_serverLog.sqf @@ -20,5 +20,5 @@ params [["_msg", "", [""]]]; if (isServer) then { diag_log text _msg; } else { - [_this, QFUNC(serverLog), 1] call FUNC(execRemoteFnc); + [QGVAR(serverLog), _this] call FUNC(serverEvent); }; diff --git a/addons/common/scripts/checkVersionNumber.sqf b/addons/common/scripts/checkVersionNumber.sqf index 07bd443a063..7b1fbca2918 100644 --- a/addons/common/scripts/checkVersionNumber.sqf +++ b/addons/common/scripts/checkVersionNumber.sqf @@ -100,7 +100,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); }; _missingAddonServer = false; @@ -117,7 +117,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); }; _oldVersionClient = false; @@ -134,7 +134,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); }; _oldVersionServer = false; @@ -151,7 +151,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [_error, "{systemChat _this}"] call FUNC(execRemoteFnc); + [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); }; ACE_Version_ClientErrors = [_missingAddon, _missingAddonServer, _oldVersionClient, _oldVersionServer]; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index fe12a88b7f7..f81cef5f790 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -17,6 +17,7 @@ //Event for setting explosive placement angle/pitch: [QGVAR(place), {_this call FUNC(setPosition)}] call EFUNC(common,addEventHandler); +[QGVAR(startDefuse), FUNC(startDefuse)] call EFUNC(common,addEventHandler); //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 84d72740694..ed5a419e3cf 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -44,7 +44,7 @@ if (STANCE _unit == "Prone") then { if (ACE_player != _unit) then { // If the unit is a player, call the function on the player. if (isPlayer _unit) then { - [[_unit, _target], QFUNC(startDefuse), _unit] call EFUNC(common,execRemoteFnc); + [QGVAR(startDefuse), _unit, [_unit, _target]] call EFUNC(common,objectEvent); } else { _unit playActionNow _actionToPlay; _unit disableAI "MOVE"; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 44ca157b0c3..a18e19fe370 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -5,3 +5,5 @@ // wheels ["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call EFUNC(common,addEventHandler); + +[QGVAR(useItem), EFUNC(common,useItem)] call EFUNC(common,addEventHandler); diff --git a/addons/repair/functions/fnc_useItem.sqf b/addons/repair/functions/fnc_useItem.sqf index 024ee76c292..c486ed50a04 100644 --- a/addons/repair/functions/fnc_useItem.sqf +++ b/addons/repair/functions/fnc_useItem.sqf @@ -20,7 +20,7 @@ params ["_unit", "_item"]; TRACE_2("params",_unit,_item); if ([_unit, _item] call EFUNC(common,hasItem)) exitWith { - [[_unit, _item], QUOTE(EFUNC(common,useItem)), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ + [QGVAR(useItem), _unit, [_unit, _item]] call EFUNC(common,objectEvent); [true, _unit]; }; diff --git a/addons/respawn/XEH_postInit.sqf b/addons/respawn/XEH_postInit.sqf index 22be7b86ac0..dc112b388e4 100644 --- a/addons/respawn/XEH_postInit.sqf +++ b/addons/respawn/XEH_postInit.sqf @@ -3,3 +3,5 @@ ["rallypointMoved", {_this call FUNC(updateRallypoint)}] call EFUNC(common,addEventhandler); ["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); // hide enemy rallypoint markers + +[QGVAR(showFriendlyFireMessageEvent), DFUNC(showFriendlyFireMessage)] call EFUNC(common,addEventHandler); diff --git a/addons/respawn/functions/fnc_handleKilled.sqf b/addons/respawn/functions/fnc_handleKilled.sqf index 2b9509f39d3..aa53c6741a8 100644 --- a/addons/respawn/functions/fnc_handleKilled.sqf +++ b/addons/respawn/functions/fnc_handleKilled.sqf @@ -25,5 +25,5 @@ if (ACE_player == _unit && {GVAR(SavePreDeathGear)}) then { }; if (missionNamespace getVariable [QGVAR(showFriendlyFireMessage), false]) then { - [_this, QUOTE(DFUNC(showFriendlyFireMessage)), 2] call EFUNC(common,execRemoteFnc); + [QGVAR(showFriendlyFireMessageEvent), _this] call EFUNC(common,objectEvent); }; diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 43c812d1a29..ea3e6a55108 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -27,3 +27,5 @@ if (isServer) then { [false] call FUNC(setSpectator); }; }] call EFUNC(common,addEventHandler); + +[QGVAR(stageSpectator), FUNC(stageSpectator)] call EFUNC(common,addEventHandler); diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf index 4584a1fc3c7..fde8ef05ad6 100644 --- a/addons/spectator/functions/fnc_respawnTemplate.sqf +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -23,7 +23,7 @@ private ["_vision","_pos"]; // When all are dead with respawn type "None" the mission should end if ((_respawn == 0) && {{alive _x} count allPlayers <= 0}) exitWith { - [["endDeath",false],"BIS_fnc_endMission"] call EFUNC(common,execRemoteFnc); + ["BIS_fnc_endMission", ["endDeath", false]] call EFUNC(common,globalEvent); }; // Some environment information can be used for the initial camera attributes diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 926ac008dc5..0b2caa2c70f 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -27,7 +27,7 @@ params [["_unit",player,[objNull]], ["_set",true,[true]]]; if !(_set || (GETVAR(_unit,GVAR(isStaged),false))) exitWith {}; if !(local _unit) exitWith { - [[_unit, _set], QFUNC(stageSpectator), _unit] call EFUNC(common,execRemoteFnc); + [QGVAR(stageSpectator), _unit, [_unit, _set]] call EFUNC(common,objectEvent); }; // Prevent unit falling into water diff --git a/addons/switchunits/XEH_postInit.sqf b/addons/switchunits/XEH_postInit.sqf index 5928804d7b8..d5020391e67 100644 --- a/addons/switchunits/XEH_postInit.sqf +++ b/addons/switchunits/XEH_postInit.sqf @@ -27,3 +27,11 @@ if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then { }; }] call EFUNC(common,addEventhandler); }; + +if (isServer) then { + [QGVAR(switchLocality), { + params ["_unit", "_player"]; + _unit setVariable [QGVAR(OriginalOwner), owner _unit, true]; + _unit setOwner (owner _player); + }] call EFUNC(common,addEventHandler); +}; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index a26b2d474ad..64cc77c221a 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -40,14 +40,7 @@ if (_leave) exitWith { // should switch locality // This doesn't work anymore, because one's now able to switch to units from a different side //[_unit] joinSilent group player; -[ - [_unit, player], - QUOTE({ - (_this select 0) setVariable [ARR_3(QUOTE(QGVAR(OriginalOwner)), owner (_this select 0), true)]; - (_this select 0) setOwner owner (_this select 1) - }), - 1 -] call EFUNC(common,execRemoteFnc); +[QGVAR(switchLocality), [_unit, player]] call EFUNC(common,serverEvent); [{ params ["_args", "_pfhId"]; @@ -79,12 +72,7 @@ if (_leave) exitWith { // set owner back to original owner private _oldOwner = _oldUnit getVariable[QGVAR(OriginalOwner), -1]; if (_oldOwner > -1) then { - [ - [_oldUnit, _oldOwner], - QUOTE({ - (_this select 0) setOwner (_this select 1) - }), 1 - ] call EFUNC(common,execRemoteFnc); + ["setOwner", [_oldUnit, _oldOwner]] call EFUNC(common,serverEvent); }; [localize LSTRING(SwitchedUnit)] call EFUNC(common,displayTextStructured); From 472e4631d6847abcb61632a1504b415c1ce5f27d Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 15:25:59 +0200 Subject: [PATCH 181/268] Deprecate delayed execution functions --- addons/common/functions/fnc_execNextFrame.sqf | 2 ++ addons/common/functions/fnc_waitAndExecute.sqf | 2 ++ addons/common/functions/fnc_waitUntilAndExecute.sqf | 2 ++ 3 files changed, 6 insertions(+) diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf index 7b3f034c6d3..289093c5b61 100644 --- a/addons/common/functions/fnc_execNextFrame.sqf +++ b/addons/common/functions/fnc_execNextFrame.sqf @@ -13,6 +13,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_execNextFrame","3.8.0","CBA_fnc_execNextFrame"); + params ["_func", "_params"]; if (diag_frameno != GVAR(nextFrameNo)) then { diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf index 6f282ba656a..fe26fdc16f2 100644 --- a/addons/common/functions/fnc_waitAndExecute.sqf +++ b/addons/common/functions/fnc_waitAndExecute.sqf @@ -17,6 +17,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_waitAndExecute","3.8.0","CBA_fnc_waitAndExecute"); + params ["_func", "_params", "_delay"]; GVAR(waitAndExecArray) pushBack [ACE_time + _delay, _func, _params]; diff --git a/addons/common/functions/fnc_waitUntilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf index bbc6c540fe1..ad33bd6140f 100644 --- a/addons/common/functions/fnc_waitUntilAndExecute.sqf +++ b/addons/common/functions/fnc_waitUntilAndExecute.sqf @@ -17,6 +17,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_waitUntilAndExecute","3.8.0","CBA_fnc_waitUntilAndExecute"); + TRACE_1("Adding",_this); GVAR(waitUntilAndExecArray) pushBack _this; From e7dbcd7b5802f1c67278b617fe4fff655ef62bd4 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 15:27:24 +0200 Subject: [PATCH 182/268] Replace delayed execution functions with new CBA counterparts --- addons/attach/functions/fnc_attach.sqf | 2 +- addons/attach/functions/fnc_detach.sqf | 2 +- .../functions/fnc_getChildrenAttachActions.sqf | 4 ++-- addons/attach/functions/fnc_handleGetIn.sqf | 2 +- addons/attach/functions/fnc_handleKilled.sqf | 2 +- addons/captives/XEH_postInit.sqf | 2 +- .../captives/functions/fnc_moduleHandcuffed.sqf | 2 +- .../captives/functions/fnc_moduleSurrender.sqf | 2 +- addons/captives/functions/fnc_setHandcuffed.sqf | 4 ++-- addons/captives/functions/fnc_setSurrendered.sqf | 4 ++-- addons/common/CfgEventHandlers.hpp | 2 +- addons/common/functions/fnc_checkPBOs.sqf | 4 ++-- addons/common/functions/fnc_displayIcon.sqf | 2 +- addons/common/functions/fnc_displayText.sqf | 2 +- addons/common/functions/fnc_fixCollision.sqf | 2 +- .../common/functions/fnc_setVariablePublic.sqf | 2 +- .../common/functions/fnc_unloadPersonLocal.sqf | 4 ++-- addons/concertina_wire/CfgVehicles.hpp | 2 +- .../concertina_wire/functions/fnc_dismount.sqf | 2 +- .../functions/fnc_vehicleDamage.sqf | 2 +- .../disarming/functions/fnc_disarmDropItems.sqf | 2 +- addons/dragging/functions/fnc_startDrag.sqf | 2 +- .../functions/fnc_addExplosiveActions.sqf | 2 +- .../functions/fnc_detonateExplosive.sqf | 2 +- addons/explosives/functions/fnc_dialPhone.sqf | 2 +- .../explosives/functions/fnc_setupExplosive.sqf | 2 +- addons/explosives/functions/fnc_startDefuse.sqf | 2 +- addons/explosives/functions/fnc_startTimer.sqf | 2 +- .../functions/fnc_checkVehicleThread.sqf | 2 +- addons/fastroping/functions/fnc_cutRopes.sqf | 4 ++-- addons/fastroping/functions/fnc_deployAI.sqf | 10 +++++----- addons/fastroping/functions/fnc_equipFRIES.sqf | 2 +- addons/fastroping/functions/fnc_onCutCommon.sqf | 2 +- .../fastroping/functions/fnc_onPrepareCommon.sqf | 2 +- addons/fastroping/functions/fnc_prepareFRIES.sqf | 2 +- addons/frag/functions/fnc_spallHP.sqf | 2 +- addons/gestures/XEH_missionDisplayLoad.sqf | 2 +- addons/goggles/XEH_postInit.sqf | 4 ++-- addons/goggles/functions/fnc_applyDustEffect.sqf | 2 +- .../functions/fnc_applyRotorWashEffect.sqf | 2 +- addons/goggles/functions/fnc_clearGlasses.sqf | 2 +- addons/grenades/functions/fnc_flare.sqf | 2 +- .../functions/fnc_flashbangExplosionEH.sqf | 10 +++++----- addons/grenades/functions/fnc_throwGrenade.sqf | 4 ++-- addons/huntir/functions/fnc_handleFired.sqf | 4 ++-- addons/huntir/functions/fnc_huntir.sqf | 6 +++--- .../functions/fnc_inventoryDisplayLoad.sqf | 2 +- .../inventory/functions/fnc_onLBSelChanged.sqf | 2 +- .../markers/functions/fnc_initInsertMarker.sqf | 2 +- addons/markers/functions/fnc_placeMarker.sqf | 2 +- addons/medical/XEH_postInit.sqf | 16 ++++++++-------- addons/medical/XEH_preInit.sqf | 4 ++-- addons/medical/functions/fnc_addDamageToUnit.sqf | 2 +- addons/medical/functions/fnc_addVitalLoop.sqf | 2 +- addons/medical/functions/fnc_bodyCleanupLoop.sqf | 2 +- .../functions/fnc_handleBandageOpening.sqf | 2 +- .../medical/functions/fnc_handleCreateLitter.sqf | 2 +- addons/medical/functions/fnc_handleDamage.sqf | 4 ++-- addons/medical/functions/fnc_init.sqf | 2 +- .../medical/functions/fnc_litterCleanupLoop.sqf | 2 +- .../functions/fnc_medicationEffectLoop.sqf | 2 +- .../medical/functions/fnc_playInjuredSound.sqf | 2 +- addons/medical/functions/fnc_reviveStateLoop.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 2 +- addons/medical/functions/fnc_setUnconscious.sqf | 4 ++-- addons/medical/functions/fnc_treatment.sqf | 2 +- addons/medical/functions/fnc_vitalLoop.sqf | 2 +- addons/medical_menu/XEH_postInit.sqf | 2 +- .../functions/fnc_handleUI_DisplayOptions.sqf | 2 +- .../functions/fnc_handlePlayerVehicleChanged.sqf | 2 +- .../functions/fnc_onServerSettingsMenuOpen.sqf | 2 +- .../functions/fnc_onSettingsMenuOpen.sqf | 2 +- .../functions/fnc_checkTemperature.sqf | 2 +- addons/overheating/functions/fnc_clearJam.sqf | 4 ++-- addons/overheating/functions/fnc_jamWeapon.sqf | 2 +- .../fnc_updateSpareBarrelsTemperaturesThread.sqf | 2 +- .../functions/fnc_updateTemperatureThread.sqf | 2 +- addons/refuel/functions/fnc_connectNozzle.sqf | 2 +- addons/reload/functions/fnc_checkAmmo.sqf | 2 +- addons/respawn/XEH_serverPostInit.sqf | 2 +- addons/respawn/functions/fnc_initRallypoint.sqf | 2 +- .../respawn/functions/fnc_moduleFriendlyFire.sqf | 2 +- addons/respawn/functions/fnc_moveRallypoint.sqf | 2 +- addons/sandbag/CfgVehicles.hpp | 2 +- addons/sandbag/functions/fnc_deployConfirm.sqf | 2 +- addons/sandbag/functions/fnc_pickup.sqf | 2 +- .../slideshow/functions/fnc_autoTransition.sqf | 2 +- .../slideshow/functions/fnc_createSlideshow.sqf | 2 +- .../spectator/functions/fnc_handleInterface.sqf | 4 ++-- addons/spectator/functions/fnc_handleUnits.sqf | 2 +- addons/spectator/functions/fnc_setSpectator.sqf | 2 +- .../spectator/functions/fnc_stageSpectator.sqf | 2 +- addons/spottingscope/functions/fnc_pickup.sqf | 2 +- addons/spottingscope/functions/fnc_place.sqf | 2 +- addons/tacticalladder/CfgVehicles.hpp | 2 +- addons/tagging/functions/fnc_tag.sqf | 2 +- .../tagging/functions/fnc_tagTestingThread.sqf | 2 +- addons/trenches/CfgVehicles.hpp | 4 ++-- .../functions/fnc_continueDiggingTrench.sqf | 2 +- addons/trenches/functions/fnc_removeTrench.sqf | 2 +- addons/tripod/CfgVehicles.hpp | 2 +- addons/tripod/functions/fnc_pickup.sqf | 2 +- addons/tripod/functions/fnc_place.sqf | 2 +- .../functions/fnc_handleVehicleInitPost.sqf | 2 +- addons/vehiclelock/functions/fnc_moduleSync.sqf | 2 +- .../functions/fnc_onOpenInventory.sqf | 4 ++-- addons/zeus/functions/fnc_addObjectToCurator.sqf | 2 +- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 4 ++-- 108 files changed, 142 insertions(+), 142 deletions(-) diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 305c3c09607..42bfe44dbce 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -51,7 +51,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment [_unit, "forceWalk", "ACE_Attach", true] call EFUNC(common,statusEffect_set); - [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame); + [{[localize LSTRING(PlaceAction), ""] call EFUNC(interaction,showMouseHint)}, []] call CBA_fnc_execNextFrame; _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; _actionID = _unit addAction [format ["%1", localize LSTRING(CancelAction)], {GVAR(placeAction) = PLACE_CANCEL}]; diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 05c625b3745..0cf5c780828 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -57,7 +57,7 @@ if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then detach _attachedObject; _attachedObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]); // Delete attached item after 0.5 seconds - [{deleteVehicle (_this select 0)}, [_attachedObject], 2] call EFUNC(common,waitAndExecute); + [{deleteVehicle (_this select 0)}, [_attachedObject], 2] call CBA_fnc_waitAndExecute; } else { // Delete attached item deleteVehicle _attachedObject; diff --git a/addons/attach/functions/fnc_getChildrenAttachActions.sqf b/addons/attach/functions/fnc_getChildrenAttachActions.sqf index aeb75c00d48..9f811197e08 100644 --- a/addons/attach/functions/fnc_getChildrenAttachActions.sqf +++ b/addons/attach/functions/fnc_getChildrenAttachActions.sqf @@ -31,7 +31,7 @@ _actions = []; if (getText (_item >> "ACE_Attachable") != "") then { _displayName = getText(_item >> "displayName"); _picture = getText(_item >> "picture"); - _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); + _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); _actions pushBack [_action, [], _target]; }; }; @@ -44,7 +44,7 @@ _actions = []; if (getText (_item >> "ACE_Attachable") != "") then { _displayName = getText(_item >> "displayName"); _picture = getText(_item >> "picture"); - _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call EFUNC(common,execNextFrame)}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); + _action = [_x, _displayName, _picture, {[{_this call FUNC(attach)}, _this] call CBA_fnc_execNextFrame}, {_this call FUNC(canAttach)}, {}, [_x]] call EFUNC(interact_menu,createAction); _actions pushBack [_action, [], _target]; }; }; diff --git a/addons/attach/functions/fnc_handleGetIn.sqf b/addons/attach/functions/fnc_handleGetIn.sqf index d9f469eee2e..dd173c41252 100644 --- a/addons/attach/functions/fnc_handleGetIn.sqf +++ b/addons/attach/functions/fnc_handleGetIn.sqf @@ -36,7 +36,7 @@ if (!isNull _xObject) then { params ["_detachedLight"]; TRACE_1("delayed delete",_detachedLight); deleteVehicle _detachedLight; - }, [_xObject], 2] call EFUNC(common,waitAndExecute); + }, [_xObject], 2] call CBA_fnc_waitAndExecute; (_attachedList select 0) set [0, objNull]; }; diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf index 06c5473c88c..69ab31122bd 100644 --- a/addons/attach/functions/fnc_handleKilled.sqf +++ b/addons/attach/functions/fnc_handleKilled.sqf @@ -32,7 +32,7 @@ if ((count _attachedList) == 0) exitWith {}; //If it's a vehicle, also delete the attached if (!(_deadUnit isKindOf "CAManBase")) then { _xObject setPos ((getPos _deadUnit) vectorAdd [0, 0, -1000]); - [{deleteVehicle (_this select 0)}, [_xObject], 2] call EFUNC(common,waitAndExecute); + [{deleteVehicle (_this select 0)}, [_xObject], 2] call CBA_fnc_waitAndExecute; }; } forEach _attachedList; diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 5aada0950f6..567a107697f 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -4,7 +4,7 @@ // Hold on a little bit longer to ensure anims will work [{ GVAR(captivityEnabled) = true; - }, [], 0.05] call EFUNC(common,waitAndExecute); + }, [], 0.05] call CBA_fnc_waitAndExecute; }] call EFUNC(common,addEventHandler); //Handles when someone starts escorting and then disconnects, leaving the captive attached diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf index dcb59ff2a15..9d3079262ad 100644 --- a/addons/captives/functions/fnc_moduleHandcuffed.sqf +++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf @@ -32,7 +32,7 @@ if (!isServer) exitWith {}; TRACE_2("event",_x,local _x); ["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent); } forEach _units; -}, [_units], 0.05] call EFUNC(common,waitAndExecute); +}, [_units], 0.05] call CBA_fnc_waitAndExecute; if (!isNull _logic) then { deleteVehicle _logic; diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 29659b351ec..a15d2e41655 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -32,7 +32,7 @@ if (!isServer) exitWith {}; TRACE_2("event",_x,local _x); ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent); } forEach _units; -}, [_units], 0.05] call EFUNC(common,waitAndExecute); +}, [_units], 0.05] call CBA_fnc_waitAndExecute; if (!isNull _logic) then { deleteVehicle _logic; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index d4f84730e61..58291d0689b 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -27,7 +27,7 @@ if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith { // It's to soon to call this function, delay it if (EGVAR(common,settingsInitFinished)) then { // Settings are already initialized, but the small wait isn't over - [DFUNC(setHandCuffed), _this, 0.05] call EFUNC(common,waitAndExecute); + [DFUNC(setHandCuffed), _this, 0.05] call CBA_fnc_waitAndExecute; } else { // Settings are not initialized yet [DFUNC(setHandCuffed), _this] call EFUNC(common,runAfterSettingsInit); @@ -98,7 +98,7 @@ if (_state) then { TRACE_2("Adding animChangedEH",_unit,_animChangedEHID); _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; - }, [_unit], 0.01] call EFUNC(common,waitAndExecute); + }, [_unit], 0.01] call CBA_fnc_waitAndExecute; } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; [_unit, "setCaptive", QGVAR(Handcuffed), false] call EFUNC(common,statusEffect_set); diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index ffc3c35081e..8a902536e01 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -27,7 +27,7 @@ if !(missionNamespace getVariable [QGVAR(captivityEnabled), false]) exitWith { // It's to soon to call this function, delay it if (EGVAR(common,settingsInitFinished)) then { // Settings are already initialized, but the small wait isn't over - [DFUNC(setSurrendered), _this, 0.05] call EFUNC(common,waitAndExecute); + [DFUNC(setSurrendered), _this, 0.05] call CBA_fnc_waitAndExecute; } else { // Settings are not initialized yet [DFUNC(setSurrendered), _this] call EFUNC(common,runAfterSettingsInit); @@ -73,7 +73,7 @@ if (_state) then { }]; _unit setVariable [QGVAR(surrenderAnimEHID), _animChangedEHID]; }; - }, [_unit], 0.01] call EFUNC(common,waitAndExecute); + }, [_unit], 0.01] call CBA_fnc_waitAndExecute; } else { _unit setVariable [QGVAR(isSurrendering), false, true]; [_unit, "setCaptive", QGVAR(Surrendered), false] call EFUNC(common,statusEffect_set); diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 5d55e40f2d8..beb07e35e79 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -33,7 +33,7 @@ class Extended_InitPost_EventHandlers { }; class CAManBase { class GVAR(setName) { - init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call FUNC(execNextFrame)};); + init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call CBA_fnc_execNextFrame};); }; class GVAR(muteUnit) { init = QUOTE(_this call FUNC(muteUnitHandleInitPost)); diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index f447d126af4..6d786aebf4c 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -79,7 +79,7 @@ if (!isServer) then { params ["_rscLayer"]; TRACE_2("Hiding Error message after 10 seconds",time,_rscLayer); _rscLayer cutFadeOut 0.2; - }, [_rscLayer], 10] call FUNC(waitAndExecute); + }, [_rscLayer], 10] call CBA_fnc_waitAndExecute; }; }; @@ -89,7 +89,7 @@ if (!isServer) then { TRACE_2("Player is alive, showing msg and exiting",time,_text); _text = composeText [parseText format ["%1", _text]]; ["[ACE] ERROR", _text, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); - }, [_text]] call FUNC(waitUntilAndExecute); + }, [_text]] call CBA_fnc_waitUntilAndExecute; }; }; diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf index c51b3bd4548..3c20195e48c 100644 --- a/addons/common/functions/fnc_displayIcon.sqf +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -104,7 +104,7 @@ if (_show) then { if (_timeAlive >= 0) then { [{ [_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon); - }, [_iconId], _timeAlive, _timeAlive] call FUNC(waitAndExecute); + }, [_iconId], _timeAlive, _timeAlive] call CBA_fnc_waitAndExecute; }; } else { diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf index 3c683275352..8dae6b28163 100644 --- a/addons/common/functions/fnc_displayText.sqf +++ b/addons/common/functions/fnc_displayText.sqf @@ -33,5 +33,5 @@ if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then { GVAR(lastHint) set [0, _time]; GVAR(lastHint) set [1, _priority]; - [{if ((_this select 0) == GVAR(lastHint) select 0) then {hintSilent ""};}, [_time], _delay, 0] call FUNC(waitAndExecute); + [{if ((_this select 0) == GVAR(lastHint) select 0) then {hintSilent ""};}, [_time], _delay, 0] call CBA_fnc_waitAndExecute; }; diff --git a/addons/common/functions/fnc_fixCollision.sqf b/addons/common/functions/fnc_fixCollision.sqf index c0cf7b93e7f..3b3b16a9f91 100644 --- a/addons/common/functions/fnc_fixCollision.sqf +++ b/addons/common/functions/fnc_fixCollision.sqf @@ -19,4 +19,4 @@ if (!local _this) exitWith {}; [_this, "blockDamage", "fixCollision", true] call FUNC(statusEffect_set); // re-allow damage after 2 seconds -[{[_this, "blockDamage", "fixCollision", false] call FUNC(statusEffect_set);}, _this, 2] call EFUNC(common,waitAndExecute); +[{[_this, "blockDamage", "fixCollision", false] call FUNC(statusEffect_set);}, _this, 2] call CBA_fnc_waitAndExecute; diff --git a/addons/common/functions/fnc_setVariablePublic.sqf b/addons/common/functions/fnc_setVariablePublic.sqf index bf6b35a8621..1cfba0a422e 100644 --- a/addons/common/functions/fnc_setVariablePublic.sqf +++ b/addons/common/functions/fnc_setVariablePublic.sqf @@ -50,4 +50,4 @@ TRACE_2("Starting Embargo", _varName, _delay); if (!(_value isEqualTo _curValue)) then { _this call FUNC(setVariablePublic); }; -}, _this, _delay] call FUNC(waitAndExecute); +}, _this, _delay] call CBA_fnc_waitAndExecute; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index ff5813434ac..326eb92548a 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -58,10 +58,10 @@ _unit action ["Eject", vehicle _unit]; if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then { [_unit, _anim, 2, true] call FUNC(doAnimation); }; - }, [_unit, _anim], 0.5] call FUNC(waitAndExecute); + }, [_unit, _anim], 0.5] call CBA_fnc_waitAndExecute; }; }; -}, [_unit, _emptyPos], 0.5] call FUNC(waitAndExecute); +}, [_unit, _emptyPos], 0.5] call CBA_fnc_waitAndExecute; [_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide); diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 88975ea7e91..0a746ac1e07 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -134,7 +134,7 @@ class CfgVehicles { distance = 4; condition = "true"; //wait a frame to handle "Do When releasing action menu key" option: - statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(deploy)}, [ARR_2(_target,_player)])] call CBA_fnc_execNextFrame); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/concertina_wire/functions/fnc_dismount.sqf b/addons/concertina_wire/functions/fnc_dismount.sqf index 6e8ae8f4f50..50429c054b0 100644 --- a/addons/concertina_wire/functions/fnc_dismount.sqf +++ b/addons/concertina_wire/functions/fnc_dismount.sqf @@ -18,7 +18,7 @@ if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitWith { [{ _this call FUNC(dismount); - }, _this] call EFUNC(common,execNextFrame); + }, _this] call CBA_fnc_execNextFrame; }; params ["_wire", "_unit"]; diff --git a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf index dffa15b6093..0bca28c3cfd 100644 --- a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf +++ b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf @@ -114,7 +114,7 @@ if (_mode == 1) then { _vDir = getDir _vehicle; _vehicle setPosASL (_vPos vectorAdd [-0.35 * sin(_vDir), -0.35 * cos(_vDir), 0]); // TODO: Needs to be placed in safe distance to wire, so we do not constantly re-spawn new wires - }, [_vehicle, _wire], 0.1] call EFUNC(common,waitAndExecute); + }, [_vehicle, _wire], 0.1] call CBA_fnc_waitAndExecute; }; //TODO: Create broken geoless wire (two version) diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf index be2f9320285..e80d12a9c6e 100644 --- a/addons/disarming/functions/fnc_disarmDropItems.sqf +++ b/addons/disarming/functions/fnc_disarmDropItems.sqf @@ -67,7 +67,7 @@ if (isNull _holder) exitWith { if (_holder getVariable [QGVAR(holderInUse), false]) exitWith { [{ _this call FUNC(disarmDropItems); - }, _this] call EFUNC(common,execNextFrame); + }, _this] call CBA_fnc_execNextFrame; }; _holder setVariable [QGVAR(holderInUse), true]; diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf index 24a279e7a74..39a2f060453 100644 --- a/addons/dragging/functions/fnc_startDrag.sqf +++ b/addons/dragging/functions/fnc_startDrag.sqf @@ -39,7 +39,7 @@ _unit selectWeapon primaryWeapon _unit; [_unit, _target, true] call EFUNC(common,claim); // can't play action that depends on weapon if it was added the same frame -[{_this playActionNow "grabDrag";}, _unit] call EFUNC(common,execNextFrame); +[{_this playActionNow "grabDrag";}, _unit] call CBA_fnc_execNextFrame; // move a bit closer and adjust direction when trying to pick up a person if (_target isKindOf "CAManBase") then { diff --git a/addons/explosives/functions/fnc_addExplosiveActions.sqf b/addons/explosives/functions/fnc_addExplosiveActions.sqf index e744af6bce7..fc494a5fad8 100644 --- a/addons/explosives/functions/fnc_addExplosiveActions.sqf +++ b/addons/explosives/functions/fnc_addExplosiveActions.sqf @@ -45,7 +45,7 @@ _children = []; format ["Explosive_%1", _forEachIndex], format [_name + " (%1)", _itemCount select _forEachIndex], getText(_x >> "picture"), - {[{_this call FUNC(setupExplosive)}, _this] call EFUNC(common,execNextFrame)}, + {[{_this call FUNC(setupExplosive)}, _this] call CBA_fnc_execNextFrame}, {true}, {}, (configName _x) diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index a01f1816358..b7f4893e529 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -49,6 +49,6 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeOf (_item select 0) >> "TriggerWhe if (!isNull _explosive) then { _explosive setDamage 1; }; -}, [_item select 0], (_item select 1)] call EFUNC(common,waitAndExecute); +}, [_item select 0], (_item select 1)] call CBA_fnc_waitAndExecute; _result diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf index 44addcda9f4..6bfeac8595d 100644 --- a/addons/explosives/functions/fnc_dialPhone.sqf +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -40,7 +40,7 @@ if (_unit == ace_player) then { [{ playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; (_this select 0) setVariable [QGVAR(Dialing), false, true]; - }, [_unit,_explosive select 0], 0.25 * (count _arr - 4)] call EFUNC(common,waitAndExecute); + }, [_unit,_explosive select 0], 0.25 * (count _arr - 4)] call CBA_fnc_waitAndExecute; [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2)] call FUNC(startTimer); }; }; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index 709ea688d5f..6dd1094c6ab 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -187,7 +187,7 @@ GVAR(TweakedAngle) = 0; _unit removeMagazine _magClassname; _unit playActionNow "PutDown"; _unit setVariable [QGVAR(PlantingExplosive), true]; - [{_this setVariable [QGVAR(PlantingExplosive), false]}, _unit, 1.5] call EFUNC(common,waitAndExecute); + [{_this setVariable [QGVAR(PlantingExplosive), false]}, _unit, 1.5] call CBA_fnc_waitAndExecute; }; } else { diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index 84d72740694..35333ecc172 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -56,7 +56,7 @@ if (ACE_player != _unit) then { [_unit, _target] call FUNC(defuseExplosive); _unit enableAI "MOVE"; _unit enableAI "TARGET"; - }, [_unit, _target], _defuseTime] call EFUNC(common,waitAndExecute); + }, [_unit, _target], _defuseTime] call CBA_fnc_waitAndExecute; }; } else { _unit playActionNow _actionToPlay; diff --git a/addons/explosives/functions/fnc_startTimer.sqf b/addons/explosives/functions/fnc_startTimer.sqf index ca219ed13c2..1f529d9765c 100644 --- a/addons/explosives/functions/fnc_startTimer.sqf +++ b/addons/explosives/functions/fnc_startTimer.sqf @@ -25,4 +25,4 @@ TRACE_2("params",_explosive,_delay); if (!isNull _explosive) then { [_explosive, -1, [_explosive, 0]] call FUNC(detonateExplosive); }; -}, [_explosive], _delay] call EFUNC(common,waitAndExecute); +}, [_explosive], _delay] call CBA_fnc_waitAndExecute; diff --git a/addons/fastroping/functions/fnc_checkVehicleThread.sqf b/addons/fastroping/functions/fnc_checkVehicleThread.sqf index 0cd0ca3234f..38a2cad8c63 100644 --- a/addons/fastroping/functions/fnc_checkVehicleThread.sqf +++ b/addons/fastroping/functions/fnc_checkVehicleThread.sqf @@ -21,5 +21,5 @@ params ["_vehicle", "_fries"]; if (isNull _vehicle) then { deleteVehicle _fries; } else { - [FUNC(checkVehicleThread), _this, 5] call EFUNC(common,waitAndExecute); + [FUNC(checkVehicleThread), _this, 5] call CBA_fnc_waitAndExecute; }; diff --git a/addons/fastroping/functions/fnc_cutRopes.sqf b/addons/fastroping/functions/fnc_cutRopes.sqf index dcabda56bab..d619a242979 100644 --- a/addons/fastroping/functions/fnc_cutRopes.sqf +++ b/addons/fastroping/functions/fnc_cutRopes.sqf @@ -36,7 +36,7 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; //Only delete the hook first so the rope falls down. //Note: ropeDetach was used here before, but the command seems a bit broken. deleteVehicle _hook; - [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute); + [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy], 60] call CBA_fnc_waitAndExecute; } count _deployedRopes; _vehicle setVariable [QGVAR(deployedRopes), [], true]; @@ -50,4 +50,4 @@ if (isText (_config >> QGVAR(onCut))) then { [{ _this setVariable [QGVAR(deploymentStage), 0, true]; -}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute); +}, _vehicle, _waitTime] call CBA_fnc_waitAndExecute; diff --git a/addons/fastroping/functions/fnc_deployAI.sqf b/addons/fastroping/functions/fnc_deployAI.sqf index dd4bfe4e714..843f23cdb56 100644 --- a/addons/fastroping/functions/fnc_deployAI.sqf +++ b/addons/fastroping/functions/fnc_deployAI.sqf @@ -64,7 +64,7 @@ _deployTime = 0; if (getText (_config >> QGVAR(onPrepare)) != "") then { _deployTime = [_vehicle] call (missionNamespace getVariable (getText (_config >> QGVAR(onPrepare)))); }; -[{[_this] call FUNC(deployRopes)}, _vehicle, _deployTime] call EFUNC(common,waitAndExecute); +[{[_this] call FUNC(deployRopes)}, _vehicle, _deployTime] call CBA_fnc_waitAndExecute; driver _vehicle disableAI "MOVE"; DFUNC(deployAIRecursive) = { @@ -80,8 +80,8 @@ DFUNC(deployAIRecursive) = { params ["_vehicle"]; private _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; ({!(_x select 5)} count (_deployedRopes)) > 0 - }, FUNC(deployAIRecursive), _this] call EFUNC(common,waitUntilAndExecute); - }, [_vehicle, _unitsToDeploy], 1] call EFUNC(common,waitAndExecute); + }, FUNC(deployAIRecursive), _this] call CBA_fnc_waitUntilAndExecute; + }, [_vehicle, _unitsToDeploy], 1] call CBA_fnc_waitAndExecute; } else { [{ private _deployedRopes = _this getVariable [QGVAR(deployedRopes), []]; @@ -89,8 +89,8 @@ DFUNC(deployAIRecursive) = { }, { [_this] call FUNC(cutRopes); driver _this enableAI "MOVE"; - }, _vehicle] call EFUNC(common,waitUntilAndExecute); + }, _vehicle] call CBA_fnc_waitUntilAndExecute; }; }; -[FUNC(deployAIRecursive), [_vehicle, _unitsToDeploy], _deployTime + 4] call EFUNC(common,waitAndExecute); +[FUNC(deployAIRecursive), [_vehicle, _unitsToDeploy], _deployTime + 4] call CBA_fnc_waitAndExecute; diff --git a/addons/fastroping/functions/fnc_equipFRIES.sqf b/addons/fastroping/functions/fnc_equipFRIES.sqf index eaf603f9385..6d714611beb 100644 --- a/addons/fastroping/functions/fnc_equipFRIES.sqf +++ b/addons/fastroping/functions/fnc_equipFRIES.sqf @@ -35,6 +35,6 @@ if !(isNumber (_config >> QGVAR(enabled))) then { [_vehicle] call FUNC(cutRopes); }; }]; - [FUNC(checkVehicleThread), [_vehicle, _fries], 5] call EFUNC(common,waitAndExecute); + [FUNC(checkVehicleThread), [_vehicle, _fries], 5] call CBA_fnc_waitAndExecute; }; }; diff --git a/addons/fastroping/functions/fnc_onCutCommon.sqf b/addons/fastroping/functions/fnc_onCutCommon.sqf index 404f94e9d8b..004c176b65f 100644 --- a/addons/fastroping/functions/fnc_onCutCommon.sqf +++ b/addons/fastroping/functions/fnc_onCutCommon.sqf @@ -30,7 +30,7 @@ if !(isNull _fries) then { _this animate ["dvere1_posunZ", 0]; _this animate ["dvere2_posunZ", 0]; _this setVariable [QGVAR(doorsLocked), false, true]; - }, _vehicle, 2] call EFUNC(common,waitAndExecute); + }, _vehicle, 2] call CBA_fnc_waitAndExecute; 4 } else { diff --git a/addons/fastroping/functions/fnc_onPrepareCommon.sqf b/addons/fastroping/functions/fnc_onPrepareCommon.sqf index 5e8bf931bb6..37eb6c7eb8b 100644 --- a/addons/fastroping/functions/fnc_onPrepareCommon.sqf +++ b/addons/fastroping/functions/fnc_onPrepareCommon.sqf @@ -35,7 +35,7 @@ if !(isNull _fries) then { [{ _this animate ["extendHookRight", 1]; _this animate ["extendHookLeft", 1]; - }, _fries, 2] call EFUNC(common,waitAndExecute); + }, _fries, 2] call CBA_fnc_waitAndExecute; _waitTime = 4; }; diff --git a/addons/fastroping/functions/fnc_prepareFRIES.sqf b/addons/fastroping/functions/fnc_prepareFRIES.sqf index 48962590148..e4bce8458cb 100644 --- a/addons/fastroping/functions/fnc_prepareFRIES.sqf +++ b/addons/fastroping/functions/fnc_prepareFRIES.sqf @@ -29,4 +29,4 @@ if (isText (_config >> QGVAR(onPrepare))) then { [{ _this setVariable [QGVAR(deploymentStage), 2, true]; -}, _vehicle, _waitTime] call EFUNC(common,waitAndExecute); +}, _vehicle, _waitTime] call CBA_fnc_waitAndExecute; diff --git a/addons/frag/functions/fnc_spallHP.sqf b/addons/frag/functions/fnc_spallHP.sqf index 3756bb14161..09008c97cb3 100644 --- a/addons/frag/functions/fnc_spallHP.sqf +++ b/addons/frag/functions/fnc_spallHP.sqf @@ -21,7 +21,7 @@ if ((_this select 0) <= (count GVAR(spallHPData))) then { // diag_log text format["%1: %2", _forEachIndex, _x]; // } forEach _hp; // } forEach (_this select 1); - [DFUNC(doSpall), [_this, _forEachIndex]] call EFUNC(common,execNextFrame); + [DFUNC(doSpall), [_this, _forEachIndex]] call CBA_fnc_execNextFrame; // player sideChat "WEEE"; } forEach (_this select 1); }; diff --git a/addons/gestures/XEH_missionDisplayLoad.sqf b/addons/gestures/XEH_missionDisplayLoad.sqf index 17ddf325572..856f361d3ac 100644 --- a/addons/gestures/XEH_missionDisplayLoad.sqf +++ b/addons/gestures/XEH_missionDisplayLoad.sqf @@ -25,7 +25,7 @@ _display displayAddEventHandler ["KeyDown", { }; TRACE_2("Reloading, blocking gestures",_weapon,_duration); - [{GVAR(ReloadMutex) = true;}, [], _duration] call EFUNC(common,waitAndExecute); + [{GVAR(ReloadMutex) = true;}, [], _duration] call CBA_fnc_waitAndExecute; }; }; false diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 37edd7184b0..0bce24060fc 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -90,9 +90,9 @@ GVAR(OldGlasses) = ""; _unit setVariable ["ACE_EyesDamaged", false]; - }, _this, 5] call EFUNC(common,waitAndExecute); + }, _this, 5] call CBA_fnc_waitAndExecute; - }, _unit, 25] call EFUNC(common,waitAndExecute); + }, _unit, 25] call CBA_fnc_waitAndExecute; }] call EFUNC(common,addEventHandler); diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf index 944b98f1276..0e3bfe67cc2 100644 --- a/addons/goggles/functions/fnc_applyDustEffect.sqf +++ b/addons/goggles/functions/fnc_applyDustEffect.sqf @@ -71,7 +71,7 @@ GVAR(DustHandler) = [{ if (GVAR(DustHandler) == -1) then { GVAR(PostProcessEyes) ppEffectEnable false }; - }, [], 2] call EFUNC(common,waitAndExecute); + }, [], 2] call CBA_fnc_waitAndExecute; [GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; GVAR(DustHandler) = -1; diff --git a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf index bc8d0bafbf3..7a883ab7e7d 100644 --- a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf +++ b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf @@ -50,7 +50,7 @@ if !(_rotorWash select 0) exitWith { if (GVAR(DustHandler) == -1) then { GVAR(PostProcessEyes) ppEffectEnable false; } - }, [], 2] call EFUNC(common,waitAndExecute); + }, [], 2] call CBA_fnc_waitAndExecute; [GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; GVAR(DustHandler) = -1; diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf index e7d55849386..f1622c86808 100644 --- a/addons/goggles/functions/fnc_clearGlasses.sqf +++ b/addons/goggles/functions/fnc_clearGlasses.sqf @@ -34,7 +34,7 @@ if ((stance _unit != "PRONE") && {primaryWeapon _unit != ""} && {currentWeapon _ if (cameraView == "INTERNAL") then { addCamShake [5, 1.75, 2]; }; -}, [], 0.3] call EFUNC(common,waitAndExecute); +}, [], 0.3] call CBA_fnc_waitAndExecute; call FUNC(removeDirtEffect); call FUNC(removeRainEffect); diff --git a/addons/grenades/functions/fnc_flare.sqf b/addons/grenades/functions/fnc_flare.sqf index 74360e39b97..be2b4ce952c 100644 --- a/addons/grenades/functions/fnc_flare.sqf +++ b/addons/grenades/functions/fnc_flare.sqf @@ -36,4 +36,4 @@ _light setLightDayLight true; _light lightAttachObject [_projectile, [0,0,0]]; //_light attachTo [_projectile, [0,0,0]]; -[{deleteVehicle _this}, _light, _timeToLive, 1] call EFUNC(common,waitAndExecute); +[{deleteVehicle _this}, _light, _timeToLive, 1] call CBA_fnc_waitAndExecute; diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf index c708f3a3cf9..0d0779ccef3 100644 --- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf +++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf @@ -36,8 +36,8 @@ if (hasInterface) then { [{ params ["_light"]; deleteVehicle _light; - }, [_light], 0.2] call EFUNC(common,waitAndExecute); - }, [_light], 0.1] call EFUNC(common,waitAndExecute); + }, [_light], 0.2] call CBA_fnc_waitAndExecute; + }, [_light], 0.1] call CBA_fnc_waitAndExecute; }; // Affect local AI @@ -67,7 +67,7 @@ _affected = _affected - [ACE_player]; }; _unit setSkill (skill _unit * 50); - }, [_x], 7 * _strength] call EFUNC(common,waitAndExecute); + }, [_x], 7 * _strength] call CBA_fnc_waitAndExecute; }; } count _affected; @@ -126,12 +126,12 @@ if (hasInterface && {!isNull ACE_player} && {alive ACE_player}) then { GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,0,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; GVAR(flashbangPPEffectCC) ppEffectCommit (10 * _strength); - }, [_strength], 7 * _strength] call EFUNC(common,waitAndExecute); + }, [_strength], 7 * _strength] call CBA_fnc_waitAndExecute; //FULLRECOVERY - end effect [{ GVAR(flashbangPPEffectCC) ppEffectEnable false; - }, [], 17 * _strength] call EFUNC(common,waitAndExecute); + }, [], 17 * _strength] call CBA_fnc_waitAndExecute; }; if (_strength > 0.2) then { diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index 284c573c2ed..e603dd87439 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -32,7 +32,7 @@ if (local _unit) then { if (getNumber (_config >> QGVAR(flashbang)) == 1) then { private _fuzeTime = getNumber (_config >> "explosionTime"); - [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime] call EFUNC(common,waitAndExecute); + [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime] call CBA_fnc_waitAndExecute; }; }; @@ -42,7 +42,7 @@ if (getNumber (_config >> QGVAR(flare)) == 1) then { private _color = getArray (_config >> QGVAR(color)); private _intensity = _color deleteAt 3; - [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute); + [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call CBA_fnc_waitAndExecute; }; // handle throw modes diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf index 551b9975b69..d0aa60cf224 100644 --- a/addons/huntir/functions/fnc_handleFired.sqf +++ b/addons/huntir/functions/fnc_handleFired.sqf @@ -50,5 +50,5 @@ if (!hasInterface) exitWith {}; _huntir setVectorUp [0, 0, 1]; }; }, 0, [_huntir]] call CBA_fnc_addPerFrameHandler; - }, [getPosATL _projectile vectorAdd [0, 0, 50]], 2, 0] call EFUNC(common,waitAndExecute); -}, [_projectile], 5, 0] call EFUNC(common,waitAndExecute); + }, [getPosATL _projectile vectorAdd [0, 0, 50]], 2, 0] call CBA_fnc_waitAndExecute; +}, [_projectile], 5, 0] call CBA_fnc_waitAndExecute; diff --git a/addons/huntir/functions/fnc_huntir.sqf b/addons/huntir/functions/fnc_huntir.sqf index e06ada87eac..14be9f3a5ae 100644 --- a/addons/huntir/functions/fnc_huntir.sqf +++ b/addons/huntir/functions/fnc_huntir.sqf @@ -90,9 +90,9 @@ createDialog "ace_huntir_cam_dialog_off"; GVAR(done) = true; closedialog 0; HUNTIR_BACKGROUND_LAYER_ID cutText ["", "PLAIN"]; - }, [], 3, 0] call EFUNC(common,waitAndExecute); + }, [], 3, 0] call CBA_fnc_waitAndExecute; }; }; }, __TYPE_WRITER_DELAY, []] call CBA_fnc_addPerFrameHandler; - }, [], 0.5, 0] call EFUNC(common,waitAndExecute); -}, [], 1, 0] call EFUNC(common,waitAndExecute); + }, [], 0.5, 0] call CBA_fnc_waitAndExecute; +}, [], 1, 0] call CBA_fnc_waitAndExecute; diff --git a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf index ab237017600..0e1daa4a523 100644 --- a/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf +++ b/addons/inventory/functions/fnc_inventoryDisplayLoad.sqf @@ -53,7 +53,7 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; // readd "All" filter to last position and select it _index = _filter lbAdd _nameAll; _filter lbSetCurSel _index; -}, [_filter]] call EFUNC(common,execNextFrame); +}, [_filter]] call CBA_fnc_execNextFrame; // monitor changes that can happen and force our update private _dummyControl = _display ctrlCreate ["RscMapControl", -1]; diff --git a/addons/inventory/functions/fnc_onLBSelChanged.sqf b/addons/inventory/functions/fnc_onLBSelChanged.sqf index 61e4b12b106..5ae49049fea 100644 --- a/addons/inventory/functions/fnc_onLBSelChanged.sqf +++ b/addons/inventory/functions/fnc_onLBSelChanged.sqf @@ -24,4 +24,4 @@ GVAR(selectedFilterIndex) = _index; params ["_display"]; [_display] call FUNC(forceItemListUpdate); -}, [ctrlParent _filter]] call EFUNC(common,execNextFrame); +}, [ctrlParent _filter]] call CBA_fnc_execNextFrame; diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf index 2de05575f71..549a89730db 100644 --- a/addons/markers/functions/fnc_initInsertMarker.sqf +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -238,4 +238,4 @@ //Update now and add eventHandler: [_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle); _aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}]; -}, _this] call EFUNC(common,execNextFrame); +}, _this] call CBA_fnc_execNextFrame; diff --git a/addons/markers/functions/fnc_placeMarker.sqf b/addons/markers/functions/fnc_placeMarker.sqf index 5b0783b454a..d3f52413be2 100644 --- a/addons/markers/functions/fnc_placeMarker.sqf +++ b/addons/markers/functions/fnc_placeMarker.sqf @@ -32,5 +32,5 @@ if (_closeNum == 1) then { ] ]] call EFUNC(common,globalEvent); - }, []] call EFUNC(common,execNextFrame); + }, []] call CBA_fnc_execNextFrame; }; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index f0d3b907f68..b6839bfff13 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -139,11 +139,11 @@ GVAR(effectTimeBlood) = ACE_time; [{ GVAR(effectBlindingCC) ppEffectAdjust [1,1,0, [1,1,1,0], [0,0,0,1], [0,0,0,0]]; GVAR(effectBlindingCC) ppEffectCommit ((_this select 0) * 2); - }, [_strength], 0.01, 0] call EFUNC(common,waitAndExecute); + }, [_strength], 0.01, 0] call CBA_fnc_waitAndExecute; [{ GVAR(effectBlindingCC) ppEffectEnable false; - }, [], (_strength * 2) + 0.5, 0] call EFUNC(common,waitAndExecute); + }, [], (_strength * 2) + 0.5, 0] call CBA_fnc_waitAndExecute; GVAR(effectBlind) = false; }; @@ -206,15 +206,15 @@ GVAR(lastHeartBeatSound) = ACE_time; [{ GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute; [{ GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; GVAR(effectPainCA) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute; [{ GVAR(effectPainCA) ppEffectAdjust [(_this select 0), (_this select 0), false]; GVAR(effectPainCA) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute; } else { GVAR(effectPainCA) ppEffectEnable false; }; @@ -228,15 +228,15 @@ GVAR(lastHeartBeatSound) = ACE_time; [{ GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.1, _interval * 0.2], _interval * 0.05, 0] call CBA_fnc_waitAndExecute; [{ GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; GVAR(effectPainCC) ppEffectCommit 0.01; - }, [_strength * 0.7], _interval * 0.3, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.7], _interval * 0.3, 0] call CBA_fnc_waitAndExecute; [{ GVAR(effectPainCC) ppEffectAdjust [1,1,0, [1,1,1,1], [0,0,0,0], [1,1,1,1], [1 - (_this select 0),1 - (_this select 0),0,0,0,0.2,2]]; GVAR(effectPainCC) ppEffectCommit (_this select 1); - }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call EFUNC(common,waitAndExecute); + }, [_strength * 0.1, _interval * 0.55], _interval * 0.4, 0] call CBA_fnc_waitAndExecute; } else { GVAR(effectPainCC) ppEffectEnable false; }; diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 85232498bd4..a5dc596ba2c 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -35,7 +35,7 @@ private _fixStatic = { 1 preloadObject (_this select 0); }, { TRACE_1("preload done",_this); - }, [_vehType]] call EFUNC(common,waitUntilAndExecute); + }, [_vehType]] call CBA_fnc_waitUntilAndExecute; }; }; ["StaticWeapon", "init", _fixStatic] call CBA_fnc_addClassEventHandler; @@ -47,7 +47,7 @@ addMissionEventHandler ["Loaded",{ 1 preloadObject (_this select 0); }, { TRACE_1("preload done",_this); - }, [_x]] call EFUNC(common,waitUntilAndExecute); + }, [_x]] call CBA_fnc_waitUntilAndExecute; } forEach GVAR(fixedStatics); }]; diff --git a/addons/medical/functions/fnc_addDamageToUnit.sqf b/addons/medical/functions/fnc_addDamageToUnit.sqf index a11cc4689f1..1969e3ff746 100644 --- a/addons/medical/functions/fnc_addDamageToUnit.sqf +++ b/addons/medical/functions/fnc_addDamageToUnit.sqf @@ -54,7 +54,7 @@ private _debugCode = { ACE_LOGERROR_6("addDamageToUnit - FAILED - [unit:%1, partNo:%2, addDmg:%3] results:[alive:%4 old:%5 new:%6]", _unit, _partNumber, _damageToAdd, alive _unit, _startDmg, _endDmg); }; }; -[{diag_frameno > (_this select 0)}, _debugCode, [_checkAtFrame, _unit, _startDmg, _damageToAdd, _partNumber]] call EFUNC(common,waitUntilAndExecute); +[{diag_frameno > (_this select 0)}, _debugCode, [_checkAtFrame, _unit, _startDmg, _damageToAdd, _partNumber]] call CBA_fnc_waitUntilAndExecute; #endif private _return = [_unit, _selection, (_currentDamage + _damageToAdd), _unit, _typeOfDamage, _hitpointIndex] call FUNC(handleDamage); diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index 52b2cc11f91..5b4e3e44216 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -27,4 +27,4 @@ if ((_unit getVariable[QGVAR(addedToUnitLoop),false] || !alive _unit) && !_force // Schedule the loop to be executed again 1 sec later // @todo: should the loop be started righ away instead? _unit setVariable [QGVAR(addedToUnitLoop), true, true]; -[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); +[DFUNC(vitalLoop), [_unit, ACE_time], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_bodyCleanupLoop.sqf b/addons/medical/functions/fnc_bodyCleanupLoop.sqf index 03c12347132..af17ffcd346 100644 --- a/addons/medical/functions/fnc_bodyCleanupLoop.sqf +++ b/addons/medical/functions/fnc_bodyCleanupLoop.sqf @@ -27,4 +27,4 @@ if (GVAR(bodiesToDelete) isEqualTo []) exitWith { }; // Schedule the loop to be executed again 20 sec later -[DFUNC(bodyCleanupLoop), [], 20] call EFUNC(common,waitAndExecute); +[DFUNC(bodyCleanupLoop), [], 20] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf index 84ffa01258d..49c5ab35f33 100644 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ b/addons/medical/functions/fnc_handleBandageOpening.sqf @@ -117,5 +117,5 @@ if (random(1) <= _reopeningChance) then { }; // Otherwise something went wrong, we we don't reopen them.. //}; - }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call EFUNC(common,waitAndExecute); + }, [_target, _impact, _part, _injuryIndex, +_injury], _delay] call CBA_fnc_waitAndExecute; }; diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index 971342affbc..f26387ea08f 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -29,7 +29,7 @@ _litterObject = _litterClass createVehicleLocal _position; _litterObject setDir _direction; _litterObject setPosATL _position; // Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112 -[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call EFUNC(common,execNextFrame); +[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call CBA_fnc_execNextFrame; _maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index b46ffcf1ad5..4cf237e9499 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -120,11 +120,11 @@ if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitW if (_delayedUnconsicous) then { [{ [_this select 0, true] call FUNC(setUnconscious); - }, [_unit], 0.7] call EFUNC(common,waitAndExecute); + }, [_unit], 0.7] call CBA_fnc_waitAndExecute; } else { [{ [_this select 0, true] call FUNC(setUnconscious); - }, [_unit]] call EFUNC(common,execNextFrame); + }, [_unit]] call CBA_fnc_execNextFrame; }; 0.89; }; diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf index 868b07fbf4d..504135c204e 100644 --- a/addons/medical/functions/fnc_init.sqf +++ b/addons/medical/functions/fnc_init.sqf @@ -86,4 +86,4 @@ _unit setVariable [QGVAR(allLogs), [], true]; // items [{ _this call FUNC(itemCheck); -}, [_unit], 0.5, 0.1] call EFUNC(common,waitAndExecute); +}, [_unit], 0.5, 0.1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_litterCleanupLoop.sqf b/addons/medical/functions/fnc_litterCleanupLoop.sqf index ac102d5d59d..d5ddb8c2247 100644 --- a/addons/medical/functions/fnc_litterCleanupLoop.sqf +++ b/addons/medical/functions/fnc_litterCleanupLoop.sqf @@ -30,4 +30,4 @@ if ( (count GVAR(allCreatedLitter)) == 0) exitWith { }; // Schedule the loop to be executed again 30 sec later -[DFUNC(litterCleanupLoop), [], 30] call EFUNC(common,waitAndExecute); +[DFUNC(litterCleanupLoop), [], 30] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_medicationEffectLoop.sqf b/addons/medical/functions/fnc_medicationEffectLoop.sqf index 6d89675d8ae..00ef00a82c9 100644 --- a/addons/medical/functions/fnc_medicationEffectLoop.sqf +++ b/addons/medical/functions/fnc_medicationEffectLoop.sqf @@ -39,4 +39,4 @@ _amountDecreased = _amountDecreased + _decreaseRate; if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _unit) exitWith {}; // Schedule the loop to be executed again 1 sec later -[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call EFUNC(common,waitAndExecute); +[DFUNC(medicationEffectLoop), [_unit, _variableName, _amountDecreased, _decreaseRate, _viscosityAdjustmentRate, _painReduceRate], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_playInjuredSound.sqf b/addons/medical/functions/fnc_playInjuredSound.sqf index 6dae7ab2765..38b967b03e0 100644 --- a/addons/medical/functions/fnc_playInjuredSound.sqf +++ b/addons/medical/functions/fnc_playInjuredSound.sqf @@ -76,7 +76,7 @@ if (_pain > 0 && {[_unit] call EFUNC(common,isAwake)}) exitWith { // Clean up the lock [{ (_this select 0) setVariable [QGVAR(playingInjuredSound),nil]; - }, [_unit], _delay, _delay] call EFUNC(common,waitAndExecute); + }, [_unit], _delay, _delay] call CBA_fnc_waitAndExecute; }; // Clean up in case there has not been played any sounds. diff --git a/addons/medical/functions/fnc_reviveStateLoop.sqf b/addons/medical/functions/fnc_reviveStateLoop.sqf index 77a48c93402..5c254422b1b 100644 --- a/addons/medical/functions/fnc_reviveStateLoop.sqf +++ b/addons/medical/functions/fnc_reviveStateLoop.sqf @@ -53,4 +53,4 @@ if !(_unit getVariable [QGVAR(inReviveState), false]) exitwith { }; // Schedule the loop to be executed again 1 sec later -[DFUNC(reviveStateLoop), [_unit], 1] call EFUNC(common,waitAndExecute); +[DFUNC(reviveStateLoop), [_unit], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 061a28c081b..52974a878d8 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -59,7 +59,7 @@ if (isPLayer _unit) then { if (!_delaySetDamage) then { [_unit, 1] call FUNC(setStructuralDamage); } else { - [FUNC(setStructuralDamage), [_unit, 1]] call EFUNC(common,execNextFrame); + [FUNC(setStructuralDamage), [_unit, 1]] call CBA_fnc_execNextFrame; }; true; diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 25bc8aacb56..1584509a2b1 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -103,7 +103,7 @@ if (GVAR(delayUnconCaptive) == 0) then { if (_unit getVariable ["ACE_isUnconscious", false]) then { [_unit, "setCaptive", QGVAR(unconscious), true] call EFUNC(common,statusEffect_set); }; - },[_unit], GVAR(delayUnconCaptive)] call EFUNC(common,waitAndExecute); + },[_unit], GVAR(delayUnconCaptive)] call CBA_fnc_waitAndExecute; }; _anim = [_unit] call EFUNC(common,getDeathAnim); @@ -113,7 +113,7 @@ _anim = [_unit] call EFUNC(common,getDeathAnim); if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then { [_unit, _anim, 2, true] call EFUNC(common,doAnimation); }; -}, [_unit, _anim], 0.5, 0] call EFUNC(common,waitAndExecute); +}, [_unit, _anim], 0.5, 0] call CBA_fnc_waitAndExecute; _startingTime = ACE_time; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index d7f80edc357..dfb0584e9f6 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -23,7 +23,7 @@ params ["_caller", "_target", "_selectionName", "_className"]; if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith { [{ _this call FUNC(treatment); - }, _this] call EFUNC(common,execNextFrame); + }, _this] call CBA_fnc_execNextFrame; }; if !(_target isKindOf "CAManBase") exitWith {false}; diff --git a/addons/medical/functions/fnc_vitalLoop.sqf b/addons/medical/functions/fnc_vitalLoop.sqf index c9df4c6e91e..46497c88eeb 100644 --- a/addons/medical/functions/fnc_vitalLoop.sqf +++ b/addons/medical/functions/fnc_vitalLoop.sqf @@ -45,4 +45,4 @@ if (_pain > (_unit getVariable [QGVAR(painSuppress), 0])) then { }; // Schedule the loop to be executed again 1 sec later -[DFUNC(vitalLoop), [_unit, ACE_time], 1] call EFUNC(common,waitAndExecute); +[DFUNC(vitalLoop), [_unit, ACE_time], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 92e2af341fd..c39ef99ca6c 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -12,7 +12,7 @@ GVAR(pendingReopen) = false; GVAR(pendingReopen) = false; [{ [GVAR(INTERACTION_TARGET)] call FUNC(openMenu); - }, []] call EFUNC(common,execNextFrame); + }, []] call CBA_fnc_execNextFrame; }; }] call EFUNC(common,addEventhandler); diff --git a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf index 67e295e22e2..92260ff75e9 100644 --- a/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf +++ b/addons/medical_menu/functions/fnc_handleUI_DisplayOptions.sqf @@ -44,7 +44,7 @@ if (_name isEqualTo "toggle") exitWith { closeDialog 0; [{ [_this select 0] call FUNC(openMenu); - }, [_newTarget], 0.1] call EFUNC(common,waitAndExecute); + }, [_newTarget], 0.1] call CBA_fnc_waitAndExecute; }; // Clean the dropdown options list from all actions diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 2d921973d4d..0c9031137e0 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -30,7 +30,7 @@ if (!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVa //wait for proper turret locality change [{ ["initMortar", [_this], [_this]] call EFUNC(common,globalEvent); - }, _mortar, 0.05] call EFUNC(common,waitAndExecute); + }, _mortar, 0.05] call CBA_fnc_waitAndExecute; }; }, _newVehicle] call EFUNC(common,runAfterSettingsInit); }; diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf index 8e09608e07c..43c17cd619d 100644 --- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf @@ -54,7 +54,7 @@ GVAR(serverSideValues) = []; } forEach EGVAR(common,settings); //Delay a frame -[{ [MENU_TAB_SERVER_OPTIONS] call FUNC(onServerListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame); +[{ [MENU_TAB_SERVER_OPTIONS] call FUNC(onServerListBoxShowSelectionChanged) }, []] call CBA_fnc_execNextFrame; disableSerialization; _menu = uiNamespace getVariable "ACE_serverSettingsMenu"; diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index bef61b73e7d..42157f230fa 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -43,7 +43,7 @@ private _clientSettableCategories = [""]; } forEach EGVAR(common,settings); //Delay a frame -[{ [MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame); +[{ [MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged) }, []] call CBA_fnc_execNextFrame; disableSerialization; _menu = uiNamespace getVariable "ACE_settingsMenu"; diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf index fd2ac5f56c1..0fb600f83a4 100644 --- a/addons/overheating/functions/fnc_checkTemperature.sqf +++ b/addons/overheating/functions/fnc_checkTemperature.sqf @@ -31,4 +31,4 @@ if (_assistant isEqualTo _gunner) then { _assistant playActionNow _action; // Waits a sec before displaying the temperature -[FUNC(displayTemperature), [_gunner, _weapon], 1.0] call EFUNC(common,waitAndExecute); +[FUNC(displayTemperature), [_gunner, _weapon], 1.0] call CBA_fnc_waitAndExecute; diff --git a/addons/overheating/functions/fnc_clearJam.sqf b/addons/overheating/functions/fnc_clearJam.sqf index 086e7dce436..7011385c02a 100644 --- a/addons/overheating/functions/fnc_clearJam.sqf +++ b/addons/overheating/functions/fnc_clearJam.sqf @@ -55,14 +55,14 @@ if (_weapon in _jammedWeapons) then { if (GVAR(DisplayTextOnJam)) then { [{ [localize LSTRING(WeaponUnjammed)] call EFUNC(common,displayTextStructured); - }, [], _delay] call EFUNC(common,waitAndExecute); + }, [], _delay] call CBA_fnc_waitAndExecute; }; } else { // Failure if (GVAR(DisplayTextOnJam)) then { [{ [localize LSTRING(WeaponUnjamFailed)] call EFUNC(common,displayTextStructured); - }, [], _delay] call EFUNC(common,waitAndExecute); + }, [], _delay] call CBA_fnc_waitAndExecute; }; }; }; diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index b6cacdbea33..4e42f769f76 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -37,7 +37,7 @@ if (_ammo > 0) then { [{ params ["_unit", "_weapon", "_ammo"]; _unit setAmmo [_weapon, _ammo]; - }, [_unit, _weapon, _ammo]] call EFUNC(common,execNextFrame); + }, [_unit, _weapon, _ammo]] call CBA_fnc_execNextFrame; }; // only display the hint once, after you try to shoot an already jammed weapon diff --git a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf index d6b74f6769b..e12a495f048 100644 --- a/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf +++ b/addons/overheating/functions/fnc_updateSpareBarrelsTemperaturesThread.sqf @@ -37,4 +37,4 @@ TRACE_1("updateSpareBarrelsTemperaturesThread2",_pairs); } forEach _pairs; // Schedule for execution again after 10 seconds -[DFUNC(updateSpareBarrelsTemperaturesThread), [], 10] call EFUNC(common,waitAndExecute); +[DFUNC(updateSpareBarrelsTemperaturesThread), [], 10] call CBA_fnc_waitAndExecute; diff --git a/addons/overheating/functions/fnc_updateTemperatureThread.sqf b/addons/overheating/functions/fnc_updateTemperatureThread.sqf index 76a332e480d..476ff3e352c 100644 --- a/addons/overheating/functions/fnc_updateTemperatureThread.sqf +++ b/addons/overheating/functions/fnc_updateTemperatureThread.sqf @@ -22,4 +22,4 @@ if ((_currentWeapon != "") && {_currentWeapon == primaryWeapon ACE_player || {_c }; // Schedule for execution again after 5 seconds -[DFUNC(updateTemperatureThread), [], 5] call EFUNC(common,waitAndExecute); +[DFUNC(updateTemperatureThread), [], 5] call CBA_fnc_waitAndExecute; diff --git a/addons/refuel/functions/fnc_connectNozzle.sqf b/addons/refuel/functions/fnc_connectNozzle.sqf index d6b599b7715..a124a331d5d 100644 --- a/addons/refuel/functions/fnc_connectNozzle.sqf +++ b/addons/refuel/functions/fnc_connectNozzle.sqf @@ -28,7 +28,7 @@ if (isNull _nozzle) exitWith {}; GVAR(placeAction) = PLACE_WAITING; -[{[localize LSTRING(Connect_Action), ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame); +[{[localize LSTRING(Connect_Action), ""] call EFUNC(interaction,showMouseHint)}, []] call CBA_fnc_execNextFrame; _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = PLACE_APPROVE;}] call EFUNC(common,AddActionEventHandler)]; private _actionID = _unit addAction [format ["%1", localize LSTRING(Cancel)], {GVAR(placeAction) = PLACE_CANCEL;}]; diff --git a/addons/reload/functions/fnc_checkAmmo.sqf b/addons/reload/functions/fnc_checkAmmo.sqf index b0581a143a6..8edfd172c0d 100644 --- a/addons/reload/functions/fnc_checkAmmo.sqf +++ b/addons/reload/functions/fnc_checkAmmo.sqf @@ -34,4 +34,4 @@ if (_unit == _target) then { _unit playActionNow "Gear"; }; -[FUNC(displayAmmo), [_target], 1, 0.1] call EFUNC(common,waitAndExecute); +[FUNC(displayAmmo), [_target], 1, 0.1] call CBA_fnc_waitAndExecute; diff --git a/addons/respawn/XEH_serverPostInit.sqf b/addons/respawn/XEH_serverPostInit.sqf index d472bb0d5c2..8ff14e209a0 100644 --- a/addons/respawn/XEH_serverPostInit.sqf +++ b/addons/respawn/XEH_serverPostInit.sqf @@ -10,7 +10,7 @@ deleteVehicle _unit; }; }, - _this, 4] call EFUNC(common,waitAndExecute); + _this, 4] call CBA_fnc_waitAndExecute; false }]; }; diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index dba1ae5d0a9..c24ec292325 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -45,7 +45,7 @@ if (hasInterface) then { _marker setMarkerTextLocal _date; _rallypoint setVariable [QGVAR(marker), _marker]; - }, [_rallypoint, _respawnMarker, _side, _name], 0.1] call EFUNC(common,waitAndExecute); + }, [_rallypoint, _respawnMarker, _side, _name], 0.1] call CBA_fnc_waitAndExecute; }; if (!isServer) exitWith {}; diff --git a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf index f5b982f0ea0..3c3c02b3c90 100644 --- a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf +++ b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf @@ -27,7 +27,7 @@ if (isServer) then { missionNamespace setVariable [QGVAR(showFriendlyFireMessage), true]; publicVariable QGVAR(showFriendlyFireMessage); }, - [], 0.1] call EFUNC(common,waitAndExecute); + [], 0.1] call CBA_fnc_waitAndExecute; }; ACE_LOGINFO("Friendly Fire Messages Module Initialized."); diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index fa8aae40a56..f004a1e8444 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -51,4 +51,4 @@ _position set [2, 0]; ["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent); [localize LSTRING(Deployed)] call EFUNC(common,displayTextStructured); -}, [_rallypoint, _unit, _position], 5] call EFUNC(common,waitAndExecute); +}, [_rallypoint, _unit, _position], 5] call CBA_fnc_waitAndExecute; diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index 64d62ad4244..eb40ccfb078 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -9,7 +9,7 @@ class CfgVehicles { displayName = CSTRING(DeploySandbag); condition = QUOTE(_this call FUNC(canDeploy)); //wait a frame to handle "Do When releasing action menu key" option - statement = QUOTE([ARR_2({_this call FUNC(deploy)},_this)] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(deploy)},_this)] call CBA_fnc_execNextFrame); exceptions[] = {"isNotSwimming"}; showDisabled = 0; priority = 4; diff --git a/addons/sandbag/functions/fnc_deployConfirm.sqf b/addons/sandbag/functions/fnc_deployConfirm.sqf index c560bc15bad..c37e0ed0d9a 100644 --- a/addons/sandbag/functions/fnc_deployConfirm.sqf +++ b/addons/sandbag/functions/fnc_deployConfirm.sqf @@ -41,7 +41,7 @@ _unit removeItem "ACE_Sandbag_empty"; _sandBag setDir _direction; GVAR(sandBag) = objNull; -}, [_unit], 1] call EFUNC(common,waitAndExecute); +}, [_unit], 1] call CBA_fnc_waitAndExecute; // remove deployment pfh [GVAR(deployPFH)] call CBA_fnc_removePerFrameHandler; diff --git a/addons/sandbag/functions/fnc_pickup.sqf b/addons/sandbag/functions/fnc_pickup.sqf index 7e04d047fd5..fd4560fdeca 100644 --- a/addons/sandbag/functions/fnc_pickup.sqf +++ b/addons/sandbag/functions/fnc_pickup.sqf @@ -37,4 +37,4 @@ _unit setVariable [QGVAR(isUsingSandbag), true]; } count (_unit nearObjects ["ACE_SandbagObject", 5]); [_unit, "ACE_Sandbag_empty"] call EFUNC(common,addToInventory); -}, [_unit, _sandbag], 1.5] call EFUNC(common,waitAndExecute); +}, [_unit, _sandbag], 1.5] call CBA_fnc_waitAndExecute; diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index 4c31c4ff6aa..d54d629b66e 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -37,4 +37,4 @@ missionNamespace setVariable [_varString, _currentSlide]; // Log current slide and execute Next slide TRACE_4("Auto-transition",_images select _currentSlide,_currentSlide,count _images,_duration); -[FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call EFUNC(common,waitAndExecute); +[FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call CBA_fnc_waitAndExecute; diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 792905db0f1..42d1498b88c 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -80,5 +80,5 @@ if (_duration == 0) then { missionNamespace setVariable [_varString, 0]; // Automatic transitions handler - [FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call EFUNC(common,waitAndExecute); + [FUNC(autoTransition), [_objects, _images, _varString, _duration], _duration] call CBA_fnc_waitAndExecute; }; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 381f64505cd..3a69bb13833 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -111,7 +111,7 @@ switch (toLower _mode) do { _timer ctrlCommit 0; _frame ctrlCommit 0; }; - },[],0.5] call EFUNC(common,waitAndExecute); + },[],0.5] call CBA_fnc_waitAndExecute; }; case "onunload": { // Kill GUI PFHs @@ -490,7 +490,7 @@ switch (toLower _mode) do { [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; - },[],5] call EFUNC(common,waitAndExecute); + },[],5] call CBA_fnc_waitAndExecute; true }; diff --git a/addons/spectator/functions/fnc_handleUnits.sqf b/addons/spectator/functions/fnc_handleUnits.sqf index c32961024cc..f51c922b8e9 100644 --- a/addons/spectator/functions/fnc_handleUnits.sqf +++ b/addons/spectator/functions/fnc_handleUnits.sqf @@ -36,5 +36,5 @@ if !(GVAR(camUnit) in GVAR(unitList)) then { // Reduce overhead when unit tree is hidden if (ctrlShown (_display displayCtrl IDC_UNIT)) then { // Reduce overhead by spreading across frames - [FUNC(handleInterface),["onUnitsUpdate",[(_display displayCtrl IDC_UNIT) controlsGroupCtrl IDC_UNIT_TREE]],1] call EFUNC(common,waitAndExecute); + [FUNC(handleInterface),["onUnitsUpdate",[(_display displayCtrl IDC_UNIT) controlsGroupCtrl IDC_UNIT_TREE]],1] call CBA_fnc_waitAndExecute; }; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 1f010962b5d..83ed8642193 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -97,7 +97,7 @@ if (_set) then { }; }]; }; - }, !_force] call EFUNC(common,execNextFrame); + }, !_force] call CBA_fnc_execNextFrame; // Cache and disable nametag settings if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 926ac008dc5..4c6b22160d1 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -73,6 +73,6 @@ if ((player in GVAR(unitList)) || {ACE_player in GVAR(unitList)}) then { if (!(isNull (findDisplay 12249))) then {//If display is open now, close it and restart ACE_LOGWARNING("Player in unitList, call ace_spectator_fnc_stageSpectator before ace_spectator_fnc_setSpectator"); ["fixWeirdList", true] call FUNC(interrupt); - [{["fixWeirdList", false] call FUNC(interrupt);}, []] call EFUNC(common,execNextFrame); + [{["fixWeirdList", false] call FUNC(interrupt);}, []] call CBA_fnc_execNextFrame; }; }; diff --git a/addons/spottingscope/functions/fnc_pickup.sqf b/addons/spottingscope/functions/fnc_pickup.sqf index 81c9bc10a56..cdcc78bea3c 100644 --- a/addons/spottingscope/functions/fnc_pickup.sqf +++ b/addons/spottingscope/functions/fnc_pickup.sqf @@ -27,4 +27,4 @@ if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { [_unit, "ACE_SpottingScope"] call EFUNC(common,addToInventory); deleteVehicle _spottingScope; -}, [_spottingScope, _unit], 1, 0]call EFUNC(common,waitAndExecute); +}, [_spottingScope, _unit], 1, 0]call CBA_fnc_waitAndExecute; diff --git a/addons/spottingscope/functions/fnc_place.sqf b/addons/spottingscope/functions/fnc_place.sqf index 09f756c1092..21560f948f7 100644 --- a/addons/spottingscope/functions/fnc_place.sqf +++ b/addons/spottingscope/functions/fnc_place.sqf @@ -38,4 +38,4 @@ if ((_unit call CBA_fnc_getUnitAnim) select 0 == "stand") then { _spottingScope setVectorUp (surfaceNormal (position _spottingScope)); }; _unit reveal _spottingScope; -}, [_unit], 1, 0] call EFUNC(common,waitAndExecute); +}, [_unit], 1, 0] call CBA_fnc_waitAndExecute; diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index ed0ed0eb8cd..814329e87d2 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -92,7 +92,7 @@ class CfgVehicles { distance = 4; condition = "true"; //wait a frame to handle "Do When releasing action menu key" option: - statement = QUOTE([ARR_2({_this call FUNC(positionTL)},[ARR_2(_player,_target)])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(positionTL)},[ARR_2(_player,_target)])] call CBA_fnc_execNextFrame); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 43e951629e5..c2b4a6601a9 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -110,6 +110,6 @@ _unit playActionNow "PutDown"; // Tell the server to create the tag and handle its destruction ["createTag", _this] call EFUNC(common,serverEvent); -}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); +}, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call CBA_fnc_waitAndExecute; true diff --git a/addons/tagging/functions/fnc_tagTestingThread.sqf b/addons/tagging/functions/fnc_tagTestingThread.sqf index 0e3bb8075d4..ead21f8d913 100644 --- a/addons/tagging/functions/fnc_tagTestingThread.sqf +++ b/addons/tagging/functions/fnc_tagTestingThread.sqf @@ -41,5 +41,5 @@ if (GVAR(tagsToTest) isEqualTo []) exitWith { }; // Schedule for execution again after 5 seconds -[DFUNC(tagTestingThread), [], 5] call EFUNC(common,waitAndExecute); +[DFUNC(tagTestingThread), [], 5] call CBA_fnc_waitAndExecute; GVAR(testingThread) = true; diff --git a/addons/trenches/CfgVehicles.hpp b/addons/trenches/CfgVehicles.hpp index 8e1eb41fd0a..3a549010443 100644 --- a/addons/trenches/CfgVehicles.hpp +++ b/addons/trenches/CfgVehicles.hpp @@ -30,7 +30,7 @@ class CfgVehicles { displayName = CSTRING(DigEnvelopeSmall); condition = QUOTE(_player call FUNC(canDigTrench)); //wait a frame to handle "Do When releasing action menu key" option - statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_small')])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_small')])] call CBA_fnc_execNextFrame); exceptions[] = {}; showDisabled = 0; priority = 4; @@ -40,7 +40,7 @@ class CfgVehicles { displayName = CSTRING(DigEnvelopeBig); condition = QUOTE(_player call FUNC(canDigTrench)); //wait a frame to handle "Do When releasing action menu key" option - statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_big')])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(placeTrench)},[ARR_2(_this select 0,'ACE_envelope_big')])] call CBA_fnc_execNextFrame); exceptions[] = {}; showDisabled = 0; priority = 4; diff --git a/addons/trenches/functions/fnc_continueDiggingTrench.sqf b/addons/trenches/functions/fnc_continueDiggingTrench.sqf index 223dc42df61..954eed1ca34 100644 --- a/addons/trenches/functions/fnc_continueDiggingTrench.sqf +++ b/addons/trenches/functions/fnc_continueDiggingTrench.sqf @@ -84,7 +84,7 @@ for "_i" from _progressLeft to 10 do { private _vectorDiffZ = 1 - (_i / 10); private _delay = _digTime * ((_i / 10) - _actualProgress); private _progress = _i / 10; - [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); + [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call CBA_fnc_waitAndExecute; }; // Play animation diff --git a/addons/trenches/functions/fnc_removeTrench.sqf b/addons/trenches/functions/fnc_removeTrench.sqf index dd51bbbae59..53059f34bf0 100644 --- a/addons/trenches/functions/fnc_removeTrench.sqf +++ b/addons/trenches/functions/fnc_removeTrench.sqf @@ -70,7 +70,7 @@ for "_i" from _progressLeft to 10 do { private _delay = _removeTime * ((_i / 10) - (1 - _actualProgress)); private _progress = 1 - (_i / 10); - [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call EFUNC(common,waitAndExecute); + [DFUNC(setTrenchPlacement), [_unit, _trench, _trenchId, _basePos vectorDiff [0, 0, _vectorDiffZ], _vecDirAndUp, _progress], _delay] call CBA_fnc_waitAndExecute; }; // Play animation diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index 418b32e5502..01118ac62b5 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -85,7 +85,7 @@ class CfgVehicles { distance = 5; condition = "true"; //wait a frame to handle "Do When releasing action menu key" option: - statement = QUOTE([ARR_2({_this call FUNC(adjust)}, [ARR_2(_player,_target)])] call EFUNC(common,execNextFrame)); + statement = QUOTE([ARR_2({_this call FUNC(adjust)}, [ARR_2(_player,_target)])] call CBA_fnc_execNextFrame); showDisabled = 0; exceptions[] = {}; priority = 5; diff --git a/addons/tripod/functions/fnc_pickup.sqf b/addons/tripod/functions/fnc_pickup.sqf index 886aa5087e5..9a291480adf 100644 --- a/addons/tripod/functions/fnc_pickup.sqf +++ b/addons/tripod/functions/fnc_pickup.sqf @@ -30,4 +30,4 @@ if (stance _unit == "STAND") then { deleteVehicle _tripod; [_unit, "ACE_Tripod"] call EFUNC(common,addToInventory); -}, [_unit, _tripod], 1] call EFUNC(common,waitAndExecute); +}, [_unit, _tripod], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/tripod/functions/fnc_place.sqf b/addons/tripod/functions/fnc_place.sqf index 3168703f31b..64dc0786e8c 100644 --- a/addons/tripod/functions/fnc_place.sqf +++ b/addons/tripod/functions/fnc_place.sqf @@ -53,4 +53,4 @@ if (stance _unit == "STAND") then { }; }, 0, [_tripod, _direction, _position]] call CBA_fnc_addPerFrameHandler; -}, [_unit], 1] call EFUNC(common,waitAndExecute); +}, [_unit], 1] call CBA_fnc_waitAndExecute; diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index be23dc8dd98..7cc7cac5f75 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -42,4 +42,4 @@ TRACE_1("params",_vehicle); }; }; //Delay call until mission start (so everyone has the eventHandler's installed) -}, [_vehicle], 0.25] call EFUNC(common,waitAndExecute); +}, [_vehicle], 0.25] call CBA_fnc_waitAndExecute; diff --git a/addons/vehiclelock/functions/fnc_moduleSync.sqf b/addons/vehiclelock/functions/fnc_moduleSync.sqf index 27577e4dbed..99e822d53dd 100644 --- a/addons/vehiclelock/functions/fnc_moduleSync.sqf +++ b/addons/vehiclelock/functions/fnc_moduleSync.sqf @@ -51,4 +51,4 @@ if !(_activated) exitWith {WARNING("Vehicle Lock Sync Module - placed but not ac } forEach _syncedObjects; //Wait to add keys until various gear assigns have finished (~5 seconds) -}, [_syncedObjects], 5, 1] call EFUNC(common,waitAndExecute); +}, [_syncedObjects], 5, 1] call CBA_fnc_waitAndExecute; diff --git a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf index 5ac9ee427eb..fb8972ef1d7 100644 --- a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf +++ b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf @@ -42,7 +42,7 @@ if (GVAR(LockVehicleInventory) && //if setting not enabled [{ TRACE_1("Opening Player Inventory", _this); ACE_player action ["Gear", objNull] - }, []] call EFUNC(common,execNextFrame); + }, []] call CBA_fnc_execNextFrame; }, - []] call EFUNC(common,waitUntilAndExecute); + []] call CBA_fnc_waitUntilAndExecute; }; diff --git a/addons/zeus/functions/fnc_addObjectToCurator.sqf b/addons/zeus/functions/fnc_addObjectToCurator.sqf index 176b55dfdcc..d727bb68263 100644 --- a/addons/zeus/functions/fnc_addObjectToCurator.sqf +++ b/addons/zeus/functions/fnc_addObjectToCurator.sqf @@ -27,4 +27,4 @@ if (!(_object getVariable [QGVAR(addObject), GVAR(autoAddObjects)])) exitWith {} { _x addCuratorEditableObjects [[_this], true]; } forEach allCurators; -}, _object] call EFUNC(common,execNextFrame); +}, _object] call CBA_fnc_execNextFrame; diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index d10d36b8391..a27730be1d5 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -170,7 +170,7 @@ if (_activated) then { }; } forEach (curatoreditableobjects _logic); }; - },[_logic,_player]] call EFUNC(common,execNextFrame); + },[_logic,_player]] call CBA_fnc_execNextFrame; [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; @@ -244,7 +244,7 @@ if (_activated) then { } ]; }; - },[_logic]] call EFUNC(common,execNextFrame); + },[_logic]] call CBA_fnc_execNextFrame; }; //--- Player From d35e89892c3ac56ced5bf23ec2619f6bf1e34e83 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 15:36:31 +0200 Subject: [PATCH 183/268] Use new get item and object config CBA functions, deprecate ACE functions --- addons/common/functions/fnc_getConfigType.sqf | 2 ++ addons/common/functions/fnc_getConfigTypeObject.sqf | 2 ++ addons/common/functions/fnc_getItemType.sqf | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_getConfigType.sqf b/addons/common/functions/fnc_getConfigType.sqf index 1496cfa2b9a..f5287f87167 100644 --- a/addons/common/functions/fnc_getConfigType.sqf +++ b/addons/common/functions/fnc_getConfigType.sqf @@ -12,6 +12,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_getConfigType","3.8.0","CBA_fnc_getItemConfig"); + params ["_item"]; if (isClass (configFile >> "CfgWeapons" >> _item)) exitWith {"CfgWeapons"}; diff --git a/addons/common/functions/fnc_getConfigTypeObject.sqf b/addons/common/functions/fnc_getConfigTypeObject.sqf index 6186ad6bffa..d11c19d5fbb 100644 --- a/addons/common/functions/fnc_getConfigTypeObject.sqf +++ b/addons/common/functions/fnc_getConfigTypeObject.sqf @@ -12,6 +12,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_getConfigTypeObject","3.8.0","CBA_fnc_getObjectConfig"); + params ["_object"]; if (isClass (configFile >> "CfgVehicles" >> _object)) exitWith {"CfgVehicles"}; diff --git a/addons/common/functions/fnc_getItemType.sqf b/addons/common/functions/fnc_getItemType.sqf index d3eb5119494..e35fe67b005 100644 --- a/addons/common/functions/fnc_getItemType.sqf +++ b/addons/common/functions/fnc_getItemType.sqf @@ -15,7 +15,7 @@ params ["_item"]; -private _cfgType = [_item] call FUNC(getConfigType); +private _cfgType = [_item] call CBA_fnc_getItemConfig; if (_cfgType == "") exitWith {["", ""]}; From 4b121480bb3a582caedab02f044e2bde88e71148 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 15:48:03 +0200 Subject: [PATCH 184/268] Use new binocular magazine CBA functions, deprecate ACE functions --- addons/common/functions/fnc_binocularMagazine.sqf | 2 ++ addons/common/functions/fnc_getAllGear.sqf | 2 +- addons/common/functions/fnc_removeBinocularMagazine.sqf | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_binocularMagazine.sqf b/addons/common/functions/fnc_binocularMagazine.sqf index b5f4f0558e5..bece5bfbc2e 100644 --- a/addons/common/functions/fnc_binocularMagazine.sqf +++ b/addons/common/functions/fnc_binocularMagazine.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_binocularMagazine","3.8.0","CBA_fnc_binocularMagazine"); + params [["_unit", objNull, [objNull]]]; private _binocular = binocular _unit; diff --git a/addons/common/functions/fnc_getAllGear.sqf b/addons/common/functions/fnc_getAllGear.sqf index cebcc489f1c..de6ea62dfff 100644 --- a/addons/common/functions/fnc_getAllGear.sqf +++ b/addons/common/functions/fnc_getAllGear.sqf @@ -64,5 +64,5 @@ if (isNull _unit) exitWith {[ handgunWeapon _unit, handgunItems _unit, handgunMagazine _unit, assignedItems _unit, binocular _unit, - [_unit] call FUNC(binocularMagazine) + [_unit] call CBA_fnc_binocularMagazine ] diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf index 487295ccc31..af013dfc421 100644 --- a/addons/common/functions/fnc_removeBinocularMagazine.sqf +++ b/addons/common/functions/fnc_removeBinocularMagazine.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +ACE_DEPRECATED("ace_common_fnc_removeBinocularMagazine","3.8.0","CBA_fnc_removeBinocularMagazine"); + params [["_unit", objNull, [objNull]]]; private _binocular = binocular _unit; From bbd96f9e71f4ad4fb78d5e74bac6274809a00c13 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 16:01:12 +0200 Subject: [PATCH 185/268] Call CBA delayed execution functions, remove ACE's PFH for handling them --- addons/common/XEH_postInit.sqf | 41 ------------------- addons/common/functions/fnc_execNextFrame.sqf | 8 +--- .../common/functions/fnc_waitAndExecute.sqf | 5 +-- .../functions/fnc_waitUntilAndExecute.sqf | 3 +- 4 files changed, 3 insertions(+), 54 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 88012a78843..bedec4f3aa4 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -3,47 +3,6 @@ // #define DEBUG_MODE_FULL #include "script_component.hpp" - -////////////////////////////////////////////////// -// PFHs -////////////////////////////////////////////////// - -//Singe PFEH to handle execNextFrame, waitAndExec and waitUntilAndExec: -[{ - BEGIN_COUNTER(waitAndExec); - - //Handle the waitAndExec array: - while {!(GVAR(waitAndExecArray) isEqualTo []) && {GVAR(waitAndExecArray) select 0 select 0 <= ACE_Time}} do { - private _entry = GVAR(waitAndExecArray) deleteAt 0; - (_entry select 2) call (_entry select 1); - }; - - //Handle the execNextFrame array: - { - (_x select 0) call (_x select 1); - false - } count GVAR(nextFrameBufferA); - - //Swap double-buffer: - GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB); - GVAR(nextFrameBufferB) = []; - GVAR(nextFrameNo) = diag_frameno + 1; - - //Handle the waitUntilAndExec array: - { - // if condition is satisifed call statement - if ((_x select 2) call (_x select 0)) then { - // make sure to delete the correct handle when multiple conditions are met in one frame - GVAR(waitUntilAndExecArray) deleteAt (GVAR(waitUntilAndExecArray) find _x); - (_x select 2) call (_x select 1); - }; - nil - } count +GVAR(waitUntilAndExecArray); - - END_COUNTER(waitAndExec); -}, 0, []] call CBA_fnc_addPerFrameHandler; - - ////////////////////////////////////////////////// // Get Map Data ////////////////////////////////////////////////// diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf index 289093c5b61..c1c4b81592d 100644 --- a/addons/common/functions/fnc_execNextFrame.sqf +++ b/addons/common/functions/fnc_execNextFrame.sqf @@ -15,10 +15,4 @@ ACE_DEPRECATED("ace_common_fnc_execNextFrame","3.8.0","CBA_fnc_execNextFrame"); -params ["_func", "_params"]; - -if (diag_frameno != GVAR(nextFrameNo)) then { - GVAR(nextFrameBufferA) pushBack [_params, _func]; -} else { - GVAR(nextFrameBufferB) pushBack [_params, _func]; -}; +_this call CBA_fnc_execNextFrame; diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf index fe26fdc16f2..1ac0d3f54db 100644 --- a/addons/common/functions/fnc_waitAndExecute.sqf +++ b/addons/common/functions/fnc_waitAndExecute.sqf @@ -19,7 +19,4 @@ ACE_DEPRECATED("ace_common_fnc_waitAndExecute","3.8.0","CBA_fnc_waitAndExecute"); -params ["_func", "_params", "_delay"]; - -GVAR(waitAndExecArray) pushBack [ACE_time + _delay, _func, _params]; -GVAR(waitAndExecArray) sort true; +_this call CBA_fnc_waitAndExecute; diff --git a/addons/common/functions/fnc_waitUntilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf index ad33bd6140f..76f3d22ce1f 100644 --- a/addons/common/functions/fnc_waitUntilAndExecute.sqf +++ b/addons/common/functions/fnc_waitUntilAndExecute.sqf @@ -19,7 +19,6 @@ ACE_DEPRECATED("ace_common_fnc_waitUntilAndExecute","3.8.0","CBA_fnc_waitUntilAndExecute"); -TRACE_1("Adding",_this); +_this call CBA_fnc_waitUntilAndExecute; -GVAR(waitUntilAndExecArray) pushBack _this; nil From 38b48390b5cbbbc9147b93c852f34e25cf450799 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 16:03:41 +0200 Subject: [PATCH 186/268] Call CBA binocular functions - leave as wrapper --- .../common/functions/fnc_binocularMagazine.sqf | 16 +--------------- .../functions/fnc_removeBinocularMagazine.sqf | 11 +---------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/addons/common/functions/fnc_binocularMagazine.sqf b/addons/common/functions/fnc_binocularMagazine.sqf index bece5bfbc2e..aacac7c1422 100644 --- a/addons/common/functions/fnc_binocularMagazine.sqf +++ b/addons/common/functions/fnc_binocularMagazine.sqf @@ -17,18 +17,4 @@ ACE_DEPRECATED("ace_common_fnc_binocularMagazine","3.8.0","CBA_fnc_binocularMagazine"); -params [["_unit", objNull, [objNull]]]; - -private _binocular = binocular _unit; - -scopeName "main"; - -{ - if ((_x select 0) isEqualTo _binocular) then { - // note: if there is no magazine, _x(4,0) will be nil, which skips the breakOut. - (_x select 4 select 0) breakOut "main"; - }; - false -} count weaponsitems _unit; - -"" +_this call CBA_fnc_binocularMagazine diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf index af013dfc421..4f1e0fcdd6e 100644 --- a/addons/common/functions/fnc_removeBinocularMagazine.sqf +++ b/addons/common/functions/fnc_removeBinocularMagazine.sqf @@ -17,13 +17,4 @@ ACE_DEPRECATED("ace_common_fnc_removeBinocularMagazine","3.8.0","CBA_fnc_removeBinocularMagazine"); -params [["_unit", objNull, [objNull]]]; - -private _binocular = binocular _unit; -private _selectBinocular = currentWeapon _unit == _binocular; - -_unit addWeapon _binocular; - -if (_selectBinocular) then { - _unit selectWeapon _binocular; -}; +_this call CBA_fnc_removeBinocularMagazine From bd0e05d7d687f15b882ebb11477c56e47c9d8054 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 22 May 2016 16:18:24 +0200 Subject: [PATCH 187/268] Use CBA config functions, return correct value --- addons/common/functions/fnc_getConfigType.sqf | 10 +--------- addons/common/functions/fnc_getConfigTypeObject.sqf | 8 +------- addons/common/functions/fnc_getItemType.sqf | 6 ++++-- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/addons/common/functions/fnc_getConfigType.sqf b/addons/common/functions/fnc_getConfigType.sqf index f5287f87167..34aaa03172d 100644 --- a/addons/common/functions/fnc_getConfigType.sqf +++ b/addons/common/functions/fnc_getConfigType.sqf @@ -14,12 +14,4 @@ ACE_DEPRECATED("ace_common_fnc_getConfigType","3.8.0","CBA_fnc_getItemConfig"); -params ["_item"]; - -if (isClass (configFile >> "CfgWeapons" >> _item)) exitWith {"CfgWeapons"}; - -if (isClass (configFile >> "CfgMagazines" >> _item)) exitWith {"CfgMagazines"}; - -if (isClass (configFile >> "CfgGlasses" >> _item)) exitWith {"CfgGlasses"}; - -"" +configName (configHierarchy (_item call CBA_fnc_getItemConfig) param [1, configNull]) diff --git a/addons/common/functions/fnc_getConfigTypeObject.sqf b/addons/common/functions/fnc_getConfigTypeObject.sqf index d11c19d5fbb..92a6d43a42c 100644 --- a/addons/common/functions/fnc_getConfigTypeObject.sqf +++ b/addons/common/functions/fnc_getConfigTypeObject.sqf @@ -14,10 +14,4 @@ ACE_DEPRECATED("ace_common_fnc_getConfigTypeObject","3.8.0","CBA_fnc_getObjectConfig"); -params ["_object"]; - -if (isClass (configFile >> "CfgVehicles" >> _object)) exitWith {"CfgVehicles"}; - -if (isClass (configFile >> "CfgAmmo" >> _object)) exitWith {"CfgAmmo"}; - -"" +configName (configHierarchy (_item call CBA_fnc_getObjectConfig) param [1, configNull]) diff --git a/addons/common/functions/fnc_getItemType.sqf b/addons/common/functions/fnc_getItemType.sqf index e35fe67b005..eb5015e20a9 100644 --- a/addons/common/functions/fnc_getItemType.sqf +++ b/addons/common/functions/fnc_getItemType.sqf @@ -15,9 +15,11 @@ params ["_item"]; -private _cfgType = [_item] call CBA_fnc_getItemConfig; +private _config = _item call CBA_fnc_getItemConfig; -if (_cfgType == "") exitWith {["", ""]}; +if (isNull _config) exitWith {["", ""]}; + +private _cfgType = configName ((configHierarchy _config) param [1, configNull]); if (_cfgType == "CfgGlasses") exitWith {["item", "glasses"]}; From f0b8da33c4eee1af72d73382d3ac5b4e647b335f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 22 May 2016 16:02:40 +0100 Subject: [PATCH 188/268] Deprecate ACE events framework CBA 2.4.0 entirely replaces the ACE events framework. Adds wrappers with deprecated warnings to all of the public event framework functions and removes all of the underlying GVARs and code. --- addons/common/XEH_PREP.hpp | 1 - addons/common/XEH_postInit.sqf | 4 - addons/common/XEH_preInit.sqf | 4 - .../common/functions/fnc__handleNetEvent.sqf | 81 ------------------- .../common/functions/fnc_addEventHandler.sqf | 24 +----- addons/common/functions/fnc_globalEvent.sqf | 20 +---- addons/common/functions/fnc_localEvent.sqf | 35 +------- addons/common/functions/fnc_objectEvent.sqf | 31 +------ .../functions/fnc_removeAllEventHandlers.sqf | 17 +--- .../functions/fnc_removeEventHandler.sqf | 22 +---- addons/common/functions/fnc_serverEvent.sqf | 28 +------ addons/common/functions/fnc_targetEvent.sqf | 30 +------ addons/common/tests/script_component.hpp | 1 - addons/common/tests/test_eventHandlers.sqf | 78 ------------------ 14 files changed, 18 insertions(+), 358 deletions(-) delete mode 100644 addons/common/functions/fnc__handleNetEvent.sqf delete mode 100644 addons/common/tests/script_component.hpp delete mode 100644 addons/common/tests/test_eventHandlers.sqf diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp index 3dea56a98d3..971d6cc7228 100644 --- a/addons/common/XEH_PREP.hpp +++ b/addons/common/XEH_PREP.hpp @@ -235,7 +235,6 @@ PREP(dumpPerformanceCounters); PREP(dumpArray); PREP(globalEvent); -PREP(_handleNetEvent); PREP(addEventHandler); PREP(objectEvent); PREP(targetEvent); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 88012a78843..86a86918e47 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -173,10 +173,6 @@ if (isServer) then { // Set up remote execution ////////////////////////////////////////////////// -// ACE events -"ACEg" addPublicVariableEventHandler {_this call FUNC(_handleNetEvent)}; -"ACEc" addPublicVariableEventHandler {_this call FUNC(_handleNetEvent)}; - // Synced ACE events // Handle JIP scenario if (!isServer) then { diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index dea4e645382..8b167777815 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -5,10 +5,6 @@ ADDON = false; #include "XEH_PREP.hpp" -//ACE events global variables -GVAR(eventsLocation) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0]; -GVAR(eventsLocation) setText QGVAR(eventsLocation); - // backwards comp DFUNC(canUseWeapon) = { ACE_DEPRECATED("ace_common_fnc_canUseWeapon","3.7.0","CBA_fnc_canUseWeapon"); diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf deleted file mode 100644 index 54cef66228b..00000000000 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Author: jaynus - * Internal net event handler. - * - * Arguments: - * None - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -params ["_eventType", "_event"]; - -if (_eventType == "ACEg") then { - _event params ["_eventName", "_eventArgs"]; - - private _eventFunctions = GVAR(eventsLocation) getVariable _eventName; - if (!isNil "_eventFunctions") then { - - #ifdef DEBUG_EVENTS - ACE_LOGINFO_1("* Net Event %1",_eventName); - ACE_LOGINFO_1(" args=%1",_eventArgs); - #endif - - { - if (!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, FORMAT_2("Net Event %1 ID: %2",_eventName,_forEachIndex)); - #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO_1(" ID: %1",_forEachIndex); - #endif - }; - } forEach _eventFunctions; - }; -}; - -if (_eventType == "ACEc") then { - if (isServer) then { - _event params ["_eventName", "_eventTargets", "_eventArgs"]; - - private _sentEvents = []; - - if (!IS_ARRAY(_eventTargets)) then { - _eventTargets = [_eventTargets]; - }; - - //If not multiplayer, and there are targets, then just run localy - if (!isMultiplayer && {count _eventTargets > 0}) exitWith { - ACEg = [_eventName, _eventArgs]; - ["ACEg", ACEg] call FUNC(_handleNetEvent); - }; - - private _serverFlagged = false; - - { - private _owner = _x; - - if (IS_OBJECT(_x)) then { - _owner = owner _x; - }; - if !(_owner in _sentEvents) then { - _sentEvents pushBack _owner; - ACEg = [_eventName, _eventArgs]; - - if (isDedicated || {_x != ACE_player}) then { - if (isDedicated && {local _x} && {!_serverFlagged}) then { - _serverFlagged = true; - ["ACEg", ACEg] call FUNC(_handleNetEvent); - } else { - _owner publicVariableClient "ACEg"; - }; - } else { - ["ACEg", ACEg] call FUNC(_handleNetEvent); - }; - }; - false - } count _eventTargets; - }; -}; diff --git a/addons/common/functions/fnc_addEventHandler.sqf b/addons/common/functions/fnc_addEventHandler.sqf index e7df00f5ffe..4f285dd449e 100644 --- a/addons/common/functions/fnc_addEventHandler.sqf +++ b/addons/common/functions/fnc_addEventHandler.sqf @@ -1,25 +1,5 @@ -/* - * Author: Nou - * Add an event handler. - * - * Arguments: - * 0: Event name - * 1: Event code - * - * Return Value: - * Event handler ID number (for use with fnc_removeEventHandler) - * - * Public: Yes - */ #include "script_component.hpp" -params ["_eventName", "_eventCode"]; +_this call CBA_fnc_addEventHandler; -private _eventFunctions = GVAR(eventsLocation) getVariable _eventName; - -if (isNil "_eventFunctions") then { - _eventFunctions = []; - GVAR(eventsLocation) setVariable [_eventName, _eventFunctions]; -}; - -_eventFunctions pushBack _eventCode // Return event function count +ACE_DEPRECATED("ace_common_fnc_addEventHandler","3.8.0","CBA_fnc_addEventHandler"); diff --git a/addons/common/functions/fnc_globalEvent.sqf b/addons/common/functions/fnc_globalEvent.sqf index 126419b553c..cbd586c39c9 100644 --- a/addons/common/functions/fnc_globalEvent.sqf +++ b/addons/common/functions/fnc_globalEvent.sqf @@ -1,21 +1,5 @@ -/* - * Author: Nou - * Execute a global event on all clients, including self. - * - * Arguments: - * 0: Event name - * 1: Event args - * - * Return Value: - * None - * - * Public: Yes - */ #include "script_component.hpp" -params ["_eventName", "_eventArgs"]; +_this call CBA_fnc_globalEvent; -ACEg = [_eventName, _eventArgs]; -publicVariable "ACEg"; - -["ACEg", ACEg] call FUNC(_handleNetEvent); +ACE_DEPRECATED("ace_common_fnc_globalEvent","3.8.0","CBA_fnc_globalEvent"); diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index bf17cc0d0e1..84b0aa4898e 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -1,36 +1,5 @@ -/* - * Author: Nou - * Execute a local event on this client only. - * - * Arguments: - * 0: Event name (string) - * 1: Event args (any) - * - * Return Value: - * None - * - * Public: No - */ #include "script_component.hpp" -params ["_eventName", "_eventArgs"]; +_this call CBA_fnc_localEvent; -private _eventFunctions = GVAR(eventsLocation) getVariable _eventName; - -if (!isNil "_eventFunctions") then { - - #ifdef DEBUG_EVENTS - ACE_LOGINFO_1("* Local Event: %1",_eventName); - ACE_LOGINFO_1(" args=%1",_eventArgs); - #endif - - { - if (!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x,FORMAT_2("Local Event %1 ID: %2",_eventName,_forEachIndex)); - - #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO_1(" ID: %1",_forEachIndex); - #endif - }; - } forEach _eventFunctions; -}; +ACE_DEPRECATED("ace_common_fnc_localEvent","3.8.0","CBA_fnc_localEvent"); diff --git a/addons/common/functions/fnc_objectEvent.sqf b/addons/common/functions/fnc_objectEvent.sqf index 2015ad77dcc..ed9029df65b 100644 --- a/addons/common/functions/fnc_objectEvent.sqf +++ b/addons/common/functions/fnc_objectEvent.sqf @@ -1,34 +1,7 @@ -/* - * Author: PabstMirror - * Execute an event where object is local. - * If local there is no network traffic/delay (Unlike targetEvent) - * - * Arguments: - * 0: Event name (STRING) - * 1: Event target - * 2: Event args - * - * Return Value: - * None - * - * Example: - * ["doThing", vehicle player, []] call ace_common_fnc_objectEvent - * - * Public: Yes - */ #include "script_component.hpp" params ["_eventName", "_eventTarget", "_eventArgs"]; -#ifdef DEBUG_EVENTS - ACE_LOGINFO_2("* Object Event: %1 - %2",_eventName,_eventTarget); - ACE_LOGINFO_1(" args=%1",_eventArgs); -#endif +[_eventName, _eventArgs, _eventTargets] call CBA_fnc_targetEvent; -if (local _eventTarget) then { - [_eventName, _eventArgs] call FUNC(localEvent); -} else { - _this call FUNC(targetEvent); -}; - -nil +ACE_DEPRECATED("ace_common_fnc_objectEvent","3.8.0","CBA_fnc_targetEvent"); diff --git a/addons/common/functions/fnc_removeAllEventHandlers.sqf b/addons/common/functions/fnc_removeAllEventHandlers.sqf index ed1cce278ca..ca4db8db0a4 100644 --- a/addons/common/functions/fnc_removeAllEventHandlers.sqf +++ b/addons/common/functions/fnc_removeAllEventHandlers.sqf @@ -1,17 +1,8 @@ -/* - * Author: Nou - * Remove all events of a certain event type. - * - * Argument: - * 0: Event name - * - * Return Value: - * None - * - * Public: Yes - */ #include "script_component.hpp" params ["_eventName"]; -GVAR(eventsLocation) setVariable [_eventName, nil]; +CBA_events_eventNamespace setVariable [_eventName,nil]; +CBA_events_eventHashes setVariable [_eventName,nil]; + +ACE_DEPRECATED("ace_common_fnc_removeAllEventHandlers","3.8.0","N/A (remove events individually w/ CBA_fnc_removeEventHandler)"); diff --git a/addons/common/functions/fnc_removeEventHandler.sqf b/addons/common/functions/fnc_removeEventHandler.sqf index a0b5ed5333c..b241aae833e 100644 --- a/addons/common/functions/fnc_removeEventHandler.sqf +++ b/addons/common/functions/fnc_removeEventHandler.sqf @@ -1,23 +1,5 @@ -/* - * Author: Nou - * Remove an event handler. - * - * Argument: - * 0: Event name - * 1: Event code - * - * Return Value: - * None - * - * Public: Yes - */ #include "script_component.hpp" -params ["_eventName", "_eventCodeIndex"]; +_this call CBA_fnc_removeEventHandler; -private _eventFunctions = GVAR(eventsLocation) getVariable _eventName; - -if (isNil "_eventFunctions") exitWith {TRACE_1("eventName not found",_eventName);}; -if ((_eventCodeIndex < 0) || {(count _eventFunctions) <= _eventCodeIndex}) exitWith {TRACE_2("index out of bounds",_eventName,_eventCodeIndex);}; - -_eventFunctions set [_eventCodeIndex, nil]; +ACE_DEPRECATED("ace_common_fnc_removeEventHandler","3.8.0","CBA_fnc_removeEventHandler"); diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf index 65ab0da2a79..7fbb3d21a67 100644 --- a/addons/common/functions/fnc_serverEvent.sqf +++ b/addons/common/functions/fnc_serverEvent.sqf @@ -1,29 +1,5 @@ -/* - * Author: Nou - * Execute a event only on the server. - * - * Argument: - * 0: Event name - * 1: Event args - * - * Return Value: - * None - * - * Public: Yes - */ #include "script_component.hpp" -params ["_eventName", "_eventArgs"]; +_this call CBA_fnc_serverEvent; -#ifdef DEBUG_EVENTS - ACE_LOGINFO_1("* Server Event: %1",_eventName); - ACE_LOGINFO_1(" args=%1",_eventArgs); -#endif - -ACEg = [_eventName, _eventArgs]; - -if (!isServer) then { - publicVariableServer "ACEg"; -} else { - ["ACEg", ACEg] call FUNC(_handleNetEvent); -}; +ACE_DEPRECATED("ace_common_fnc_serverEvent","3.8.0","CBA_fnc_serverEvent"); diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf index b9802f0835d..e78f193370e 100644 --- a/addons/common/functions/fnc_targetEvent.sqf +++ b/addons/common/functions/fnc_targetEvent.sqf @@ -1,33 +1,7 @@ -/* - * Author: Nou - * Execute a event only on specific clients. - * - * Arguments: - * 0: Event name (STRING) - * 1: Event targets - * 2: Event args - * - * Note: If local executor is in list of targets, event will execute with - * network delay, and not immediatly. - * - * Return Value: - * None - * - * Public: Yes - */ #include "script_component.hpp" params ["_eventName", "_eventTargets", "_eventArgs"]; -#ifdef DEBUG_EVENTS - ACE_LOGINFO_2("* Target Event: %1 - %2",_eventName,_eventTargets); - ACE_LOGINFO_1(" args=%1",_eventArgs); -#endif +[_eventName,_eventArgs,_eventTargets] call CBA_fnc_targetEvent; -ACEc = [_eventName, _eventTargets, _eventArgs]; - -if (!isServer) then { - publicVariableServer "ACEc"; -} else { - ["ACEc", ACEc] call FUNC(_handleNetEvent); -}; +ACE_DEPRECATED("ace_common_fnc_targetEvent","3.8.0","CBA_fnc_targetEvent"); diff --git a/addons/common/tests/script_component.hpp b/addons/common/tests/script_component.hpp deleted file mode 100644 index 6a1bf9154d5..00000000000 --- a/addons/common/tests/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\common\script_component.hpp" diff --git a/addons/common/tests/test_eventHandlers.sqf b/addons/common/tests/test_eventHandlers.sqf deleted file mode 100644 index 5a75cb0a06e..00000000000 --- a/addons/common/tests/test_eventHandlers.sqf +++ /dev/null @@ -1,78 +0,0 @@ -// ---------------------------------------------------------------------------- -#define DEBUG_MODE_FULL -#include "script_component.hpp" - -#ifndef TEST_DEFINED_AND_OP -if (true) exitWith {}; -#endif - -// ---------------------------------------------------------------------------- - -LOG('Testing EventHandlers'); - -TEST_DEFINED(QFUNC(_handleNetEvent),""); -TEST_DEFINED(QFUNC(addEventHandler),""); -TEST_DEFINED(QFUNC(localEvent),""); -TEST_DEFINED(QFUNC(targetEvent),""); -TEST_DEFINED(QFUNC(globalEvent),""); -TEST_DEFINED(QFUNC(serverEvent),""); -TEST_DEFINED(QFUNC(removeAllEventHandlers),""); -TEST_DEFINED(QFUNC(removeEventHandler),""); - -private _result = ["A", {}] call ace_common_fnc_addEventHandler; -private _expected = 0; -TEST_DEFINED_AND_OP(_result,==,_expected,"Adding first A EH"); - -_result = ["A", {GVAR(test_A2) = _this}] call ace_common_fnc_addEventHandler; -_expected = 1; -TEST_DEFINED_AND_OP(_result,==,_expected,"Adding second A EH"); - -_result = ["A", {GVAR(test_A3) = _this}] call ace_common_fnc_addEventHandler; -_expected = 2; -TEST_DEFINED_AND_OP(_result,==,_expected,"Adding third A EH"); - -GVAR(test_A2) = -1; -["A", 11] call FUNC(localEvent); -_expected = 11; -_result = GVAR(test_A2); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test Local Event"); - -//Remove 2nd EH -["A", 1] call FUNC(removeEventHandler); - -GVAR(test_A2) = -1; -GVAR(test_A3) = -1; -["A", 22] call FUNC(localEvent); -_expected = -1; -_result = GVAR(test_A2); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test 2nd (removed) EH"); -_expected = 22; -_result = GVAR(test_A3); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test 3rd Event"); - -//Remove All EH: -["A"] call FUNC(removeAllEventHandlers); - -GVAR(test_A3) = -1; -["A", 77] call FUNC(localEvent); -_expected = -1; -_result = GVAR(test_A3); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test 3rd is removed after removeAll"); - -//Much harder to test network events -TRACE_2("testing network events",isServer,isDedicated); - -["B", {GVAR(test_B) = _this}] call ace_common_fnc_addEventHandler; - -GVAR(test_B) = -1; -["B", 33] call FUNC(globalEvent); -_expected = 33; -_result = GVAR(test_B); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test globalEvent"); - -GVAR(test_B) = -1; -["B", 44] call FUNC(serverEvent); -_expected = if (isServer) then {44} else {-1}; -_result = GVAR(test_B); -TEST_DEFINED_AND_OP(_result,==,_expected,"Test serverEvent"); - From 108ff4f64406fd4c370a2fc146843434dabc57a8 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 22 May 2016 16:29:05 +0100 Subject: [PATCH 189/268] Replace ACE event system calls with CBA counterparts Regex used: \[(.+?),(.+?),(.+?)\]\s+call\s+E?FUNC\((common,)?(target|object)Event\) [$1,$3,$2] call CBA_fnc_targetEvent E?FUNC\((common,)?(server|global|local)Event\) CBA_fnc_$2Event E?FUNC\((common,)?(add|remove)EventHandler\) CBA_fnc_$2EventHandler --- addons/advanced_ballistics/XEH_postInit.sqf | 6 +- addons/atragmx/XEH_postInit.sqf | 2 +- addons/attach/XEH_clientInit.sqf | 2 +- addons/backpacks/XEH_postInit.sqf | 2 +- .../functions/fnc_onOpenInventory.sqf | 2 +- addons/captives/XEH_postInit.sqf | 14 +-- .../functions/fnc_doApplyHandcuffs.sqf | 2 +- .../captives/functions/fnc_doLoadCaptive.sqf | 2 +- .../functions/fnc_doRemoveHandcuffs.sqf | 2 +- .../functions/fnc_doUnloadCaptive.sqf | 2 +- .../functions/fnc_moduleHandcuffed.sqf | 2 +- .../functions/fnc_moduleSurrender.sqf | 2 +- .../captives/functions/fnc_setHandcuffed.sqf | 2 +- .../captives/functions/fnc_setSurrendered.sqf | 2 +- addons/cargo/XEH_postInit.sqf | 16 +-- addons/cargo/functions/fnc_addCargoItem.sqf | 2 +- addons/cargo/functions/fnc_initVehicle.sqf | 2 +- addons/cargo/functions/fnc_loadItem.sqf | 2 +- addons/cargo/functions/fnc_startLoadIn.sqf | 4 +- addons/cargo/functions/fnc_startUnload.sqf | 4 +- addons/cargo/functions/fnc_unloadItem.sqf | 4 +- addons/common/RscInfoType.hpp | 54 ++++----- addons/common/XEH_postInit.sqf | 104 +++++++++--------- .../fnc__handleRequestAllSyncedEvents.sqf | 2 +- .../fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_addSetting.sqf | 2 +- .../functions/fnc_addSyncedEventHandler.sqf | 2 +- .../common/functions/fnc_assignedItemFix.sqf | 2 +- addons/common/functions/fnc_cachedCall.sqf | 2 +- addons/common/functions/fnc_claim.sqf | 4 +- addons/common/functions/fnc_doAnimation.sqf | 14 +-- addons/common/functions/fnc_firedEH.sqf | 12 +- addons/common/functions/fnc_fixFloating.sqf | 4 +- addons/common/functions/fnc_headBugFix.sqf | 4 +- addons/common/functions/fnc_hideUnit.sqf | 2 +- addons/common/functions/fnc_loadPerson.sqf | 2 +- addons/common/functions/fnc_muteUnit.sqf | 2 +- .../functions/fnc_muteUnitHandleInitPost.sqf | 2 +- .../functions/fnc_muteUnitHandleRespawn.sqf | 2 +- addons/common/functions/fnc_progressBar.sqf | 4 +- .../fnc_removeSyncedEventHandler.sqf | 2 +- .../functions/fnc_requestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_setSetting.sqf | 4 +- .../fnc_statusEffect_sendEffects.sqf | 6 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- addons/common/functions/fnc_unhideUnit.sqf | 2 +- addons/common/functions/fnc_unloadPerson.sqf | 2 +- .../functions/fnc_unloadPersonLocal.sqf | 2 +- addons/common/functions/fnc_unmuteUnit.sqf | 2 +- addons/concertina_wire/XEH_postInit.sqf | 4 +- .../functions/fnc_handleKilled.sqf | 2 +- addons/dagr/XEH_postInit.sqf | 2 +- addons/disarming/XEH_postInit.sqf | 4 +- .../functions/fnc_eventTargetFinish.sqf | 2 +- .../functions/fnc_openDisarmDialog.sqf | 2 +- addons/disposable/XEH_postInit.sqf | 6 +- addons/dragging/XEH_postInit.sqf | 8 +- addons/dragging/functions/fnc_carryObject.sqf | 2 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- addons/dragging/functions/fnc_dropObject.sqf | 8 +- .../functions/fnc_dropObject_carry.sqf | 8 +- .../functions/fnc_handleScrollWheel.sqf | 2 +- addons/explosives/XEH_postInit.sqf | 14 +-- .../functions/fnc_defuseExplosive.sqf | 4 +- .../functions/fnc_placeExplosive.sqf | 2 +- addons/fastroping/CfgVehicles.hpp | 2 +- addons/fastroping/XEH_postInit.sqf | 4 +- addons/fastroping/functions/fnc_fastRope.sqf | 2 +- addons/fcs/XEH_postInit.sqf | 8 +- addons/finger/XEH_postInit.sqf | 4 +- addons/finger/functions/fnc_keyPress.sqf | 2 +- addons/frag/XEH_postInit.sqf | 16 +-- addons/frag/functions/fnc_pfhRound.sqf | 2 +- addons/gforces/XEH_postInit.sqf | 4 +- addons/goggles/XEH_postInit.sqf | 14 +-- .../goggles/functions/fnc_handleExplosion.sqf | 4 +- addons/grenades/XEH_postInit.sqf | 8 +- .../functions/fnc_flashbangThrownFuze.sqf | 2 +- addons/hearing/XEH_postInit.sqf | 10 +- addons/huntir/XEH_postInit.sqf | 4 +- addons/interact_menu/XEH_clientInit.sqf | 14 +-- .../interact_menu/functions/fnc_keyDown.sqf | 2 +- addons/interact_menu/functions/fnc_keyUp.sqf | 6 +- addons/interact_menu/functions/fnc_render.sqf | 4 +- addons/interaction/XEH_postInit.sqf | 12 +- .../functions/fnc_doBecomeLeader.sqf | 2 +- addons/interaction/functions/fnc_getDown.sqf | 2 +- addons/interaction/functions/fnc_joinTeam.sqf | 2 +- addons/interaction/functions/fnc_pardon.sqf | 2 +- .../functions/fnc_passMagazine.sqf | 2 +- addons/interaction/functions/fnc_push.sqf | 2 +- addons/interaction/functions/fnc_sendAway.sqf | 2 +- .../interaction/functions/fnc_switchLamp.sqf | 4 +- .../interaction/functions/fnc_tapShoulder.sqf | 2 +- addons/laser/XEH_post_init.sqf | 4 +- addons/laser/functions/fnc_laserOff.sqf | 2 +- addons/laser/functions/fnc_laserOn.sqf | 2 +- addons/laserpointer/XEH_postInit.sqf | 4 +- .../functions/fnc_refuelUAV.sqf | 2 +- .../logistics_wirecutter/XEH_clientInit.sqf | 2 +- addons/map/XEH_postInitClient.sqf | 8 +- addons/map_gestures/XEH_postInit.sqf | 2 +- addons/map_gestures/XEH_serverPostInit.sqf | 2 +- .../map_gestures/functions/fnc_transmit.sqf | 2 +- addons/maptools/XEH_postInitClient.sqf | 2 +- addons/maptools/XEH_preInit.sqf | 8 +- .../functions/fnc_copyMapRemoteSend.sqf | 2 +- .../maptools/functions/fnc_copyMapStart.sqf | 2 +- .../maptools/functions/fnc_handleKeyDown.sqf | 2 +- .../functions/fnc_handleMouseButton.sqf | 2 +- addons/markers/XEH_postInit.sqf | 6 +- addons/markers/XEH_preInit.sqf | 2 +- addons/markers/functions/fnc_placeMarker.sqf | 2 +- .../markers/functions/fnc_sendMarkersJIP.sqf | 6 +- addons/medical/XEH_postInit.sqf | 52 ++++----- .../fnc_actionCheckBloodPressure.sqf | 4 +- .../fnc_actionCheckBloodPressureLocal.sqf | 2 +- .../functions/fnc_actionCheckPulse.sqf | 4 +- .../functions/fnc_actionCheckPulseLocal.sqf | 2 +- .../functions/fnc_actionCheckResponse.sqf | 2 +- .../medical/functions/fnc_actionDiagnose.sqf | 2 +- .../medical/functions/fnc_actionLoadUnit.sqf | 2 +- .../functions/fnc_actionPlaceInBodyBag.sqf | 4 +- .../functions/fnc_actionRemoveTourniquet.sqf | 4 +- .../functions/fnc_actionUnloadUnit.sqf | 2 +- .../functions/fnc_addHeartRateAdjustment.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 4 +- .../medical/functions/fnc_addToTriageCard.sqf | 4 +- addons/medical/functions/fnc_addVitalLoop.sqf | 2 +- .../fnc_displayPatientInformation.sqf | 2 +- .../functions/fnc_onWoundUpdateRequest.sqf | 2 +- .../functions/fnc_requestWoundSync.sqf | 2 +- .../functions/fnc_serverRemoveBody.sqf | 2 +- .../functions/fnc_setCardiacArrest.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 4 +- .../functions/fnc_setHitPointDamage.sqf | 2 +- .../medical/functions/fnc_setUnconscious.sqf | 4 +- addons/medical/functions/fnc_treatment.sqf | 2 +- .../functions/fnc_treatmentAdvanced_CPR.sqf | 4 +- .../fnc_treatmentAdvanced_bandage.sqf | 4 +- .../fnc_treatmentAdvanced_bandageLocal.sqf | 2 +- .../fnc_treatmentAdvanced_fullHeal.sqf | 4 +- .../fnc_treatmentAdvanced_medication.sqf | 2 +- .../functions/fnc_treatmentBasic_bandage.sqf | 4 +- .../functions/fnc_treatmentBasic_bloodbag.sqf | 4 +- .../functions/fnc_treatmentBasic_morphine.sqf | 4 +- addons/medical/functions/fnc_treatmentIV.sqf | 4 +- .../functions/fnc_treatmentTourniquet.sqf | 8 +- .../functions/fnc_treatment_success.sqf | 2 +- .../medical/functions/fnc_unconsciousPFH.sqf | 4 +- addons/medical/functions/fnc_useItem.sqf | 12 +- addons/medical_menu/XEH_postInit.sqf | 2 +- .../medical_menu/functions/fnc_onMenuOpen.sqf | 4 +- addons/microdagr/XEH_clientInit.sqf | 2 +- addons/missileguidance/XEH_post_init.sqf | 2 +- .../functions/fnc_doHandoff.sqf | 2 +- addons/mk6mortar/RscInGameUI.hpp | 2 +- addons/mk6mortar/XEH_postInit.sqf | 12 +- .../fnc_handlePlayerVehicleChanged.sqf | 2 +- .../mk6mortar/functions/fnc_loadMagazine.sqf | 8 +- .../functions/fnc_unloadMagazine.sqf | 2 +- addons/modules/XEH_postInit.sqf | 2 +- addons/movement/XEH_postInit.sqf | 4 +- addons/nametags/XEH_postInit.sqf | 4 +- .../nametags/functions/fnc_initIsSpeaking.sqf | 2 +- addons/nightvision/XEH_postInitClient.sqf | 14 +-- addons/noradio/XEH_postInit.sqf | 2 +- addons/optics/XEH_postInit.sqf | 6 +- addons/optionsmenu/XEH_postInit.sqf | 2 +- addons/overheating/XEH_postInit.sqf | 14 +-- .../fnc_checkSpareBarrelsTemperatures.sqf | 2 +- .../overheating/functions/fnc_jamWeapon.sqf | 2 +- .../functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 2 +- .../functions/fnc_swapBarrelAssistant.sqf | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/overpressure/XEH_postInit.sqf | 6 +- .../overpressure/functions/fnc_firedEHBB.sqf | 2 +- .../overpressure/functions/fnc_firedEHOP.sqf | 2 +- addons/parachute/XEH_postInit.sqf | 6 +- addons/rearm/XEH_postInit.sqf | 4 +- .../rearm/functions/fnc_rearmSuccessLocal.sqf | 32 ++++-- addons/recoil/XEH_postInit.sqf | 2 +- addons/refuel/XEH_postInit.sqf | 4 +- addons/refuel/functions/fnc_checkFuel.sqf | 4 +- .../functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_refuel.sqf | 2 +- addons/refuel/functions/fnc_reset.sqf | 2 +- addons/reload/XEH_postInit.sqf | 14 +-- .../reload/functions/fnc_startLinkingBelt.sqf | 2 +- addons/reloadlaunchers/XEH_postInit.sqf | 2 +- addons/reloadlaunchers/functions/fnc_load.sqf | 2 +- addons/repair/XEH_postInit.sqf | 6 +- addons/repair/functions/fnc_addSpareParts.sqf | 2 +- addons/repair/functions/fnc_doRemoveTrack.sqf | 4 +- addons/repair/functions/fnc_doRemoveWheel.sqf | 4 +- addons/repair/functions/fnc_doRepair.sqf | 4 +- addons/repair/functions/fnc_doRepairTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceWheel.sqf | 2 +- addons/repair/functions/fnc_repair.sqf | 6 +- addons/repair/functions/fnc_spawnObject.sqf | 4 +- addons/respawn/XEH_postInit.sqf | 4 +- addons/respawn/XEH_serverPostInit.sqf | 2 +- .../respawn/functions/fnc_initRallypoint.sqf | 2 +- .../respawn/functions/fnc_moveRallypoint.sqf | 2 +- .../functions/fnc_showFriendlyFireMessage.sqf | 2 +- addons/sandbag/XEH_postInit.sqf | 10 +- addons/sandbag/functions/fnc_deploy.sqf | 2 +- addons/scopes/XEH_postInit.sqf | 8 +- addons/sitting/XEH_clientInit.sqf | 6 +- addons/spectator/XEH_postInit.sqf | 6 +- .../spectator/functions/fnc_setSpectator.sqf | 2 +- .../functions/fnc_stageSpectator.sqf | 2 +- addons/switchunits/XEH_postInit.sqf | 2 +- addons/tacticalladder/XEH_postInit.sqf | 10 +- addons/tagging/XEH_postInit.sqf | 2 +- addons/tagging/functions/fnc_createTag.sqf | 2 +- addons/tagging/functions/fnc_tag.sqf | 2 +- addons/trenches/XEH_postInit.sqf | 10 +- addons/trenches/functions/fnc_placeTrench.sqf | 2 +- addons/tripod/XEH_postInit.sqf | 8 +- addons/ui/XEH_clientInit.sqf | 6 +- addons/vector/functions/fnc_dataTransfer.sqf | 2 +- addons/vehiclelock/CfgVehicles.hpp | 8 +- addons/vehiclelock/XEH_postInit.sqf | 6 +- .../functions/fnc_addKeyForVehicle.sqf | 2 +- .../functions/fnc_handleVehicleInitPost.sqf | 2 +- addons/vehiclelock/functions/fnc_lockpick.sqf | 2 +- addons/viewdistance/XEH_clientInit.sqf | 6 +- addons/weaponselect/XEH_postInit.sqf | 2 +- .../fnc_displayGrenadeTypeAndNumber.sqf | 2 +- addons/weather/XEH_postInit.sqf | 2 +- addons/weather/XEH_postServerInit.sqf | 2 +- addons/winddeflection/XEH_postInit.sqf | 10 +- addons/zeus/XEH_preInit.sqf | 2 +- .../zeus/functions/fnc_bi_moduleCurator.sqf | 2 +- .../functions/fnc_moduleAddSpareTrack.sqf | 2 +- .../functions/fnc_moduleAddSpareWheel.sqf | 2 +- addons/zeus/functions/fnc_moduleCaptive.sqf | 2 +- addons/zeus/functions/fnc_moduleSurrender.sqf | 2 +- 241 files changed, 583 insertions(+), 567 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 2a9f6c3eb62..26e0bf93bfa 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -32,8 +32,8 @@ if (!hasInterface) exitWith {}; [] call FUNC(initializeTerrainExtension); // Register fire event handler - ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); - ["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); + ["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; //Add warnings for missing compat PBOs (only if AB is on) { @@ -50,7 +50,7 @@ if (!hasInterface) exitWith {}; ["iansky_opt","ace_compat_sma3_iansky"], ["R3F_Armes","ace_compat_r3f"] ]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; #ifdef DEBUG_MODE_FULL call FUNC(diagnoseWeapons); diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 8d4907523be..ef293e93091 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [] call FUNC(init); [] call FUNC(restore_user_data); -["RangerfinderData", {_this call FUNC(sord)}] call EFUNC(common,addEventHandler); +["RangerfinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; diff --git a/addons/attach/XEH_clientInit.sqf b/addons/attach/XEH_clientInit.sqf index f7e663c2ae0..8ba867ec269 100644 --- a/addons/attach/XEH_clientInit.sqf +++ b/addons/attach/XEH_clientInit.sqf @@ -3,4 +3,4 @@ if (!hasInterface) exitWith {}; //If attach placing, stop when opening menu: -["interactMenuOpened", {GVAR(placeAction) = 0;}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {GVAR(placeAction) = 0;}] call CBA_fnc_addEventHandler; diff --git a/addons/backpacks/XEH_postInit.sqf b/addons/backpacks/XEH_postInit.sqf index 375fcd5f893..c3341ff3059 100644 --- a/addons/backpacks/XEH_postInit.sqf +++ b/addons/backpacks/XEH_postInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -["backpackOpened", {_this call FUNC(backpackOpened)}] call EFUNC(common,addEventHandler); +["backpackOpened", {_this call FUNC(backpackOpened)}] call CBA_fnc_addEventHandler; diff --git a/addons/backpacks/functions/fnc_onOpenInventory.sqf b/addons/backpacks/functions/fnc_onOpenInventory.sqf index d9a99535ebd..c2f3c861a23 100644 --- a/addons/backpacks/functions/fnc_onOpenInventory.sqf +++ b/addons/backpacks/functions/fnc_onOpenInventory.sqf @@ -24,7 +24,7 @@ private _target = objectParent _backpack; if (isNull _target) exitWith {false}; // raise event on target unit -["backpackOpened", _target, [_target, _backpack]] call EFUNC(common,targetEvent); +["backpackOpened", [_target, _backpack], _target] call CBA_fnc_targetEvent; // return false to open inventory as usual false diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 5aada0950f6..8f6b470a0aa 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -5,7 +5,7 @@ [{ GVAR(captivityEnabled) = true; }, [], 0.05] call EFUNC(common,waitAndExecute); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; //Handles when someone starts escorting and then disconnects, leaving the captive attached //This is normaly handled by the PFEH in doEscortCaptive, but that won't be running if they DC @@ -24,15 +24,15 @@ if (isServer) then { }]; }; -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call EFUNC(common,addEventHandler); -["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call EFUNC(common,addEventHandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler; +["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler; -["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call EFUNC(common,addEventHandler); -["SetSurrendered", {_this call FUNC(setSurrendered)}] call EFUNC(common,addEventHandler); +["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler; +["SetSurrendered", {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; //Medical Integration Events -["medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call EFUNC(common,addEventHandler); +["medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 21bfe58747e..95236579f4f 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -21,6 +21,6 @@ params ["_unit", "_target"]; playSound3D [QUOTE(PATHTO_R(sounds\cable_tie_zipping.ogg)), objNull, false, (getPosASL _target), 1, 1, 10]; -["SetHandcuffed", [_target], [_target, true]] call EFUNC(common,targetEvent); +["SetHandcuffed", [_target, true], [_target]] call CBA_fnc_targetEvent; _unit removeItem "ACE_CableTie"; diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index a4d7df8892f..e4f919a42f2 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -47,4 +47,4 @@ if (isNull _vehicle) then { if (isNull _vehicle) exitWith {ERROR("");}; _unit setVariable [QGVAR(isEscorting), false, true]; -["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); +["MoveInCaptive", [_target, _vehicle], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf index 681b698de3c..27bb1fd0789 100644 --- a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf @@ -17,4 +17,4 @@ params ["_unit", "_target"]; -["SetHandcuffed", [_target], [_target, false]] call EFUNC(common,targetEvent); +["SetHandcuffed", [_target, false], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doUnloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf index 46ba6180107..e3d0749d39c 100644 --- a/addons/captives/functions/fnc_doUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -18,4 +18,4 @@ params ["_unit", "_target"]; -["MoveOutCaptive", [_target], [_target]] call EFUNC(common,targetEvent); +["MoveOutCaptive", [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf index dcb59ff2a15..84a7ed852dc 100644 --- a/addons/captives/functions/fnc_moduleHandcuffed.sqf +++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["SetHandcuffed", [_x], [_x, true]] call EFUNC(common,targetEvent); + ["SetHandcuffed", [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 29659b351ec..60234e60524 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent); + ["SetSurrendered", [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index d4f84730e61..630726206aa 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -124,4 +124,4 @@ if (_state) then { }; //Global Event after changes: -["CaptiveStatusChanged", [_unit, _state, "SetHandcuffed"]] call EFUNC(common,globalEvent); +["CaptiveStatusChanged", [_unit, _state, "SetHandcuffed"]] call CBA_fnc_globalEvent; diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index ffc3c35081e..5fe01b740c2 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -117,4 +117,4 @@ if (_state) then { }; //Global Event after changes: -["CaptiveStatusChanged", [_unit, _state, "SetSurrendered"]] call EFUNC(common,globalEvent); +["CaptiveStatusChanged", [_unit, _state, "SetSurrendered"]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index f3789d641f9..97d05366af7 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["AddCargoByClass", {_this call FUNC(addCargoItem)}] call EFUNC(common,addEventHandler); +["AddCargoByClass", {_this call FUNC(addCargoItem)}] call CBA_fnc_addEventHandler; ["LoadCargo", { params ["_item", "_vehicle"]; @@ -13,13 +13,13 @@ private _itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent); + ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; if (_loaded) then { // Invoke listenable event - ["cargoLoaded", [_item, _vehicle]] call EFUNC(common,globalEvent); + ["cargoLoaded", [_item, _vehicle]] call CBA_fnc_globalEvent; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["UnloadCargo", { params ["_item", "_vehicle", ["_unloader", objNull]]; @@ -34,19 +34,19 @@ private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call EFUNC(common,localEvent); + ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; if (_unloaded) then { // Invoke listenable event - ["cargoUnloaded", [_item, _vehicle]] call EFUNC(common,globalEvent); + ["cargoUnloaded", [_item, _vehicle]] call CBA_fnc_globalEvent; }; // TOOO maybe drag/carry the unloaded item? -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["ServerUnloadCargo", { params ["_item", "_emptyPosAGL"]; _item hideObjectGlobal false; _item setPosASL (AGLtoASL _emptyPosAGL); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/cargo/functions/fnc_addCargoItem.sqf b/addons/cargo/functions/fnc_addCargoItem.sqf index 5e012149349..d90ba6c4d38 100644 --- a/addons/cargo/functions/fnc_addCargoItem.sqf +++ b/addons/cargo/functions/fnc_addCargoItem.sqf @@ -26,4 +26,4 @@ for "_i" from 1 to _amount do { }; // Invoke listenable event -["cargoAddedByClass", [_itemClass, _vehicle, _amount]] call EFUNC(common,globalEvent); +["cargoAddedByClass", [_itemClass, _vehicle, _amount]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf index 7e19b0acd02..101799148ac 100644 --- a/addons/cargo/functions/fnc_initVehicle.sqf +++ b/addons/cargo/functions/fnc_initVehicle.sqf @@ -29,7 +29,7 @@ if (isServer) then { _cargoClassname = getText (_x >> "type"); _cargoCount = getNumber (_x >> "amount"); TRACE_3("adding ACE_Cargo", (configName _x), _cargoClassname, _cargoCount); - ["AddCargoByClass", [_cargoClassname, _vehicle, _cargoCount]] call EFUNC(common,localEvent); + ["AddCargoByClass", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent; }; } count ("true" configClasses (configFile >> "CfgVehicles" >> _type >> "ACE_Cargo" >> "Cargo")); }; diff --git a/addons/cargo/functions/fnc_loadItem.sqf b/addons/cargo/functions/fnc_loadItem.sqf index 443143ece0c..49fa531e5e3 100644 --- a/addons/cargo/functions/fnc_loadItem.sqf +++ b/addons/cargo/functions/fnc_loadItem.sqf @@ -35,7 +35,7 @@ _vehicle setVariable [QGVAR(space), _space - _itemSize, true]; if (_item isEqualType objNull) then { detach _item; _item attachTo [_vehicle,[0,0,-100]]; - ["hideObjectGlobal", [_item, true]] call EFUNC(common,serverEvent); + ["hideObjectGlobal", [_item, true]] call CBA_fnc_serverEvent; }; true diff --git a/addons/cargo/functions/fnc_startLoadIn.sqf b/addons/cargo/functions/fnc_startLoadIn.sqf index 6fcd3cf62c3..5476d3e31cd 100644 --- a/addons/cargo/functions/fnc_startLoadIn.sqf +++ b/addons/cargo/functions/fnc_startLoadIn.sqf @@ -40,7 +40,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { [ 5 * _size, [_object,_vehicle], - {["LoadCargo", _this select 0] call EFUNC(common,localEvent)}, + {["LoadCargo", _this select 0] call CBA_fnc_localEvent}, {}, localize LSTRING(LoadingItem) ] call EFUNC(common,progressBar); @@ -48,7 +48,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { } else { private _displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName"); - ["displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent); + ["displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; }; _return diff --git a/addons/cargo/functions/fnc_startUnload.sqf b/addons/cargo/functions/fnc_startUnload.sqf index 46a69e737fa..741825a3874 100644 --- a/addons/cargo/functions/fnc_startUnload.sqf +++ b/addons/cargo/functions/fnc_startUnload.sqf @@ -37,7 +37,7 @@ if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then [ 5 * _size, [_item, GVAR(interactionVehicle), ACE_player], - {["UnloadCargo", _this select 0] call EFUNC(common,localEvent)}, + {["UnloadCargo", _this select 0] call CBA_fnc_localEvent}, {}, localize LSTRING(UnloadingItem), {true}, @@ -47,5 +47,5 @@ if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item}; private _displayName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); - ["displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call EFUNC(common,localEvent); + ["displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; }; diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 8bd18f989ef..25eb25fa6ca 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -29,7 +29,7 @@ if ((count _emptyPosAGL) != 3) exitWith { TRACE_4("Could not find unload pos",_vehicle,getPosASL _vehicle,isTouchingGround _vehicle,speed _vehicle); if ((!isNull _unloader) && {_unloader == ACE_player}) then { //display text saying there are no safe places to exit the vehicle - ["displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call EFUNC(common,localEvent); + ["displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call CBA_fnc_localEvent; }; false }; @@ -52,7 +52,7 @@ if (_item isEqualType objNull) then { detach _item; // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly // do both on server to ensure they are executed in the correct order - ["ServerUnloadCargo", [_item, _emptyPosAGL]] call EFUNC(common,serverEvent); + ["ServerUnloadCargo", [_item, _emptyPosAGL]] call CBA_fnc_serverEvent; } else { private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""]; _newItem setPosASL (AGLtoASL _emptyPosAGL); diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index e5af2454cbc..c6136d01071 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -1,111 +1,111 @@ class RscInGameUI { class RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoNoHUD { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSoldier: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call CBA_fnc_localEvent;); }; class RscUnitInfoTank: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call CBA_fnc_localEvent;); }; class RscUnitInfoAirNoWeapon: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfoAir: RscUnitInfoAirNoWeapon { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfo_AH64D_gunner { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call FUNC(localEvent);); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfoUAV { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call FUNC(localEvent);); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSubmarine: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Submarine')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Submarine')])] call CBA_fnc_localEvent;); }; class RscUnitInfoShip: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Ship')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Ship')])] call CBA_fnc_localEvent;); }; class RscWeaponEmpty { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinder { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call FUNC(localEvent);); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtilleryAuto { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call FUNC(localEvent);); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderPAS13 { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderMAAWS { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsCom { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsGun { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderStrykerMGSGun { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_strider_commander { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_titan { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_punisher { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_SDV_periscope { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoParachute: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call CBA_fnc_localEvent;); }; class RscUnitVehicle { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator_02 { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscStaminaBar { diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 86a86918e47..8e389bf68c7 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -59,7 +59,7 @@ ////////////////////////////////////////////////// //Status Effect EHs: -["setStatusEffect", {_this call FUNC(statusEffect_set)}] call FUNC(addEventHandler); +["setStatusEffect", {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; ["forceWalk", false, ["ACE_SwitchUnits", "ACE_Attach", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_dragging"]] call FUNC(statusEffect_addType); ["blockSprint", false, []] call FUNC(statusEffect_addType); ["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType); @@ -70,17 +70,17 @@ params ["_object", "_set"]; TRACE_2("forceWalk EH",_object,_set); _object forceWalk (_set > 0); -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; ["blockSprint", { //Name reversed from `allowSprint` because we want NOR logic params ["_object", "_set"]; TRACE_2("blockSprint EH",_object,_set); _object allowSprint (_set == 0); -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; ["setCaptive", { params ["_object", "_set"]; TRACE_2("setCaptive EH",_object,_set); _object setCaptive (_set > 0); -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; ["blockDamage", { //Name reversed from `allowDamage` because we want NOR logic params ["_object", "_set"]; if ((_object isKindOf "CAManBase") && {(["ace_medical"] call FUNC(isModLoaded))}) then { @@ -90,12 +90,12 @@ TRACE_2("blockDamage EH (using allowDamage)",_object,_set); _object allowDamage (_set == 0); }; -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; ["blockEngine", { params ["_vehicle", "_set"]; _vehicle setVariable [QGVAR(blockEngine), _set > 0, true]; _vehicle engineOn false; -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; //Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit //This variable is used for isPlayer checks @@ -126,46 +126,46 @@ if (isServer) then { _settingData set [6, _force]; }; -}] call FUNC(addEventhandler); +}] call CBA_fnc_addEventHandler; // Event to log Fix Headbug output ["HeadbugFixUsed", { params ["_profileName", "_animation"]; ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation); -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; -["fixCollision", FUNC(fixCollision)] call FUNC(addEventhandler); -["fixFloating", FUNC(fixFloating)] call FUNC(addEventhandler); -["fixPosition", FUNC(fixPosition)] call FUNC(addEventhandler); +["fixCollision", FUNC(fixCollision)] call CBA_fnc_addEventHandler; +["fixFloating", FUNC(fixFloating)] call CBA_fnc_addEventHandler; +["fixPosition", FUNC(fixPosition)] call CBA_fnc_addEventHandler; -["loadPersonEvent", FUNC(loadPersonLocal)] call FUNC(addEventhandler); -["unloadPersonEvent", FUNC(unloadPersonLocal)] call FUNC(addEventhandler); +["loadPersonEvent", FUNC(loadPersonLocal)] call CBA_fnc_addEventHandler; +["unloadPersonEvent", FUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler; ["lockVehicle", { _this setVariable [QGVAR(lockStatus), locked _this]; _this lock 2; -}] call FUNC(addEventhandler); +}] call CBA_fnc_addEventHandler; ["unlockVehicle", { _this lock (_this getVariable [QGVAR(lockStatus), locked _this]); -}] call FUNC(addEventhandler); - -["setDir", {(_this select 0) setDir (_this select 1)}] call FUNC(addEventhandler); -["setFuel", {(_this select 0) setFuel (_this select 1)}] call FUNC(addEventhandler); -["engineOn", {(_this select 0) engineOn (_this select 1)}] call FUNC(addEventhandler); -["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call FUNC(addEventhandler); -["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call FUNC(addEventHandler); -["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call FUNC(addEventHandler); -["playMove", {(_this select 0) playMove (_this select 1)}] call FUNC(addEventHandler); -["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call FUNC(addEventHandler); -["switchMove", {(_this select 0) switchMove (_this select 1)}] call FUNC(addEventHandler); -["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler); -["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; + +["setDir", {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; +["setFuel", {(_this select 0) setFuel (_this select 1)}] call CBA_fnc_addEventHandler; +["engineOn", {(_this select 0) engineOn (_this select 1)}] call CBA_fnc_addEventHandler; +["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call CBA_fnc_addEventHandler; +["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call CBA_fnc_addEventHandler; +["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; +["playMove", {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; +["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; +["switchMove", {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; +["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; +["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; if (isServer) then { - ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); - ["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call FUNC(addEventHandler); + ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler; + ["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler; }; @@ -178,14 +178,14 @@ if (isServer) then { if (!isServer) then { ["PlayerJip", { ACE_LOGINFO("JIP event synchronization initialized"); - ["SEH_all", [player]] call FUNC(serverEvent); - }] call FUNC(addEventHandler); + ["SEH_all", [player]] call CBA_fnc_serverEvent; + }] call CBA_fnc_addEventHandler; } else { - ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call FUNC(addEventHandler); + ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); -["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler); +["SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +["SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; @@ -227,7 +227,7 @@ call FUNC(checkFiles); GVAR(checkPBOsCheckAll), GVAR(checkPBOsWhitelist) ] call FUNC(checkPBOs) -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; // Create a pfh to wait until all postinits are ready and settings are initialized [{ @@ -254,7 +254,7 @@ call FUNC(checkFiles); [] call FUNC(readSettingsFromParamsArray); }; // Event so that ACE_Modules have their settings loaded: - ["InitSettingsFromModules", []] call FUNC(localEvent); + ["InitSettingsFromModules", []] call CBA_fnc_localEvent; if (isServer) then { // Publish all settings data after all configs and modules are read @@ -270,7 +270,7 @@ call FUNC(checkFiles); ACE_LOGINFO("Settings initialized."); //Event that settings are safe to use: - ["SettingsInitialized", []] call FUNC(localEvent); + ["SettingsInitialized", []] call CBA_fnc_localEvent; //Set init finished and run all delayed functions: GVAR(settingsInitFinished) = true; @@ -318,7 +318,7 @@ enableCamShake true; if (alive _oldPlayer) then { [_oldPlayer] call FUNC(setName); }; -}] call FUNC(addEventhandler); +}] call CBA_fnc_addEventHandler; ////////////////////////////////////////////////// @@ -350,7 +350,7 @@ GVAR(OldIsCamera) = false; uiNamespace setVariable ["ACE_player", _data]; // Raise ACE event locally - ["playerChanged", [ACE_player, _oldPlayer]] call FUNC(localEvent); + ["playerChanged", [ACE_player, _oldPlayer]] call CBA_fnc_localEvent; }; // "playerVehicleChanged" event @@ -358,7 +358,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerVehicle)) then { // Raise ACE event locally GVAR(OldPlayerVehicle) = _data; - ["playerVehicleChanged", [ACE_player, _data]] call FUNC(localEvent); + ["playerVehicleChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerTurretChanged" event @@ -366,7 +366,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerTurret)) then { // Raise ACE event locally GVAR(OldPlayerTurret) = _data; - ["playerTurretChanged", [ACE_player, _data]] call FUNC(localEvent); + ["playerTurretChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerWeaponChanged" event @@ -374,7 +374,7 @@ GVAR(OldIsCamera) = false; if (_data != GVAR(OldPlayerWeapon)) then { // Raise ACE event locally GVAR(OldPlayerWeapon) = _data; - ["playerWeaponChanged", [ACE_player, _data]] call FUNC(localEvent); + ["playerWeaponChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerInventoryChanged" event @@ -406,7 +406,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then { GVAR(OldPlayerInventoryNoAmmo) = _data; - ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear)]] call FUNC(localEvent); + ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear)]] call CBA_fnc_localEvent; }; }; @@ -415,7 +415,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerVisionMode)) then { // Raise ACE event locally GVAR(OldPlayerVisionMode) = _data; - ["playerVisionModeChanged", [ACE_player, _data]] call FUNC(localEvent); + ["playerVisionModeChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "cameraViewChanged" event @@ -423,7 +423,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldCameraView)) then { // Raise ACE event locally GVAR(OldCameraView) = _data; - ["cameraViewChanged", [ACE_player, _data]] call FUNC(localEvent); + ["cameraViewChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "visibleMapChanged" event @@ -431,7 +431,7 @@ GVAR(OldIsCamera) = false; if (!_data isEqualTo GVAR(OldVisibleMap)) then { // Raise ACE event locally GVAR(OldVisibleMap) = _data; - ["visibleMapChanged", [ACE_player, _data]] call FUNC(localEvent); + ["visibleMapChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "activeCameraChanged" event @@ -439,7 +439,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldIsCamera)) then { // Raise ACE event locally GVAR(OldIsCamera) = _data; - ["activeCameraChanged", [ACE_player, _data]] call FUNC(localEvent); + ["activeCameraChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; END_COUNTER(stateChecker); @@ -450,8 +450,8 @@ GVAR(OldIsCamera) = false; // Eventhandlers for player controlled machines ////////////////////////////////////////////////// -["displayTextStructured", {_this call FUNC(displayTextStructured)}] call FUNC(addEventhandler); -["displayTextPicture", {_this call FUNC(displayTextPicture)}] call FUNC(addEventhandler); +["displayTextStructured", {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler; +["displayTextPicture", {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler; ["medical_onUnconscious", { params ["_unit", "_isUnconscious"]; @@ -459,9 +459,9 @@ GVAR(OldIsCamera) = false; if (local _unit && {!_isUnconscious}) then { [_unit, false, QFUNC(loadPerson), west /* dummy side */] call FUNC(switchToGroupSide); }; -}] call FUNC(addEventhandler); +}] call CBA_fnc_addEventHandler; -["useItem", DFUNC(useItem)] call FUNC(addEventHandler); +["useItem", DFUNC(useItem)] call CBA_fnc_addEventHandler; ////////////////////////////////////////////////// @@ -499,7 +499,7 @@ if (didJip) then { // We are jipping! Get ready and wait, and throw the event [{ if(!isNull player && GVAR(settingsInitFinished)) then { - ["PlayerJip", [player]] call FUNC(localEvent); + ["PlayerJip", [player]] call CBA_fnc_localEvent; [_this select 1] call CBA_fnc_removePerFrameHandler; }; }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 8c8cbd14869..ce57658e6f2 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - ["SEH_s", _client, [_x, _eventLog]] call FUNC(targetEvent); + ["SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 9d6c062ac2f..35aac9d52e8 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - ["SEH_s", _client, [_eventName, _eventLog]] call FUNC(targetEvent); + ["SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_addSetting.sqf b/addons/common/functions/fnc_addSetting.sqf index 0cf25b860ac..85008e49f91 100644 --- a/addons/common/functions/fnc_addSetting.sqf +++ b/addons/common/functions/fnc_addSetting.sqf @@ -37,4 +37,4 @@ missionNamespace setVariable [_name, _value]; GVAR(settings) pushBack _this; // Raise event locally -["SettingChanged", [_name, _value]] call FUNC(localEvent); +["SettingChanged", [_name, _value]] call CBA_fnc_localEvent; diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf index 126bb6a9577..caa842a58f7 100644 --- a/addons/common/functions/fnc_addSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf @@ -24,7 +24,7 @@ if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { false }; -private _eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); +private _eventId = [_name, FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; private _data = [_handler, [], _ttl, _eventId]; HASH_SET(GVAR(syncedEvents),_name,_data); diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf index 18dd6b4e0c6..cfa73a89015 100644 --- a/addons/common/functions/fnc_assignedItemFix.sqf +++ b/addons/common/functions/fnc_assignedItemFix.sqf @@ -48,4 +48,4 @@ GVAR(AssignedItemsShownItems) = [ showWatch _showWatch; showRadio _showRadio; showGPS (_showGPS || {cameraOn == getConnectedUAV _unit}); //If player is activly controling a UAV, showGPS controls showing the map (m key) -}] call FUNC(addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 2c7cdd4b277..a87e9f2364f 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -46,7 +46,7 @@ if ((_namespace getVariable [_uid, [-99999]]) select 0 < ACE_diagTime) then { } forEach _cacheList; // Empty the list missionNamespace setVariable [_varName, []]; - }] call FUNC(addEventhandler); + }] call CBA_fnc_addEventHandler; }; // Add this cache to the list of the event diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index cc514a2a6f7..0b5761125fc 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -28,9 +28,9 @@ _target setVariable [QGVAR(owner), _unit, true]; // lock target object if (_lockTarget) then { if (!isNull _unit) then { - ["lockVehicle", _target, _target] call FUNC(targetEvent); + ["lockVehicle", _target, _target] call CBA_fnc_targetEvent; } else { - ["unlockVehicle", _target, _target] call FUNC(targetEvent); + ["unlockVehicle", _target, _target] call CBA_fnc_targetEvent; }; }; diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index bfd50b08b8a..b9cbf2f4b35 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -41,34 +41,34 @@ TRACE_2("",local _unit,vehicle _unit); switch (_priority) do { case 0: { if (_unit == vehicle _unit) then { - ["playMove", _unit, [_unit, _animation]] call FUNC(objectEvent); + ["playMove", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMove", [_unit, _animation]] call FUNC(globalEvent); + ["playMove", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 1: { if (_unit == vehicle _unit) then { - ["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent); + ["playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMoveNow", [_unit, _animation]] call FUNC(globalEvent); + ["playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 2: { // try playMoveNow first if (_unit == vehicle _unit) then { - ["playMoveNow", _unit, [_unit, _animation]] call FUNC(objectEvent); + ["playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMoveNow", [_unit, _animation]] call FUNC(globalEvent); + ["playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; }; // if animation doesn't respond, do switchMove if (animationState _unit != _animation) then { TRACE_1("did not respond to playMoveNow",animationState _unit); // Execute on all machines. SwitchMove has local effects. - ["switchMove", [_unit, _animation]] call FUNC(globalEvent); + ["switchMove", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; default {}; diff --git a/addons/common/functions/fnc_firedEH.sqf b/addons/common/functions/fnc_firedEH.sqf index d70f0a86502..ba2ca1923c8 100644 --- a/addons/common/functions/fnc_firedEH.sqf +++ b/addons/common/functions/fnc_firedEH.sqf @@ -26,12 +26,12 @@ TRACE_7("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile if (_unit isKindOf "CAManBase") then { // The unit it on foot if (_unit == ACE_player) then { - ["firedPlayer", _this] call FUNC(localEvent); + ["firedPlayer", _this] call CBA_fnc_localEvent; } else { if ([_unit] call EFUNC(common,isPlayer)) then { - ["firedPlayerNonLocal", _this] call FUNC(localEvent); + ["firedPlayerNonLocal", _this] call CBA_fnc_localEvent; } else { - ["firedNonPlayer", _this] call FUNC(localEvent); + ["firedNonPlayer", _this] call CBA_fnc_localEvent; }; }; } else { @@ -55,12 +55,12 @@ if (_unit isKindOf "CAManBase") then { }; if (_gunner == ACE_player) then { - ["firedPlayerVehicle", _this] call FUNC(localEvent); + ["firedPlayerVehicle", _this] call CBA_fnc_localEvent; } else { if ([_gunner] call EFUNC(common,isPlayer)) then { - ["firedPlayerVehicleNonLocal", _this] call FUNC(localEvent); + ["firedPlayerVehicleNonLocal", _this] call CBA_fnc_localEvent; } else { - ["firedNonPlayerVehicle", _this] call FUNC(localEvent); + ["firedNonPlayerVehicle", _this] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/common/functions/fnc_fixFloating.sqf b/addons/common/functions/fnc_fixFloating.sqf index 1d8da1c8a45..dfd9e431cd0 100644 --- a/addons/common/functions/fnc_fixFloating.sqf +++ b/addons/common/functions/fnc_fixFloating.sqf @@ -21,7 +21,7 @@ if (!local _object) exitWith {}; if (_object isKindOf "CAManBase") exitWith {}; //We need to manually set allowDamage to true for setHitIndex to function -["blockDamage", [_object, 0]] call FUNC(localEvent); +["blockDamage", [_object, 0]] call CBA_fnc_localEvent; // save and restore hitpoints, see below why private _hitPointDamages = getAllHitPointsDamage _object; @@ -41,4 +41,4 @@ _object setDamage damage _object; //manually re-enable allowDamage to previous setting (ref statusEffect_funcs) private _effectVarName = format [QGVAR(effect_%1), "blockDamage"]; private _effectNumber = _object getVariable [_effectVarName, 0]; -["blockDamage", [_object, _effectNumber]] call FUNC(localEvent); +["blockDamage", [_object, _effectNumber]] call CBA_fnc_localEvent; diff --git a/addons/common/functions/fnc_headBugFix.sqf b/addons/common/functions/fnc_headBugFix.sqf index dffb28ff4b1..bb9e0c219fc 100644 --- a/addons/common/functions/fnc_headBugFix.sqf +++ b/addons/common/functions/fnc_headBugFix.sqf @@ -17,8 +17,8 @@ private _unit = ACE_player; private _anim = animationState _unit; -["HeadbugFixUsed", [profileName, _anim]] call FUNC(serverEvent); -["HeadbugFixUsed", [profileName, _anim]] call FUNC(localEvent); +["HeadbugFixUsed", [profileName, _anim]] call CBA_fnc_serverEvent; +["HeadbugFixUsed", [profileName, _anim]] call CBA_fnc_localEvent; if (_unit != vehicle _unit || {!([_unit, objNull, ["isNotSitting"]] call FUNC(canInteractWith))}) exitWith {false}; diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index 85636a08f7b..ef2bafb5593 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -28,5 +28,5 @@ if !(_reason in _setHiddenReasons) then { }; if !(isObjectHidden _unit) then { - ["hideObjectGlobal", [_unit, true]] call FUNC(serverEvent); + ["hideObjectGlobal", [_unit, true]] call CBA_fnc_serverEvent; }; diff --git a/addons/common/functions/fnc_loadPerson.sqf b/addons/common/functions/fnc_loadPerson.sqf index 6c728134d17..8e6b768f76d 100644 --- a/addons/common/functions/fnc_loadPerson.sqf +++ b/addons/common/functions/fnc_loadPerson.sqf @@ -32,7 +32,7 @@ private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], if (!isNull _vehicle) then { [_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); - ["loadPersonEvent", _unit, [_unit, _vehicle, _caller]] call FUNC(objectEvent); + ["loadPersonEvent", [_unit, _vehicle, _caller], _unit] call CBA_fnc_targetEvent; }; _vehicle diff --git a/addons/common/functions/fnc_muteUnit.sqf b/addons/common/functions/fnc_muteUnit.sqf index d4648155b62..d2448577e1e 100644 --- a/addons/common/functions/fnc_muteUnit.sqf +++ b/addons/common/functions/fnc_muteUnit.sqf @@ -29,6 +29,6 @@ private _speaker = speaker _unit; if (_speaker == "ACE_NoVoice") exitWith {}; -["setSpeaker", [_unit, "ACE_NoVoice"]] call FUNC(globalEvent); +["setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_globalEvent; _unit setVariable ["ACE_OriginalSpeaker", _speaker, true]; diff --git a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf index 8c5967b0d30..08be3a3e195 100644 --- a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf +++ b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf @@ -16,5 +16,5 @@ params ["_unit"]; // setSpeaker gets overwritten after init on remote units; if unit is muted, setSpeaker again if (count (_unit getVariable [QGVAR(muteUnitReasons), []]) > 0) then { - ["setSpeaker", [_unit, "ACE_NoVoice"]] call FUNC(localEvent); + ["setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_localEvent; }; diff --git a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf index a1a64eada30..47a55aa615a 100644 --- a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf +++ b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf @@ -18,4 +18,4 @@ params ["_unit"]; _unit setVariable [QGVAR(muteUnitReasons), _unit getVariable [QGVAR(muteUnitReasons), []], true]; // fix mp issues with respawning and the speaker -["setSpeaker", [_unit, speaker _unit]] call FUNC(globalEvent); +["setSpeaker", [_unit, speaker _unit]] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index 6129f14a65b..b39fd8fd738 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -82,13 +82,13 @@ _ctrlPos set [1, ((0 + 29 * GVAR(settingProgressBarLocation)) * ((((safezoneW / if (_errorCode == 0) then { if (_onFinish isEqualType "") then { - [_onFinish, [_args, _elapsedTime, _totalTime, _errorCode]] call FUNC(localEvent); + [_onFinish, [_args, _elapsedTime, _totalTime, _errorCode]] call CBA_fnc_localEvent; } else { [_args, _elapsedTime, _totalTime, _errorCode] call _onFinish; }; } else { if (_onFail isEqualType "") then { - [_onFail, [_args, _elapsedTime, _totalTime, _errorCode]] call FUNC(localEvent); + [_onFail, [_args, _elapsedTime, _totalTime, _errorCode]] call CBA_fnc_localEvent; } else { [_args, _elapsedTime, _totalTime, _errorCode] call _onFail; }; diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf index 23803acdd14..23735a120fb 100644 --- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf @@ -22,5 +22,5 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _data = HASH_GET(GVAR(syncedEvents),_name); _data params ["", "", "", "_eventId"]; -[_eventId] call FUNC(removeEventHandler); +[_eventId] call CBA_fnc_removeEventHandler; HASH_REM(GVAR(syncedEvents),_name); diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index 7cbc8f6c8db..b89256246ad 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -["SEH_s", [_eventName, ACE_player] ] call FUNC(serverEvent); +["SEH_s", [_eventName, ACE_player] ] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index a2bd9e700ef..b5b7f3a6ec6 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -78,8 +78,8 @@ if (isServer && {_broadcastChanges}) then { publicVariable _name; // Raise event globally, this publicizes eventual changes in _force status so clients can update it locally - ["SettingChanged", [_name, _value, _force]] call FUNC(globalEvent); + ["SettingChanged", [_name, _value, _force]] call CBA_fnc_globalEvent; } else { // Raise event locally - ["SettingChanged", [_name, _value, _force]] call FUNC(localEvent); + ["SettingChanged", [_name, _value, _force]] call CBA_fnc_localEvent; }; diff --git a/addons/common/functions/fnc_statusEffect_sendEffects.sqf b/addons/common/functions/fnc_statusEffect_sendEffects.sqf index 4291de1ad8e..078c6a03384 100644 --- a/addons/common/functions/fnc_statusEffect_sendEffects.sqf +++ b/addons/common/functions/fnc_statusEffect_sendEffects.sqf @@ -32,15 +32,15 @@ if (isNull _object) exitWith {}; if (_effectNumber != -1) then { if (GVAR(statusEffect_isGlobal) select _forEachIndex) then { TRACE_2("Sending Global Event", _object, _effectNumber); - [_x, [_object, _effectNumber]] call FUNC(globalEvent); + [_x, [_object, _effectNumber]] call CBA_fnc_globalEvent; } else { if (local _object) then { //If local, send directly to bypass network delay of targetEvent call TRACE_2("Sending Target Local Event", _object, _effectNumber); - [_x, [_object, _effectNumber]] call FUNC(localEvent); + [_x, [_object, _effectNumber]] call CBA_fnc_localEvent; } else { TRACE_2("Sending Target Non-Local Event", _object, _effectNumber); - [_x, [_object], [_object, _effectNumber]] call FUNC(targetEvent); + [_x, [_object, _effectNumber], [_object]] call CBA_fnc_targetEvent; }; }; }; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index c752d1eba24..3964d23afc0 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -["SEH", _eventData] call FUNC(globalEvent); +["SEH", _eventData] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_unhideUnit.sqf b/addons/common/functions/fnc_unhideUnit.sqf index 908dbf3dc8c..2d1889065d2 100644 --- a/addons/common/functions/fnc_unhideUnit.sqf +++ b/addons/common/functions/fnc_unhideUnit.sqf @@ -28,5 +28,5 @@ if (_reason in _setHiddenReasons) then { }; if (_setHiddenReasons isEqualTo []) then { - ["hideObjectGlobal",[_unit,false]] call FUNC(serverEvent); + ["hideObjectGlobal",[_unit,false]] call CBA_fnc_serverEvent; }; diff --git a/addons/common/functions/fnc_unloadPerson.sqf b/addons/common/functions/fnc_unloadPerson.sqf index 72816f2c3fa..2096b188363 100644 --- a/addons/common/functions/fnc_unloadPerson.sqf +++ b/addons/common/functions/fnc_unloadPerson.sqf @@ -26,7 +26,7 @@ if (_vehicle == _unit) exitWith {false}; if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 2}) exitWith {false}; if (!isNull _vehicle) then { - ["unloadPersonEvent", [_unit], [_unit, _vehicle]] call EFUNC(common,targetEvent); + ["unloadPersonEvent", [_unit, _vehicle], [_unit]] call CBA_fnc_targetEvent; }; true diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index ff5813434ac..adbbe0d9a90 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -27,7 +27,7 @@ if (count _emptyPos != 3) exitwith { ACE_LOGWARNING_4("Could not find unload pos %1-ASL: %2 isTouchingGround: %3 Speed: %4",_vehicle, getPosASL _vehicle, isTouchingGround _vehicle, speed _vehicle); if ((!isNull _unloader) && {[_unloader] call FUNC(isPlayer)}) then { //display text saying there are no safe places to exit the vehicle - ["displayTextStructured", [_unloader], [localize LSTRING(NoRoomToUnload)]] call FUNC(targetEvent); + ["displayTextStructured", [localize LSTRING(NoRoomToUnload)], [_unloader]] call CBA_fnc_targetEvent; }; false }; diff --git a/addons/common/functions/fnc_unmuteUnit.sqf b/addons/common/functions/fnc_unmuteUnit.sqf index a995eed2443..c8e450016dd 100644 --- a/addons/common/functions/fnc_unmuteUnit.sqf +++ b/addons/common/functions/fnc_unmuteUnit.sqf @@ -32,4 +32,4 @@ private _speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; if (_speaker == "") exitWith {}; -["setSpeaker", _unit, [_unit, _speaker]] call FUNC(targetEvent); +["setSpeaker", [_unit, _speaker], _unit] call CBA_fnc_targetEvent; diff --git a/addons/concertina_wire/XEH_postInit.sqf b/addons/concertina_wire/XEH_postInit.sqf index 58bd1f63c7c..361b561f0b6 100644 --- a/addons/concertina_wire/XEH_postInit.sqf +++ b/addons/concertina_wire/XEH_postInit.sqf @@ -8,6 +8,6 @@ GVAR(deployPFH) = -1; if (GVAR(deployPFH) != -1) then { GVAR(placer) setVariable [QGVAR(wireDeployed), true]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; -[QGVAR(vehicleDamage), {_this call FUNC(vehicleDamage)}] call EFUNC(common,addEventHandler); +[QGVAR(vehicleDamage), {_this call FUNC(vehicleDamage)}] call CBA_fnc_addEventHandler; diff --git a/addons/concertina_wire/functions/fnc_handleKilled.sqf b/addons/concertina_wire/functions/fnc_handleKilled.sqf index 1af3f93151f..fa03b58972a 100644 --- a/addons/concertina_wire/functions/fnc_handleKilled.sqf +++ b/addons/concertina_wire/functions/fnc_handleKilled.sqf @@ -34,4 +34,4 @@ if (_distance > 14 || {_distance < 2}) exitWith {}; // Fix if shooting wire _vehicle = vehicle _killer; -[QGVAR(vehicleDamage), [_vehicle], [_wire, _vehicle]] call EFUNC(common,targetEvent); +[QGVAR(vehicleDamage), [_wire, _vehicle], [_vehicle]] call CBA_fnc_targetEvent; diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index 883a73d418a..bcfc91061ad 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -30,4 +30,4 @@ GVAR(vectorConnected) = false; GVAR(noVectorData) = true; GVAR(vectorGrid) = "00000000"; -["RangerfinderData", FUNC(handleRangeFinderData)] call EFUNC(common,addEventHandler); +["RangerfinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; diff --git a/addons/disarming/XEH_postInit.sqf b/addons/disarming/XEH_postInit.sqf index ef17e6e96a2..82a77e182cf 100644 --- a/addons/disarming/XEH_postInit.sqf +++ b/addons/disarming/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" -["DisarmDropItems", FUNC(eventTargetStart)] call EFUNC(common,addEventHandler); -["DisarmDebugCallback", FUNC(eventCallerFinish)] call EFUNC(common,addEventHandler); +["DisarmDropItems", FUNC(eventTargetStart)] call CBA_fnc_addEventHandler; +["DisarmDebugCallback", FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler; diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index b7364a8f40a..e6c6782d85f 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -23,5 +23,5 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this); - ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); + ["DisarmDebugCallback", [_caller, _target, _errorMsg], [_caller]] call CBA_fnc_targetEvent; }; diff --git a/addons/disarming/functions/fnc_openDisarmDialog.sqf b/addons/disarming/functions/fnc_openDisarmDialog.sqf index 92f98a0756c..fc66170d010 100644 --- a/addons/disarming/functions/fnc_openDisarmDialog.sqf +++ b/addons/disarming/functions/fnc_openDisarmDialog.sqf @@ -42,7 +42,7 @@ GVAR(disarmTarget) = _target; if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");}; TRACE_2("Debug: Droping %1 from %2",_data,GVAR(disarmTarget)); - ["DisarmDropItems", [GVAR(disarmTarget)], [ACE_player, GVAR(disarmTarget), [_data]]] call EFUNC(common,targetEvent); + ["DisarmDropItems", [ACE_player, GVAR(disarmTarget), [_data]], [GVAR(disarmTarget)]] call CBA_fnc_targetEvent; false //not sure what this does }]; diff --git a/addons/disposable/XEH_postInit.sqf b/addons/disposable/XEH_postInit.sqf index 94ad62b1cce..520ff676911 100644 --- a/addons/disposable/XEH_postInit.sqf +++ b/addons/disposable/XEH_postInit.sqf @@ -7,9 +7,9 @@ if (!hasInterface) exitWith {}; params ["_unit"]; [_unit] call FUNC(takeLoadedATWeapon); [_unit] call FUNC(updateInventoryDisplay); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Register fire event handler // Only for the local player and for AI. Non-local players will handle it themselves -["firedPlayer", DFUNC(replaceATWeapon)] call EFUNC(common,addEventHandler); -["firedNonPlayer", DFUNC(replaceATWeapon)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; +["firedNonPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 9e20d8ee606..101463eb286 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -20,11 +20,11 @@ if (isNil "ACE_maxWeightCarry") then { ["isNotCarrying", {!((_this select 0) getVariable [QGVAR(isCarrying), false])}] call EFUNC(common,addCanInteractWithCondition); // release object on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventhandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index ec006938255..69aa9308848 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -44,7 +44,7 @@ if (_target isKindOf "CAManBase") then { _target attachTo [_unit, _position]; }; -["setDir", _target, [_target, _direction]] call EFUNC(common,targetEvent); +["setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; _unit setVariable [QGVAR(isCarrying), true, true]; _unit setVariable [QGVAR(carriedObject), _target, true]; diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index 3237ddbb071..df179769736 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -33,7 +33,7 @@ _position = _position vectorAdd [0, 0, _offset]; // attach object TRACE_3("attaching",_position,_offset,_direction); _target attachTo [_unit, _position]; -["setDir", _target, [_target, _direction]] call EFUNC(common,targetEvent); +["setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; if (_target isKindOf "CAManBase") then { [_target, "AinjPpneMrunSnonWnonDb_still", 0, true] call EFUNC(common,doAnimation); diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index 604f6c25b78..6cd2869a4b4 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -30,8 +30,8 @@ if !(_unit getVariable ["ACE_isUnconscious", false]) then { }; // prevent collision damage -["fixCollision", _unit] call EFUNC(common,localEvent); -["fixCollision", _target, _target] call EFUNC(common,targetEvent); +["fixCollision", _unit] call CBA_fnc_localEvent; +["fixCollision", _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -62,8 +62,8 @@ _unit setVariable [QGVAR(draggedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["fixPosition", _target, _target] call EFUNC(common,targetEvent); - ["fixFloating", _target, _target] call EFUNC(common,targetEvent); + ["fixPosition", _target, _target] call CBA_fnc_targetEvent; + ["fixFloating", _target, _target] call CBA_fnc_targetEvent; }; if (_unit getVariable ["ACE_isUnconscious", false]) then { diff --git a/addons/dragging/functions/fnc_dropObject_carry.sqf b/addons/dragging/functions/fnc_dropObject_carry.sqf index 2002142e2e0..1e25403c1d0 100644 --- a/addons/dragging/functions/fnc_dropObject_carry.sqf +++ b/addons/dragging/functions/fnc_dropObject_carry.sqf @@ -25,8 +25,8 @@ TRACE_2("params",_unit,_target); private _inBuilding = [_unit] call FUNC(isObjectOnObject); // prevent collision damage -["fixCollision", _unit] call EFUNC(common,localEvent); -["fixCollision", _target, _target] call EFUNC(common,targetEvent); +["fixCollision", _unit] call CBA_fnc_localEvent; +["fixCollision", _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -67,8 +67,8 @@ _unit setVariable [QGVAR(carriedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["fixPosition", _target, _target] call EFUNC(common,targetEvent); - ["fixFloating", _target, _target] call EFUNC(common,targetEvent); + ["fixPosition", _target, _target] call CBA_fnc_targetEvent; + ["fixFloating", _target, _target] call CBA_fnc_targetEvent; }; // recreate UAV crew diff --git a/addons/dragging/functions/fnc_handleScrollWheel.sqf b/addons/dragging/functions/fnc_handleScrollWheel.sqf index c97284618c1..0413e51efe2 100644 --- a/addons/dragging/functions/fnc_handleScrollWheel.sqf +++ b/addons/dragging/functions/fnc_handleScrollWheel.sqf @@ -42,6 +42,6 @@ _carriedItem attachTo [_unit]; //reset the carry direction private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0]; -["setDir", _carriedItem, [_carriedItem, _direction]] call EFUNC(common,targetEvent); +["setDir", [_carriedItem, _direction], _carriedItem] call CBA_fnc_targetEvent; true diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index fe12a88b7f7..9b21dedc733 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" //Event for setting explosive placement angle/pitch: -[QGVAR(place), {_this call FUNC(setPosition)}] call EFUNC(common,addEventHandler); +[QGVAR(place), {_this call FUNC(setPosition)}] call CBA_fnc_addEventHandler; //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) @@ -26,7 +26,7 @@ if (isServer) then { if (!_isUnconscious) exitWith {}; TRACE_1("Knocked Out, Doing Deadman", _unit); [_unit] call FUNC(onIncapacitated); - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; ["clientRequestsOrientations", { params ["_logic"]; @@ -37,8 +37,8 @@ if (isServer) then { (!isNull _explosive && {alive _explosive}) }; TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations)); - ["serverSendsOrientations", _logic, [GVAR(explosivesOrientations)]] call EFUNC(common,targetEvent); - }] call EFUNC(common,addEventHandler); + ["serverSendsOrientations", [GVAR(explosivesOrientations)], _logic] call CBA_fnc_targetEvent; + }] call CBA_fnc_addEventHandler; }; if (!hasInterface) exitWith {}; @@ -61,12 +61,12 @@ if (didJIP) then { } forEach _explosivesOrientations; deleteVehicle GVAR(localLogic); GVAR(localLogic) = nil; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; // Create a logic to get the client ID GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic)); - ["clientRequestsOrientations", [GVAR(localLogic)]] call EFUNC(common,serverEvent); + ["clientRequestsOrientations", [GVAR(localLogic)]] call CBA_fnc_serverEvent; }; ["interactMenuOpened", { @@ -78,4 +78,4 @@ if (didJIP) then { //Show defuse actions on CfgAmmos (allMines): _this call FUNC(interactEH); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 147d7229879..b98b992f8e7 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -22,8 +22,8 @@ TRACE_2("params",_unit,_explosive); if (GVAR(ExplodeOnDefuse) && {(random 1.0) < (getNumber (ConfigFile >> "CfgAmmo" >> typeOf _explosive >> QGVAR(explodeOnDefuseChance)))}) exitWith { TRACE_1("exploding on defuse",_explosive); [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); - [QGVAR(explodeOnDefuse), [_explosive, _unit]] call EFUNC(common,globalEvent); + [QGVAR(explodeOnDefuse), [_explosive, _unit]] call CBA_fnc_globalEvent; }; _unit action ["Deactivate", _unit, _explosive]; -[QGVAR(defuse), [_explosive, _unit]] call EFUNC(common,globalEvent); +[QGVAR(defuse), [_explosive, _unit]] call CBA_fnc_globalEvent; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 83cdb2fef80..455b768b979 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -95,6 +95,6 @@ if (isText(_triggerConfig >> "onPlace") && {[_unit,_explosive,_magazineClass,_tr _pitch = getNumber (_magazineTrigger >> "pitch"); //Globaly set the position and angle: -[QGVAR(place), [_explosive, _dir, _pitch, _unit]] call EFUNC(common,globalEvent); +[QGVAR(place), [_explosive, _dir, _pitch, _unit]] call CBA_fnc_globalEvent; _explosive diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 609e386e68e..9182064157d 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -48,7 +48,7 @@ class CfgVehicles { class ACE_deployRopes { displayName = CSTRING(Interaction_deployRopes); condition = QUOTE([ARR_2(_player, vehicle _player)] call FUNC(canDeployRopes)); - statement = QUOTE([ARR_2(QUOTE(QGVAR(deployRopes)), [vehicle _player])] call EFUNC(common,serverEvent)); + statement = QUOTE([ARR_2(QUOTE(QGVAR(deployRopes)), [vehicle _player])] call CBA_fnc_serverEvent); showDisabled = 0; priority = 1; }; diff --git a/addons/fastroping/XEH_postInit.sqf b/addons/fastroping/XEH_postInit.sqf index ae88feaa765..752ac2f7568 100644 --- a/addons/fastroping/XEH_postInit.sqf +++ b/addons/fastroping/XEH_postInit.sqf @@ -2,8 +2,8 @@ [QGVAR(deployRopes), { _this call FUNC(deployRopes); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; [QGVAR(startFastRope), { [FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf index 17991c538e5..b941bc4c13a 100644 --- a/addons/fastroping/functions/fnc_fastRope.sqf +++ b/addons/fastroping/functions/fnc_fastRope.sqf @@ -35,6 +35,6 @@ _deployedRopes set [_usableRopeIndex, _usableRope]; _vehicle setVariable [QGVAR(deployedRopes), _deployedRopes, true]; //Start server PFH asap -[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call EFUNC(common,serverEvent); +[QGVAR(startFastRope), [_unit, _vehicle, _usableRope, _usableRopeIndex, false]] call CBA_fnc_serverEvent; moveOut _unit; [FUNC(fastRopeLocalPFH), 0, [_unit, _vehicle, _usableRope, _usableRopeIndex, ACE_diagTime]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/fcs/XEH_postInit.sqf b/addons/fcs/XEH_postInit.sqf index 25fd09ba8c3..5fd2af9ccf5 100644 --- a/addons/fcs/XEH_postInit.sqf +++ b/addons/fcs/XEH_postInit.sqf @@ -13,11 +13,11 @@ if (!hasInterface) exitWith {}; uiNamespace setVariable ["ACE_dlgRangefinder", _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0,0,0,0]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayerVehicle", DFUNC(firedEH)] call EFUNC(common,addEventHandler); -["firedPlayerVehicleNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler); +["firedPlayerVehicle", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["firedPlayerVehicleNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; // Register event for global updates -[QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call EFUNC(common,addEventHandler); +[QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call CBA_fnc_addEventHandler; diff --git a/addons/finger/XEH_postInit.sqf b/addons/finger/XEH_postInit.sqf index 94a22d7224d..e36872dc8d0 100644 --- a/addons/finger/XEH_postInit.sqf +++ b/addons/finger/XEH_postInit.sqf @@ -10,7 +10,7 @@ GVAR(pfeh_id) = -1; //If not enabled, dont't bother adding keybind or eventhandler if (!GVAR(enabled)) exitWith {}; - [QGVAR(fingered), {_this call FUNC(incomingFinger)}] call EFUNC(common,addEventHandler); + [QGVAR(fingered), {_this call FUNC(incomingFinger)}] call CBA_fnc_addEventHandler; ["ACE3 Common", QGVAR(finger), @@ -20,4 +20,4 @@ GVAR(pfeh_id) = -1; }, {false}, [41, [true, false, false]], true] call CBA_fnc_addKeybind; // Shift + Tilda (hold) -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/finger/functions/fnc_keyPress.sqf b/addons/finger/functions/fnc_keyPress.sqf index 1ce83d62dc5..e957a1f72d5 100644 --- a/addons/finger/functions/fnc_keyPress.sqf +++ b/addons/finger/functions/fnc_keyPress.sqf @@ -55,7 +55,7 @@ _nearbyMen = (ACE_player nearObjects ["CAManBase", (GVAR(maxRange) + 2)]); TRACE_1("sending finger to",_sendFingerToPlayers); -[QGVAR(fingered), _sendFingerToPlayers, [ACE_player, _fingerPosPrecise]] call EFUNC(common,targetEvent); +[QGVAR(fingered), [ACE_player, _fingerPosPrecise], _sendFingerToPlayers] call CBA_fnc_targetEvent; ACE_player playActionNow "GestureGo"; diff --git a/addons/frag/XEH_postInit.sqf b/addons/frag/XEH_postInit.sqf index 977866e24e2..6dc34340b93 100644 --- a/addons/frag/XEH_postInit.sqf +++ b/addons/frag/XEH_postInit.sqf @@ -6,7 +6,7 @@ if(GVAR(EnableDebugTrace) && !isMultiplayer) then { }; if(isServer) then { - [QGVAR(frag_eh), { _this call FUNC(frago); }] call EFUNC(common,addEventHandler); + [QGVAR(frag_eh), { _this call FUNC(frago); }] call CBA_fnc_addEventHandler; }; ["SettingsInitialized", { @@ -14,16 +14,16 @@ if(isServer) then { if (!GVAR(enabled)) exitWith {}; // Register fire event handler - ["firedPlayer", DFUNC(fired)] call EFUNC(common,addEventHandler); - ["firedPlayerNonLocal", DFUNC(fired)] call EFUNC(common,addEventHandler); - ["firedNonPlayer", DFUNC(fired)] call EFUNC(common,addEventHandler); - ["firedPlayerVehicle", DFUNC(fired)] call EFUNC(common,addEventHandler); - ["firedPlayerVehicleNonLocal", DFUNC(fired)] call EFUNC(common,addEventHandler); - ["firedNonPlayerVehicle", DFUNC(fired)] call EFUNC(common,addEventHandler); + ["firedPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["firedPlayerNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["firedNonPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["firedPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["firedPlayerVehicleNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["firedNonPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; [FUNC(masterPFH), 0, []] call CBA_fnc_addPerFrameHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; //Cache for ammo type configs GVAR(cacheRoundsTypesToTrack) = createLocation ["ACE_HashLocation", [-10000,-10000,-10000], 0, 0]; diff --git a/addons/frag/functions/fnc_pfhRound.sqf b/addons/frag/functions/fnc_pfhRound.sqf index 8aa2303c0dd..759d74afc81 100644 --- a/addons/frag/functions/fnc_pfhRound.sqf +++ b/addons/frag/functions/fnc_pfhRound.sqf @@ -22,7 +22,7 @@ if (!alive _round) exitWith { if((diag_frameno - _firedFrame) > 1) then { //skip if deleted within a single frame if(_skip == 0) then { if((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1} ) then { - [QGVAR(frag_eh), _this] call EFUNC(common,serverEvent); + [QGVAR(frag_eh), _this] call CBA_fnc_serverEvent; }; }; }; diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf index d1df112606e..ce6f3ce1f2f 100644 --- a/addons/gforces/XEH_postInit.sqf +++ b/addons/gforces/XEH_postInit.sqf @@ -35,5 +35,5 @@ GVAR(pfID) = -1; GVAR(pfID) = -1; }; }; - }] call EFUNC(common,addEventHandler); -}] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; +}] call CBA_fnc_addEventHandler; diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 37edd7184b0..e27f3024338 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -50,10 +50,10 @@ GVAR(OldGlasses) = ""; private _currentGlasses = goggles _unit; if (GVAR(OldGlasses) != _currentGlasses) then { - ["GlassesChanged", [_unit, _currentGlasses]] call EFUNC(common,localEvent); + ["GlassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent; GVAR(OldGlasses) = _currentGlasses; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // add glasses eventhandlers ["GlassesChanged", { @@ -68,7 +68,7 @@ GVAR(OldGlasses) = ""; } else { call FUNC(removeGlassesEffect); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["GlassesCracked", { params ["_unit"]; @@ -94,7 +94,7 @@ GVAR(OldGlasses) = ""; }, _unit, 25] call EFUNC(common,waitAndExecute); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // check goggles private _fnc_checkGoggles = { @@ -111,8 +111,8 @@ private _fnc_checkGoggles = { }; }; -["cameraViewChanged", _fnc_checkGoggles] call EFUNC(common,addEventHandler); -["activeCameraChanged", _fnc_checkGoggles] call EFUNC(common,addEventHandler); +["cameraViewChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; +["activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; // goggles effects main PFH [{ @@ -135,4 +135,4 @@ private _fnc_checkGoggles = { }, 0.5, []] call CBA_fnc_addPerFrameHandler; // Register fire event handler -["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/goggles/functions/fnc_handleExplosion.sqf b/addons/goggles/functions/fnc_handleExplosion.sqf index b5c71a3d94b..0da7e06a8cb 100644 --- a/addons/goggles/functions/fnc_handleExplosion.sqf +++ b/addons/goggles/functions/fnc_handleExplosion.sqf @@ -27,7 +27,7 @@ _config = configFile >> "CfgGlasses" >> goggles _unit; if ((_this select 1) call FUNC(GetExplosionIndex) < getNumber (_config >> "ACE_Resistance")) exitWith {true}; if !([_unit] call FUNC(isGogglesVisible)) exitWith { - ["GlassesCracked", [_unit]] call EFUNC(common,localEvent); + ["GlassesCracked", [_unit]] call CBA_fnc_localEvent; true }; @@ -46,5 +46,5 @@ if (getText (_config >> "ACE_OverlayCracked") != "") then { (GLASSDISPLAY displayCtrl 10650) ctrlSetText getText (_config >> "ACE_OverlayCracked"); }; -["GlassesCracked", [_unit]] call EFUNC(common,localEvent); +["GlassesCracked", [_unit]] call CBA_fnc_localEvent; true diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf index d4cc01f06fa..df670338539 100644 --- a/addons/grenades/XEH_postInit.sqf +++ b/addons/grenades/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" -["flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call EFUNC(common,addEventHandler); +["flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; @@ -25,6 +25,6 @@ GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; // Register fire event handler -["firedPlayer", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler); -["firedPlayerNonLocal", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler); -["firedNonPlayer", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["firedPlayerNonLocal", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["firedNonPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index 73c10997bab..5518f5967bc 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -21,5 +21,5 @@ TRACE_1("params",_projectile); if (alive _projectile) then { playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - ["flashbangExplosion", [getPosASL _projectile]] call EFUNC(common,globalEvent); + ["flashbangExplosion", [getPosASL _projectile]] call CBA_fnc_globalEvent; }; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index fdd61ccfde8..1131ec7823a 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -28,8 +28,8 @@ GVAR(volumeAttenuation) = 1; [FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler; // Update veh attunation when player veh changes - ["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler); - ["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call EFUNC(common,addEventHandler); + ["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; + ["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; // Reset deafness on respawn (or remote control player switch) ["playerChanged", { @@ -38,8 +38,8 @@ GVAR(volumeAttenuation) = 1; ACE_player setVariable [QGVAR(deaf), false]; GVAR(time3) = 0; [] call FUNC(updateHearingProtection); - }] call EFUNC(common,addEventhandler); + }] call CBA_fnc_addEventHandler; // Update protection on possible helmet change - ["playerInventoryChanged", {[] call FUNC(updateHearingProtection);}] call EFUNC(common,addEventhandler); -}] call EFUNC(common,addEventHandler); + ["playerInventoryChanged", {[] call FUNC(updateHearingProtection);}] call CBA_fnc_addEventHandler; +}] call CBA_fnc_addEventHandler; diff --git a/addons/huntir/XEH_postInit.sqf b/addons/huntir/XEH_postInit.sqf index 0c518dfceab..5aaa50be52d 100644 --- a/addons/huntir/XEH_postInit.sqf +++ b/addons/huntir/XEH_postInit.sqf @@ -10,5 +10,5 @@ GVAR(ELEVAT) = 0.01; // Register fire event handler // Don't run for non players, as they are too dumb to launch huntirs anyway -["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); -["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 4e4e6025a32..f9ac5ff1d7b 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -13,17 +13,17 @@ GVAR(ParsedTextCached) = []; if (({_x == _name} count [QGVAR(colorTextMax), QGVAR(colorTextMin), QGVAR(colorShadowMax), QGVAR(colorShadowMin), QGVAR(textSize), QGVAR(shadowSetting)]) == 1) then { [] call FUNC(setupTextColors); }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; ["SettingsInitialized", { //Setup text/shadow/size/color settings matrix [] call FUNC(setupTextColors); // Install the render EH on the main display addMissionEventHandler ["Draw3D", DFUNC(render)]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; //Add Actions to Houses: -["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call CBA_fnc_addEventHandler; ["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)), { @@ -51,17 +51,17 @@ GVAR(ParsedTextCached) = []; GVAR(actionSelected) = false; [GVAR(openedMenuType), false] call FUNC(keyUp); -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; // disable firing while the interact menu is is is opened -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventHandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // background options ["interactMenuOpened", { if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), true] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==2) then {0 cutRsc[QGVAR(menuBackground), "PLAIN", 1, false];}; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["interactMenuClosed", { if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index b71130a2481..f1cbe9318e1 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -102,6 +102,6 @@ if (GVAR(openedMenuType) == 0) then { GVAR(startHoverTime) = -1000; }; -["interactMenuOpened", [_menuType]] call EFUNC(common,localEvent); +["interactMenuOpened", [_menuType]] call CBA_fnc_localEvent; true diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index b6eae6f5276..8658caf665a 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -28,7 +28,7 @@ if(GVAR(actionSelected)) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["clearConditionCaches", []] call EFUNC(common,localEvent); + ["clearConditionCaches", []] call CBA_fnc_localEvent; // exit scope if selecting an action on key release is disabled if (!(GVAR(actionOnKeyRelease)) && !_calledByClicking) exitWith {}; @@ -40,11 +40,11 @@ if(GVAR(actionSelected)) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["clearConditionCaches", []] call EFUNC(common,localEvent); + ["clearConditionCaches", []] call CBA_fnc_localEvent; }; }; -["interactMenuClosed", [GVAR(openedMenuType)]] call EFUNC(common,localEvent); +["interactMenuClosed", [GVAR(openedMenuType)]] call CBA_fnc_localEvent; GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 117a828b0bb..dff117528cf 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -97,7 +97,7 @@ if (GVAR(openedMenuType) >= 0) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["clearConditionCaches", []] call EFUNC(common,localEvent); + ["clearConditionCaches", []] call CBA_fnc_localEvent; // Check the action conditions private _actionData = GVAR(selectedAction) select 0; @@ -106,7 +106,7 @@ if (GVAR(openedMenuType) >= 0) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["clearConditionCaches", []] call EFUNC(common,localEvent); + ["clearConditionCaches", []] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 66e0cb13412..d6530db4c95 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -3,30 +3,30 @@ ACE_Modifier = 0; -["pardon", {(_this select 0) addRating -rating (_this select 0)}] call EFUNC(common,addEventHandler); +["pardon", {(_this select 0) addRating -rating (_this select 0)}] call CBA_fnc_addEventHandler; ["getDown", { params ["_target"]; _target setUnitPos "DOWN"; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["sendAway", { params ["_unit", "_position"]; _unit setUnitPos "AUTO"; _unit doMove _position; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["lampTurnOn", { params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; {if((_x select 1) == _disabledLampDMG) then {_lamp setHit [_x select 0, 0];};nil} count _hitPointsDamage; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["lampTurnOff", { params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; {_lamp setHit [_x select 0, (_x select 1) max _disabledLampDMG];nil} count _hitPointsDamage; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; @@ -40,7 +40,7 @@ GVAR(isOpeningDoor) = false; private _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 1)); [_message] call EFUNC(common,displayTextStructured); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // add keybinds ["ACE3 Common", QGVAR(openDoor), localize LSTRING(OpenDoor), { diff --git a/addons/interaction/functions/fnc_doBecomeLeader.sqf b/addons/interaction/functions/fnc_doBecomeLeader.sqf index b2a423e0c02..de051f0135d 100644 --- a/addons/interaction/functions/fnc_doBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_doBecomeLeader.sqf @@ -17,4 +17,4 @@ params ["_unit"]; -["selectLeader", units group _unit, [group _unit, _unit]] call EFUNC(common,targetEvent); +["selectLeader", [group _unit, _unit], units group _unit] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index 2dc9711e2c4..e3cdbd6e0e8 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -27,7 +27,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); { if (count weapons _x == 0 && {random 1 < _chance}) then { - ["getDown", [_x], [_x]] call EFUNC(common,targetEvent); + ["getDown", [_x], [_x]] call CBA_fnc_targetEvent; }; false } count (_target nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 1ada3843c1c..e3f8bc50646 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -31,5 +31,5 @@ if (_unit == ACE_player) then { _message = format [localize LSTRING(JoinedTeam), _team]; }; - ["displayTextStructured", _message] call EFUNC(common,localEvent); + ["displayTextStructured", _message] call CBA_fnc_localEvent; }; diff --git a/addons/interaction/functions/fnc_pardon.sqf b/addons/interaction/functions/fnc_pardon.sqf index 00fe2f6d172..5ce36897fd2 100644 --- a/addons/interaction/functions/fnc_pardon.sqf +++ b/addons/interaction/functions/fnc_pardon.sqf @@ -15,4 +15,4 @@ params ["", "_target"]; -["pardon", [_target], [_target]] call EFUNC(common,targetEvent); +["pardon", [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_passMagazine.sqf b/addons/interaction/functions/fnc_passMagazine.sqf index 7e2f7b93568..34c3b559be9 100644 --- a/addons/interaction/functions/fnc_passMagazine.sqf +++ b/addons/interaction/functions/fnc_passMagazine.sqf @@ -51,4 +51,4 @@ _target addMagazine [_magToPassClassName, _magToPassAmmoCount]; _playerName = [_player] call EFUNC(common,getName); _magToPassDisplayName = getText (configFile >> "CfgMagazines" >> _magToPassClassName >> "displayName"); -["displayTextStructured", [_target], [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target]] call EFUNC(common,targetEvent); \ No newline at end of file +["displayTextStructured", [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target], [_target]] call CBA_fnc_targetEvent; \ No newline at end of file diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index bdeaf290129..f2cc7c15a38 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -22,4 +22,4 @@ private _newVelocity = vectorDir _unit; _newVelocity set [2, 0.25]; _newVelocity = _newVelocity vectorMultiply 2; -["setVelocity", [_boat], [_boat, _newVelocity]] call EFUNC(common,targetEvent); +["setVelocity", [_boat, _newVelocity], [_boat]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index 546ab9ba3f3..9fe3c2b1c36 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -31,7 +31,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); _position = getPosASL _unit vectorAdd (eyeDirection _unit vectorMultiply SEND_DISTANCE); _position set [2, 0]; - ["sendAway", [_x], [_x, _position]] call EFUNC(common,targetEvent); + ["sendAway", [_x, _position], [_x]] call CBA_fnc_targetEvent; }; false } count (_unit nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index 20a2d45deaa..199bc6c9f7c 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -31,8 +31,8 @@ private _hitPointsDamage = []; //if lamp is on turn it off private _eventName = ["lampTurnOn", "lampTurnOff"] select _isOn; if(local _lamp) then { - [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call EFUNC(common,localEvent); + [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call CBA_fnc_localEvent; } else { - [_eventName, [_lamp], [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call EFUNC(common,targetEvent); + [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG], [_lamp]] call CBA_fnc_targetEvent; }; _lamp setVariable ["ACE_lampOn", !_isOn, true]; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 2061f1806fb..6be7402bcd4 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -25,4 +25,4 @@ if (_unit == ACE_player) then { _unit playActionNow "PutDown"; -["tapShoulder", [_target], [_target, _shoulderNum]] call EFUNC(common,targetEvent); +["tapShoulder", [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/laser/XEH_post_init.sqf b/addons/laser/XEH_post_init.sqf index a9f0e82be39..27d5611ae9b 100644 --- a/addons/laser/XEH_post_init.sqf +++ b/addons/laser/XEH_post_init.sqf @@ -2,6 +2,6 @@ #include "initKeybinds.sqf" -["laser_laserOn", {_this call DFUNC(handleLaserOn)}] call EFUNC(common,addEventHandler); -["laser_laserOff", {_this call DFUNC(handleLaserOff)}] call EFUNC(common,addEventHandler); +["laser_laserOn", {_this call DFUNC(handleLaserOn)}] call CBA_fnc_addEventHandler; +["laser_laserOff", {_this call DFUNC(handleLaserOff)}] call CBA_fnc_addEventHandler; diff --git a/addons/laser/functions/fnc_laserOff.sqf b/addons/laser/functions/fnc_laserOff.sqf index 7899ec12539..b7d03a422c2 100644 --- a/addons/laser/functions/fnc_laserOff.sqf +++ b/addons/laser/functions/fnc_laserOff.sqf @@ -13,4 +13,4 @@ private ["_uuid"]; _uuid = _this select 0; -["laser_laserOff", [_uuid]] call EFUNC(common,globalEvent); +["laser_laserOff", [_uuid]] call CBA_fnc_globalEvent; diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf index 901fa04b9ad..e206167015a 100644 --- a/addons/laser/functions/fnc_laserOn.sqf +++ b/addons/laser/functions/fnc_laserOn.sqf @@ -19,5 +19,5 @@ private ["_uuid", "_args"]; _uuid = format["%1%2%3", floor ACE_diagTime, floor random 1000, floor random 10000]; _args = [_uuid, _this]; -["laser_laserOn", _args] call EFUNC(common,globalEvent); +["laser_laserOn", _args] call CBA_fnc_globalEvent; _uuid; diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index c478fe33fd0..5b9ac08c531 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" // fixes laser when being captured. Needed, because the selectionPosition of the right hand is used -["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call EFUNC(common,addEventHandler); +["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; @@ -32,4 +32,4 @@ GVAR(nearUnits) = []; addMissionEventHandler ["Draw3D", { call FUNC(onDraw); }]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index 25f452882c5..b1183ab25e5 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -24,7 +24,7 @@ _onFinish = { (_this select 0) params ["_caller", "_target"]; _caller removeItem "ACE_UAVBattery"; playSound3D [QUOTE(PATHTO_R(sounds\exchange_battery.ogg)), objNull, false, getPosASL _caller, 1, 1, 10]; - ["setFuel", [_target], [_target, 1]] call EFUNC(common,targetEvent); //setFuel is local + ["setFuel", [_target, 1], [_target]] call CBA_fnc_targetEvent; //setFuel is local }; _onFailure = { diff --git a/addons/logistics_wirecutter/XEH_clientInit.sqf b/addons/logistics_wirecutter/XEH_clientInit.sqf index c46cab29f14..aaead1bdcc6 100644 --- a/addons/logistics_wirecutter/XEH_clientInit.sqf +++ b/addons/logistics_wirecutter/XEH_clientInit.sqf @@ -2,4 +2,4 @@ if (!hasInterface) exitWith {}; -["interactMenuOpened", {_this call FUNC(interactEH)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {_this call FUNC(interactEH)}] call CBA_fnc_addEventHandler; diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index f3b3ba6106c..bdc75992224 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -104,7 +104,7 @@ call FUNC(determineZoom); if ((GVAR(flashlightInUse) != "") && !(GVAR(flashlightInUse) in _flashlights)) then { GVAR(flashlightInUse) = ""; }; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; if (GVAR(mapGlow)) then { ["visibleMapChanged", { @@ -127,10 +127,10 @@ call FUNC(determineZoom); [""] call FUNC(flashlightGlow); }; }; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; }; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // hide clock on map if player has no watch GVAR(hasWatch) = true; @@ -144,4 +144,4 @@ GVAR(hasWatch) = true; if (_x isKindOf ["ItemWatch", configFile >> "CfgWeapons"]) exitWith {GVAR(hasWatch) = true;}; false } count (assignedItems ACE_player); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/map_gestures/XEH_postInit.sqf b/addons/map_gestures/XEH_postInit.sqf index 233ee23c04b..a1ce8871b71 100644 --- a/addons/map_gestures/XEH_postInit.sqf +++ b/addons/map_gestures/XEH_postInit.sqf @@ -18,4 +18,4 @@ if (!hasInterface) exitWith {}; [_pfhId] call CBA_fnc_removePerFrameHandler; }, 1, []] call CBA_fnc_addPerFrameHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/map_gestures/XEH_serverPostInit.sqf b/addons/map_gestures/XEH_serverPostInit.sqf index bde1cdc55be..31626b7881d 100644 --- a/addons/map_gestures/XEH_serverPostInit.sqf +++ b/addons/map_gestures/XEH_serverPostInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -[EVENT_PLAYER_HAS_NO_OWNER_ID, FUNC(assignClientIDOnServer)] call EFUNC(common,addEventHandler); +[EVENT_PLAYER_HAS_NO_OWNER_ID, FUNC(assignClientIDOnServer)] call CBA_fnc_addEventHandler; diff --git a/addons/map_gestures/functions/fnc_transmit.sqf b/addons/map_gestures/functions/fnc_transmit.sqf index c9dc487db22..ab975a076c5 100644 --- a/addons/map_gestures/functions/fnc_transmit.sqf +++ b/addons/map_gestures/functions/fnc_transmit.sqf @@ -31,7 +31,7 @@ if (!GVAR(EnableTransmit) || !visibleMap) exitWith { { _ownerID = _x getVariable QGVAR(owner_id); if (isNil "_ownerID") then { - [EVENT_PLAYER_HAS_NO_OWNER_ID, [name _x]] call EFUNC(common,serverEvent); + [EVENT_PLAYER_HAS_NO_OWNER_ID, [name _x]] call CBA_fnc_serverEvent; } else { _playerOwnerID = ACE_player getVariable QGVAR(owner_id); if (!isNil "_playerOwnerID" && _ownerID != _playerOwnerID) then { diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index 06cb8eda3dd..eec175077e7 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -77,4 +77,4 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; // Cancel drawing call FUNC(cancelDrawing); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/maptools/XEH_preInit.sqf b/addons/maptools/XEH_preInit.sqf index 3022d537531..aada5db223e 100644 --- a/addons/maptools/XEH_preInit.sqf +++ b/addons/maptools/XEH_preInit.sqf @@ -10,10 +10,10 @@ if (isServer) then { }; //Add Event Handlers: -["drawing_removeLineMarker", FUNC(removeLineMarker) ] call EFUNC(common,addEventHandler); -["drawing_addLineMarker", FUNC(addLineMarker) ] call EFUNC(common,addEventHandler); +["drawing_removeLineMarker", FUNC(removeLineMarker) ] call CBA_fnc_addEventHandler; +["drawing_addLineMarker", FUNC(addLineMarker) ] call CBA_fnc_addEventHandler; -["drawing_requestMarkers", FUNC(copyMapRemoteSend) ] call EFUNC(common,addEventHandler); -["drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers) ] call EFUNC(common,addEventHandler); +["drawing_requestMarkers", FUNC(copyMapRemoteSend) ] call CBA_fnc_addEventHandler; +["drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers) ] call CBA_fnc_addEventHandler; ADDON = true; diff --git a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf index 551019f900b..fdfe53e7c44 100644 --- a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf +++ b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf @@ -14,4 +14,4 @@ params ["_requester"]; -["drawing_sendbackMarkers", _requester, [GVAR(drawing_lineMarkers)]] call EFUNC(common,targetEvent); +["drawing_sendbackMarkers", [GVAR(drawing_lineMarkers)], _requester] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_copyMapStart.sqf b/addons/maptools/functions/fnc_copyMapStart.sqf index 7295f6f4993..a7d1a016a79 100644 --- a/addons/maptools/functions/fnc_copyMapStart.sqf +++ b/addons/maptools/functions/fnc_copyMapStart.sqf @@ -19,4 +19,4 @@ params ["_player", "_target"]; -["drawing_requestMarkers", _target, [_player]] call EFUNC(common,targetEvent); +["drawing_requestMarkers", [_player], _target] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index a83522ac910..4a8c6153278 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -58,7 +58,7 @@ if (_code == DIK_DELETE) exitWith { if (_lambdaLong >= 0 && _lambdaLong <= _magDiffVector && _lambdaTrasAbs <= 5) exitWith { // Delete the line marker if (GVAR(drawing_syncMarkers)) then { - ["drawing_removeLineMarker", [_x select 0]] call EFUNC(common,globalEvent); + ["drawing_removeLineMarker", [_x select 0]] call CBA_fnc_globalEvent; } else { deleteMarkerLocal (_x select 0); GVAR(drawing_lineMarkers) = GVAR(drawing_lineMarkers) - [_x]; diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index cb1a4598adb..e0bdbbe1307 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -42,7 +42,7 @@ if (_dir != 1) then { // Already drawing -> Add tempLineMarker to permanent list if (GVAR(drawing_syncMarkers)) then { deleteMarkerLocal (GVAR(drawing_tempLineMarker) select 0); - ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call EFUNC(common,globalEvent); + ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call CBA_fnc_globalEvent; // Log who drew on the briefing screen [ACE_INFOFORMAT_1("Player %1 drew on the briefing screen", profileName)] call EFUNC(common,serverLog); } else { diff --git a/addons/markers/XEH_postInit.sqf b/addons/markers/XEH_postInit.sqf index 7b5924d680f..6e1af95a50d 100644 --- a/addons/markers/XEH_postInit.sqf +++ b/addons/markers/XEH_postInit.sqf @@ -2,15 +2,15 @@ #include "script_component.hpp" // recieve remote marker data -[QGVAR(setMarkerNetwork), {_this call DFUNC(setMarkerNetwork)}] call EFUNC(common,addEventHandler); +[QGVAR(setMarkerNetwork), {_this call DFUNC(setMarkerNetwork)}] call CBA_fnc_addEventHandler; // recieve marker data for JIP -[QGVAR(setMarkerJIP), {_this call DFUNC(setMarkerJIP)}] call EFUNC(common,addEventHandler); +[QGVAR(setMarkerJIP), {_this call DFUNC(setMarkerJIP)}] call CBA_fnc_addEventHandler; // request marker data for JIP if (isMultiplayer && {!isServer} && {hasInterface}) then { GVAR(localLogic) = (createGroup sideLogic) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; - [QGVAR(sendMarkersJIP), [GVAR(localLogic)]] call EFUNC(common,serverEvent); + [QGVAR(sendMarkersJIP), [GVAR(localLogic)]] call CBA_fnc_serverEvent; }; GVAR(mapDisplaysWithDrawEHs) = []; diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf index 53081177544..da62205b51b 100644 --- a/addons/markers/XEH_preInit.sqf +++ b/addons/markers/XEH_preInit.sqf @@ -50,6 +50,6 @@ if (isNil QGVAR(MarkerColorsCache)) then { }; //Server Sync JIP markers: -[QGVAR(sendMarkersJIP), FUNC(sendMarkersJIP)] call EFUNC(common,addEventHandler); +[QGVAR(sendMarkersJIP), FUNC(sendMarkersJIP)] call CBA_fnc_addEventHandler; ADDON = true; diff --git a/addons/markers/functions/fnc_placeMarker.sqf b/addons/markers/functions/fnc_placeMarker.sqf index 5b0783b454a..3e61c0d1332 100644 --- a/addons/markers/functions/fnc_placeMarker.sqf +++ b/addons/markers/functions/fnc_placeMarker.sqf @@ -30,7 +30,7 @@ if (_closeNum == 1) then { GETGVAR(currentMarkerPosition,[]), GETGVAR(currentMarkerAngle,0) ] - ]] call EFUNC(common,globalEvent); + ]] call CBA_fnc_globalEvent; }, []] call EFUNC(common,execNextFrame); }; diff --git a/addons/markers/functions/fnc_sendMarkersJIP.sqf b/addons/markers/functions/fnc_sendMarkersJIP.sqf index 5b1a779b27e..e63a32b8438 100644 --- a/addons/markers/functions/fnc_sendMarkersJIP.sqf +++ b/addons/markers/functions/fnc_sendMarkersJIP.sqf @@ -20,6 +20,6 @@ TRACE_1("params",_logic); [ QGVAR(setMarkerJIP), - [_logic], - [GETGVAR(allMapMarkers,[]), GETGVAR(allMapMarkersProperties,[])] -] call EFUNC(common,targetEvent); + [GETGVAR(allMapMarkers,[]), GETGVAR(allMapMarkersProperties,[])], + [_logic] +] call CBA_fnc_targetEvent; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index f0d3b907f68..3a082c85d1e 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -6,32 +6,32 @@ GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "A GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"]; GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; -["medical_propagateWound", FUNC(onPropagateWound)] call EFUNC(common,addEventHandler); -["medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call EFUNC(common,addEventHandler); -["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call EFUNC(common,addEventHandler); +["medical_propagateWound", FUNC(onPropagateWound)] call CBA_fnc_addEventHandler; +["medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call CBA_fnc_addEventHandler; +["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; //Treatment EventHandlers: -["actionCheckBloodPressureLocal", DFUNC(actionCheckBloodPressureLocal)] call EFUNC(common,addEventHandler); -["actionCheckPulseLocal", DFUNC(actionCheckPulseLocal)] call EFUNC(common,addEventHandler); -["addToInjuredCollection", DFUNC(addToInjuredCollection)] call EFUNC(common,addEventHandler); -["addToMedicalLog", DFUNC(addToLog)] call EFUNC(common,addEventHandler); -["addToTriageCard", DFUNC(addToTriageCard)] call EFUNC(common,addEventHandler); -["setDead", DFUNC(setDead)] call EFUNC(common,addEventHandler); -["setHitPointDamage", DFUNC(setHitPointDamage)] call EFUNC(common,addEventHandler); -["setUnconscious", DFUNC(setUnconscious)] call EFUNC(common,addEventHandler); -["treatmentAdvanced_bandageLocal", DFUNC(treatmentAdvanced_bandageLocal)] call EFUNC(common,addEventHandler); -["treatmentAdvanced_CPRLocal", DFUNC(treatmentAdvanced_CPRLocal)] call EFUNC(common,addEventHandler); -["treatmentAdvanced_fullHealLocal", DFUNC(treatmentAdvanced_fullHealLocal)] call EFUNC(common,addEventHandler); -["treatmentAdvanced_medicationLocal", DFUNC(treatmentAdvanced_medicationLocal)] call EFUNC(common,addEventHandler); -["treatmentBasic_bandageLocal", DFUNC(treatmentBasic_bandageLocal)] call EFUNC(common,addEventHandler); -["treatmentBasic_bloodbagLocal", DFUNC(treatmentBasic_bloodbagLocal)] call EFUNC(common,addEventHandler); -["treatmentBasic_morphineLocal", DFUNC(treatmentBasic_morphineLocal)] call EFUNC(common,addEventHandler); -["treatmentIVLocal", DFUNC(treatmentIVLocal)] call EFUNC(common,addEventHandler); -["treatmentTourniquetLocal", DFUNC(treatmentTourniquetLocal)] call EFUNC(common,addEventHandler); -["actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call EFUNC(common,addEventHandler); +["actionCheckBloodPressureLocal", DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; +["actionCheckPulseLocal", DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; +["addToInjuredCollection", DFUNC(addToInjuredCollection)] call CBA_fnc_addEventHandler; +["addToMedicalLog", DFUNC(addToLog)] call CBA_fnc_addEventHandler; +["addToTriageCard", DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; +["setDead", DFUNC(setDead)] call CBA_fnc_addEventHandler; +["setHitPointDamage", DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; +["setUnconscious", DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; +["treatmentAdvanced_bandageLocal", DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; +["treatmentAdvanced_CPRLocal", DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; +["treatmentAdvanced_fullHealLocal", DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; +["treatmentAdvanced_medicationLocal", DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; +["treatmentBasic_bandageLocal", DFUNC(treatmentBasic_bandageLocal)] call CBA_fnc_addEventHandler; +["treatmentBasic_bloodbagLocal", DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; +["treatmentBasic_morphineLocal", DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; +["treatmentIVLocal", DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; +["treatmentTourniquetLocal", DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; +["actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; //Handle Deleting Bodies on Server: -if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call EFUNC(common,addEventHandler);}; +if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; ["medical_onUnconscious", { params ["_unit", "_status"]; @@ -48,7 +48,7 @@ if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call EFUNC(commo _unit setVariable ["acre_sys_core_isDisabled", false, true]; }; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Initialize all effects @@ -287,18 +287,18 @@ GVAR(lastHeartBeatSound) = ACE_time; {((_this select 0) getVariable [QGVAR(inReviveState), false])}, {((_this select 0) getVariable ["ACE_isDead", false])} ] call FUNC(addUnconsciousCondition); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Prevent all types of interaction while unconscious // @todo: probably remove this when CBA keybind hold key works properly ["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition); // Item Event Handler -["playerInventoryChanged", FUNC(itemCheck)] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(itemCheck)] call CBA_fnc_addEventHandler; if (hasInterface) then { ["PlayerJip", { ACE_LOGINFO("JIP Medical init for player."); [player] call FUNC(init); - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; }; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf index 4d821ea6b01..062284d7e61 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf @@ -16,7 +16,7 @@ params ["_caller", "_target", "_selectionName"]; if (local _target) then { - ["actionCheckBloodPressureLocal", [_caller, _target, _selectionName]] call EFUNC(common,localEvent); + ["actionCheckBloodPressureLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["actionCheckBloodPressureLocal", _target, [_caller, _target, _selectionName]] call EFUNC(common,targetEvent); + ["actionCheckBloodPressureLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 0fd9394f921..ac162d70027 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -57,7 +57,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = ""; }; -["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent); +["displayTextStructured", [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckPulse.sqf b/addons/medical/functions/fnc_actionCheckPulse.sqf index 2c0a46c826f..a6bac8a8cb8 100644 --- a/addons/medical/functions/fnc_actionCheckPulse.sqf +++ b/addons/medical/functions/fnc_actionCheckPulse.sqf @@ -16,7 +16,7 @@ params ["_caller","_target", "_selectionName"]; if (local _target) then { - ["actionCheckPulseLocal", [_caller, _target, _selectionName]] call EFUNC(common,localEvent); + ["actionCheckPulseLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["actionCheckPulseLocal", _target, [_caller, _target, _selectionName]] call EFUNC(common,targetEvent); + ["actionCheckPulseLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index 83852f8042d..d5dd2d9ca57 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -49,7 +49,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = LSTRING(Check_Pulse_None); }; -["displayTextStructured", [_caller], [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller]] call EFUNC(common,targetEvent); +["displayTextStructured", [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index d69fa90c861..3ca9a66fcc8 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target"]; _output = [LSTRING(Check_Response_Unresponsive), LSTRING(Check_Response_Responsive)] select ([_target] call EFUNC(common,isAwake)); -["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); +["displayTextStructured", [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; [_target,"activity",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); [_target,"quick_view",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index ffb2583a15a..31684d722e7 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -43,4 +43,4 @@ if (alive _target) then { }; }; -["displayTextStructured", [_caller], [_genericMessages, 3.0, _caller]] call EFUNC(common,targetEvent); +["displayTextStructured", [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 41970e23d26..5c035872dac 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -18,7 +18,7 @@ private "_vehicle"; params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitWith { - ["displayTextStructured", [_caller], [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; if ([_target] call FUNC(isBeingCarried)) then { [_caller, _target] call EFUNC(dragging,dropObject_carry); diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index d7a316cab03..e9e40c36ad4 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -22,7 +22,7 @@ TRACE_2("params",_caller,_target); if (!local _target) exitWith { TRACE_1("running where local",local _target); - ["actionPlaceInBodyBag", [_target], [_caller, _target]] call EFUNC(common,targetEvent); + ["actionPlaceInBodyBag", [_caller, _target], [_target]] call CBA_fnc_targetEvent; objNull }; @@ -47,6 +47,6 @@ private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; _bodyBag setPosASL _position; _bodyBag setDir _direction; -["placedInBodyBag", [_target, _bodyBag]] call EFUNC(common,globalEvent); //hide and delete body on server +["placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server _bodyBag diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 660c3f9ff77..7bc90005afb 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -26,7 +26,7 @@ _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; // Check if there is a tourniquet on this bodypart if ((_tourniquets select _part) == 0) exitWith { _output = LSTRING(noTourniquetOnBodyPart); - ["displayTextStructured", [_caller], [_output, 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; // Removing the tourniquet @@ -44,7 +44,7 @@ TRACE_2("meds",_part,_delayedMedications); _x params ["", "", "_medPartNum"]; if (_part == _medPartNum) then { TRACE_1("delayed medication call after tourniquet removeal",_x); - ["treatmentAdvanced_medicationLocal", [_target], _x] call EFUNC(common,targetEvent); + ["treatmentAdvanced_medicationLocal", _x, [_target]] call CBA_fnc_targetEvent; _delayedMedications set [_forEachIndex, -1]; _updatedArray = true; }; diff --git a/addons/medical/functions/fnc_actionUnloadUnit.sqf b/addons/medical/functions/fnc_actionUnloadUnit.sqf index 705eeb88f53..2039c60ffe7 100644 --- a/addons/medical/functions/fnc_actionUnloadUnit.sqf +++ b/addons/medical/functions/fnc_actionUnloadUnit.sqf @@ -21,4 +21,4 @@ params ["_caller", "_target", ["_drag", false]]; if (vehicle _target == _target) exitWith {}; if (([_target] call EFUNC(common,isAwake))) exitWith {}; -["unloadPersonEvent", _target, [_target, vehicle _target, _caller]] call EFUNC(common,targetEvent); +["unloadPersonEvent", [_target, vehicle _target, _caller], _target] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf index cc8c0930712..2dd1abb29ac 100644 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf @@ -22,4 +22,4 @@ params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], [" _adjustment = _unit getVariable [QGVAR(heartRateAdjustments), []]; _adjustment pushBack [_value, _time, _callBack]; _unit setVariable [QGVAR(heartRateAdjustments), _adjustment ]; -["Medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call EFUNC(common,localEvent); +["Medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index 88c463d1eb5..a38fd719246 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -20,7 +20,7 @@ private ["_moment", "_logVarName", "_log","_newLog", "_logs"]; params ["_unit", "_type", "_message", "_arguments"]; if (!local _unit) exitWith { - ["addToMedicalLog", _unit, _this] call EFUNC(common,targetEvent); + ["addToMedicalLog", _this, _unit] call CBA_fnc_targetEvent; }; date params ["", "", "", "_hour", "_minute"]; @@ -43,7 +43,7 @@ if (count _log >= 8) then { _log pushBack [_message, _moment, _type, _arguments]; _unit setVariable [_logVarName, _log, true]; -["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call EFUNC(common,localEvent); +["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; _logs = _unit getVariable [QGVAR(allLogs), []]; if !(_logVarName in _logs) then { diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index ca54d8cd279..3b335b503f2 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -18,7 +18,7 @@ private ["_log", "_inList", "_amount"]; params ["_unit", "_newItem"]; if (!local _unit) exitWith { - ["addToTriageCard", _unit, _this] call EFUNC(common,targetEvent); + ["addToTriageCard", _this, _unit] call CBA_fnc_targetEvent; }; _log = _unit getVariable [QGVAR(triageCard), []]; @@ -41,4 +41,4 @@ if (!_inList) then { _log pushBack [_newItem, 1, ACE_gameTime]; }; _unit setVariable [QGVAR(triageCard), _log, true]; -["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call EFUNC(common,localEvent); +["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index 52b2cc11f91..96115cc3b84 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -18,7 +18,7 @@ params ["_unit", ["_force", false]]; if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {}; if !(local _unit) exitWith { - ["addVitalLoop", _unit, [_unit, _force]] call EFUNC(common,targetEvent); + ["addVitalLoop", [_unit, _force], _unit] call CBA_fnc_targetEvent; }; // Quit if the unit already has a vital loop, or is dead, unless it's forced diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 1e1816d5f52..82e1f34e5d1 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -42,7 +42,7 @@ if (_show) then { if (ACE_player distance _target > MAX_DISTANCE) exitwith { ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; [_idPFH] call CBA_fnc_removePerFrameHandler; - ["displayTextStructured", [ACE_player], [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent); + ["displayTextStructured", [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; }; disableSerialization; diff --git a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf index dff59fb2cf1..18edfce2947 100644 --- a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf +++ b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf @@ -19,6 +19,6 @@ params ["_unit", "_originOfrequest"]; if (local _unit && !(local _originOfrequest)) then { _openWounds = _unit getVariable [QGVAR(openWounds), []]; { - ["medical_propagateWound", [_originOfrequest], [_unit, _x]] call EFUNC(common,targetEvent); + ["medical_propagateWound", [_unit, _x], [_originOfrequest]] call CBA_fnc_targetEvent; } forEach _openWounds; }; diff --git a/addons/medical/functions/fnc_requestWoundSync.sqf b/addons/medical/functions/fnc_requestWoundSync.sqf index 1d7d6de53f0..705a3b58ef8 100644 --- a/addons/medical/functions/fnc_requestWoundSync.sqf +++ b/addons/medical/functions/fnc_requestWoundSync.sqf @@ -19,4 +19,4 @@ params [ "_target", "_caller"]; if (local _target || GVAR(level) < 2) exitWith {}; // if the target is local, we already got the most update to date information if (_target getVariable [QGVAR(isWoundSynced), false]) exitWith {}; _target setVariable [QGVAR(isWoundSynced), true]; -["medical_woundUpdateRequest", [_target], [_target, _caller]] call EFUNC(common,targetEvent); +["medical_woundUpdateRequest", [_target, _caller], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf index 311199b1b80..a5ae69259a6 100644 --- a/addons/medical/functions/fnc_serverRemoveBody.sqf +++ b/addons/medical/functions/fnc_serverRemoveBody.sqf @@ -21,7 +21,7 @@ params ["_target"]; TRACE_2("",_target,isPlayer _target); //Hide the body globaly -["hideObjectGlobal", [_target, true]] call EFUNC(common,serverEvent); +["hideObjectGlobal", [_target, true]] call CBA_fnc_serverEvent; if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];}; GVAR(bodiesToDelete) pushBack _target; diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index bf4a679bdcb..318a3a506da 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -21,7 +21,7 @@ if (_unit getVariable [QGVAR(inCardiacArrest),false]) exitWith {}; _unit setVariable [QGVAR(inCardiacArrest), true,true]; _unit setVariable [QGVAR(heartRate), 0]; -["Medical_onEnteredCardiacArrest", [_unit]] call EFUNC(common,localEvent); +["Medical_onEnteredCardiacArrest", [_unit]] call CBA_fnc_localEvent; [_unit, true] call FUNC(setUnconscious); _timeInCardiacArrest = 120 + round(random(600)); diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 061a28c081b..3ee1e8481d2 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -20,7 +20,7 @@ params ["_unit", ["_force", false], ["_delaySetDamage", false]]; if ((!alive _unit) || {_unit getVariable ["ACE_isDead", false]}) exitWith {true}; if (!local _unit) exitwith { - ["setDead", _unit, [_unit, _force]] call EFUNC(common,targetEvent); + ["setDead", [_unit, _force], _unit] call CBA_fnc_targetEvent; false; }; @@ -51,7 +51,7 @@ if (isPLayer _unit) then { _unit setVariable ["isDeadPlayer", true, true]; }; -["medical_onSetDead", [_unit]] call EFUNC(common,localEvent); +["medical_onSetDead", [_unit]] call CBA_fnc_localEvent; //Delay a frame before killing the unit via scripted damage //to avoid triggering the "Killed" Event twice (and having the wrong killer) diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 9abce575cd3..97d0c20b14d 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -26,7 +26,7 @@ params ["_unit", "_selection", "_damage", ["_disabled", false]]; // Unit isn't local, give function to machine where it is. if !(local _unit) exitWith { - ["setHitPointDamage", _unit, _this] call EFUNC(common,targetEvent); + ["setHitPointDamage", _this, _unit] call CBA_fnc_targetEvent; }; // Check if overall damage adjustment is disabled diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 25bc8aacb56..7a3f4f17dd8 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -39,7 +39,7 @@ if !(_set) exitWith { if !(!(isNull _unit) && {(_unit isKindOf "CAManBase") && ([_unit] call EFUNC(common,isAwake))}) exitWith{}; if (!local _unit) exitWith { - ["setUnconscious", _unit, [_unit, _set, _minWaitingTime, _force]] call EFUNC(common,targetEvent); + ["setUnconscious", [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; }; _unit setVariable ["ACE_isUnconscious", true, true]; @@ -122,4 +122,4 @@ _startingTime = ACE_time; // unconscious can't talk [_unit, "isUnconscious"] call EFUNC(common,muteUnit); -["medical_onUnconscious", [_unit, true]] call EFUNC(common,globalEvent); +["medical_onUnconscious", [_unit, true]] call CBA_fnc_globalEvent; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index d7f80edc357..f59a540bdc2 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -239,7 +239,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["displayTextStructured", [_caller], [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index 7d34a278f10..599f7fdad9e 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -22,9 +22,9 @@ if (alive _target && {(_target getVariable [QGVAR(inCardiacArrest), false] || _t [_target, "activity_view", LSTRING(Activity_cpr), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); if (local _target) then { - ["treatmentAdvanced_CPRLocal", [_caller, _target]] call EFUNC(common,localEvent); + ["treatmentAdvanced_CPRLocal", [_caller, _target]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_CPRLocal", _target, [_caller, _target]] call EFUNC(common,targetEvent); + ["treatmentAdvanced_CPRLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; }; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index 98881e1a282..bebc2d88a0f 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -27,9 +27,9 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitWith { }; if (local _target) then { - ["treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot]] call EFUNC(common,localEvent); + ["treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_bandageLocal", _target, [_target, _className, _selectionName, _specificSpot]] call EFUNC(common,targetEvent); + ["treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; }; /* { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index 5cfe73ab8d9..c657dfc8da4 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -90,7 +90,7 @@ _openWounds set [_mostEffectiveSpot, _mostEffectiveInjury]; _target setVariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; if (USE_WOUND_EVENT_SYNC) then { - ["medical_propagateWound", [_target, _mostEffectiveInjury]] call EFUNC(common,globalEvent); + ["medical_propagateWound", [_target, _mostEffectiveInjury]] call CBA_fnc_globalEvent; }; // Handle the reopening of bandaged wounds if (_impact > 0 && {GVAR(enableAdvancedWounds)}) then { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf index a5332df107f..6e7146719de 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf @@ -13,9 +13,9 @@ params ["_caller", "_target", "_selectionName", "_className", "_items"]; if (local _target) then { - ["treatmentAdvanced_fullHealLocal", [_caller, _target]] call EFUNC(common,localEvent); + ["treatmentAdvanced_fullHealLocal", [_caller, _target]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_fullHealLocal", _target, [_caller, _target]] call EFUNC(common,targetEvent); + ["treatmentAdvanced_fullHealLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index 185853b677c..95948c465c2 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -22,7 +22,7 @@ TRACE_5("params",_caller,_target,_selectionName,_className,_items); private _part = [_selectionName] call FUNC(selectionNameToNumber); -["treatmentAdvanced_medicationLocal", [_target], [_target, _className, _part]] call EFUNC(common,targetEvent); +["treatmentAdvanced_medicationLocal", [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; { if (_x != "") then { diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index 3e04ad3bd82..16d2192a2bf 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -21,7 +21,7 @@ private ["_hitSelections", "_hitPoints", "_point", "_damage"]; params ["_caller", "_target", "_selection", "_className"]; if (local _target) then { - ["treatmentBasic_bandageLocal", [_target, _selection]] call EFUNC(common,localEvent); + ["treatmentBasic_bandageLocal", [_target, _selection]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_bandageLocal", _target, [_target, _selection]] call EFUNC(common,targetEvent); + ["treatmentBasic_bandageLocal", [_target, _selection], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf index f28b6340386..94353055c0e 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target", "_treatmentClassname"]; if (local _target) then { - ["treatmentBasic_bloodbagLocal", [_target, _treatmentClassname]] call EFUNC(common,localEvent); + ["treatmentBasic_bloodbagLocal", [_target, _treatmentClassname]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_bloodbagLocal", _target, [_target, _treatmentClassname]] call EFUNC(common,targetEvent); + ["treatmentBasic_bloodbagLocal", [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf index d2f7de45a91..20e6d44f969 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf @@ -20,7 +20,7 @@ params ["_caller", "_target"]; if (local _target) then { - ["treatmentBasic_morphineLocal", [_target]] call EFUNC(common,localEvent); + ["treatmentBasic_morphineLocal", [_target]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_morphineLocal", _target, [_target]] call EFUNC(common,targetEvent); + ["treatmentBasic_morphineLocal", [_target], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index 29173fe23b9..d584caca834 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -23,9 +23,9 @@ if (count _items == 0) exitWith {false}; _removeItem = _items select 0; if (local _target) then { - ["treatmentIVLocal", [_target, _className]] call EFUNC(common,localEvent); + ["treatmentIVLocal", [_target, _className]] call CBA_fnc_localEvent; } else { - ["treatmentIVLocal", _target, [_target, _className]] call EFUNC(common,targetEvent); + ["treatmentIVLocal", [_target, _className], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index b410a899a44..b866aa65aff 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -28,22 +28,22 @@ if (count _items == 0) exitWith {false}; _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part == 0 || _part == 1) exitWith { - // ["displayTextStructured", [_caller], ["You cannot apply a CAT on this body part!"]] call EFUNC(common,targetEvent); + // ["displayTextStructured", ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; false; }; _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; if ((_tourniquets select _part) > 0) exitWith { _output = "There is already a tourniquet on this body part!"; // TODO localization - ["displayTextStructured", [_caller], [_output, 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; false; }; _removeItem = _items select 0; if (local _target) then { - ["treatmentTourniquetLocal", [_target, _removeItem, _selectionName]] call EFUNC(common,localEvent); + ["treatmentTourniquetLocal", [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; } else { - ["treatmentTourniquetLocal", _target, [_target, _removeItem, _selectionName]] call EFUNC(common,targetEvent); + ["treatmentTourniquetLocal", [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index a9ef534346f..aca94c5be6f 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -95,4 +95,4 @@ if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { [_target] call FUNC(addVitalLoop); }; -["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call EFUNC(common,localEvent); +["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index e78c80f3ec8..bda65fe4778 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -39,7 +39,7 @@ if (!alive _unit) exitWith { _unit setUnconscious false; [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); + ["medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , QGVAR(unconscious)); @@ -96,7 +96,7 @@ if !(_unit getVariable ["ACE_isUnconscious",false]) exitWith { }; _unit setVariable [QGVAR(vehicleAwakeAnim), nil]; - ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); + ["medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; // EXIT PFH [_idPFH] call CBA_fnc_removePerFrameHandler; }; diff --git a/addons/medical/functions/fnc_useItem.sqf b/addons/medical/functions/fnc_useItem.sqf index 71b5304c67d..e5ee6b05178 100644 --- a/addons/medical/functions/fnc_useItem.sqf +++ b/addons/medical/functions/fnc_useItem.sqf @@ -25,18 +25,18 @@ if (isNil QGVAR(setting_allowSharedEquipment)) then { if (GVAR(setting_allowSharedEquipment) && {[_patient, _item] call EFUNC(common,hasItem)}) exitWith { if (local _patient) then { - ["useItem", [_patient, _item]] call EFUNC(common,localEvent); + ["useItem", [_patient, _item]] call CBA_fnc_localEvent; } else { - ["useItem", _patient, [_patient, _item]] call EFUNC(common,targetEvent); + ["useItem", [_patient, _item], _patient] call CBA_fnc_targetEvent; }; [true, _patient]; }; if ([_medic, _item] call EFUNC(common,hasItem)) exitWith { if (local _medic) then { - ["useItem", [_medic, _item]] call EFUNC(common,localEvent); + ["useItem", [_medic, _item]] call CBA_fnc_localEvent; } else { - ["useItem", _medic, [_medic, _item]] call EFUNC(common,targetEvent); + ["useItem", [_medic, _item], _medic] call CBA_fnc_targetEvent; }; [true, _medic]; }; @@ -48,9 +48,9 @@ if ([vehicle _medic] call FUNC(isMedicalVehicle) && {vehicle _medic != _medic}) if ([_medic, _x] call FUNC(canAccessMedicalEquipment) && {([_x, _item] call EFUNC(common,hasItem))}) exitWith { _return = [true, _x]; if (local _x) then { - ["useItem", [_x, _item]] call EFUNC(common,localEvent); + ["useItem", [_x, _item]] call CBA_fnc_localEvent; } else { - ["useItem", _x, [_x, _item]] call EFUNC(common,targetEvent); + ["useItem", [_x, _item], _x] call CBA_fnc_targetEvent; }; }; } forEach _crew; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 92e2af341fd..864218c23af 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -14,7 +14,7 @@ GVAR(pendingReopen) = false; [GVAR(INTERACTION_TARGET)] call FUNC(openMenu); }, []] call EFUNC(common,execNextFrame); }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; ["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index d8d1fde35aa..f8b38d46fe0 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -81,10 +81,10 @@ GVAR(MenuPFHID) = [{ closeDialog 314412; //If we failed because of distance check, show UI message: if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then { - ["displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call EFUNC(common,localEvent); + ["displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call CBA_fnc_localEvent; }; }; }, 0, [_display]] call CBA_fnc_addPerFrameHandler; -["Medical_onMenuOpen", [ACE_player, _target]] call EFUNC(common,localEvent); +["Medical_onMenuOpen", [ACE_player, _target]] call CBA_fnc_localEvent; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index c918bcf4541..aecfc8141c5 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -20,7 +20,7 @@ _closeCode = { //Add Eventhandler: -["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call EFUNC(common,addEventHandler); +["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; //Global Variables to default: GVAR(gpsPositionASL) = [0,0,0]; diff --git a/addons/missileguidance/XEH_post_init.sqf b/addons/missileguidance/XEH_post_init.sqf index deaeef669d1..5fe3a665d80 100644 --- a/addons/missileguidance/XEH_post_init.sqf +++ b/addons/missileguidance/XEH_post_init.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -[QGVAR(handoff), {_this call FUNC(handleHandoff)}] call EFUNC(common,addEventHandler); +[QGVAR(handoff), {_this call FUNC(handleHandoff)}] call CBA_fnc_addEventHandler; diff --git a/addons/missileguidance/functions/fnc_doHandoff.sqf b/addons/missileguidance/functions/fnc_doHandoff.sqf index d99998c8c43..8d90a7c499c 100644 --- a/addons/missileguidance/functions/fnc_doHandoff.sqf +++ b/addons/missileguidance/functions/fnc_doHandoff.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" PARAMS_2(_target,_args); -[QGVAR(handoff), [_target, _args]] call EFUNC(common,globalEvent); \ No newline at end of file +[QGVAR(handoff), [_target, _args]] call CBA_fnc_globalEvent; \ No newline at end of file diff --git a/addons/mk6mortar/RscInGameUI.hpp b/addons/mk6mortar/RscInGameUI.hpp index a114896044f..864dcecda32 100644 --- a/addons/mk6mortar/RscInGameUI.hpp +++ b/addons/mk6mortar/RscInGameUI.hpp @@ -3,7 +3,7 @@ class RscInGameUI { class CA_IGUI_elements_group: RscControlsGroup {}; }; class ACE_Mk6_RscWeaponRangeArtillery: RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Mk6Mortar')])] call EFUNC(common,localEvent);); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Mk6Mortar')])] call CBA_fnc_localEvent;); controls[] = {"ACE_ChargeDisplay", "ACE_MILS_GROUP", "CA_IGUI_elements_group","CA_RangeElements_group"}; class ACE_ChargeDisplay: RscStructuredText { idc = 80085; diff --git a/addons/mk6mortar/XEH_postInit.sqf b/addons/mk6mortar/XEH_postInit.sqf index 9c098b8cdd8..4d0216d00ad 100644 --- a/addons/mk6mortar/XEH_postInit.sqf +++ b/addons/mk6mortar/XEH_postInit.sqf @@ -3,21 +3,21 @@ [QGVAR(addMagazine), { params ["_static", "_magazine"]; _static addMagazineTurret [_magazine,[0]]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; [QGVAR(removeMagazine), { params ["_static", "_magazine"]; _static removeMagazineTurret [_magazine,[0]]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; [QGVAR(setAmmo), { params ["_static", "_magazine","_ammoCount"]; _static setMagazineTurretAmmo [_magazine, _ammoCount, [0]]; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; -["initMortar", {_this call FUNC(mortarInit);}] call EFUNC(common,addEventHandler); +["initMortar", {_this call FUNC(mortarInit);}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; -["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call EFUNC(common,addEventHandler); -["infoDisplayChanged", {_this call FUNC(turretDisplayLoaded);}] call EFUNC(common,addEventHandler); +["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call CBA_fnc_addEventHandler; +["infoDisplayChanged", {_this call FUNC(turretDisplayLoaded);}] call CBA_fnc_addEventHandler; diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 2d921973d4d..8c3dfbae8cd 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -29,7 +29,7 @@ if (!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVa if (GVAR(useAmmoHandling) && {!(_mortar getVariable [QGVAR(initialized),false]) && !(_mortar getVariable [QGVAR(exclude),false])}) then { //wait for proper turret locality change [{ - ["initMortar", [_this], [_this]] call EFUNC(common,globalEvent); + ["initMortar", [_this], [_this]] call CBA_fnc_globalEvent; }, _mortar, 0.05] call EFUNC(common,waitAndExecute); }; }, _newVehicle] call EFUNC(common,runAfterSettingsInit); diff --git a/addons/mk6mortar/functions/fnc_loadMagazine.sqf b/addons/mk6mortar/functions/fnc_loadMagazine.sqf index 41b01621518..37fa2f4db48 100644 --- a/addons/mk6mortar/functions/fnc_loadMagazine.sqf +++ b/addons/mk6mortar/functions/fnc_loadMagazine.sqf @@ -24,7 +24,7 @@ private ["_weapon","_currentMagazine","_count","_magazines","_magazineDetails"," //If function has been called with an optional classname hten add that magazine to the static weapon. Otherwise add the compatible magazine if(_magazineClassOptional != "") then { _unit removeMagazine _magazineClassOptional; - [QGVAR(addMagazine), [_static, _magazineClassOptional]] call EFUNC(common,globalEvent); + [QGVAR(addMagazine), [_static, _magazineClassOptional]] call CBA_fnc_globalEvent; } else { //Get weapon & magazine information of static weapon _weapon = (_static weaponsTurret [0]) select 0; @@ -49,7 +49,7 @@ if(_magazineClassOptional != "") then { } forEach _magazines; //If the static weapon already has an empty magazine then remove it if (_count == 0) then { - [QGVAR(removeMagazine), [_static, _currentMagazineClass]] call EFUNC(common,globalEvent); + [QGVAR(removeMagazine), [_static, _currentMagazineClass]] call CBA_fnc_globalEvent; }; //Find out the ammo count of the compatible magazine found if (_magazineClassDetails != "") then{ @@ -60,6 +60,6 @@ if(_magazineClassOptional != "") then { }; _unit removeMagazine _magazineClass; - [QGVAR(addMagazine), [_static, _magazineClass]] call EFUNC(common,globalEvent); - [QGVAR(setAmmo), _static, [_static, _magazineClass,_roundsLeft]] call EFUNC(common,targetEvent); + [QGVAR(addMagazine), [_static, _magazineClass]] call CBA_fnc_globalEvent; + [QGVAR(setAmmo), [_static, _magazineClass,_roundsLeft], _static] call CBA_fnc_targetEvent; }; diff --git a/addons/mk6mortar/functions/fnc_unloadMagazine.sqf b/addons/mk6mortar/functions/fnc_unloadMagazine.sqf index 537cc931d82..c485a39a3ab 100644 --- a/addons/mk6mortar/functions/fnc_unloadMagazine.sqf +++ b/addons/mk6mortar/functions/fnc_unloadMagazine.sqf @@ -35,5 +35,5 @@ if (_ammoCount > 0) then { _unit addMagazineAmmoCargo [_currentMagazineClass, 1, _ammoCount]; _unit setPosATL _pos; }; - [QGVAR(removeMagazine), [_static, _currentMagazineClass]] call EFUNC(common,globalEvent); + [QGVAR(removeMagazine), [_static, _currentMagazineClass]] call CBA_fnc_globalEvent; }; diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index 8f0c430db2d..1bd8862fe16 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -49,4 +49,4 @@ GVAR(serverModulesRead) = true; publicVariable QGVAR(serverModulesRead); }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index d9179a912a3..3da8465c4bd 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -3,8 +3,8 @@ if (!hasInterface) exitWith {}; -["playerChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); -["playerInventoryChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); +["playerChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; +["playerInventoryChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; ["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), { diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 46d0e287d8a..9b497c0da17 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -26,7 +26,7 @@ GVAR(showNamesTime) = -10; ["SettingsInitialized", { // Draw handle call FUNC(updateSettings); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Change settings accordingly when they are changed ["SettingChanged", { @@ -34,4 +34,4 @@ GVAR(showNamesTime) = -10; if (_name == QGVAR(showPlayerNames)) then { call FUNC(updateSettings); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf index 7f9ced67f7e..3904b7f552d 100644 --- a/addons/nametags/functions/fnc_initIsSpeaking.sqf +++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf @@ -34,7 +34,7 @@ if (!hasInterface) exitWith {}; if ((!isNull _oldUnit) && {_oldUnit getVariable [QGVAR(isSpeakingInGame), false]}) then { _oldUnit setVariable [QGVAR(isSpeakingInGame), false, true]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; if (isClass (configFile >> "CfgPatches" >> "acre_api")) then { diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 96badd59aff..85e4e768cc8 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -29,18 +29,18 @@ GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; // Setup the event handlers -["playerInventoryChanged", FUNC(updatePPEffects)] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(updatePPEffects)] call CBA_fnc_addEventHandler; ["playerVisionModeChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onVisionModeChanged); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; ["cameraViewChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onCameraViewChanged); -}] call EFUNC(common,addEventHandler); -["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); -["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; +["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; // Add keybinds ["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness), @@ -72,5 +72,5 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; [209, [false, false, true]], false] call CBA_fnc_addKeybind; //PageDown + ALT // Register fire event handler -["firedPlayer", DFUNC(blending)] call EFUNC(common,addEventHandler); -["firedPlayerVehicle", DFUNC(blending)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(blending)] call CBA_fnc_addEventHandler; +["firedPlayerVehicle", DFUNC(blending)] call CBA_fnc_addEventHandler; diff --git a/addons/noradio/XEH_postInit.sqf b/addons/noradio/XEH_postInit.sqf index 4aeccffd626..8396a00b8e6 100644 --- a/addons/noradio/XEH_postInit.sqf +++ b/addons/noradio/XEH_postInit.sqf @@ -21,4 +21,4 @@ if (!hasInterface) exitWith {}; if (alive _oldPlayer) then { [_oldPlayer, "isPlayer"] call EFUNC(common,unmuteUnit); }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index c9667f39315..0e37839dcac 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -32,7 +32,7 @@ GVAR(camera) = objNull; if (!isNull ((_this select 0) displayCtrl 1713001)) then { uiNamespace setVariable [QGVAR(RscWeaponInfo2D), _this select 0]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // camera has to be re-created every time another camera is created. Otherwise r2t is either black or transparent. @todo Add popular custom cameras to the event in ACE_common. ["activeCameraChanged", { @@ -49,7 +49,7 @@ GVAR(camera) = objNull; "ace_optics_rendertarget0" setPiPEffect [0]; GVAR(camera) cameraEffect ["INTERNAL", "BACK", "ace_optics_rendertarget0"]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf index 4736d726230..90365be2624 100644 --- a/addons/optionsmenu/XEH_postInit.sqf +++ b/addons/optionsmenu/XEH_postInit.sqf @@ -8,4 +8,4 @@ GVAR(categories) pushBack (_x select 8); }; }forEach EGVAR(common,settings); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index e4935b88317..e2fd88f5962 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -35,8 +35,8 @@ if (hasInterface) then { GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; // Install event handlers for spare barrels - ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call EFUNC(common,addEventHandler); - ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call EFUNC(common,addEventHandler); + ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call CBA_fnc_addEventHandler; + ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call CBA_fnc_addEventHandler; // Schedule cool down calculation of stored spare barrels [] call FUNC(updateSpareBarrelsTemperaturesThread); @@ -52,18 +52,18 @@ if (hasInterface) then { ["CAManBase", "Take", {_this call FUNC(handleTakeEH);}] call CBA_fnc_addClassEventHandler; // Register fire event handler - ["firedPlayer", DFUNC(firedEH)] call EFUNC(common,addEventHandler); + ["firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; // Only add eh to non local players if dispersion is enabled if (GVAR(overheatingDispersion)) then { - ["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler); + ["firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; }; // Schedule cool down calculation of player weapons at (infrequent) regular intervals [] call FUNC(updateTemperatureThread); // Install event handler to display temp when a barrel was swapped - ["showWeaponTemperature", DFUNC(displayTemperature)] call EFUNC(common,addEventHandler); + ["showWeaponTemperature", DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; // Install event handler to initiate an assisted barrel swap - ["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call EFUNC(common,addEventHandler); + ["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf index e8dbaabec0b..129f80845bc 100644 --- a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf +++ b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf @@ -29,7 +29,7 @@ if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canI params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; _args params ["_player"]; // Time has enlapsed, ask the server to send the hint - ['spareBarrelsSendTemperatureHint', [_player, _player]] call EFUNC(common,serverEvent); + ['spareBarrelsSendTemperatureHint', [_player, _player]] call CBA_fnc_serverEvent; }, {}, (localize LSTRING(CheckingSpareBarrelsTemperatures)), diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index b6cacdbea33..e85bb12673c 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -43,7 +43,7 @@ if (_ammo > 0) then { // only display the hint once, after you try to shoot an already jammed weapon GVAR(knowAboutJam) = false; -["weaponJammed", [_unit,_weapon]] call EFUNC(common,localEvent); +["weaponJammed", [_unit,_weapon]] call CBA_fnc_localEvent; if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index 08cb85083ce..ee314b9edf3 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -50,4 +50,4 @@ _gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; // Send an event so the machines of the assistant and gunner can show the hint -["showWeaponTemperature", [_assistant, _gunner], [_gunner, _weapon]] call EFUNC(common,targetEvent); +["showWeaponTemperature", _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index 2ff248016d3..621f246432f 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -73,4 +73,4 @@ if (_countExtremelyHot > 0) then { }; TRACE_1("_output",_output); -["displayTextStructured", [_player], [_output, _size, _player]] call EFUNC(common,targetEvent); +["displayTextStructured", [_output, _size, _player], [_player]] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf index 5e3c31fc5e6..73a06e53d1f 100644 --- a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf +++ b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf @@ -30,4 +30,4 @@ playSound "ACE_BarrelSwap"; [3, [_assistant, _gunner, _weapon], {}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); -["initiateSwapBarrelAssisted", _gunner, [_assistant, _gunner, _weapon]] call EFUNC(common,objectEvent); +["initiateSwapBarrelAssisted", [_assistant, _gunner, _weapon], _gunner] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 403989decab..6898ff648b1 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -34,7 +34,7 @@ private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon > // store the removed barrel with the former weapon temperature. The server // also updates the current weapon temperature to match that of the new // loaded barrel. -["spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call EFUNC(common,serverEvent); +["spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call CBA_fnc_serverEvent; // Store the update time _gunner setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf index f7f0bc2ace8..8e39b7fdcce 100644 --- a/addons/overpressure/XEH_postInit.sqf +++ b/addons/overpressure/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["overpressure", FUNC(overpressureDamage)] call EFUNC(common,addEventHandler); +["overpressure", FUNC(overpressureDamage)] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayer", DFUNC(firedEHBB)] call EFUNC(common,addEventHandler); -["firedPlayerVehicle", DFUNC(firedEHOP)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(firedEHBB)] call CBA_fnc_addEventHandler; +["firedPlayerVehicle", DFUNC(firedEHOP)] call CBA_fnc_addEventHandler; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 8dc15e0f0af..4835b537e45 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -37,7 +37,7 @@ private _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["overpressure", _affected, [_unit, _position, _direction, _weapon, _magazine, _ammo]] call EFUNC(common,targetEvent); +["overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Damage to the firer private _distance = 2 * ([_position, _direction, _backblastRange, _unit] call FUNC(getDistance)); diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index dff9215a523..0b2b85a00cc 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -40,7 +40,7 @@ private _direction = vectorDir _projectile; private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["overpressure", _affected, [_unit, _position, _direction, _weapon, _magazine, _ammo]] call EFUNC(common,targetEvent); +["overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index ad4044e6e57..e732f7ecdfc 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -38,9 +38,9 @@ GVAR(PFH) = false; GVAR(PFH) = true; [FUNC(onEachFrame), 0.1, []] call CALLSTACK(CBA_fnc_addPerFrameHandler); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // don't show speed and height when in expert mode -["infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call EFUNC(common,addEventHandler); +["infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call CBA_fnc_addEventHandler; -["playerInventoryChanged", FUNC(storeParachute)] call EFUNC(common,addEventHandler); +["playerInventoryChanged", FUNC(storeParachute)] call CBA_fnc_addEventHandler; diff --git a/addons/rearm/XEH_postInit.sqf b/addons/rearm/XEH_postInit.sqf index c22b84ffb44..3ff17057d05 100644 --- a/addons/rearm/XEH_postInit.sqf +++ b/addons/rearm/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventHandler); -["playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call EFUNC(common,addEventHandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}]; diff --git a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf index 1789767cfd0..b015b842a41 100644 --- a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf +++ b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf @@ -40,15 +40,23 @@ if (_maxMagazines == 1) then { if (GVAR(level) == 1) then { // Fill magazine completely _target setMagazineTurretAmmo [_magazineClass, _rounds, _turretPath]; - ["displayTextStructured", [_unit], [[LSTRING(Hint_RearmedTriple), _rounds, + ["displayTextStructured", + [ + [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), - getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit]] call EFUNC(common,targetEvent); + getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit + ], + [_unit]] call CBA_fnc_targetEvent; } else { // Fill only at most _numRounds _target setMagazineTurretAmmo [_magazineClass, ((_target magazineTurretAmmo [_magazineClass, _turretPath]) + _numRounds) min _rounds, _turretPath]; - ["displayTextStructured", [_unit], [[LSTRING(Hint_RearmedTriple), _numRounds, + ["displayTextStructured", + [ + [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), - getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit]] call EFUNC(common,targetEvent); + getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit + ], + [_unit]] call CBA_fnc_targetEvent; }; } else { for "_idx" from 1 to (_maxMagazines+1) do { @@ -69,9 +77,13 @@ if (_maxMagazines == 1) then { } else { _target setMagazineTurretAmmo [_magazineClass, _currentRounds + _numRounds, _turretPath]; }; - ["displayTextStructured", [_unit], [[LSTRING(Hint_RearmedTriple), _numRounds, + ["displayTextStructured", + [ + [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), - getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit]] call EFUNC(common,targetEvent); + getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit + ], + [_unit]] call CBA_fnc_targetEvent; } else { // Fill current magazine completely and fill next magazine partially _target setMagazineTurretAmmo [_magazineClass, _rounds, _turretPath]; @@ -79,9 +91,13 @@ if (_maxMagazines == 1) then { _target addMagazineTurret [_magazineClass, _turretPath]; _target setMagazineTurretAmmo [_magazineClass, _currentRounds, _turretPath]; }; - ["displayTextStructured", [_unit], [[LSTRING(Hint_RearmedTriple), _rounds, + ["displayTextStructured", + [ + [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), - getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit]] call EFUNC(common,targetEvent); + getText(configFile >> "CfgVehicles" >> (typeOf _target) >> "displayName")], 3, _unit + ], + [_unit]] call CBA_fnc_targetEvent; }; }; _target removeMagazineTurret [_magazineClass, _turretPath]; diff --git a/addons/recoil/XEH_postInit.sqf b/addons/recoil/XEH_postInit.sqf index e6b694646f7..9375b05a2c4 100644 --- a/addons/recoil/XEH_postInit.sqf +++ b/addons/recoil/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" // Register fire event handler -["firedPlayer", DFUNC(camShake)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(camShake)] call CBA_fnc_addEventHandler; diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 5078d808a25..12dd2c59942 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventHandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; @@ -8,4 +8,4 @@ if (isServer) then { [QGVAR(resetLocal), { _this call FUNC(resetLocal); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/refuel/functions/fnc_checkFuel.sqf b/addons/refuel/functions/fnc_checkFuel.sqf index 140021419d7..adc5c81674d 100644 --- a/addons/refuel/functions/fnc_checkFuel.sqf +++ b/addons/refuel/functions/fnc_checkFuel.sqf @@ -27,9 +27,9 @@ private _fuel = [_target] call FUNC(getFuel); params ["_args"]; _args params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_fuel", 0, [0]]]; if (_fuel > 0 ) then { - ["displayTextStructured", _unit, [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit]] call EFUNC(common,objectEvent); + ["displayTextStructured", [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit], _unit] call CBA_fnc_targetEvent; } else { - ["displayTextStructured", _unit, [LSTRING(Hint_Empty), 2, _unit]] call EFUNC(common,objectEvent); + ["displayTextStructured", [LSTRING(Hint_Empty), 2, _unit], _unit] call CBA_fnc_targetEvent; }; true }, diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index 1df5f1e2084..306f7d83890 100644 --- a/addons/refuel/functions/fnc_connectNozzleAction.sqf +++ b/addons/refuel/functions/fnc_connectNozzleAction.sqf @@ -119,7 +119,7 @@ _endPosTestOffset set [2, (_startingOffset select 2)]; }; }; }; - ["setVectorDirAndUp", _nozzle, [_nozzle, _dirAndUp]] call EFUNC(common,objectEvent); + ["setVectorDirAndUp", [_nozzle, _dirAndUp], _nozzle] call CBA_fnc_targetEvent; _nozzle setVariable [QGVAR(sink), _target, true]; _nozzle setVariable [QGVAR(isConnected), true, true]; _target setVariable [QGVAR(nozzle), _nozzle, true]; diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index 62a006cda93..3f7a6259e74 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -79,7 +79,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> }; _unit setVariable [QGVAR(tempFuel), _fuelInSink]; - ["setFuel", _sink, [_sink, _fuelInSink]] call EFUNC(common,objectEvent); + ["setFuel", [_sink, _fuelInSink], _sink] call CBA_fnc_targetEvent; [_source, _fuelInSource] call FUNC(setFuel); } else { _unit setVariable [QGVAR(tempFuel), fuel _sink]; diff --git a/addons/refuel/functions/fnc_reset.sqf b/addons/refuel/functions/fnc_reset.sqf index 767e4b6c88d..d58f0a48ad2 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -33,7 +33,7 @@ if !(isNil "_nozzle") then { }; { - [QGVAR(resetLocal), _x, [_x, _nozzle]] call EFUNC(common,objectEvent); + [QGVAR(resetLocal), [_x, _nozzle], _x] call CBA_fnc_targetEvent; } count allPlayers; deleteVehicle _nozzle; }; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 16f3d9b40ef..946b3a17862 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -24,7 +24,7 @@ if (!hasInterface) exitWith {}; TRACE_3("setAmmoSync EH",_unit,_weapon,_ammo); _unit setAmmo [_weapon, _ammo]; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; // Listen for attempts to link ammo ["linkedAmmo", { @@ -35,7 +35,7 @@ if (!hasInterface) exitWith {}; // Return the magazine if it's the wrong type if (_magazineType != (_magazine select 0)) exitWith { - ["returnedAmmo", [_giver], [_giver,_receiver,_magazine]] call EFUNC(common,targetEvent); + ["returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; private _ammoCount = _receiver ammo currentWeapon _receiver; @@ -43,17 +43,17 @@ if (!hasInterface) exitWith {}; // Return the magazine if the belt is full or empty if ((_ammoCount == 0) || _ammoMissing == 0) exitWith { - ["returnedAmmo", [_giver], [_giver,_receiver,_magazine]] call EFUNC(common,targetEvent); + ["returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; // Add the ammo private _ammoAdded = _ammoMissing min (_magazine select 1); - ["setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call EFUNC(common,globalEvent); + ["setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; if ((_magazine select 1) - _ammoAdded > 0) then { - ["returnedAmmo", [_giver], [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]]] call EFUNC(common,targetEvent); + ["returnedAmmo", [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; // Listen for returned magazines ["returnedAmmo", { @@ -61,4 +61,4 @@ if (!hasInterface) exitWith {}; TRACE_2("returnedAmmo EH",_receiver,_magazine); _receiver addMagazine _magazine; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index 5924e1b4e1a..5c3d04a00a1 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -46,7 +46,7 @@ private _onFinish = { (_this select 0) params ["_player", "_target", "_magazine"]; // Raise event on remote unit - ["linkedAmmo", [_target], [_target, _player, _magazine]] call EFUNC(common,targetEvent); + ["linkedAmmo", [_target, _player, _magazine], [_target]] call CBA_fnc_targetEvent; }; private _onFailure = { diff --git a/addons/reloadlaunchers/XEH_postInit.sqf b/addons/reloadlaunchers/XEH_postInit.sqf index 437927602ae..5d436b2b045 100644 --- a/addons/reloadlaunchers/XEH_postInit.sqf +++ b/addons/reloadlaunchers/XEH_postInit.sqf @@ -1,4 +1,4 @@ // by commy2 #include "script_component.hpp" -["reloadLauncher", {_this call DFUNC(reloadLauncher)}] call EFUNC(common,addEventhandler); +["reloadLauncher", {_this call DFUNC(reloadLauncher)}] call CBA_fnc_addEventHandler; diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index db18e7edaa4..ea2ad467c1e 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -32,7 +32,7 @@ private ["_onSuccess", "_onFailure", "_condition"]; _onSuccess = { (_this select 0 select 0) removeMagazine (_this select 0 select 3); - ["reloadLauncher", _this select 0 select 1, _this select 0] call DEFUNC(common,targetEvent); + ["reloadLauncher", _this select 0, _this select 0 select 1] call CBA_fnc_targetEvent; [localize LSTRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); }; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 44ca157b0c3..526cdc0b845 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["setVehicleDamage", {_this call FUNC(setDamage)}] call EFUNC(common,addEventHandler); -["setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call EFUNC(common,addEventHandler); +["setVehicleDamage", {_this call FUNC(setDamage)}] call CBA_fnc_addEventHandler; +["setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; // wheels -["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call EFUNC(common,addEventHandler); +["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 3d7247fcaac..717c3ee9489 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -33,4 +33,4 @@ if (!EGVAR(common,settingsInitFinished)) exitWith { if (!_force && !GVAR(addSpareParts)) exitWith {}; // Load -["AddCargoByClass", [_part, _vehicle, _amount]] call EFUNC(common,localEvent); +["AddCargoByClass", [_part, _vehicle, _amount]] call CBA_fnc_localEvent; diff --git a/addons/repair/functions/fnc_doRemoveTrack.sqf b/addons/repair/functions/fnc_doRemoveTrack.sqf index d36407b197e..997d1b6bce2 100644 --- a/addons/repair/functions/fnc_doRemoveTrack.sqf +++ b/addons/repair/functions/fnc_doRemoveTrack.sqf @@ -27,14 +27,14 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["fixCollision", _unit] call EFUNC(common,localEvent); +["fixCollision", _unit] call CBA_fnc_localEvent; // spawn track private _newTrack = ["ACE_Track", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); TRACE_2("new track created",_newTrack,damage _newTrack); // raise event to set the new hitpoint damage -["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, 1]] call EFUNC(common,targetEvent); +["setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRemoveWheel.sqf b/addons/repair/functions/fnc_doRemoveWheel.sqf index 21a152c597f..3f0a29293f8 100644 --- a/addons/repair/functions/fnc_doRemoveWheel.sqf +++ b/addons/repair/functions/fnc_doRemoveWheel.sqf @@ -27,14 +27,14 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["fixCollision", _unit] call EFUNC(common,localEvent); +["fixCollision", _unit] call CBA_fnc_localEvent; // spawn wheel private _newWheel = ["ACE_Wheel", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); TRACE_2("new wheel created",_newWheel,damage _newWheel); // raise event to set the new hitpoint damage -["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, 1]] call EFUNC(common,targetEvent); +["setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRepair.sqf b/addons/repair/functions/fnc_doRepair.sqf index 4c063c6c73d..084511b7639 100644 --- a/addons/repair/functions/fnc_doRepair.sqf +++ b/addons/repair/functions/fnc_doRepair.sqf @@ -34,7 +34,7 @@ private _hitPointNewDamage = (_hitPointCurDamage - 0.5) max _postRepairDamageMin if (_hitPointNewDamage < _hitPointCurDamage) then { // raise event to set the new hitpoint damage TRACE_3("repairing main point", _vehicle, _hitPointIndex, _hitPointNewDamage); - ["setVehicleHitPointDamage", _vehicle, [_vehicle, _hitPointIndex, _hitPointNewDamage]] call EFUNC(common,targetEvent); + ["setVehicleHitPointDamage", [_vehicle, _hitPointIndex, _hitPointNewDamage], _vehicle] call CBA_fnc_targetEvent; _hitPointCurDamage = _hitPointNewDamage; }; @@ -55,7 +55,7 @@ if (isArray _hitpointGroupConfig) then { private _subPointNewDamage = (_subPointCurDamage - 0.5) max _postRepairDamageMin; if (_subPointNewDamage < _subPointCurDamage) then { TRACE_3("repairing sub point", _vehicle, _subHitIndex, _subPointNewDamage); - ["setVehicleHitPointDamage", _vehicle, [_vehicle, _subHitIndex, _subPointNewDamage]] call EFUNC(common,targetEvent); + ["setVehicleHitPointDamage", [_vehicle, _subHitIndex, _subPointNewDamage], _vehicle] call CBA_fnc_targetEvent; }; }; } forEach _subHitArray; diff --git a/addons/repair/functions/fnc_doRepairTrack.sqf b/addons/repair/functions/fnc_doRepairTrack.sqf index 46c94c29f93..7959edbab7b 100644 --- a/addons/repair/functions/fnc_doRepairTrack.sqf +++ b/addons/repair/functions/fnc_doRepairTrack.sqf @@ -41,7 +41,7 @@ _hitPointDamage = (_hitPointDamage - _damageRepaired) min 0; deleteVehicle _track; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, _hitPointDamage]] call EFUNC(common,targetEvent); +["setWheelHitPointDamage", [_vehicle, _hitPoint, _hitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceTrack.sqf b/addons/repair/functions/fnc_doReplaceTrack.sqf index 9eafe68c9e8..7fbafac99d8 100644 --- a/addons/repair/functions/fnc_doReplaceTrack.sqf +++ b/addons/repair/functions/fnc_doReplaceTrack.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _track; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, _newHitPointDamage]] call EFUNC(common,targetEvent); +["setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceWheel.sqf b/addons/repair/functions/fnc_doReplaceWheel.sqf index ce5e9220ddd..742ae1d3bf6 100644 --- a/addons/repair/functions/fnc_doReplaceWheel.sqf +++ b/addons/repair/functions/fnc_doReplaceWheel.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _wheel; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", _vehicle, [_vehicle, _hitPoint, _newHitPointDamage]] call EFUNC(common,targetEvent); +["setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index f5b7d8cbfc2..f952e561c4d 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -38,10 +38,10 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitWith {false}; if ((isEngineOn _target) && {GVAR(autoShutOffEngineWhenStartingRepair)}) then { - ["engineOn", _target, [_target, false]] call EFUNC(common,objectEvent); + ["engineOn", [_target, false], _target] call CBA_fnc_targetEvent; }; if ((isEngineOn _target) && {!GVAR(autoShutOffEngineWhenStartingRepair)}) exitWith { - ["displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call EFUNC(common,localEvent); + ["displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call CBA_fnc_localEvent; false }; @@ -235,7 +235,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["displayTextStructured", [_caller], [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/repair/functions/fnc_spawnObject.sqf b/addons/repair/functions/fnc_spawnObject.sqf index 86d0b563aca..d4da90b7f9a 100644 --- a/addons/repair/functions/fnc_spawnObject.sqf +++ b/addons/repair/functions/fnc_spawnObject.sqf @@ -28,7 +28,7 @@ _newObject setPosASL _position; _newObject setDamage _damage; -["fixCollision", _newObject] call EFUNC(common,localEvent); -["fixPosition", _newObject] call EFUNC(common,localEvent); +["fixCollision", _newObject] call CBA_fnc_localEvent; +["fixPosition", _newObject] call CBA_fnc_localEvent; _newObject diff --git a/addons/respawn/XEH_postInit.sqf b/addons/respawn/XEH_postInit.sqf index 22be7b86ac0..43a96833779 100644 --- a/addons/respawn/XEH_postInit.sqf +++ b/addons/respawn/XEH_postInit.sqf @@ -1,5 +1,5 @@ // by commy2 #include "script_component.hpp" -["rallypointMoved", {_this call FUNC(updateRallypoint)}] call EFUNC(common,addEventhandler); -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); // hide enemy rallypoint markers +["rallypointMoved", {_this call FUNC(updateRallypoint)}] call CBA_fnc_addEventHandler; +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // hide enemy rallypoint markers diff --git a/addons/respawn/XEH_serverPostInit.sqf b/addons/respawn/XEH_serverPostInit.sqf index d472bb0d5c2..65cc1e9727d 100644 --- a/addons/respawn/XEH_serverPostInit.sqf +++ b/addons/respawn/XEH_serverPostInit.sqf @@ -14,4 +14,4 @@ false }]; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index dba1ae5d0a9..b857b58f830 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -60,7 +60,7 @@ if (isNil _name) then { createMarker [_respawnMarker, _rallypoint]; }; - ["rallypointMoved", [_rallypoint, _side]] call EFUNC(common,globalEvent); + ["rallypointMoved", [_rallypoint, _side]] call CBA_fnc_globalEvent; } else { deleteVehicle _rallypoint; ACE_LOGERROR("Multiple Rallypoints of same type."); diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index fa8aae40a56..24e5f55a977 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -48,7 +48,7 @@ _position set [2, 0]; _rallypoint setVariable [QGVAR(markerDate), [dayTime, "HH:MM"] call BIS_fnc_timeToString, true]; - ["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent); + ["rallypointMoved", [_rallypoint, _side, _position]] call CBA_fnc_globalEvent; [localize LSTRING(Deployed)] call EFUNC(common,displayTextStructured); }, [_rallypoint, _unit, _position], 5] call EFUNC(common,waitAndExecute); diff --git a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf index 1079ef6e6db..e4ddc5bb350 100644 --- a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf +++ b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf @@ -22,5 +22,5 @@ if (_unit != _killer && {side group _unit in [side group ACE_player, civilian]} systemChat format ["%1 was killed by %2", [_unit, false, true] call EFUNC(common,getName), [_killer, false, true] call EFUNC(common,getName)]; // Raise ACE globalEvent - ["killedByFriendly", [_unit, _killer]] call EFUNC(common,globalEvent); + ["killedByFriendly", [_unit, _killer]] call CBA_fnc_globalEvent; }; diff --git a/addons/sandbag/XEH_postInit.sqf b/addons/sandbag/XEH_postInit.sqf index d6e4c0aadc1..a186e38a7ad 100644 --- a/addons/sandbag/XEH_postInit.sqf +++ b/addons/sandbag/XEH_postInit.sqf @@ -12,14 +12,14 @@ GVAR(deployPFH) = -1; GVAR(deployDirection) = 0; // Cancel deploy sandbag if interact menu opened -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel deploy on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call EFUNC(common,addEventhandler); -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventhandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index 735a736bbba..163c64b8f28 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -27,7 +27,7 @@ _sandBag = createVehicle ["ACE_SandbagObject_NoGeo", [0, 0, 0], [], 0, "NONE"]; GVAR(sandBag) = _sandBag; // prevent collisions with sandbag -["enableSimulationGlobal", [_sandBag, false]] call EFUNC(common,serverEvent); +["enableSimulationGlobal", [_sandBag, false]] call CBA_fnc_serverEvent; GVAR(deployDirection) = 0; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 1763bb7a328..ed40a52ef29 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -10,7 +10,7 @@ if (!hasInterface) exitWith {}; // Check inventory when it changes -["playerInventoryChanged", FUNC(inventoryCheck)] call EFUNC(common,addEventhandler); +["playerInventoryChanged", FUNC(inventoryCheck)] call CBA_fnc_addEventHandler; // Instantly hide knobs when scoping in ["cameraViewChanged", { @@ -26,7 +26,7 @@ if (!hasInterface) exitWith {}; GVAR(fadePFH) = nil; }; }; -}] call EFUNC(common,addEventhandler); +}] call CBA_fnc_addEventHandler; // Add keybinds @@ -152,5 +152,5 @@ if (!hasInterface) exitWith {}; // Register fire event handler -["firedPlayer", DFUNC(firedEH)] call EFUNC(common,addEventHandler); -["firedPlayerNonLocal", DFUNC(firedEH)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index e15017d715d..e9dcbfa6daf 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -13,6 +13,6 @@ if (!hasInterface) exitWith {}; ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); // Handle interruptions - ["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); - ["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); -}] call EFUNC(common,addEventHandler); + ["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + ["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; +}] call CBA_fnc_addEventHandler; diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 43c812d1a29..f3d0c217b4e 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -7,7 +7,7 @@ ["SettingsInitialized", { GVAR(availableModes) = [[0,1,2], [1,2], [0], [1], [2]] select GVAR(restrictModes); GVAR(availableVisions) = [[-2,-1,0,1], [-2,-1], [-2,0,1], [-2]] select GVAR(restrictVisions); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; // Create a radio channel for any spectators to text chat in if (isServer) then { @@ -18,7 +18,7 @@ if (isServer) then { // Should prevent unending spectator on mission end if (isServer) then { addMissionEventHandler ["Ended", { - [QGVAR(endMission), []] call EFUNC(common,globalEvent); + [QGVAR(endMission), []] call CBA_fnc_globalEvent; }]; }; @@ -26,4 +26,4 @@ if (isServer) then { if (GVAR(isSet)) then { [false] call FUNC(setSpectator); }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 1f010962b5d..09c91ea4efe 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -170,4 +170,4 @@ GVAR(interrupts) = []; // Mark spectator state for reference GVAR(isSet) = _set; -["spectatorSet",[_set]] call EFUNC(common,localEvent); +["spectatorSet",[_set]] call CBA_fnc_localEvent; diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 926ac008dc5..5d65f74a819 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -64,7 +64,7 @@ if !(_set isEqualTo (GETVAR(_unit,GVAR(isStaged),false))) then { // Mark spectator state for reference _unit setVariable [QGVAR(isStaged), _set, true]; - ["spectatorStaged",[_set]] call EFUNC(common,localEvent); + ["spectatorStaged",[_set]] call CBA_fnc_localEvent; }; //BandAid for #2677 - if player in unitList weird before being staged, weird things can happen diff --git a/addons/switchunits/XEH_postInit.sqf b/addons/switchunits/XEH_postInit.sqf index 5928804d7b8..41d975f1026 100644 --- a/addons/switchunits/XEH_postInit.sqf +++ b/addons/switchunits/XEH_postInit.sqf @@ -25,5 +25,5 @@ if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then { if ((_name == QGVAR(EnableSwitchUnits)) && {_value}) then { [player] call FUNC(startSwitchUnits); }; - }] call EFUNC(common,addEventhandler); + }] call CBA_fnc_addEventHandler; }; diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 465f514d140..0f4283f4eeb 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -11,16 +11,16 @@ GVAR(currentAngle) = 0; if ((ACE_time > GVAR(cancelTime)) && !isNull GVAR(ladder)) then { GVAR(ladder) call FUNC(cancelTLdeploy); }; -}] call EFUNC(common,addEventHandler);*/ +}] call CBA_fnc_addEventHandler;*/ // Cancel adjustment if interact menu opens -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel adjusting on player change. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventhandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tagging/XEH_postInit.sqf b/addons/tagging/XEH_postInit.sqf index 31fd73d9135..bd6f502287c 100644 --- a/addons/tagging/XEH_postInit.sqf +++ b/addons/tagging/XEH_postInit.sqf @@ -44,4 +44,4 @@ if (!isServer) exitWith {}; GVAR(testingThread) = false; GVAR(tagsToTest) = []; -["createTag", DFUNC(createTag)] call EFUNC(common,addEventHandler); +["createTag", DFUNC(createTag)] call CBA_fnc_addEventHandler; diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 4f831965249..8ec65ccd025 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -34,7 +34,7 @@ _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers -["tagCreated", [_tag, _texture, _object, _unit]] call EFUNC(common,globalEvent); +["tagCreated", [_tag, _texture, _object, _unit]] call CBA_fnc_globalEvent; if (isNull _object) exitWith {true}; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 43e951629e5..b00f7ed88e4 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -109,7 +109,7 @@ _unit playActionNow "PutDown"; playSound3D [QUOTE(PATHTO_R(sounds\spray.ogg)), _unit, false, (eyePos _unit), 10, 1, 15]; // Tell the server to create the tag and handle its destruction - ["createTag", _this] call EFUNC(common,serverEvent); + ["createTag", _this] call CBA_fnc_serverEvent; }, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); true diff --git a/addons/trenches/XEH_postInit.sqf b/addons/trenches/XEH_postInit.sqf index ba84123009c..f9deb53ff14 100644 --- a/addons/trenches/XEH_postInit.sqf +++ b/addons/trenches/XEH_postInit.sqf @@ -13,14 +13,14 @@ GVAR(digPFH) = -1; GVAR(digDirection) = 0; // Cancel dig sandbag if interact menu opened -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel dig on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call EFUNC(common,addEventhandler); -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventhandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index 35a6706d308..eb6a75ae446 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -36,7 +36,7 @@ _trench = createVehicle [_noGeoModel, [0, 0, 0], [], 0, "NONE"]; GVAR(trench) = _trench; // prevent collisions with trench -["enableSimulationGlobal", [_trench, false]] call EFUNC(common,serverEvent); +["enableSimulationGlobal", [_trench, false]] call CBA_fnc_serverEvent; GVAR(digDirection) = 0; diff --git a/addons/tripod/XEH_postInit.sqf b/addons/tripod/XEH_postInit.sqf index 79aa7a69f2c..438a5a26ae3 100644 --- a/addons/tripod/XEH_postInit.sqf +++ b/addons/tripod/XEH_postInit.sqf @@ -7,13 +7,13 @@ GVAR(adjustPFH) = -1; GVAR(height) = 0; // Cancel adjustment if interact menu opens -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); +["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel adjusting on player change. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventhandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index d228696fc0c..2ef05fe15c9 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -15,7 +15,7 @@ if (!hasInterface) exitWith {}; { [_x select 0, _x select 1, _x select 2, _force] call FUNC(setAdvancedElement); } forEach ELEMENTS_ADVANCED; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; // On changing settings ["SettingChanged", { @@ -35,6 +35,6 @@ if (!hasInterface) exitWith {}; TRACE_2("Setting Changed",_name,_elementName); }; } forEach ELEMENTS_ADVANCED; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/vector/functions/fnc_dataTransfer.sqf b/addons/vector/functions/fnc_dataTransfer.sqf index 25403b82ee5..9c5e2dbf97a 100644 --- a/addons/vector/functions/fnc_dataTransfer.sqf +++ b/addons/vector/functions/fnc_dataTransfer.sqf @@ -22,4 +22,4 @@ _direction = call FUNC(getDirection); _azimuth = _direction select 0; _inclination = _direction select 1; //Send Data to connected GPS -["RangerfinderData", [_distance, _azimuth, _inclination]] call EFUNC(common,localEvent); \ No newline at end of file +["RangerfinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 873c875f097..18d8fa3401f 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -3,14 +3,14 @@ class ACE_unlockVehicle { \ displayName = CSTRING(Action_UnLock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)]), [_target]] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)]), [_target]] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -27,7 +27,7 @@ displayName = CSTRING(Action_UnLock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,false)])] call EFUNC(common,targetEvent)); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)]), [_target]] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -35,7 +35,7 @@ displayName = CSTRING(Action_Lock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [_target], [ARR_2(_target,true)])] call EFUNC(common,targetEvent)); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)]), [_target]] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ diff --git a/addons/vehiclelock/XEH_postInit.sqf b/addons/vehiclelock/XEH_postInit.sqf index 93d8bd64268..5d250867ee7 100644 --- a/addons/vehiclelock/XEH_postInit.sqf +++ b/addons/vehiclelock/XEH_postInit.sqf @@ -1,8 +1,8 @@ #include "script_component.hpp" //Add Event Handlers -["VehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call EFUNC(common,addEventHandler); -["VehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call EFUNC(common,addEventHandler); +["VehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call CBA_fnc_addEventHandler; +["VehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitwith {}; @@ -12,4 +12,4 @@ if (!hasInterface) exitwith {}; if (GVAR(LockVehicleInventory)) then { ["CAManBase", "InventoryOpened", {_this call FUNC(onOpenInventory);}] call CBA_fnc_addClassEventHandler; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf index 073054648e8..c2035d81886 100644 --- a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf @@ -36,7 +36,7 @@ if (_useCustom) then { _keyMagazine = _newMags select 0; TRACE_2("setting up key on server",_veh,_keyMagazine); //Have the server run add the key to the vehicle's key array: - ["VehicleLock_SetupCustomKey", [_veh, _keyMagazine]] call EFUNC(common,serverEvent); + ["VehicleLock_SetupCustomKey", [_veh, _keyMagazine]] call CBA_fnc_serverEvent; } else { _keyName = [_veh] call FUNC(getVehicleSideKey); _unit addItem _keyName; //addItem has global effects diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index be23dc8dd98..fa82e8838b6 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -38,7 +38,7 @@ TRACE_1("params",_vehicle); }; if ((_lock && {(locked _vehicle) != 2}) || {!_lock && {(locked _vehicle) != 0}}) then { TRACE_3("Setting Lock State",_lock,(typeOf _vehicle),_vehicle); - ["VehicleLock_SetVehicleLock", [_vehicle], [_vehicle, _lock]] call EFUNC(common,targetEvent); + ["VehicleLock_SetVehicleLock", [_vehicle, _lock], [_vehicle]] call CBA_fnc_targetEvent; }; }; //Delay call until mission start (so everyone has the eventHandler's installed) diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 3435af24bf4..291f6e42bc7 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -55,7 +55,7 @@ switch (_funcType) do { [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize LSTRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); }; case "finishLockpick": { - ["VehicleLock_SetVehicleLock", [_veh], [_veh, false]] call EFUNC(common,targetEvent); + ["VehicleLock_SetVehicleLock", [_veh, false], [_veh]] call CBA_fnc_targetEvent; }; default { ERROR("bad function type"); diff --git a/addons/viewdistance/XEH_clientInit.sqf b/addons/viewdistance/XEH_clientInit.sqf index dfcfd7e4050..a72194a989c 100644 --- a/addons/viewdistance/XEH_clientInit.sqf +++ b/addons/viewdistance/XEH_clientInit.sqf @@ -19,11 +19,11 @@ if (!hasInterface) exitWith {}; [true] call FUNC(adaptViewDistance); }; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; // Set the EH which waits for a vehicle change to automatically swap between On Foot/In Land Vehicle/In Air Vehicle // Also run when SettingsInitialized runs (not guaranteed) ["playerVehicleChanged",{ [false] call FUNC(adaptViewDistance); - }] call EFUNC(common,addEventHandler); -}] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; +}] call CBA_fnc_addEventHandler; diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index 2e03982fecc..acde791f79f 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -198,4 +198,4 @@ if (!hasInterface) exitWith {}; // Register fire event handler -["firedPlayer", DFUNC(throwGrenade)] call EFUNC(common,addEventHandler); +["firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index ef9397ba575..10fc20e001a 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -26,4 +26,4 @@ private _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNa private _text = [format ["%1 x%2", _name, _numberofGrenades], _color] call EFUNC(common,stringToColoredText); private _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); -["displayTextPicture", [_text, _picture]] call EFUNC(common,localEvent); +["displayTextPicture", [_text, _picture]] call CBA_fnc_localEvent; diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index 9c32634060b..6fb14aeacf0 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -91,4 +91,4 @@ simulWeatherSync; END_COUNTER(weatherPFEH); }, 1, []] call CBA_fnc_addPerFrameHandler; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/weather/XEH_postServerInit.sqf b/addons/weather/XEH_postServerInit.sqf index f7b830b11da..4e6a1129962 100644 --- a/addons/weather/XEH_postServerInit.sqf +++ b/addons/weather/XEH_postServerInit.sqf @@ -15,4 +15,4 @@ call FUNC(initWind); if (GVAR(enableServerController)) then { [FUNC(serverController), GVAR(serverUpdateInterval)] call CBA_fnc_addPerFrameHandler; }; -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/winddeflection/XEH_postInit.sqf b/addons/winddeflection/XEH_postInit.sqf index 14b4db1defb..f78309c30cd 100644 --- a/addons/winddeflection/XEH_postInit.sqf +++ b/addons/winddeflection/XEH_postInit.sqf @@ -9,14 +9,14 @@ GVAR(trackedBullets) = []; if (!GVAR(enabled)) exitWith {}; // Register fire event handler - ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); - ["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); + ["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; if (GVAR(vehicleEnabled)) then { - ["firedPlayerVehicle", DFUNC(handleFired)] call EFUNC(common,addEventHandler); - ["firedPlayerVehicleNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); + ["firedPlayerVehicle", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["firedPlayerVehicleNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; }; [] call FUNC(updateTrajectoryPFH); -}] call EFUNC(common,addEventHandler); +}] call CBA_fnc_addEventHandler; diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index 0d03673e46c..8e7ee84a078 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -5,7 +5,7 @@ ADDON = false; #include "XEH_PREP.hpp" if (isServer) then { - ["zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call EFUNC(common,addEventHandler); + ["zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call CBA_fnc_addEventHandler; }; ADDON = true; diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index d10d36b8391..cfcbdc685bb 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -175,7 +175,7 @@ if (_activated) then { [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; // Added by ace_zeus - ["zeusUnitAssigned", [_logic,_player]] call EFUNC(common,globalEvent); + ["zeusUnitAssigned", [_logic,_player]] call CBA_fnc_globalEvent; //--- Forced interface //if (_forced) then { diff --git a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf index 3acb0244765..91b1b4d7644 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Track" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["AddCargoByClass", ["ACE_Track", _mouseOverUnit, 1, true]] call EFUNC(common,localEvent); + ["AddCargoByClass", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf index c353af189be..f6f1fadb5ac 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Wheel" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["AddCargoByClass", ["ACE_Wheel", _mouseOverUnit, 1, true]] call EFUNC(common,localEvent); + ["AddCargoByClass", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleCaptive.sqf b/addons/zeus/functions/fnc_moduleCaptive.sqf index 8273c8ba6f9..d9b1c429e02 100644 --- a/addons/zeus/functions/fnc_moduleCaptive.sqf +++ b/addons/zeus/functions/fnc_moduleCaptive.sqf @@ -38,7 +38,7 @@ if (isNil QEFUNC(captives,setHandcuffed)) then { } else { _captive = GETVAR(_unit,EGVAR(captives,isHandcuffed),false); // Event initalized by ACE_Captives - ["SetHandcuffed", _unit, [_unit, !_captive]] call EFUNC(common,targetEvent); + ["SetHandcuffed", [_unit, !_captive], _unit] call CBA_fnc_targetEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleSurrender.sqf b/addons/zeus/functions/fnc_moduleSurrender.sqf index 95f35593a5b..9ef8270eeee 100644 --- a/addons/zeus/functions/fnc_moduleSurrender.sqf +++ b/addons/zeus/functions/fnc_moduleSurrender.sqf @@ -41,7 +41,7 @@ if (isNil QEFUNC(captives,setSurrendered)) then { } else { _surrendering = GETVAR(_unit,EGVAR(captives,isSurrendering),false); // Event initalized by ACE_Captives - ["SetSurrendered", _unit, [_unit, !_surrendering]] call EFUNC(common,targetEvent); + ["SetSurrendered", [_unit, !_surrendering], _unit] call CBA_fnc_targetEvent; }; }; }; From 86b90223224510a28c4958faa8e9550fbb94b183 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 22 May 2016 23:13:15 -0500 Subject: [PATCH 190/268] Fix VehLock Macros --- addons/vehiclelock/CfgVehicles.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 18d8fa3401f..f6db9fe4675 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -3,14 +3,14 @@ class ACE_unlockVehicle { \ displayName = CSTRING(Action_UnLock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)]), [_target]] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)]), [_target]] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -27,7 +27,7 @@ displayName = CSTRING(Action_UnLock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)]), [_target]] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -35,7 +35,7 @@ displayName = CSTRING(Action_Lock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)]), [_target]] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ From 84eca899a9e5373d6e2f1fc10dba60b7eb2a56e5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 22 May 2016 23:13:58 -0500 Subject: [PATCH 191/268] Add event renaming system Allows us to switch event names such that anyone currently using our old event framework and names won't have their code broken until it is deprecated in version 3.8.0 --- addons/common/config.cpp | 5 +++++ addons/common/functions/fnc_addEventHandler.sqf | 11 ++++++++++- addons/common/functions/fnc_globalEvent.sqf | 11 ++++++++++- addons/common/functions/fnc_localEvent.sqf | 10 +++++++++- addons/common/functions/fnc_objectEvent.sqf | 6 ++++++ .../common/functions/fnc_removeAllEventHandlers.sqf | 6 ++++++ addons/common/functions/fnc_removeEventHandler.sqf | 10 +++++++++- addons/common/functions/fnc_serverEvent.sqf | 10 +++++++++- addons/common/functions/fnc_targetEvent.sqf | 6 ++++++ 9 files changed, 70 insertions(+), 5 deletions(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index cbe5c5df6a7..83e2d8a2a1f 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -12,6 +12,11 @@ class CfgPatches { }; }; +// This class will be deprecated in version 3.8.0 +class ACE_newEvents { + playMoveNow = QGVAR(playMoveNow); +}; + #include "CfgEventHandlers.hpp" #include "CfgLocationTypes.hpp" diff --git a/addons/common/functions/fnc_addEventHandler.sqf b/addons/common/functions/fnc_addEventHandler.sqf index 4f285dd449e..c7d641b509d 100644 --- a/addons/common/functions/fnc_addEventHandler.sqf +++ b/addons/common/functions/fnc_addEventHandler.sqf @@ -1,5 +1,14 @@ +#define DEBUG_MODE_FULL #include "script_component.hpp" -_this call CBA_fnc_addEventHandler; +params ["_eventName", "_eventCode"]; + +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + +[_eventName, _eventCode] call CBA_fnc_addEventHandler; ACE_DEPRECATED("ace_common_fnc_addEventHandler","3.8.0","CBA_fnc_addEventHandler"); diff --git a/addons/common/functions/fnc_globalEvent.sqf b/addons/common/functions/fnc_globalEvent.sqf index cbd586c39c9..88de2eadf72 100644 --- a/addons/common/functions/fnc_globalEvent.sqf +++ b/addons/common/functions/fnc_globalEvent.sqf @@ -1,5 +1,14 @@ +#define DEBUG_MODE_FULL #include "script_component.hpp" -_this call CBA_fnc_globalEvent; +params ["_eventName", "_eventArgs"]; + +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + +[_eventName, _eventArgs] call CBA_fnc_globalEvent; ACE_DEPRECATED("ace_common_fnc_globalEvent","3.8.0","CBA_fnc_globalEvent"); diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index 84b0aa4898e..87672015e25 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -1,5 +1,13 @@ #include "script_component.hpp" -_this call CBA_fnc_localEvent; +params ["_eventName", "_eventArgs"]; + +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + +[_eventName, _eventArgs] call CBA_fnc_localEvent; ACE_DEPRECATED("ace_common_fnc_localEvent","3.8.0","CBA_fnc_localEvent"); diff --git a/addons/common/functions/fnc_objectEvent.sqf b/addons/common/functions/fnc_objectEvent.sqf index ed9029df65b..21ba60b8022 100644 --- a/addons/common/functions/fnc_objectEvent.sqf +++ b/addons/common/functions/fnc_objectEvent.sqf @@ -2,6 +2,12 @@ params ["_eventName", "_eventTarget", "_eventArgs"]; +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + [_eventName, _eventArgs, _eventTargets] call CBA_fnc_targetEvent; ACE_DEPRECATED("ace_common_fnc_objectEvent","3.8.0","CBA_fnc_targetEvent"); diff --git a/addons/common/functions/fnc_removeAllEventHandlers.sqf b/addons/common/functions/fnc_removeAllEventHandlers.sqf index ca4db8db0a4..8e24e52a7f1 100644 --- a/addons/common/functions/fnc_removeAllEventHandlers.sqf +++ b/addons/common/functions/fnc_removeAllEventHandlers.sqf @@ -2,6 +2,12 @@ params ["_eventName"]; +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + CBA_events_eventNamespace setVariable [_eventName,nil]; CBA_events_eventHashes setVariable [_eventName,nil]; diff --git a/addons/common/functions/fnc_removeEventHandler.sqf b/addons/common/functions/fnc_removeEventHandler.sqf index b241aae833e..003eb1c6d46 100644 --- a/addons/common/functions/fnc_removeEventHandler.sqf +++ b/addons/common/functions/fnc_removeEventHandler.sqf @@ -1,5 +1,13 @@ #include "script_component.hpp" -_this call CBA_fnc_removeEventHandler; +params ["_eventName", "_eventCode"]; + +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + +[_eventName, _eventCode] call CBA_fnc_removeEventHandler; ACE_DEPRECATED("ace_common_fnc_removeEventHandler","3.8.0","CBA_fnc_removeEventHandler"); diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf index 7fbb3d21a67..a9d82f16389 100644 --- a/addons/common/functions/fnc_serverEvent.sqf +++ b/addons/common/functions/fnc_serverEvent.sqf @@ -1,5 +1,13 @@ #include "script_component.hpp" -_this call CBA_fnc_serverEvent; +params ["_eventName", "_eventArgs"]; + +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + +[_eventName, _eventArgs] call CBA_fnc_serverEvent; ACE_DEPRECATED("ace_common_fnc_serverEvent","3.8.0","CBA_fnc_serverEvent"); diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf index e78f193370e..fcc8e37775a 100644 --- a/addons/common/functions/fnc_targetEvent.sqf +++ b/addons/common/functions/fnc_targetEvent.sqf @@ -2,6 +2,12 @@ params ["_eventName", "_eventTargets", "_eventArgs"]; +private _newName = getText (configFile >> "ACE_newEvents" >> _eventName); +if (_newName != "") then { + TRACE_2("Switching Names",_eventName,_newName); + _eventName = _newName; +}; + [_eventName,_eventArgs,_eventTargets] call CBA_fnc_targetEvent; ACE_DEPRECATED("ace_common_fnc_targetEvent","3.8.0","CBA_fnc_targetEvent"); From ccbd52e811a23012ee6563d79980cdf25c00a4cd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 23 May 2016 15:51:09 -0500 Subject: [PATCH 192/268] Fix Can't toggle safemode in FFV seats #3819 Also block safemode when no weapon --- addons/safemode/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/safemode/XEH_postInit.sqf b/addons/safemode/XEH_postInit.sqf index d9be666426b..42f9dc3dd5f 100644 --- a/addons/safemode/XEH_postInit.sqf +++ b/addons/safemode/XEH_postInit.sqf @@ -11,9 +11,9 @@ if (!hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(safeMode), localize LSTRING(SafeMode), { // Conditions: canInteract - if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !([ACE_player] call CBA_fnc_canUseWeapon && {currentWeapon ACE_player != binocular ACE_player}) exitWith {false}; + if !([ACE_player] call CBA_fnc_canUseWeapon && {currentWeapon ACE_player != binocular ACE_player} && {currentWeapon ACE_player != ""}) exitWith {false}; // Statement [ACE_player, currentWeapon ACE_player, currentMuzzle ACE_player] call FUNC(lockSafety); From 78cdd0d55a8314fcedd4323caa9fa2a695de43f3 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 23 May 2016 15:29:35 +0100 Subject: [PATCH 193/268] Add event renaming script --- tools/event_rename.py | 115 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 tools/event_rename.py diff --git a/tools/event_rename.py b/tools/event_rename.py new file mode 100644 index 00000000000..99dd261a02c --- /dev/null +++ b/tools/event_rename.py @@ -0,0 +1,115 @@ +import os +import sys +import re + +un_capitalize = lambda s: s[:1].lower() + s[1:] if s else '' + +def add_to_config(old, new): + with open(add_to_config.file, "r+") as file: + contents = file.read() + + events_class = re.search(r"class\s+ACE_newEvents\s+{\n",contents,re.I) + + if events_class: + newline_index = events_class.end() + insert = " {0} = \"{1}\";\n".format(old,new) + else: + newline_index = len(contents) + insert = "\nclass ACE_newEvents {{\n {0} = \"{1}\";\n}};".format(old,new) + + contents = contents[:newline_index] + insert + contents[newline_index:] + + file.seek(0) + file.write(contents) + file.truncate() + +def event_replace(match): + event = un_capitalize(match.group(1)) + add_to_config(match.group(1), "ace_" + event) + + return "[\"ace_{0}\", {1}] call CBA_fnc_{2}".format(event,match.group(2),match.group(3)) + +def process_directory(dir, config=""): + if not config: + config = os.path.join(dir,"config.cpp") + if os.path.isfile(config): + add_to_config.file = config + + for p in os.listdir(dir): + path = os.path.join(dir, p) + if os.path.isdir(path): + process_directory(path, config) + continue + + ext = os.path.splitext(path)[1] + if ext not in [".sqf",".hpp",".cpp"]: + continue + + with open(path, "r+") as file: + contents = file.read() + + # Simple single-line substitutions + find = r"\[\s*\"(?!ace_)(\w+)\"\s*,\s*(.+?)\s*\]\s+call\s+CBA_fnc_((add|remove|local|global|target|server)Event(Handler)?)" + contents, subbed = re.subn(find,event_replace,contents,0,re.I) + + # Handle multi-line code blocks + for match in re.finditer(r"\[\s*\"(?!ace_)(\w+)\"\s*,\s*({.+?})\s*\]\s+call\s*CBA_fnc_(add|remove)EventHandler",contents,re.I|re.S): + pair = 0 + for i, c in enumerate(contents[match.start(2):]): + if c == "{": + pair += 1 + elif c == "}": + pair -= 1 + if pair == 0: + pair = i + break + if re.match(r"\s*\]\s+call\s+CBA_fnc_(add|remove)EventHandler",contents[pair+match.start(2)+1:],re.I): + event = un_capitalize(match.group(1)) + add_to_config(match.group(1), "ace_" + event) + + contents = contents[:match.start(1)] + "ace_" + event + contents[match.end(1):] + subbed += 1 + + # Handle multi-line argument arrays + for match in re.finditer(r"\[\s*\"(?!ace_)(\w+)\"\s*,\s*(\[.+?\])\s*\]\s+call\s*CBA_fnc_(local|global|server)Event",contents,re.I|re.S): + pair = 0 + for i, c in enumerate(contents[match.start(2):]): + if c == "[": + pair += 1 + elif c == "]": + pair -= 1 + if pair == 0: + pair = i + break + if re.match(r"\s*\]\s+call\s+CBA_fnc_(local|global|server)Event",contents[pair+match.start(2)+1:],re.I): + event = un_capitalize(match.group(1)) + add_to_config(match.group(1), "ace_" + event) + + contents = contents[:match.start(1)] + "ace_" + event + contents[match.end(1):] + subbed += 1 + + if subbed > 0: + print("Making {0} substitutions: {1}".format(subbed,path)) + + file.seek(0) + file.write(contents) + file.truncate() + +def main(): + scriptpath = os.path.realpath(sys.argv[0]) + projectpath = os.path.dirname(os.path.dirname(scriptpath)) + addonspath = os.path.join(projectpath, "addons") + + os.chdir(addonspath) + + for p in os.listdir(addonspath): + path = os.path.join(addonspath, p) + if not os.path.isdir(path): + continue + if p[0] == ".": + continue + + process_directory(path) + +if __name__ == "__main__": + sys.exit(main()) From c4b75160a4b55d9edeba43aeb393397592226ec2 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 24 May 2016 14:13:11 +0100 Subject: [PATCH 194/268] Run event renaming script --- addons/advanced_ballistics/XEH_postInit.sqf | 6 +- addons/advanced_ballistics/config.cpp | 6 ++ addons/atragmx/XEH_postInit.sqf | 2 +- addons/atragmx/config.cpp | 5 +- addons/attach/XEH_clientInit.sqf | 2 +- addons/attach/config.cpp | 4 + addons/backpacks/XEH_postInit.sqf | 2 +- addons/backpacks/config.cpp | 5 ++ .../functions/fnc_onOpenInventory.sqf | 2 +- addons/captives/XEH_postInit.sqf | 14 +-- addons/captives/config.cpp | 19 +++- .../functions/fnc_doApplyHandcuffs.sqf | 2 +- .../captives/functions/fnc_doLoadCaptive.sqf | 2 +- .../functions/fnc_doRemoveHandcuffs.sqf | 2 +- .../functions/fnc_doUnloadCaptive.sqf | 2 +- .../functions/fnc_moduleHandcuffed.sqf | 2 +- .../functions/fnc_moduleSurrender.sqf | 2 +- .../captives/functions/fnc_setHandcuffed.sqf | 2 +- .../captives/functions/fnc_setSurrendered.sqf | 2 +- addons/cargo/XEH_postInit.sqf | 12 +-- addons/cargo/config.cpp | 18 ++++ addons/cargo/functions/fnc_addCargoItem.sqf | 2 +- addons/cargo/functions/fnc_initVehicle.sqf | 2 +- addons/cargo/functions/fnc_loadItem.sqf | 2 +- addons/cargo/functions/fnc_startLoadIn.sqf | 4 +- addons/cargo/functions/fnc_startUnload.sqf | 4 +- addons/cargo/functions/fnc_unloadItem.sqf | 4 +- addons/common/XEH_postInit.sqf | 78 ++++++++--------- addons/common/config.cpp | 75 ++++++++++++++++ .../fnc__handleRequestAllSyncedEvents.sqf | 2 +- .../fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_addSetting.sqf | 2 +- .../common/functions/fnc_assignedItemFix.sqf | 2 +- addons/common/functions/fnc_claim.sqf | 4 +- addons/common/functions/fnc_doAnimation.sqf | 14 +-- addons/common/functions/fnc_firedEH.sqf | 12 +-- addons/common/functions/fnc_fixFloating.sqf | 4 +- addons/common/functions/fnc_headBugFix.sqf | 4 +- addons/common/functions/fnc_hideUnit.sqf | 2 +- addons/common/functions/fnc_loadPerson.sqf | 2 +- addons/common/functions/fnc_muteUnit.sqf | 2 +- .../functions/fnc_muteUnitHandleInitPost.sqf | 2 +- .../functions/fnc_muteUnitHandleRespawn.sqf | 2 +- .../functions/fnc_requestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_setSetting.sqf | 4 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- addons/common/functions/fnc_unhideUnit.sqf | 2 +- addons/common/functions/fnc_unloadPerson.sqf | 2 +- .../functions/fnc_unloadPersonLocal.sqf | 2 +- addons/common/functions/fnc_unmuteUnit.sqf | 2 +- addons/concertina_wire/XEH_postInit.sqf | 2 +- addons/concertina_wire/config.cpp | 5 +- addons/dagr/XEH_postInit.sqf | 2 +- addons/dagr/config.cpp | 4 + addons/disarming/XEH_postInit.sqf | 4 +- addons/disarming/config.cpp | 7 ++ .../functions/fnc_eventTargetFinish.sqf | 2 +- .../functions/fnc_openDisarmDialog.sqf | 2 +- addons/disposable/XEH_postInit.sqf | 6 +- addons/disposable/config.cpp | 6 ++ addons/dragging/XEH_postInit.sqf | 8 +- addons/dragging/config.cpp | 18 ++++ addons/dragging/functions/fnc_carryObject.sqf | 2 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- addons/dragging/functions/fnc_dropObject.sqf | 8 +- .../functions/fnc_dropObject_carry.sqf | 8 +- .../functions/fnc_handleScrollWheel.sqf | 2 +- addons/explosives/XEH_postInit.sqf | 6 +- addons/explosives/config.cpp | 6 ++ addons/fcs/XEH_postInit.sqf | 6 +- addons/fcs/config.cpp | 6 ++ addons/finger/XEH_postInit.sqf | 2 +- addons/finger/config.cpp | 4 + addons/frag/XEH_postInit.sqf | 14 +-- addons/frag/config.cpp | 11 ++- addons/gforces/XEH_postInit.sqf | 2 +- addons/gforces/config.cpp | 4 + addons/goggles/XEH_postInit.sqf | 10 +-- addons/goggles/config.cpp | 10 +++ .../goggles/functions/fnc_handleExplosion.sqf | 4 +- addons/grenades/XEH_postInit.sqf | 8 +- addons/grenades/config.cpp | 8 ++ .../functions/fnc_flashbangThrownFuze.sqf | 2 +- addons/hearing/XEH_postInit.sqf | 8 +- addons/hearing/config.cpp | 7 ++ addons/huntir/XEH_postInit.sqf | 4 +- addons/huntir/config.cpp | 5 ++ addons/interact_menu/XEH_clientInit.sqf | 6 +- addons/interact_menu/config.cpp | 12 +++ .../interact_menu/functions/fnc_keyDown.sqf | 2 +- addons/interact_menu/functions/fnc_keyUp.sqf | 6 +- addons/interact_menu/functions/fnc_render.sqf | 4 +- addons/interaction/XEH_postInit.sqf | 4 +- addons/interaction/config.cpp | 14 +++ .../functions/fnc_doBecomeLeader.sqf | 2 +- addons/interaction/functions/fnc_getDown.sqf | 2 +- addons/interaction/functions/fnc_joinTeam.sqf | 4 +- addons/interaction/functions/fnc_pardon.sqf | 2 +- .../functions/fnc_passMagazine.sqf | 2 +- addons/interaction/functions/fnc_push.sqf | 2 +- addons/interaction/functions/fnc_sendAway.sqf | 2 +- .../interaction/functions/fnc_tapShoulder.sqf | 2 +- addons/laser/XEH_post_init.sqf | 4 +- addons/laser/config.cpp | 8 +- addons/laser/functions/fnc_laserOff.sqf | 30 +++---- addons/laser/functions/fnc_laserOn.sqf | 40 ++++----- addons/laserpointer/XEH_postInit.sqf | 4 +- addons/laserpointer/config.cpp | 5 ++ addons/logistics_uavbattery/config.cpp | 4 + .../functions/fnc_refuelUAV.sqf | 2 +- .../logistics_wirecutter/XEH_clientInit.sqf | 2 +- addons/logistics_wirecutter/config.cpp | 4 + addons/map/XEH_postInitClient.sqf | 2 +- addons/map/config.cpp | 4 + addons/map_gestures/XEH_postInit.sqf | 2 +- addons/map_gestures/config.cpp | 4 + addons/maptools/XEH_preInit.sqf | 8 +- addons/maptools/config.cpp | 11 +++ .../functions/fnc_copyMapRemoteSend.sqf | 2 +- .../maptools/functions/fnc_copyMapStart.sqf | 2 +- .../maptools/functions/fnc_handleKeyDown.sqf | 2 +- .../functions/fnc_handleMouseButton.sqf | 2 +- addons/medical/XEH_postInit.sqf | 48 +++++----- addons/medical/config.cpp | 87 +++++++++++++++++++ .../fnc_actionCheckBloodPressure.sqf | 4 +- .../fnc_actionCheckBloodPressureLocal.sqf | 2 +- .../functions/fnc_actionCheckPulse.sqf | 4 +- .../functions/fnc_actionCheckPulseLocal.sqf | 2 +- .../functions/fnc_actionCheckResponse.sqf | 2 +- .../medical/functions/fnc_actionDiagnose.sqf | 2 +- .../medical/functions/fnc_actionLoadUnit.sqf | 2 +- .../functions/fnc_actionPlaceInBodyBag.sqf | 4 +- .../functions/fnc_actionRemoveTourniquet.sqf | 4 +- .../functions/fnc_actionUnloadUnit.sqf | 2 +- .../functions/fnc_addHeartRateAdjustment.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 4 +- .../medical/functions/fnc_addToTriageCard.sqf | 4 +- addons/medical/functions/fnc_addVitalLoop.sqf | 2 +- .../fnc_displayPatientInformation.sqf | 2 +- .../functions/fnc_onWoundUpdateRequest.sqf | 2 +- .../functions/fnc_requestWoundSync.sqf | 2 +- .../functions/fnc_serverRemoveBody.sqf | 2 +- .../functions/fnc_setCardiacArrest.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 4 +- .../functions/fnc_setHitPointDamage.sqf | 2 +- .../medical/functions/fnc_setUnconscious.sqf | 4 +- addons/medical/functions/fnc_treatment.sqf | 2 +- .../functions/fnc_treatmentAdvanced_CPR.sqf | 4 +- .../fnc_treatmentAdvanced_bandage.sqf | 4 +- .../fnc_treatmentAdvanced_bandageLocal.sqf | 2 +- .../fnc_treatmentAdvanced_fullHeal.sqf | 4 +- .../fnc_treatmentAdvanced_medication.sqf | 2 +- .../functions/fnc_treatmentBasic_bandage.sqf | 4 +- .../functions/fnc_treatmentBasic_bloodbag.sqf | 4 +- .../functions/fnc_treatmentBasic_morphine.sqf | 4 +- addons/medical/functions/fnc_treatmentIV.sqf | 4 +- .../functions/fnc_treatmentTourniquet.sqf | 8 +- .../functions/fnc_treatment_success.sqf | 2 +- .../medical/functions/fnc_unconsciousPFH.sqf | 4 +- addons/medical/functions/fnc_useItem.sqf | 12 +-- addons/medical_menu/XEH_postInit.sqf | 2 +- addons/medical_menu/config.cpp | 6 ++ .../medical_menu/functions/fnc_onMenuOpen.sqf | 4 +- addons/microdagr/XEH_clientInit.sqf | 2 +- addons/microdagr/config.cpp | 4 + addons/mk6mortar/XEH_postInit.sqf | 6 +- addons/mk6mortar/config.cpp | 7 ++ .../fnc_handlePlayerVehicleChanged.sqf | 2 +- addons/modules/XEH_postInit.sqf | 2 +- addons/modules/config.cpp | 5 +- addons/movement/XEH_postInit.sqf | 4 +- addons/movement/config.cpp | 5 ++ addons/nametags/XEH_postInit.sqf | 2 +- addons/nametags/config.cpp | 4 + addons/nightvision/XEH_postInitClient.sqf | 12 +-- addons/nightvision/config.cpp | 9 ++ addons/optics/XEH_postInit.sqf | 4 +- addons/optics/config.cpp | 5 ++ addons/optionsmenu/XEH_postInit.sqf | 2 +- addons/optionsmenu/config.cpp | 4 + addons/overheating/XEH_postInit.sqf | 14 +-- addons/overheating/config.cpp | 14 +++ .../overheating/functions/fnc_jamWeapon.sqf | 2 +- .../functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 2 +- .../functions/fnc_swapBarrelAssistant.sqf | 2 +- .../functions/fnc_swapBarrelCallback.sqf | 2 +- addons/overpressure/XEH_postInit.sqf | 6 +- addons/overpressure/config.cpp | 8 ++ .../overpressure/functions/fnc_firedEHBB.sqf | 2 +- .../overpressure/functions/fnc_firedEHOP.sqf | 2 +- addons/parachute/XEH_postInit.sqf | 6 +- addons/parachute/config.cpp | 6 ++ addons/rearm/XEH_postInit.sqf | 4 +- addons/rearm/config.cpp | 5 ++ addons/recoil/XEH_postInit.sqf | 2 +- addons/recoil/config.cpp | 4 + addons/refuel/XEH_postInit.sqf | 2 +- addons/refuel/config.cpp | 8 ++ addons/refuel/functions/fnc_checkFuel.sqf | 4 +- .../functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_refuel.sqf | 2 +- addons/reload/XEH_postInit.sqf | 10 +-- addons/reload/config.cpp | 9 ++ .../reload/functions/fnc_startLinkingBelt.sqf | 2 +- addons/reloadlaunchers/XEH_postInit.sqf | 2 +- addons/reloadlaunchers/config.cpp | 5 ++ addons/reloadlaunchers/functions/fnc_load.sqf | 2 +- addons/repair/XEH_postInit.sqf | 6 +- addons/repair/config.cpp | 21 +++++ addons/repair/functions/fnc_addSpareParts.sqf | 2 +- addons/repair/functions/fnc_doRemoveTrack.sqf | 4 +- addons/repair/functions/fnc_doRemoveWheel.sqf | 4 +- addons/repair/functions/fnc_doRepair.sqf | 4 +- addons/repair/functions/fnc_doRepairTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceWheel.sqf | 2 +- addons/repair/functions/fnc_repair.sqf | 6 +- addons/repair/functions/fnc_spawnObject.sqf | 4 +- addons/respawn/XEH_postInit.sqf | 4 +- addons/respawn/XEH_serverPostInit.sqf | 2 +- addons/respawn/config.cpp | 9 ++ .../respawn/functions/fnc_initRallypoint.sqf | 2 +- .../respawn/functions/fnc_moveRallypoint.sqf | 2 +- .../functions/fnc_showFriendlyFireMessage.sqf | 2 +- addons/sandbag/XEH_postInit.sqf | 10 +-- addons/sandbag/config.cpp | 10 ++- addons/sandbag/functions/fnc_deploy.sqf | 2 +- addons/scopes/XEH_postInit.sqf | 8 +- addons/scopes/config.cpp | 7 ++ addons/sitting/XEH_clientInit.sqf | 6 +- addons/sitting/config.cpp | 6 ++ addons/spectator/config.cpp | 5 ++ .../spectator/functions/fnc_setSpectator.sqf | 2 +- .../functions/fnc_stageSpectator.sqf | 2 +- addons/switchunits/XEH_postInit.sqf | 2 +- addons/switchunits/config.cpp | 4 + addons/tacticalladder/XEH_postInit.sqf | 10 +-- addons/tacticalladder/config.cpp | 8 ++ addons/tagging/XEH_postInit.sqf | 2 +- addons/tagging/config.cpp | 6 ++ addons/tagging/functions/fnc_createTag.sqf | 2 +- addons/tagging/functions/fnc_tag.sqf | 2 +- addons/trenches/XEH_postInit.sqf | 10 +-- addons/trenches/config.cpp | 9 ++ addons/trenches/functions/fnc_placeTrench.sqf | 2 +- addons/tripod/XEH_postInit.sqf | 8 +- addons/tripod/config.cpp | 8 +- addons/ui/XEH_clientInit.sqf | 2 +- addons/ui/config.cpp | 4 + addons/vector/config.cpp | 4 + addons/vector/functions/fnc_dataTransfer.sqf | 2 +- addons/vehiclelock/XEH_postInit.sqf | 6 +- addons/vehiclelock/config.cpp | 9 ++ .../functions/fnc_addKeyForVehicle.sqf | 2 +- .../functions/fnc_handleVehicleInitPost.sqf | 2 +- addons/vehiclelock/functions/fnc_lockpick.sqf | 2 +- addons/viewdistance/XEH_clientInit.sqf | 2 +- addons/viewdistance/config.cpp | 4 + addons/weaponselect/XEH_postInit.sqf | 2 +- addons/weaponselect/config.cpp | 5 ++ .../fnc_displayGrenadeTypeAndNumber.sqf | 2 +- addons/weather/XEH_postInit.sqf | 2 +- addons/weather/XEH_postServerInit.sqf | 2 +- addons/weather/config.cpp | 6 +- addons/winddeflection/XEH_postInit.sqf | 10 +-- addons/winddeflection/config.cpp | 8 ++ addons/zeus/XEH_preInit.sqf | 2 +- addons/zeus/config.cpp | 9 ++ .../zeus/functions/fnc_bi_moduleCurator.sqf | 2 +- .../functions/fnc_moduleAddSpareTrack.sqf | 2 +- .../functions/fnc_moduleAddSpareWheel.sqf | 2 +- addons/zeus/functions/fnc_moduleCaptive.sqf | 2 +- addons/zeus/functions/fnc_moduleSurrender.sqf | 2 +- 274 files changed, 1090 insertions(+), 472 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 26e0bf93bfa..140820e4000 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -24,7 +24,7 @@ if (!GVAR(extensionAvailable)) exitWith { if (!hasInterface) exitWith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { //If not enabled, dont't add PFEH if (!GVAR(enabled)) exitWith {}; @@ -32,8 +32,8 @@ if (!hasInterface) exitWith {}; [] call FUNC(initializeTerrainExtension); // Register fire event handler - ["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; - ["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; //Add warnings for missing compat PBOs (only if AB is on) { diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 3f974b18df4..363753121ba 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -20,3 +20,9 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_advanced_ballistics"}; }; + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index ef293e93091..dc4230ebaa2 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [] call FUNC(init); [] call FUNC(restore_user_data); -["RangerfinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; +["ace_rangerfinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 3abe32ba34d..925c1a4dfc9 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -14,4 +14,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscTitles.hpp" \ No newline at end of file +#include "RscTitles.hpp" +class ACE_newEvents { + RangerfinderData = "ace_rangerfinderData"; +}; \ No newline at end of file diff --git a/addons/attach/XEH_clientInit.sqf b/addons/attach/XEH_clientInit.sqf index 8ba867ec269..feb7216e6bf 100644 --- a/addons/attach/XEH_clientInit.sqf +++ b/addons/attach/XEH_clientInit.sqf @@ -3,4 +3,4 @@ if (!hasInterface) exitWith {}; //If attach placing, stop when opening menu: -["interactMenuOpened", {GVAR(placeAction) = 0;}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {GVAR(placeAction) = 0;}] call CBA_fnc_addEventHandler; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 0ecc37788a2..3efdaea5616 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -17,3 +17,7 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "GUI_VirtualAmmo.hpp" + +class ACE_newEvents { + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/backpacks/XEH_postInit.sqf b/addons/backpacks/XEH_postInit.sqf index c3341ff3059..de5ffa4bee9 100644 --- a/addons/backpacks/XEH_postInit.sqf +++ b/addons/backpacks/XEH_postInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -["backpackOpened", {_this call FUNC(backpackOpened)}] call CBA_fnc_addEventHandler; +["ace_backpackOpened", {_this call FUNC(backpackOpened)}] call CBA_fnc_addEventHandler; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index ddc76399212..212ea47b5f2 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -13,3 +13,8 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" + +class ACE_newEvents { + backpackOpened = "ace_backpackOpened"; + backpackOpened = "ace_backpackOpened"; +}; \ No newline at end of file diff --git a/addons/backpacks/functions/fnc_onOpenInventory.sqf b/addons/backpacks/functions/fnc_onOpenInventory.sqf index c2f3c861a23..0857f6b7aba 100644 --- a/addons/backpacks/functions/fnc_onOpenInventory.sqf +++ b/addons/backpacks/functions/fnc_onOpenInventory.sqf @@ -24,7 +24,7 @@ private _target = objectParent _backpack; if (isNull _target) exitWith {false}; // raise event on target unit -["backpackOpened", [_target, _backpack], _target] call CBA_fnc_targetEvent; +["ace_backpackOpened", [_target, _backpack], _target] call CBA_fnc_targetEvent; // return false to open inventory as usual false diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 8f6b470a0aa..0c627c55f24 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["SettingsInitialized", { +["ace_settingsInitialized", { // Hold on a little bit longer to ensure anims will work [{ GVAR(captivityEnabled) = true; @@ -24,15 +24,15 @@ if (isServer) then { }]; }; -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["MoveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler; -["MoveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_moveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler; +["ace_moveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler; -["SetHandcuffed", {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler; -["SetSurrendered", {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; +["ace_setHandcuffed", {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler; +["ace_setSurrendered", {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; //Medical Integration Events -["medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index c87408b3410..8b3aec38f27 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -17,4 +17,21 @@ class CfgPatches { #include "CfgMoves.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "CfgEden.hpp" \ No newline at end of file +#include "CfgEden.hpp" +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + medical_onUnconscious = "ace_medical_onUnconscious"; + SetSurrendered = "ace_setSurrendered"; + SetHandcuffed = "ace_setHandcuffed"; + MoveOutCaptive = "ace_moveOutCaptive"; + MoveInCaptive = "ace_moveInCaptive"; + playerChanged = "ace_playerChanged"; + CaptiveStatusChanged = "ace_captiveStatusChanged"; + CaptiveStatusChanged = "ace_captiveStatusChanged"; + SetSurrendered = "ace_setSurrendered"; + SetHandcuffed = "ace_setHandcuffed"; + MoveOutCaptive = "ace_moveOutCaptive"; + SetHandcuffed = "ace_setHandcuffed"; + MoveInCaptive = "ace_moveInCaptive"; + SetHandcuffed = "ace_setHandcuffed"; +}; \ No newline at end of file diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 95236579f4f..35efa16a6d7 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -21,6 +21,6 @@ params ["_unit", "_target"]; playSound3D [QUOTE(PATHTO_R(sounds\cable_tie_zipping.ogg)), objNull, false, (getPosASL _target), 1, 1, 10]; -["SetHandcuffed", [_target, true], [_target]] call CBA_fnc_targetEvent; +["ace_setHandcuffed", [_target, true], [_target]] call CBA_fnc_targetEvent; _unit removeItem "ACE_CableTie"; diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index e4f919a42f2..4d45494fd27 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -47,4 +47,4 @@ if (isNull _vehicle) then { if (isNull _vehicle) exitWith {ERROR("");}; _unit setVariable [QGVAR(isEscorting), false, true]; -["MoveInCaptive", [_target, _vehicle], [_target]] call CBA_fnc_targetEvent; +["ace_moveInCaptive", [_target, _vehicle], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf index 27bb1fd0789..e824893c34f 100644 --- a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf @@ -17,4 +17,4 @@ params ["_unit", "_target"]; -["SetHandcuffed", [_target, false], [_target]] call CBA_fnc_targetEvent; +["ace_setHandcuffed", [_target, false], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doUnloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf index e3d0749d39c..b5c27706c46 100644 --- a/addons/captives/functions/fnc_doUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -18,4 +18,4 @@ params ["_unit", "_target"]; -["MoveOutCaptive", [_target], [_target]] call CBA_fnc_targetEvent; +["ace_moveOutCaptive", [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf index 84a7ed852dc..ea72ca5d267 100644 --- a/addons/captives/functions/fnc_moduleHandcuffed.sqf +++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["SetHandcuffed", [_x, true], [_x]] call CBA_fnc_targetEvent; + ["ace_setHandcuffed", [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 60234e60524..8e342b1aeba 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["SetSurrendered", [_x, true], [_x]] call CBA_fnc_targetEvent; + ["ace_setSurrendered", [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 630726206aa..5092fa94dc9 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -124,4 +124,4 @@ if (_state) then { }; //Global Event after changes: -["CaptiveStatusChanged", [_unit, _state, "SetHandcuffed"]] call CBA_fnc_globalEvent; +["ace_captiveStatusChanged", [_unit, _state, "SetHandcuffed"]] call CBA_fnc_globalEvent; diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index 5fe01b740c2..e0b4cb8fb53 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -117,4 +117,4 @@ if (_state) then { }; //Global Event after changes: -["CaptiveStatusChanged", [_unit, _state, "SetSurrendered"]] call CBA_fnc_globalEvent; +["ace_captiveStatusChanged", [_unit, _state, "SetSurrendered"]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 97d05366af7..90995b8659e 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -1,8 +1,8 @@ #include "script_component.hpp" -["AddCargoByClass", {_this call FUNC(addCargoItem)}] call CBA_fnc_addEventHandler; +["ace_addCargoByClass", {_this call FUNC(addCargoItem)}] call CBA_fnc_addEventHandler; -["LoadCargo", { +["ace_loadCargo", { params ["_item", "_vehicle"]; TRACE_2("LoadCargo EH",_item,_vehicle); @@ -13,11 +13,11 @@ private _itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; if (_loaded) then { // Invoke listenable event - ["cargoLoaded", [_item, _vehicle]] call CBA_fnc_globalEvent; + ["ace_cargoLoaded", [_item, _vehicle]] call CBA_fnc_globalEvent; }; }] call CBA_fnc_addEventHandler; @@ -34,11 +34,11 @@ private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; if (_unloaded) then { // Invoke listenable event - ["cargoUnloaded", [_item, _vehicle]] call CBA_fnc_globalEvent; + ["ace_cargoUnloaded", [_item, _vehicle]] call CBA_fnc_globalEvent; }; // TOOO maybe drag/carry the unloaded item? diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 1aefa496163..1c20a0d7622 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -16,3 +16,21 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "menu.hpp" + +class ACE_newEvents { + LoadCargo = "ace_loadCargo"; + cargoUnloaded = "ace_cargoUnloaded"; + displayTextStructured = "ace_displayTextStructured"; + cargoLoaded = "ace_cargoLoaded"; + displayTextStructured = "ace_displayTextStructured"; + AddCargoByClass = "ace_addCargoByClass"; + ServerUnloadCargo = "ace_serverUnloadCargo"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + UnloadCargo = "ace_unloadCargo"; + displayTextStructured = "ace_displayTextStructured"; + LoadCargo = "ace_loadCargo"; + hideObjectGlobal = "ace_hideObjectGlobal"; + AddCargoByClass = "ace_addCargoByClass"; + cargoAddedByClass = "ace_cargoAddedByClass"; +}; \ No newline at end of file diff --git a/addons/cargo/functions/fnc_addCargoItem.sqf b/addons/cargo/functions/fnc_addCargoItem.sqf index d90ba6c4d38..bc179b89123 100644 --- a/addons/cargo/functions/fnc_addCargoItem.sqf +++ b/addons/cargo/functions/fnc_addCargoItem.sqf @@ -26,4 +26,4 @@ for "_i" from 1 to _amount do { }; // Invoke listenable event -["cargoAddedByClass", [_itemClass, _vehicle, _amount]] call CBA_fnc_globalEvent; +["ace_cargoAddedByClass", [_itemClass, _vehicle, _amount]] call CBA_fnc_globalEvent; diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf index 101799148ac..64ed4c42738 100644 --- a/addons/cargo/functions/fnc_initVehicle.sqf +++ b/addons/cargo/functions/fnc_initVehicle.sqf @@ -29,7 +29,7 @@ if (isServer) then { _cargoClassname = getText (_x >> "type"); _cargoCount = getNumber (_x >> "amount"); TRACE_3("adding ACE_Cargo", (configName _x), _cargoClassname, _cargoCount); - ["AddCargoByClass", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent; + ["ace_addCargoByClass", [_cargoClassname, _vehicle, _cargoCount]] call CBA_fnc_localEvent; }; } count ("true" configClasses (configFile >> "CfgVehicles" >> _type >> "ACE_Cargo" >> "Cargo")); }; diff --git a/addons/cargo/functions/fnc_loadItem.sqf b/addons/cargo/functions/fnc_loadItem.sqf index 49fa531e5e3..36261e05b7b 100644 --- a/addons/cargo/functions/fnc_loadItem.sqf +++ b/addons/cargo/functions/fnc_loadItem.sqf @@ -35,7 +35,7 @@ _vehicle setVariable [QGVAR(space), _space - _itemSize, true]; if (_item isEqualType objNull) then { detach _item; _item attachTo [_vehicle,[0,0,-100]]; - ["hideObjectGlobal", [_item, true]] call CBA_fnc_serverEvent; + ["ace_hideObjectGlobal", [_item, true]] call CBA_fnc_serverEvent; }; true diff --git a/addons/cargo/functions/fnc_startLoadIn.sqf b/addons/cargo/functions/fnc_startLoadIn.sqf index 5476d3e31cd..ceea80da9a9 100644 --- a/addons/cargo/functions/fnc_startLoadIn.sqf +++ b/addons/cargo/functions/fnc_startLoadIn.sqf @@ -40,7 +40,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { [ 5 * _size, [_object,_vehicle], - {["LoadCargo", _this select 0] call CBA_fnc_localEvent}, + {["ace_loadCargo", _this select 0] call CBA_fnc_localEvent}, {}, localize LSTRING(LoadingItem) ] call EFUNC(common,progressBar); @@ -48,7 +48,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { } else { private _displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName"); - ["displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; }; _return diff --git a/addons/cargo/functions/fnc_startUnload.sqf b/addons/cargo/functions/fnc_startUnload.sqf index 741825a3874..3179855b609 100644 --- a/addons/cargo/functions/fnc_startUnload.sqf +++ b/addons/cargo/functions/fnc_startUnload.sqf @@ -37,7 +37,7 @@ if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then [ 5 * _size, [_item, GVAR(interactionVehicle), ACE_player], - {["UnloadCargo", _this select 0] call CBA_fnc_localEvent}, + {["ace_unloadCargo", _this select 0] call CBA_fnc_localEvent}, {}, localize LSTRING(UnloadingItem), {true}, @@ -47,5 +47,5 @@ if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item}; private _displayName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); - ["displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; }; diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 25eb25fa6ca..5faad01120e 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -29,7 +29,7 @@ if ((count _emptyPosAGL) != 3) exitWith { TRACE_4("Could not find unload pos",_vehicle,getPosASL _vehicle,isTouchingGround _vehicle,speed _vehicle); if ((!isNull _unloader) && {_unloader == ACE_player}) then { //display text saying there are no safe places to exit the vehicle - ["displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call CBA_fnc_localEvent; }; false }; @@ -52,7 +52,7 @@ if (_item isEqualType objNull) then { detach _item; // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly // do both on server to ensure they are executed in the correct order - ["ServerUnloadCargo", [_item, _emptyPosAGL]] call CBA_fnc_serverEvent; + ["ace_serverUnloadCargo", [_item, _emptyPosAGL]] call CBA_fnc_serverEvent; } else { private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""]; _newItem setPosASL (AGLtoASL _emptyPosAGL); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 8e389bf68c7..bc109cb6367 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -59,14 +59,14 @@ ////////////////////////////////////////////////// //Status Effect EHs: -["setStatusEffect", {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; +["ace_setStatusEffect", {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; ["forceWalk", false, ["ACE_SwitchUnits", "ACE_Attach", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_dragging"]] call FUNC(statusEffect_addType); ["blockSprint", false, []] call FUNC(statusEffect_addType); ["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType); ["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType); ["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType); -["forceWalk", { +["ace_forceWalk", { params ["_object", "_set"]; TRACE_2("forceWalk EH",_object,_set); _object forceWalk (_set > 0); @@ -135,12 +135,12 @@ if (isServer) then { ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation); }] call CBA_fnc_addEventHandler; -["fixCollision", FUNC(fixCollision)] call CBA_fnc_addEventHandler; -["fixFloating", FUNC(fixFloating)] call CBA_fnc_addEventHandler; -["fixPosition", FUNC(fixPosition)] call CBA_fnc_addEventHandler; +["ace_fixCollision", FUNC(fixCollision)] call CBA_fnc_addEventHandler; +["ace_fixFloating", FUNC(fixFloating)] call CBA_fnc_addEventHandler; +["ace_fixPosition", FUNC(fixPosition)] call CBA_fnc_addEventHandler; -["loadPersonEvent", FUNC(loadPersonLocal)] call CBA_fnc_addEventHandler; -["unloadPersonEvent", FUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler; +["ace_loadPersonEvent", FUNC(loadPersonLocal)] call CBA_fnc_addEventHandler; +["ace_unloadPersonEvent", FUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler; ["lockVehicle", { _this setVariable [QGVAR(lockStatus), locked _this]; @@ -151,21 +151,21 @@ if (isServer) then { _this lock (_this getVariable [QGVAR(lockStatus), locked _this]); }] call CBA_fnc_addEventHandler; -["setDir", {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; -["setFuel", {(_this select 0) setFuel (_this select 1)}] call CBA_fnc_addEventHandler; -["engineOn", {(_this select 0) engineOn (_this select 1)}] call CBA_fnc_addEventHandler; -["setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call CBA_fnc_addEventHandler; -["selectLeader", {(_this select 0) selectLeader (_this select 1)}] call CBA_fnc_addEventHandler; -["setVelocity", {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; -["playMove", {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; -["playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; -["switchMove", {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; -["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; -["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setDir", {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setFuel", {(_this select 0) setFuel (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_engineOn", {(_this select 0) engineOn (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_selectLeader", {(_this select 0) selectLeader (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setVelocity", {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_playMove", {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_switchMove", {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; +["ace_setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; if (isServer) then { - ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler; - ["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler; + ["ace_hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler; + ["ace_enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler; }; @@ -178,14 +178,14 @@ if (isServer) then { if (!isServer) then { ["PlayerJip", { ACE_LOGINFO("JIP event synchronization initialized"); - ["SEH_all", [player]] call CBA_fnc_serverEvent; + ["ace_sEH_all", [player]] call CBA_fnc_serverEvent; }] call CBA_fnc_addEventHandler; } else { - ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; + ["ace_sEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -["SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; -["SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; +["ace_sEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +["ace_sEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; @@ -254,7 +254,7 @@ call FUNC(checkFiles); [] call FUNC(readSettingsFromParamsArray); }; // Event so that ACE_Modules have their settings loaded: - ["InitSettingsFromModules", []] call CBA_fnc_localEvent; + ["ace_initSettingsFromModules", []] call CBA_fnc_localEvent; if (isServer) then { // Publish all settings data after all configs and modules are read @@ -270,7 +270,7 @@ call FUNC(checkFiles); ACE_LOGINFO("Settings initialized."); //Event that settings are safe to use: - ["SettingsInitialized", []] call CBA_fnc_localEvent; + ["ace_settingsInitialized", []] call CBA_fnc_localEvent; //Set init finished and run all delayed functions: GVAR(settingsInitFinished) = true; @@ -350,7 +350,7 @@ GVAR(OldIsCamera) = false; uiNamespace setVariable ["ACE_player", _data]; // Raise ACE event locally - ["playerChanged", [ACE_player, _oldPlayer]] call CBA_fnc_localEvent; + ["ace_playerChanged", [ACE_player, _oldPlayer]] call CBA_fnc_localEvent; }; // "playerVehicleChanged" event @@ -358,7 +358,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerVehicle)) then { // Raise ACE event locally GVAR(OldPlayerVehicle) = _data; - ["playerVehicleChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_playerVehicleChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerTurretChanged" event @@ -366,7 +366,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerTurret)) then { // Raise ACE event locally GVAR(OldPlayerTurret) = _data; - ["playerTurretChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_playerTurretChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerWeaponChanged" event @@ -374,7 +374,7 @@ GVAR(OldIsCamera) = false; if (_data != GVAR(OldPlayerWeapon)) then { // Raise ACE event locally GVAR(OldPlayerWeapon) = _data; - ["playerWeaponChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_playerWeaponChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "playerInventoryChanged" event @@ -406,7 +406,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerInventoryNoAmmo)) then { GVAR(OldPlayerInventoryNoAmmo) = _data; - ["playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear)]] call CBA_fnc_localEvent; + ["ace_playerInventoryChanged", [ACE_player, [ACE_player, false] call FUNC(getAllGear)]] call CBA_fnc_localEvent; }; }; @@ -415,7 +415,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldPlayerVisionMode)) then { // Raise ACE event locally GVAR(OldPlayerVisionMode) = _data; - ["playerVisionModeChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_playerVisionModeChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "cameraViewChanged" event @@ -423,7 +423,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldCameraView)) then { // Raise ACE event locally GVAR(OldCameraView) = _data; - ["cameraViewChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_cameraViewChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "visibleMapChanged" event @@ -431,7 +431,7 @@ GVAR(OldIsCamera) = false; if (!_data isEqualTo GVAR(OldVisibleMap)) then { // Raise ACE event locally GVAR(OldVisibleMap) = _data; - ["visibleMapChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_visibleMapChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; // "activeCameraChanged" event @@ -439,7 +439,7 @@ GVAR(OldIsCamera) = false; if !(_data isEqualTo GVAR(OldIsCamera)) then { // Raise ACE event locally GVAR(OldIsCamera) = _data; - ["activeCameraChanged", [ACE_player, _data]] call CBA_fnc_localEvent; + ["ace_activeCameraChanged", [ACE_player, _data]] call CBA_fnc_localEvent; }; END_COUNTER(stateChecker); @@ -450,8 +450,8 @@ GVAR(OldIsCamera) = false; // Eventhandlers for player controlled machines ////////////////////////////////////////////////// -["displayTextStructured", {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler; -["displayTextPicture", {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler; +["ace_displayTextStructured", {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler; +["ace_displayTextPicture", {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler; ["medical_onUnconscious", { params ["_unit", "_isUnconscious"]; @@ -461,7 +461,7 @@ GVAR(OldIsCamera) = false; }; }] call CBA_fnc_addEventHandler; -["useItem", DFUNC(useItem)] call CBA_fnc_addEventHandler; +["ace_useItem", DFUNC(useItem)] call CBA_fnc_addEventHandler; ////////////////////////////////////////////////// @@ -499,7 +499,7 @@ if (didJip) then { // We are jipping! Get ready and wait, and throw the event [{ if(!isNull player && GVAR(settingsInitFinished)) then { - ["PlayerJip", [player]] call CBA_fnc_localEvent; + ["ace_playerJip", [player]] call CBA_fnc_localEvent; [_this select 1] call CBA_fnc_removePerFrameHandler; }; }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 83e2d8a2a1f..3a9a962d9c9 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -14,6 +14,81 @@ class CfgPatches { // This class will be deprecated in version 3.8.0 class ACE_newEvents { + forceWalk = "ace_forceWalk"; + PlayerJip = "ace_playerJip"; + useItem = "ace_useItem"; + displayTextPicture = "ace_displayTextPicture"; + displayTextStructured = "ace_displayTextStructured"; + activeCameraChanged = "ace_activeCameraChanged"; + visibleMapChanged = "ace_visibleMapChanged"; + cameraViewChanged = "ace_cameraViewChanged"; + playerVisionModeChanged = "ace_playerVisionModeChanged"; + playerInventoryChanged = "ace_playerInventoryChanged"; + playerWeaponChanged = "ace_playerWeaponChanged"; + playerTurretChanged = "ace_playerTurretChanged"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerChanged = "ace_playerChanged"; + SettingsInitialized = "ace_settingsInitialized"; + InitSettingsFromModules = "ace_initSettingsFromModules"; + SEH_s = "ace_sEH_s"; + SEH = "ace_sEH"; + SEH_all = "ace_sEH_all"; + SEH_all = "ace_sEH_all"; + enableSimulationGlobal = "ace_enableSimulationGlobal"; + hideObjectGlobal = "ace_hideObjectGlobal"; + setVanillaHitPointDamage = "ace_setVanillaHitPointDamage"; + setVectorDirAndUp = "ace_setVectorDirAndUp"; + switchMove = "ace_switchMove"; + playMoveNow = "ace_playMoveNow"; + playMove = "ace_playMove"; + setVelocity = "ace_setVelocity"; + selectLeader = "ace_selectLeader"; + setSpeaker = "ace_setSpeaker"; + engineOn = "ace_engineOn"; + setFuel = "ace_setFuel"; + setDir = "ace_setDir"; + unloadPersonEvent = "ace_unloadPersonEvent"; + loadPersonEvent = "ace_loadPersonEvent"; + fixPosition = "ace_fixPosition"; + fixFloating = "ace_fixFloating"; + fixCollision = "ace_fixCollision"; + setStatusEffect = "ace_setStatusEffect"; + SEH_s = "ace_sEH_s"; + SEH_s = "ace_sEH_s"; + setSpeaker = "ace_setSpeaker"; + displayTextStructured = "ace_displayTextStructured"; + unloadPersonEvent = "ace_unloadPersonEvent"; + hideObjectGlobal = "ace_hideObjectGlobal"; + SEH = "ace_sEH"; + SettingChanged = "ace_settingChanged"; + SettingChanged = "ace_settingChanged"; + SEH_s = "ace_sEH_s"; + setSpeaker = "ace_setSpeaker"; + setSpeaker = "ace_setSpeaker"; + setSpeaker = "ace_setSpeaker"; + loadPersonEvent = "ace_loadPersonEvent"; + hideObjectGlobal = "ace_hideObjectGlobal"; + HeadbugFixUsed = "ace_headbugFixUsed"; + HeadbugFixUsed = "ace_headbugFixUsed"; + blockDamage = "ace_blockDamage"; + blockDamage = "ace_blockDamage"; + firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; + firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; + firedPlayerVehicle = "ace_firedPlayerVehicle"; + firedNonPlayer = "ace_firedNonPlayer"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; + switchMove = "ace_switchMove"; + playMoveNow = "ace_playMoveNow"; + playMoveNow = "ace_playMoveNow"; + playMoveNow = "ace_playMoveNow"; + playMoveNow = "ace_playMoveNow"; + playMove = "ace_playMove"; + playMove = "ace_playMove"; + unlockVehicle = "ace_unlockVehicle"; + lockVehicle = "ace_lockVehicle"; + playerInventoryChanged = "ace_playerInventoryChanged"; + SettingChanged = "ace_settingChanged"; playMoveNow = QGVAR(playMoveNow); }; diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index ce57658e6f2..1d4ac98f3ca 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - ["SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; + ["ace_sEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 35aac9d52e8..4dd2e6359e7 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - ["SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; + ["ace_sEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_addSetting.sqf b/addons/common/functions/fnc_addSetting.sqf index 85008e49f91..c4b97ddcce3 100644 --- a/addons/common/functions/fnc_addSetting.sqf +++ b/addons/common/functions/fnc_addSetting.sqf @@ -37,4 +37,4 @@ missionNamespace setVariable [_name, _value]; GVAR(settings) pushBack _this; // Raise event locally -["SettingChanged", [_name, _value]] call CBA_fnc_localEvent; +["ace_settingChanged", [_name, _value]] call CBA_fnc_localEvent; diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf index cfa73a89015..4604e1b987e 100644 --- a/addons/common/functions/fnc_assignedItemFix.sqf +++ b/addons/common/functions/fnc_assignedItemFix.sqf @@ -28,7 +28,7 @@ GVAR(AssignedItemsShownItems) = [ ACE_isGPSEnabled ]; -["playerInventoryChanged", { +["ace_playerInventoryChanged", { params ["_unit"]; private _assignedItems = getUnitLoadout _unit param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index 0b5761125fc..2699e423bd7 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -28,9 +28,9 @@ _target setVariable [QGVAR(owner), _unit, true]; // lock target object if (_lockTarget) then { if (!isNull _unit) then { - ["lockVehicle", _target, _target] call CBA_fnc_targetEvent; + ["ace_lockVehicle", _target, _target] call CBA_fnc_targetEvent; } else { - ["unlockVehicle", _target, _target] call CBA_fnc_targetEvent; + ["ace_unlockVehicle", _target, _target] call CBA_fnc_targetEvent; }; }; diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index b9cbf2f4b35..9460debb78c 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -41,34 +41,34 @@ TRACE_2("",local _unit,vehicle _unit); switch (_priority) do { case 0: { if (_unit == vehicle _unit) then { - ["playMove", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + ["ace_playMove", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMove", [_unit, _animation]] call CBA_fnc_globalEvent; + ["ace_playMove", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 1: { if (_unit == vehicle _unit) then { - ["playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + ["ace_playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; + ["ace_playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 2: { // try playMoveNow first if (_unit == vehicle _unit) then { - ["playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + ["ace_playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; + ["ace_playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; }; // if animation doesn't respond, do switchMove if (animationState _unit != _animation) then { TRACE_1("did not respond to playMoveNow",animationState _unit); // Execute on all machines. SwitchMove has local effects. - ["switchMove", [_unit, _animation]] call CBA_fnc_globalEvent; + ["ace_switchMove", [_unit, _animation]] call CBA_fnc_globalEvent; }; }; default {}; diff --git a/addons/common/functions/fnc_firedEH.sqf b/addons/common/functions/fnc_firedEH.sqf index ba2ca1923c8..488766fafff 100644 --- a/addons/common/functions/fnc_firedEH.sqf +++ b/addons/common/functions/fnc_firedEH.sqf @@ -26,12 +26,12 @@ TRACE_7("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile if (_unit isKindOf "CAManBase") then { // The unit it on foot if (_unit == ACE_player) then { - ["firedPlayer", _this] call CBA_fnc_localEvent; + ["ace_firedPlayer", _this] call CBA_fnc_localEvent; } else { if ([_unit] call EFUNC(common,isPlayer)) then { - ["firedPlayerNonLocal", _this] call CBA_fnc_localEvent; + ["ace_firedPlayerNonLocal", _this] call CBA_fnc_localEvent; } else { - ["firedNonPlayer", _this] call CBA_fnc_localEvent; + ["ace_firedNonPlayer", _this] call CBA_fnc_localEvent; }; }; } else { @@ -55,12 +55,12 @@ if (_unit isKindOf "CAManBase") then { }; if (_gunner == ACE_player) then { - ["firedPlayerVehicle", _this] call CBA_fnc_localEvent; + ["ace_firedPlayerVehicle", _this] call CBA_fnc_localEvent; } else { if ([_gunner] call EFUNC(common,isPlayer)) then { - ["firedPlayerVehicleNonLocal", _this] call CBA_fnc_localEvent; + ["ace_firedPlayerVehicleNonLocal", _this] call CBA_fnc_localEvent; } else { - ["firedNonPlayerVehicle", _this] call CBA_fnc_localEvent; + ["ace_firedNonPlayerVehicle", _this] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/common/functions/fnc_fixFloating.sqf b/addons/common/functions/fnc_fixFloating.sqf index dfd9e431cd0..752b5108bb4 100644 --- a/addons/common/functions/fnc_fixFloating.sqf +++ b/addons/common/functions/fnc_fixFloating.sqf @@ -21,7 +21,7 @@ if (!local _object) exitWith {}; if (_object isKindOf "CAManBase") exitWith {}; //We need to manually set allowDamage to true for setHitIndex to function -["blockDamage", [_object, 0]] call CBA_fnc_localEvent; +["ace_blockDamage", [_object, 0]] call CBA_fnc_localEvent; // save and restore hitpoints, see below why private _hitPointDamages = getAllHitPointsDamage _object; @@ -41,4 +41,4 @@ _object setDamage damage _object; //manually re-enable allowDamage to previous setting (ref statusEffect_funcs) private _effectVarName = format [QGVAR(effect_%1), "blockDamage"]; private _effectNumber = _object getVariable [_effectVarName, 0]; -["blockDamage", [_object, _effectNumber]] call CBA_fnc_localEvent; +["ace_blockDamage", [_object, _effectNumber]] call CBA_fnc_localEvent; diff --git a/addons/common/functions/fnc_headBugFix.sqf b/addons/common/functions/fnc_headBugFix.sqf index bb9e0c219fc..b5a1fc0d39a 100644 --- a/addons/common/functions/fnc_headBugFix.sqf +++ b/addons/common/functions/fnc_headBugFix.sqf @@ -17,8 +17,8 @@ private _unit = ACE_player; private _anim = animationState _unit; -["HeadbugFixUsed", [profileName, _anim]] call CBA_fnc_serverEvent; -["HeadbugFixUsed", [profileName, _anim]] call CBA_fnc_localEvent; +["ace_headbugFixUsed", [profileName, _anim]] call CBA_fnc_serverEvent; +["ace_headbugFixUsed", [profileName, _anim]] call CBA_fnc_localEvent; if (_unit != vehicle _unit || {!([_unit, objNull, ["isNotSitting"]] call FUNC(canInteractWith))}) exitWith {false}; diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index ef2bafb5593..58b5dc2e2c9 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -28,5 +28,5 @@ if !(_reason in _setHiddenReasons) then { }; if !(isObjectHidden _unit) then { - ["hideObjectGlobal", [_unit, true]] call CBA_fnc_serverEvent; + ["ace_hideObjectGlobal", [_unit, true]] call CBA_fnc_serverEvent; }; diff --git a/addons/common/functions/fnc_loadPerson.sqf b/addons/common/functions/fnc_loadPerson.sqf index 8e6b768f76d..f8a4456b964 100644 --- a/addons/common/functions/fnc_loadPerson.sqf +++ b/addons/common/functions/fnc_loadPerson.sqf @@ -32,7 +32,7 @@ private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], if (!isNull _vehicle) then { [_unit, true, GROUP_SWITCH_ID, side group _caller] call FUNC(switchToGroupSide); - ["loadPersonEvent", [_unit, _vehicle, _caller], _unit] call CBA_fnc_targetEvent; + ["ace_loadPersonEvent", [_unit, _vehicle, _caller], _unit] call CBA_fnc_targetEvent; }; _vehicle diff --git a/addons/common/functions/fnc_muteUnit.sqf b/addons/common/functions/fnc_muteUnit.sqf index d2448577e1e..d34b6055956 100644 --- a/addons/common/functions/fnc_muteUnit.sqf +++ b/addons/common/functions/fnc_muteUnit.sqf @@ -29,6 +29,6 @@ private _speaker = speaker _unit; if (_speaker == "ACE_NoVoice") exitWith {}; -["setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_globalEvent; +["ace_setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_globalEvent; _unit setVariable ["ACE_OriginalSpeaker", _speaker, true]; diff --git a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf index 08be3a3e195..f71e3e83623 100644 --- a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf +++ b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf @@ -16,5 +16,5 @@ params ["_unit"]; // setSpeaker gets overwritten after init on remote units; if unit is muted, setSpeaker again if (count (_unit getVariable [QGVAR(muteUnitReasons), []]) > 0) then { - ["setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_localEvent; + ["ace_setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_localEvent; }; diff --git a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf index 47a55aa615a..cfb64e8c690 100644 --- a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf +++ b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf @@ -18,4 +18,4 @@ params ["_unit"]; _unit setVariable [QGVAR(muteUnitReasons), _unit getVariable [QGVAR(muteUnitReasons), []], true]; // fix mp issues with respawning and the speaker -["setSpeaker", [_unit, speaker _unit]] call CBA_fnc_globalEvent; +["ace_setSpeaker", [_unit, speaker _unit]] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index b89256246ad..da01201395c 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -["SEH_s", [_eventName, ACE_player] ] call CBA_fnc_serverEvent; +["ace_sEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index b5b7f3a6ec6..5a56b385a79 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -78,8 +78,8 @@ if (isServer && {_broadcastChanges}) then { publicVariable _name; // Raise event globally, this publicizes eventual changes in _force status so clients can update it locally - ["SettingChanged", [_name, _value, _force]] call CBA_fnc_globalEvent; + ["ace_settingChanged", [_name, _value, _force]] call CBA_fnc_globalEvent; } else { // Raise event locally - ["SettingChanged", [_name, _value, _force]] call CBA_fnc_localEvent; + ["ace_settingChanged", [_name, _value, _force]] call CBA_fnc_localEvent; }; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 3964d23afc0..996ff0f4c87 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -["SEH", _eventData] call CBA_fnc_globalEvent; +["ace_sEH", _eventData] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_unhideUnit.sqf b/addons/common/functions/fnc_unhideUnit.sqf index 2d1889065d2..f2e8608ec5f 100644 --- a/addons/common/functions/fnc_unhideUnit.sqf +++ b/addons/common/functions/fnc_unhideUnit.sqf @@ -28,5 +28,5 @@ if (_reason in _setHiddenReasons) then { }; if (_setHiddenReasons isEqualTo []) then { - ["hideObjectGlobal",[_unit,false]] call CBA_fnc_serverEvent; + ["ace_hideObjectGlobal", [_unit,false]] call CBA_fnc_serverEvent; }; diff --git a/addons/common/functions/fnc_unloadPerson.sqf b/addons/common/functions/fnc_unloadPerson.sqf index 2096b188363..c88e8d23a65 100644 --- a/addons/common/functions/fnc_unloadPerson.sqf +++ b/addons/common/functions/fnc_unloadPerson.sqf @@ -26,7 +26,7 @@ if (_vehicle == _unit) exitWith {false}; if (speed _vehicle > 1 || {((getPos _vehicle) select 2) > 2}) exitWith {false}; if (!isNull _vehicle) then { - ["unloadPersonEvent", [_unit, _vehicle], [_unit]] call CBA_fnc_targetEvent; + ["ace_unloadPersonEvent", [_unit, _vehicle], [_unit]] call CBA_fnc_targetEvent; }; true diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index adbbe0d9a90..b734109a16f 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -27,7 +27,7 @@ if (count _emptyPos != 3) exitwith { ACE_LOGWARNING_4("Could not find unload pos %1-ASL: %2 isTouchingGround: %3 Speed: %4",_vehicle, getPosASL _vehicle, isTouchingGround _vehicle, speed _vehicle); if ((!isNull _unloader) && {[_unloader] call FUNC(isPlayer)}) then { //display text saying there are no safe places to exit the vehicle - ["displayTextStructured", [localize LSTRING(NoRoomToUnload)], [_unloader]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [localize LSTRING(NoRoomToUnload)], [_unloader]] call CBA_fnc_targetEvent; }; false }; diff --git a/addons/common/functions/fnc_unmuteUnit.sqf b/addons/common/functions/fnc_unmuteUnit.sqf index c8e450016dd..0474975a16e 100644 --- a/addons/common/functions/fnc_unmuteUnit.sqf +++ b/addons/common/functions/fnc_unmuteUnit.sqf @@ -32,4 +32,4 @@ private _speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; if (_speaker == "") exitWith {}; -["setSpeaker", [_unit, _speaker], _unit] call CBA_fnc_targetEvent; +["ace_setSpeaker", [_unit, _speaker], _unit] call CBA_fnc_targetEvent; diff --git a/addons/concertina_wire/XEH_postInit.sqf b/addons/concertina_wire/XEH_postInit.sqf index 361b561f0b6..7cb8909c817 100644 --- a/addons/concertina_wire/XEH_postInit.sqf +++ b/addons/concertina_wire/XEH_postInit.sqf @@ -4,7 +4,7 @@ GVAR(placer) = objNull; GVAR(deployPFH) = -1; // Deploy concertina wire if interact menu is opened -["interactMenuOpened", { +["ace_interactMenuOpened", { if (GVAR(deployPFH) != -1) then { GVAR(placer) setVariable [QGVAR(wireDeployed), true]; }; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index 06b7bf5d86b..6404b1018ed 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -12,4 +12,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" -#include "CfgVehicles.hpp" \ No newline at end of file +#include "CfgVehicles.hpp" +class ACE_newEvents { + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index bcfc91061ad..84e45a8f854 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -30,4 +30,4 @@ GVAR(vectorConnected) = false; GVAR(noVectorData) = true; GVAR(vectorGrid) = "00000000"; -["RangerfinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; +["ace_rangerfinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index 9f46660aaa2..fc63e4a0ecf 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -16,3 +16,7 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "Dialog.hpp" #include "RscTitles.hpp" + +class ACE_newEvents { + RangerfinderData = "ace_rangerfinderData"; +}; \ No newline at end of file diff --git a/addons/disarming/XEH_postInit.sqf b/addons/disarming/XEH_postInit.sqf index 82a77e182cf..92a2c101481 100644 --- a/addons/disarming/XEH_postInit.sqf +++ b/addons/disarming/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" -["DisarmDropItems", FUNC(eventTargetStart)] call CBA_fnc_addEventHandler; -["DisarmDebugCallback", FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler; +["ace_disarmDropItems", FUNC(eventTargetStart)] call CBA_fnc_addEventHandler; +["ace_disarmDebugCallback", FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index 00f8204b09a..d8358a2bd32 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -17,3 +17,10 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "gui_disarm.hpp" + +class ACE_newEvents { + DisarmDebugCallback = "ace_disarmDebugCallback"; + DisarmDropItems = "ace_disarmDropItems"; + DisarmDropItems = "ace_disarmDropItems"; + DisarmDebugCallback = "ace_disarmDebugCallback"; +}; \ No newline at end of file diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index e6c6782d85f..1bd1ffa342b 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -23,5 +23,5 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this); - ["DisarmDebugCallback", [_caller, _target, _errorMsg], [_caller]] call CBA_fnc_targetEvent; + ["ace_disarmDebugCallback", [_caller, _target, _errorMsg], [_caller]] call CBA_fnc_targetEvent; }; diff --git a/addons/disarming/functions/fnc_openDisarmDialog.sqf b/addons/disarming/functions/fnc_openDisarmDialog.sqf index fc66170d010..ea0de8942a2 100644 --- a/addons/disarming/functions/fnc_openDisarmDialog.sqf +++ b/addons/disarming/functions/fnc_openDisarmDialog.sqf @@ -42,7 +42,7 @@ GVAR(disarmTarget) = _target; if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");}; TRACE_2("Debug: Droping %1 from %2",_data,GVAR(disarmTarget)); - ["DisarmDropItems", [ACE_player, GVAR(disarmTarget), [_data]], [GVAR(disarmTarget)]] call CBA_fnc_targetEvent; + ["ace_disarmDropItems", [ACE_player, GVAR(disarmTarget), [_data]], [GVAR(disarmTarget)]] call CBA_fnc_targetEvent; false //not sure what this does }]; diff --git a/addons/disposable/XEH_postInit.sqf b/addons/disposable/XEH_postInit.sqf index 520ff676911..9c544566203 100644 --- a/addons/disposable/XEH_postInit.sqf +++ b/addons/disposable/XEH_postInit.sqf @@ -3,7 +3,7 @@ if (!hasInterface) exitWith {}; -["playerInventoryChanged", { +["ace_playerInventoryChanged", { params ["_unit"]; [_unit] call FUNC(takeLoadedATWeapon); [_unit] call FUNC(updateInventoryDisplay); @@ -11,5 +11,5 @@ if (!hasInterface) exitWith {}; // Register fire event handler // Only for the local player and for AI. Non-local players will handle it themselves -["firedPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; -["firedNonPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; +["ace_firedNonPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index 0f256824d72..63f0dc0a030 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -16,3 +16,9 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + playerInventoryChanged = "ace_playerInventoryChanged"; + firedNonPlayer = "ace_firedNonPlayer"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 101463eb286..d6157edd35e 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -20,11 +20,11 @@ if (isNil "ACE_maxWeightCarry") then { ["isNotCarrying", {!((_this select 0) getVariable [QGVAR(isCarrying), false])}] call EFUNC(common,addCanInteractWithCondition); // release object on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 0c9cfb3c43e..59bec425d82 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -15,3 +15,21 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgMovesBasic.hpp" + +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + playerWeaponChanged = "ace_playerWeaponChanged"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerChanged = "ace_playerChanged"; + setDir = "ace_setDir"; + fixFloating = "ace_fixFloating"; + fixPosition = "ace_fixPosition"; + fixCollision = "ace_fixCollision"; + fixCollision = "ace_fixCollision"; + fixFloating = "ace_fixFloating"; + fixPosition = "ace_fixPosition"; + fixCollision = "ace_fixCollision"; + fixCollision = "ace_fixCollision"; + setDir = "ace_setDir"; + setDir = "ace_setDir"; +}; \ No newline at end of file diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index 69aa9308848..e4cb1f58c8b 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -44,7 +44,7 @@ if (_target isKindOf "CAManBase") then { _target attachTo [_unit, _position]; }; -["setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; +["ace_setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; _unit setVariable [QGVAR(isCarrying), true, true]; _unit setVariable [QGVAR(carriedObject), _target, true]; diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index df179769736..b97a6a2a011 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -33,7 +33,7 @@ _position = _position vectorAdd [0, 0, _offset]; // attach object TRACE_3("attaching",_position,_offset,_direction); _target attachTo [_unit, _position]; -["setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; +["ace_setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; if (_target isKindOf "CAManBase") then { [_target, "AinjPpneMrunSnonWnonDb_still", 0, true] call EFUNC(common,doAnimation); diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index 6cd2869a4b4..e32734ebb43 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -30,8 +30,8 @@ if !(_unit getVariable ["ACE_isUnconscious", false]) then { }; // prevent collision damage -["fixCollision", _unit] call CBA_fnc_localEvent; -["fixCollision", _target, _target] call CBA_fnc_targetEvent; +["ace_fixCollision", _unit] call CBA_fnc_localEvent; +["ace_fixCollision", _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -62,8 +62,8 @@ _unit setVariable [QGVAR(draggedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["fixPosition", _target, _target] call CBA_fnc_targetEvent; - ["fixFloating", _target, _target] call CBA_fnc_targetEvent; + ["ace_fixPosition", _target, _target] call CBA_fnc_targetEvent; + ["ace_fixFloating", _target, _target] call CBA_fnc_targetEvent; }; if (_unit getVariable ["ACE_isUnconscious", false]) then { diff --git a/addons/dragging/functions/fnc_dropObject_carry.sqf b/addons/dragging/functions/fnc_dropObject_carry.sqf index 1e25403c1d0..49cf4dbcad7 100644 --- a/addons/dragging/functions/fnc_dropObject_carry.sqf +++ b/addons/dragging/functions/fnc_dropObject_carry.sqf @@ -25,8 +25,8 @@ TRACE_2("params",_unit,_target); private _inBuilding = [_unit] call FUNC(isObjectOnObject); // prevent collision damage -["fixCollision", _unit] call CBA_fnc_localEvent; -["fixCollision", _target, _target] call CBA_fnc_targetEvent; +["ace_fixCollision", _unit] call CBA_fnc_localEvent; +["ace_fixCollision", _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -67,8 +67,8 @@ _unit setVariable [QGVAR(carriedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["fixPosition", _target, _target] call CBA_fnc_targetEvent; - ["fixFloating", _target, _target] call CBA_fnc_targetEvent; + ["ace_fixPosition", _target, _target] call CBA_fnc_targetEvent; + ["ace_fixFloating", _target, _target] call CBA_fnc_targetEvent; }; // recreate UAV crew diff --git a/addons/dragging/functions/fnc_handleScrollWheel.sqf b/addons/dragging/functions/fnc_handleScrollWheel.sqf index 0413e51efe2..505ad441bf3 100644 --- a/addons/dragging/functions/fnc_handleScrollWheel.sqf +++ b/addons/dragging/functions/fnc_handleScrollWheel.sqf @@ -42,6 +42,6 @@ _carriedItem attachTo [_unit]; //reset the carry direction private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0]; -["setDir", [_carriedItem, _direction], _carriedItem] call CBA_fnc_targetEvent; +["ace_setDir", [_carriedItem, _direction], _carriedItem] call CBA_fnc_targetEvent; true diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 9b21dedc733..8b08ffd804e 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -21,7 +21,7 @@ //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) if (isServer) then { - ["medical_onUnconscious", { + ["ace_medical_onUnconscious", { params ["_unit", "_isUnconscious"]; if (!_isUnconscious) exitWith {}; TRACE_1("Knocked Out, Doing Deadman", _unit); @@ -37,7 +37,7 @@ if (isServer) then { (!isNull _explosive && {alive _explosive}) }; TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations)); - ["serverSendsOrientations", [GVAR(explosivesOrientations)], _logic] call CBA_fnc_targetEvent; + ["ace_serverSendsOrientations", [GVAR(explosivesOrientations)], _logic] call CBA_fnc_targetEvent; }] call CBA_fnc_addEventHandler; }; @@ -66,7 +66,7 @@ if (didJIP) then { // Create a logic to get the client ID GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic)); - ["clientRequestsOrientations", [GVAR(localLogic)]] call CBA_fnc_serverEvent; + ["ace_clientRequestsOrientations", [GVAR(localLogic)]] call CBA_fnc_serverEvent; }; ["interactMenuOpened", { diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 3fc047fa6a4..8b5b91007bc 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -42,3 +42,9 @@ class CfgMineTriggers { mineTriggerRange = 1; }; }; + +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + clientRequestsOrientations = "ace_clientRequestsOrientations"; + serverSendsOrientations = "ace_serverSendsOrientations"; +}; \ No newline at end of file diff --git a/addons/fcs/XEH_postInit.sqf b/addons/fcs/XEH_postInit.sqf index 5fd2af9ccf5..02c9e72ae58 100644 --- a/addons/fcs/XEH_postInit.sqf +++ b/addons/fcs/XEH_postInit.sqf @@ -8,7 +8,7 @@ if (!hasInterface) exitWith {}; #include "initKeybinds.sqf" -["infoDisplayChanged", { +["ace_infoDisplayChanged", { if (!isNull ((_this select 0) displayCtrl 1713151)) then { uiNamespace setVariable ["ACE_dlgRangefinder", _this select 0]; ((_this select 0) displayCtrl 151) ctrlSetTextColor [0,0,0,0]; @@ -16,8 +16,8 @@ if (!hasInterface) exitWith {}; }] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayerVehicle", DFUNC(firedEH)] call CBA_fnc_addEventHandler; -["firedPlayerVehicleNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["ace_firedPlayerVehicle", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["ace_firedPlayerVehicleNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; // Register event for global updates [QGVAR(forceUpdate), {[ACE_player] call FUNC(onForceUpdate)}] call CBA_fnc_addEventHandler; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 12edf02ba3d..21045dd6253 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -24,3 +24,9 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_fcs"}; }; + +class ACE_newEvents { + infoDisplayChanged = "ace_infoDisplayChanged"; + firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; + firedPlayerVehicle = "ace_firedPlayerVehicle"; +}; \ No newline at end of file diff --git a/addons/finger/XEH_postInit.sqf b/addons/finger/XEH_postInit.sqf index e36872dc8d0..2b3da6eb64f 100644 --- a/addons/finger/XEH_postInit.sqf +++ b/addons/finger/XEH_postInit.sqf @@ -6,7 +6,7 @@ GVAR(lastFPTime) = -1; GVAR(fingersHash) = HASH_CREATE; GVAR(pfeh_id) = -1; -["SettingsInitialized", { +["ace_settingsInitialized", { //If not enabled, dont't bother adding keybind or eventhandler if (!GVAR(enabled)) exitWith {}; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 2cc3be5dddc..86623c3860b 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -16,3 +16,7 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/frag/XEH_postInit.sqf b/addons/frag/XEH_postInit.sqf index 6dc34340b93..7c09e14764f 100644 --- a/addons/frag/XEH_postInit.sqf +++ b/addons/frag/XEH_postInit.sqf @@ -9,17 +9,17 @@ if(isServer) then { [QGVAR(frag_eh), { _this call FUNC(frago); }] call CBA_fnc_addEventHandler; }; -["SettingsInitialized", { +["ace_settingsInitialized", { //If not enabled, exit if (!GVAR(enabled)) exitWith {}; // Register fire event handler - ["firedPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; - ["firedPlayerNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; - ["firedNonPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; - ["firedPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; - ["firedPlayerVehicleNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; - ["firedNonPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedNonPlayer", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerVehicleNonLocal", DFUNC(fired)] call CBA_fnc_addEventHandler; + ["ace_firedNonPlayerVehicle", DFUNC(fired)] call CBA_fnc_addEventHandler; [FUNC(masterPFH), 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 16af88bfc4c..2f650a7b6a6 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -12,4 +12,13 @@ class CfgPatches { #include "CfgEventhandlers.hpp" #include "CfgAmmo.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "ACE_Settings.hpp" +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; + firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; + firedPlayerVehicle = "ace_firedPlayerVehicle"; + firedNonPlayer = "ace_firedNonPlayer"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf index ce6f3ce1f2f..795b473164a 100644 --- a/addons/gforces/XEH_postInit.sqf +++ b/addons/gforces/XEH_postInit.sqf @@ -4,7 +4,7 @@ if (!hasInterface) exitWith {}; GVAR(pfID) = -1; -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_1("SettingsInitialized eh",GVAR(enabledFor)); if (GVAR(enabledFor) == 0) exitWith {}; //Module has no effect if enabledFor is "None" diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index 6c40f4ce1c5..d0d7965ffa3 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -17,3 +17,7 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index e27f3024338..25ee3ba5af3 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -44,13 +44,13 @@ GVAR(surfaceCacheIsDust) = false; // init GlassesChanged eventhandler GVAR(OldGlasses) = ""; -["playerInventoryChanged", { +["ace_playerInventoryChanged", { params ["_unit"]; private _currentGlasses = goggles _unit; if (GVAR(OldGlasses) != _currentGlasses) then { - ["GlassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent; + ["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent; GVAR(OldGlasses) = _currentGlasses; }; }] call CBA_fnc_addEventHandler; @@ -111,8 +111,8 @@ private _fnc_checkGoggles = { }; }; -["cameraViewChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; -["activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; +["ace_cameraViewChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; +["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler; // goggles effects main PFH [{ @@ -135,4 +135,4 @@ private _fnc_checkGoggles = { }, 0.5, []] call CBA_fnc_addPerFrameHandler; // Register fire event handler -["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 0812200a87f..7f7d932cb14 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -268,3 +268,13 @@ class CfgCloudlets { destroyOnWaterSurface = 1; }; }; + +class ACE_newEvents { + playerInventoryChanged = "ace_playerInventoryChanged"; + firedPlayer = "ace_firedPlayer"; + activeCameraChanged = "ace_activeCameraChanged"; + cameraViewChanged = "ace_cameraViewChanged"; + GlassesChanged = "ace_glassesChanged"; + GlassesCracked = "ace_glassesCracked"; + GlassesCracked = "ace_glassesCracked"; +}; \ No newline at end of file diff --git a/addons/goggles/functions/fnc_handleExplosion.sqf b/addons/goggles/functions/fnc_handleExplosion.sqf index 0da7e06a8cb..44be6ab6c10 100644 --- a/addons/goggles/functions/fnc_handleExplosion.sqf +++ b/addons/goggles/functions/fnc_handleExplosion.sqf @@ -27,7 +27,7 @@ _config = configFile >> "CfgGlasses" >> goggles _unit; if ((_this select 1) call FUNC(GetExplosionIndex) < getNumber (_config >> "ACE_Resistance")) exitWith {true}; if !([_unit] call FUNC(isGogglesVisible)) exitWith { - ["GlassesCracked", [_unit]] call CBA_fnc_localEvent; + ["ace_glassesCracked", [_unit]] call CBA_fnc_localEvent; true }; @@ -46,5 +46,5 @@ if (getText (_config >> "ACE_OverlayCracked") != "") then { (GLASSDISPLAY displayCtrl 10650) ctrlSetText getText (_config >> "ACE_OverlayCracked"); }; -["GlassesCracked", [_unit]] call CBA_fnc_localEvent; +["ace_glassesCracked", [_unit]] call CBA_fnc_localEvent; true diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf index df670338539..2d05c622c93 100644 --- a/addons/grenades/XEH_postInit.sqf +++ b/addons/grenades/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" -["flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler; +["ace_flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; @@ -25,6 +25,6 @@ GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; // Register fire event handler -["firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; -["firedPlayerNonLocal", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; -["firedNonPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["ace_firedPlayerNonLocal", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["ace_firedNonPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 2f9e631fe14..27c729f06d5 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -19,3 +19,11 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "Effects.hpp" + +class ACE_newEvents { + firedNonPlayer = "ace_firedNonPlayer"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; + flashbangExplosion = "ace_flashbangExplosion"; + flashbangExplosion = "ace_flashbangExplosion"; +}; \ No newline at end of file diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index 5518f5967bc..a617ea3a7a5 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -21,5 +21,5 @@ TRACE_1("params",_projectile); if (alive _projectile) then { playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - ["flashbangExplosion", [getPosASL _projectile]] call CBA_fnc_globalEvent; + ["ace_flashbangExplosion", [getPosASL _projectile]] call CBA_fnc_globalEvent; }; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index 1131ec7823a..3502b850200 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -12,7 +12,7 @@ GVAR(time3) = 0; GVAR(damageCoefficent) = 1; GVAR(volumeAttenuation) = 1; -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_1("settingInit",GVAR(EnableCombatDeafness)); // Only run PFEH and install event handlers if combat deafness is enabled if (!GVAR(EnableCombatDeafness)) exitWith {}; @@ -28,8 +28,8 @@ GVAR(volumeAttenuation) = 1; [FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler; // Update veh attunation when player veh changes - ["playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; - ["playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; + ["ace_playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; + ["ace_playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; // Reset deafness on respawn (or remote control player switch) ["playerChanged", { @@ -41,5 +41,5 @@ GVAR(volumeAttenuation) = 1; }] call CBA_fnc_addEventHandler; // Update protection on possible helmet change - ["playerInventoryChanged", {[] call FUNC(updateHearingProtection);}] call CBA_fnc_addEventHandler; + ["ace_playerInventoryChanged", {[] call FUNC(updateHearingProtection);}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 5d130e589a8..1654f083d7b 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -23,3 +23,10 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + playerInventoryChanged = "ace_playerInventoryChanged"; + playerTurretChanged = "ace_playerTurretChanged"; + playerVehicleChanged = "ace_playerVehicleChanged"; +}; \ No newline at end of file diff --git a/addons/huntir/XEH_postInit.sqf b/addons/huntir/XEH_postInit.sqf index 5aaa50be52d..5b0a7c9445b 100644 --- a/addons/huntir/XEH_postInit.sqf +++ b/addons/huntir/XEH_postInit.sqf @@ -10,5 +10,5 @@ GVAR(ELEVAT) = 0.01; // Register fire event handler // Don't run for non players, as they are too dumb to launch huntirs anyway -["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; -["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 5fb106ad2d4..c8a0596d57e 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -19,3 +19,8 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "Dialog.hpp" #include "RscTitles.hpp" + +class ACE_newEvents { + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index f9ac5ff1d7b..40b6e3eb251 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -8,7 +8,7 @@ GVAR(cachedBuildingActionPairs) = []; GVAR(ParsedTextCached) = []; -["SettingChanged", { +["ace_settingChanged", { params ["_name"]; if (({_x == _name} count [QGVAR(colorTextMax), QGVAR(colorTextMin), QGVAR(colorShadowMax), QGVAR(colorShadowMin), QGVAR(textSize), QGVAR(shadowSetting)]) == 1) then { [] call FUNC(setupTextColors); @@ -23,7 +23,7 @@ GVAR(ParsedTextCached) = []; }] call CBA_fnc_addEventHandler; //Add Actions to Houses: -["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call CBA_fnc_addEventHandler; ["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)), { @@ -54,7 +54,7 @@ GVAR(ParsedTextCached) = []; }] call CBA_fnc_addEventHandler; // disable firing while the interact menu is is is opened -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // background options ["interactMenuOpened", { diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 8909c3d685a..663eaccea84 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -23,3 +23,15 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_break_line", "ace_parse_imagepath"}; }; + +class ACE_newEvents { + SettingChanged = "ace_settingChanged"; + playerChanged = "ace_playerChanged"; + interactMenuOpened = "ace_interactMenuOpened"; + clearConditionCaches = "ace_clearConditionCaches"; + clearConditionCaches = "ace_clearConditionCaches"; + interactMenuClosed = "ace_interactMenuClosed"; + clearConditionCaches = "ace_clearConditionCaches"; + clearConditionCaches = "ace_clearConditionCaches"; + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index f1cbe9318e1..58fc4fbed98 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -102,6 +102,6 @@ if (GVAR(openedMenuType) == 0) then { GVAR(startHoverTime) = -1000; }; -["interactMenuOpened", [_menuType]] call CBA_fnc_localEvent; +["ace_interactMenuOpened", [_menuType]] call CBA_fnc_localEvent; true diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 8658caf665a..5f7fe728882 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -28,7 +28,7 @@ if(GVAR(actionSelected)) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["clearConditionCaches", []] call CBA_fnc_localEvent; + ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; // exit scope if selecting an action on key release is disabled if (!(GVAR(actionOnKeyRelease)) && !_calledByClicking) exitWith {}; @@ -40,11 +40,11 @@ if(GVAR(actionSelected)) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["clearConditionCaches", []] call CBA_fnc_localEvent; + ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; }; }; -["interactMenuClosed", [GVAR(openedMenuType)]] call CBA_fnc_localEvent; +["ace_interactMenuClosed", [GVAR(openedMenuType)]] call CBA_fnc_localEvent; GVAR(keyDown) = false; GVAR(keyDownSelfAction) = false; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index dff117528cf..555886a55d4 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -97,7 +97,7 @@ if (GVAR(openedMenuType) >= 0) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["clearConditionCaches", []] call CBA_fnc_localEvent; + ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; // Check the action conditions private _actionData = GVAR(selectedAction) select 0; @@ -106,7 +106,7 @@ if (GVAR(openedMenuType) >= 0) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["clearConditionCaches", []] call CBA_fnc_localEvent; + ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index d6530db4c95..6107b26d594 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -3,9 +3,9 @@ ACE_Modifier = 0; -["pardon", {(_this select 0) addRating -rating (_this select 0)}] call CBA_fnc_addEventHandler; +["ace_pardon", {(_this select 0) addRating -rating (_this select 0)}] call CBA_fnc_addEventHandler; -["getDown", { +["ace_getDown", { params ["_target"]; _target setUnitPos "DOWN"; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 2413256bf43..b914d94beec 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -17,3 +17,17 @@ class CfgPatches { #include "RscTitles.hpp" #include "ACE_Settings.hpp" #include "ACE_ZeusActions.hpp" + +class ACE_newEvents { + getDown = "ace_getDown"; + pardon = "ace_pardon"; + tapShoulder = "ace_tapShoulder"; + sendAway = "ace_sendAway"; + setVelocity = "ace_setVelocity"; + displayTextStructured = "ace_displayTextStructured"; + pardon = "ace_pardon"; + displayTextStructured = "ace_displayTextStructured"; + CBA_teamColorChanged = "ace_cBA_teamColorChanged"; + getDown = "ace_getDown"; + selectLeader = "ace_selectLeader"; +}; \ No newline at end of file diff --git a/addons/interaction/functions/fnc_doBecomeLeader.sqf b/addons/interaction/functions/fnc_doBecomeLeader.sqf index de051f0135d..a5a2ede5b28 100644 --- a/addons/interaction/functions/fnc_doBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_doBecomeLeader.sqf @@ -17,4 +17,4 @@ params ["_unit"]; -["selectLeader", [group _unit, _unit], units group _unit] call CBA_fnc_targetEvent; +["ace_selectLeader", [group _unit, _unit], units group _unit] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index e3cdbd6e0e8..402e6c99769 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -27,7 +27,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); { if (count weapons _x == 0 && {random 1 < _chance}) then { - ["getDown", [_x], [_x]] call CBA_fnc_targetEvent; + ["ace_getDown", [_x], [_x]] call CBA_fnc_targetEvent; }; false } count (_target nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index e3f8bc50646..46b0f79d5f8 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -18,7 +18,7 @@ params ["_unit", "_team"]; -["CBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; +["ace_cBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; // display message if (_unit == ACE_player) then { @@ -31,5 +31,5 @@ if (_unit == ACE_player) then { _message = format [localize LSTRING(JoinedTeam), _team]; }; - ["displayTextStructured", _message] call CBA_fnc_localEvent; + ["ace_displayTextStructured", _message] call CBA_fnc_localEvent; }; diff --git a/addons/interaction/functions/fnc_pardon.sqf b/addons/interaction/functions/fnc_pardon.sqf index 5ce36897fd2..8c9f3a39e5c 100644 --- a/addons/interaction/functions/fnc_pardon.sqf +++ b/addons/interaction/functions/fnc_pardon.sqf @@ -15,4 +15,4 @@ params ["", "_target"]; -["pardon", [_target], [_target]] call CBA_fnc_targetEvent; +["ace_pardon", [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_passMagazine.sqf b/addons/interaction/functions/fnc_passMagazine.sqf index 34c3b559be9..2ea062ae79e 100644 --- a/addons/interaction/functions/fnc_passMagazine.sqf +++ b/addons/interaction/functions/fnc_passMagazine.sqf @@ -51,4 +51,4 @@ _target addMagazine [_magToPassClassName, _magToPassAmmoCount]; _playerName = [_player] call EFUNC(common,getName); _magToPassDisplayName = getText (configFile >> "CfgMagazines" >> _magToPassClassName >> "displayName"); -["displayTextStructured", [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target], [_target]] call CBA_fnc_targetEvent; \ No newline at end of file +["ace_displayTextStructured", [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target], [_target]] call CBA_fnc_targetEvent; \ No newline at end of file diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index f2cc7c15a38..b22ec366f20 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -22,4 +22,4 @@ private _newVelocity = vectorDir _unit; _newVelocity set [2, 0.25]; _newVelocity = _newVelocity vectorMultiply 2; -["setVelocity", [_boat, _newVelocity], [_boat]] call CBA_fnc_targetEvent; +["ace_setVelocity", [_boat, _newVelocity], [_boat]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index 9fe3c2b1c36..499e1394970 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -31,7 +31,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); _position = getPosASL _unit vectorAdd (eyeDirection _unit vectorMultiply SEND_DISTANCE); _position set [2, 0]; - ["sendAway", [_x, _position], [_x]] call CBA_fnc_targetEvent; + ["ace_sendAway", [_x, _position], [_x]] call CBA_fnc_targetEvent; }; false } count (_unit nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 6be7402bcd4..35274b37242 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -25,4 +25,4 @@ if (_unit == ACE_player) then { _unit playActionNow "PutDown"; -["tapShoulder", [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; +["ace_tapShoulder", [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/laser/XEH_post_init.sqf b/addons/laser/XEH_post_init.sqf index 27d5611ae9b..01b79a3378c 100644 --- a/addons/laser/XEH_post_init.sqf +++ b/addons/laser/XEH_post_init.sqf @@ -2,6 +2,6 @@ #include "initKeybinds.sqf" -["laser_laserOn", {_this call DFUNC(handleLaserOn)}] call CBA_fnc_addEventHandler; -["laser_laserOff", {_this call DFUNC(handleLaserOff)}] call CBA_fnc_addEventHandler; +["ace_laser_laserOn", {_this call DFUNC(handleLaserOn)}] call CBA_fnc_addEventHandler; +["ace_laser_laserOff", {_this call DFUNC(handleLaserOff)}] call CBA_fnc_addEventHandler; diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index ad368cdc2d4..3a334f3b9de 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -13,4 +13,10 @@ class CfgPatches { #include "CfgEventhandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscInGameUI.hpp" \ No newline at end of file +#include "RscInGameUI.hpp" +class ACE_newEvents { + laser_laserOff = "ace_laser_laserOff"; + laser_laserOn = "ace_laser_laserOn"; + laser_laserOn = "ace_laser_laserOn"; + laser_laserOff = "ace_laser_laserOff"; +}; \ No newline at end of file diff --git a/addons/laser/functions/fnc_laserOff.sqf b/addons/laser/functions/fnc_laserOff.sqf index b7d03a422c2..31cbdb876e1 100644 --- a/addons/laser/functions/fnc_laserOff.sqf +++ b/addons/laser/functions/fnc_laserOff.sqf @@ -1,16 +1,16 @@ -/* - * Author: Nou - * Turn a laser designator off. - * - * Arguments: - * 0: UUID (from laserOn) - * - * Return value: - * None - */ - -#include "script_component.hpp" - -private ["_uuid"]; +/* + * Author: Nou + * Turn a laser designator off. + * + * Arguments: + * 0: UUID (from laserOn) + * + * Return value: + * None + */ + +#include "script_component.hpp" + +private ["_uuid"]; _uuid = _this select 0; -["laser_laserOff", [_uuid]] call CBA_fnc_globalEvent; +["ace_laser_laserOff", [_uuid]] call CBA_fnc_globalEvent; diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf index e206167015a..e698dda2e36 100644 --- a/addons/laser/functions/fnc_laserOn.sqf +++ b/addons/laser/functions/fnc_laserOn.sqf @@ -1,23 +1,23 @@ -/* - * Author: Nou - * Turn a laser designator on. - * - * Arguments: - * 0: Emitter - * 1: Owner - * 2: Method, can be code, which emitter and owner are passed to, a string function name, an array with a position memory point and weapon name, or an array with a position memory point, a vector begining memory point, and vector ending memory point. - * 3: Wavelength (1550nm is common eye safe) - * 4: Laser code - * 5: Beam divergence (in mils off beam center). - * - * Return value: - * String, UUID for sending to laserOff function. - */ - -#include "script_component.hpp" - -private ["_uuid", "_args"]; +/* + * Author: Nou + * Turn a laser designator on. + * + * Arguments: + * 0: Emitter + * 1: Owner + * 2: Method, can be code, which emitter and owner are passed to, a string function name, an array with a position memory point and weapon name, or an array with a position memory point, a vector begining memory point, and vector ending memory point. + * 3: Wavelength (1550nm is common eye safe) + * 4: Laser code + * 5: Beam divergence (in mils off beam center). + * + * Return value: + * String, UUID for sending to laserOff function. + */ + +#include "script_component.hpp" + +private ["_uuid", "_args"]; _uuid = format["%1%2%3", floor ACE_diagTime, floor random 1000, floor random 10000]; _args = [_uuid, _this]; -["laser_laserOn", _args] call CBA_fnc_globalEvent; +["ace_laser_laserOn", _args] call CBA_fnc_globalEvent; _uuid; diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index 5b9ac08c531..e77693a6ae0 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" // fixes laser when being captured. Needed, because the selectionPosition of the right hand is used -["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; +["ace_setHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; @@ -10,7 +10,7 @@ GVAR(nearUnits) = []; #include "initKeybinds.sqf" -["SettingsInitialized", { +["ace_settingsInitialized", { //If not enabled, dont't add draw eventhandler or PFEH (for performance) if (!GVAR(enabled)) exitWith {}; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index cbb3105696c..37cd2c4387c 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -17,3 +17,8 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgJointRails.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + SetHandcuffed = "ace_setHandcuffed"; +}; \ No newline at end of file diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index c6123e590fd..9b0568b9f67 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -16,3 +16,7 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgSounds.hpp" + +class ACE_newEvents { + setFuel = "ace_setFuel"; +}; \ No newline at end of file diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index b1183ab25e5..d26ada52677 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -24,7 +24,7 @@ _onFinish = { (_this select 0) params ["_caller", "_target"]; _caller removeItem "ACE_UAVBattery"; playSound3D [QUOTE(PATHTO_R(sounds\exchange_battery.ogg)), objNull, false, getPosASL _caller, 1, 1, 10]; - ["setFuel", [_target, 1], [_target]] call CBA_fnc_targetEvent; //setFuel is local + ["ace_setFuel", [_target, 1], [_target]] call CBA_fnc_targetEvent; //setFuel is local }; _onFailure = { diff --git a/addons/logistics_wirecutter/XEH_clientInit.sqf b/addons/logistics_wirecutter/XEH_clientInit.sqf index aaead1bdcc6..45e93bc6bd7 100644 --- a/addons/logistics_wirecutter/XEH_clientInit.sqf +++ b/addons/logistics_wirecutter/XEH_clientInit.sqf @@ -2,4 +2,4 @@ if (!hasInterface) exitWith {}; -["interactMenuOpened", {_this call FUNC(interactEH)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {_this call FUNC(interactEH)}] call CBA_fnc_addEventHandler; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index d83cff40356..436b17fadac 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -15,3 +15,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index bdc75992224..e9438d7508b 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -107,7 +107,7 @@ call FUNC(determineZoom); }] call CBA_fnc_addEventHandler; if (GVAR(mapGlow)) then { - ["visibleMapChanged", { + ["ace_visibleMapChanged", { params ["_player", "_mapOn"]; if (_mapOn) then { if (!alive _player && !isNull GVAR(glow)) then { diff --git a/addons/map/config.cpp b/addons/map/config.cpp index 6d6b4030ec1..5143f7d5e5d 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -161,3 +161,7 @@ class RscDisplayServerGetReady: RscDisplayGetReady { }; }; }; + +class ACE_newEvents { + visibleMapChanged = "ace_visibleMapChanged"; +}; \ No newline at end of file diff --git a/addons/map_gestures/XEH_postInit.sqf b/addons/map_gestures/XEH_postInit.sqf index a1ce8871b71..185eaf97f0a 100644 --- a/addons/map_gestures/XEH_postInit.sqf +++ b/addons/map_gestures/XEH_postInit.sqf @@ -6,7 +6,7 @@ if (["STMapGestures"] call EFUNC(common,isModLoaded)) exitWith { if (!hasInterface) exitWith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { if (!GVAR(enabled)) exitWith {}; [{ if (isNull (findDisplay 12)) exitWith {}; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index 72e7f820787..d3217124d6e 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -15,3 +15,7 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/maptools/XEH_preInit.sqf b/addons/maptools/XEH_preInit.sqf index aada5db223e..7e144e724d8 100644 --- a/addons/maptools/XEH_preInit.sqf +++ b/addons/maptools/XEH_preInit.sqf @@ -10,10 +10,10 @@ if (isServer) then { }; //Add Event Handlers: -["drawing_removeLineMarker", FUNC(removeLineMarker) ] call CBA_fnc_addEventHandler; -["drawing_addLineMarker", FUNC(addLineMarker) ] call CBA_fnc_addEventHandler; +["ace_drawing_removeLineMarker", FUNC(removeLineMarker)] call CBA_fnc_addEventHandler; +["ace_drawing_addLineMarker", FUNC(addLineMarker)] call CBA_fnc_addEventHandler; -["drawing_requestMarkers", FUNC(copyMapRemoteSend) ] call CBA_fnc_addEventHandler; -["drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers) ] call CBA_fnc_addEventHandler; +["ace_drawing_requestMarkers", FUNC(copyMapRemoteSend)] call CBA_fnc_addEventHandler; +["ace_drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers)] call CBA_fnc_addEventHandler; ADDON = true; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 1e82cd2269d..2d9d92345a9 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -66,3 +66,14 @@ class RscDisplayServerGetReady: RscDisplayGetReady { }; }; }; + +class ACE_newEvents { + drawing_sendbackMarkers = "ace_drawing_sendbackMarkers"; + drawing_requestMarkers = "ace_drawing_requestMarkers"; + drawing_addLineMarker = "ace_drawing_addLineMarker"; + drawing_removeLineMarker = "ace_drawing_removeLineMarker"; + drawing_addLineMarker = "ace_drawing_addLineMarker"; + drawing_removeLineMarker = "ace_drawing_removeLineMarker"; + drawing_requestMarkers = "ace_drawing_requestMarkers"; + drawing_sendbackMarkers = "ace_drawing_sendbackMarkers"; +}; \ No newline at end of file diff --git a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf index fdfe53e7c44..452c76167a2 100644 --- a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf +++ b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf @@ -14,4 +14,4 @@ params ["_requester"]; -["drawing_sendbackMarkers", [GVAR(drawing_lineMarkers)], _requester] call CBA_fnc_targetEvent; +["ace_drawing_sendbackMarkers", [GVAR(drawing_lineMarkers)], _requester] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_copyMapStart.sqf b/addons/maptools/functions/fnc_copyMapStart.sqf index a7d1a016a79..c1c6a7a4596 100644 --- a/addons/maptools/functions/fnc_copyMapStart.sqf +++ b/addons/maptools/functions/fnc_copyMapStart.sqf @@ -19,4 +19,4 @@ params ["_player", "_target"]; -["drawing_requestMarkers", [_player], _target] call CBA_fnc_targetEvent; +["ace_drawing_requestMarkers", [_player], _target] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index 4a8c6153278..a5ed69f9e1c 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -58,7 +58,7 @@ if (_code == DIK_DELETE) exitWith { if (_lambdaLong >= 0 && _lambdaLong <= _magDiffVector && _lambdaTrasAbs <= 5) exitWith { // Delete the line marker if (GVAR(drawing_syncMarkers)) then { - ["drawing_removeLineMarker", [_x select 0]] call CBA_fnc_globalEvent; + ["ace_drawing_removeLineMarker", [_x select 0]] call CBA_fnc_globalEvent; } else { deleteMarkerLocal (_x select 0); GVAR(drawing_lineMarkers) = GVAR(drawing_lineMarkers) - [_x]; diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index e0bdbbe1307..f0fadc7cb3d 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -42,7 +42,7 @@ if (_dir != 1) then { // Already drawing -> Add tempLineMarker to permanent list if (GVAR(drawing_syncMarkers)) then { deleteMarkerLocal (GVAR(drawing_tempLineMarker) select 0); - ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call CBA_fnc_globalEvent; + ["ace_drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call CBA_fnc_globalEvent; // Log who drew on the briefing screen [ACE_INFOFORMAT_1("Player %1 drew on the briefing screen", profileName)] call EFUNC(common,serverLog); } else { diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 3a082c85d1e..e07b13479fa 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -6,34 +6,34 @@ GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "A GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"]; GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; -["medical_propagateWound", FUNC(onPropagateWound)] call CBA_fnc_addEventHandler; -["medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call CBA_fnc_addEventHandler; -["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; +["ace_medical_propagateWound", FUNC(onPropagateWound)] call CBA_fnc_addEventHandler; +["ace_medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call CBA_fnc_addEventHandler; +["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; //Treatment EventHandlers: -["actionCheckBloodPressureLocal", DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; -["actionCheckPulseLocal", DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; -["addToInjuredCollection", DFUNC(addToInjuredCollection)] call CBA_fnc_addEventHandler; -["addToMedicalLog", DFUNC(addToLog)] call CBA_fnc_addEventHandler; -["addToTriageCard", DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; -["setDead", DFUNC(setDead)] call CBA_fnc_addEventHandler; -["setHitPointDamage", DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; -["setUnconscious", DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; -["treatmentAdvanced_bandageLocal", DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; -["treatmentAdvanced_CPRLocal", DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; -["treatmentAdvanced_fullHealLocal", DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; -["treatmentAdvanced_medicationLocal", DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; -["treatmentBasic_bandageLocal", DFUNC(treatmentBasic_bandageLocal)] call CBA_fnc_addEventHandler; -["treatmentBasic_bloodbagLocal", DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; -["treatmentBasic_morphineLocal", DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; -["treatmentIVLocal", DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; -["treatmentTourniquetLocal", DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; -["actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; +["ace_actionCheckBloodPressureLocal", DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; +["ace_actionCheckPulseLocal", DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; +["ace_addToInjuredCollection", DFUNC(addToInjuredCollection)] call CBA_fnc_addEventHandler; +["ace_addToMedicalLog", DFUNC(addToLog)] call CBA_fnc_addEventHandler; +["ace_addToTriageCard", DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; +["ace_setDead", DFUNC(setDead)] call CBA_fnc_addEventHandler; +["ace_setHitPointDamage", DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; +["ace_setUnconscious", DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; +["ace_treatmentAdvanced_bandageLocal", DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentAdvanced_CPRLocal", DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentAdvanced_fullHealLocal", DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentAdvanced_medicationLocal", DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentBasic_bandageLocal", DFUNC(treatmentBasic_bandageLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentBasic_bloodbagLocal", DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentBasic_morphineLocal", DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentIVLocal", DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; +["ace_treatmentTourniquetLocal", DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; +["ace_actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; //Handle Deleting Bodies on Server: -if (isServer) then {["placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; +if (isServer) then {["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; -["medical_onUnconscious", { +["ace_medical_onUnconscious", { params ["_unit", "_status"]; if (local _unit) then { if (_status) then { @@ -294,7 +294,7 @@ GVAR(lastHeartBeatSound) = ACE_time; ["isNotUnconscious", {!((_this select 0) getVariable ["ACE_isUnconscious", false])}] call EFUNC(common,addCanInteractWithCondition); // Item Event Handler -["playerInventoryChanged", FUNC(itemCheck)] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", FUNC(itemCheck)] call CBA_fnc_addEventHandler; if (hasInterface) then { ["PlayerJip", { diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index d40fb9e6a6f..832be32cb64 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -23,3 +23,90 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "UI\RscTitles.hpp" #include "UI\triagecard.hpp" + +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + playerInventoryChanged = "ace_playerInventoryChanged"; + placedInBodyBag = "ace_placedInBodyBag"; + actionPlaceInBodyBag = "ace_actionPlaceInBodyBag"; + treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; + treatmentIVLocal = "ace_treatmentIVLocal"; + treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; + treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; + treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; + treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; + treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; + treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; + treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; + setUnconscious = "ace_setUnconscious"; + setHitPointDamage = "ace_setHitPointDamage"; + setDead = "ace_setDead"; + addToTriageCard = "ace_addToTriageCard"; + addToMedicalLog = "ace_addToMedicalLog"; + addToInjuredCollection = "ace_addToInjuredCollection"; + actionCheckPulseLocal = "ace_actionCheckPulseLocal"; + actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; + interactMenuClosed = "ace_interactMenuClosed"; + medical_woundUpdateRequest = "ace_medical_woundUpdateRequest"; + medical_propagateWound = "ace_medical_propagateWound"; + useItem = "ace_useItem"; + useItem = "ace_useItem"; + useItem = "ace_useItem"; + useItem = "ace_useItem"; + useItem = "ace_useItem"; + useItem = "ace_useItem"; + medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = "ace_medical_onUnconscious"; + medical_treatmentSuccess = "ace_medical_treatmentSuccess"; + treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; + treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + treatmentIVLocal = "ace_treatmentIVLocal"; + treatmentIVLocal = "ace_treatmentIVLocal"; + treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; + treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; + treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; + treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; + treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; + treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; + treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; + treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; + treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; + treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; + treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; + medical_propagateWound = "ace_medical_propagateWound"; + treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; + treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; + displayTextStructured = "ace_displayTextStructured"; + medical_onUnconscious = "ace_medical_onUnconscious"; + setUnconscious = "ace_setUnconscious"; + setHitPointDamage = "ace_setHitPointDamage"; + medical_onSetDead = "ace_medical_onSetDead"; + setDead = "ace_setDead"; + Medical_onEnteredCardiacArrest = "ace_medical_onEnteredCardiacArrest"; + hideObjectGlobal = "ace_hideObjectGlobal"; + medical_woundUpdateRequest = "ace_medical_woundUpdateRequest"; + medical_propagateWound = "ace_medical_propagateWound"; + displayTextStructured = "ace_displayTextStructured"; + addVitalLoop = "ace_addVitalLoop"; + Medical_onItemAddedToTriageCard = "ace_medical_onItemAddedToTriageCard"; + addToTriageCard = "ace_addToTriageCard"; + medical_onLogEntryAdded = "ace_medical_onLogEntryAdded"; + addToMedicalLog = "ace_addToMedicalLog"; + Medical_onHeartRateAdjustmentAdded = "ace_medical_onHeartRateAdjustmentAdded"; + unloadPersonEvent = "ace_unloadPersonEvent"; + treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; + displayTextStructured = "ace_displayTextStructured"; + placedInBodyBag = "ace_placedInBodyBag"; + actionPlaceInBodyBag = "ace_actionPlaceInBodyBag"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + actionCheckPulseLocal = "ace_actionCheckPulseLocal"; + actionCheckPulseLocal = "ace_actionCheckPulseLocal"; + displayTextStructured = "ace_displayTextStructured"; + actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; + actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; +}; \ No newline at end of file diff --git a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf index 062284d7e61..2d2b5a9e598 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf @@ -16,7 +16,7 @@ params ["_caller", "_target", "_selectionName"]; if (local _target) then { - ["actionCheckBloodPressureLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; + ["ace_actionCheckBloodPressureLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["actionCheckBloodPressureLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; + ["ace_actionCheckBloodPressureLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index ac162d70027..44c5a1fc0b4 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -57,7 +57,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = ""; }; -["displayTextStructured", [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; +["ace_displayTextStructured", [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckPulse.sqf b/addons/medical/functions/fnc_actionCheckPulse.sqf index a6bac8a8cb8..2b97c1aa24c 100644 --- a/addons/medical/functions/fnc_actionCheckPulse.sqf +++ b/addons/medical/functions/fnc_actionCheckPulse.sqf @@ -16,7 +16,7 @@ params ["_caller","_target", "_selectionName"]; if (local _target) then { - ["actionCheckPulseLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; + ["ace_actionCheckPulseLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["actionCheckPulseLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; + ["ace_actionCheckPulseLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index d5dd2d9ca57..0e58344528e 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -49,7 +49,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = LSTRING(Check_Pulse_None); }; -["displayTextStructured", [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; +["ace_displayTextStructured", [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 3ca9a66fcc8..c8a6128a084 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target"]; _output = [LSTRING(Check_Response_Unresponsive), LSTRING(Check_Response_Responsive)] select ([_target] call EFUNC(common,isAwake)); -["displayTextStructured", [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; +["ace_displayTextStructured", [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; [_target,"activity",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); [_target,"quick_view",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index 31684d722e7..fdba12cd219 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -43,4 +43,4 @@ if (alive _target) then { }; }; -["displayTextStructured", [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; +["ace_displayTextStructured", [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 5c035872dac..61d1ab32a65 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -18,7 +18,7 @@ private "_vehicle"; params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitWith { - ["displayTextStructured", [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; if ([_target] call FUNC(isBeingCarried)) then { [_caller, _target] call EFUNC(dragging,dropObject_carry); diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index e9e40c36ad4..9d87b6ea500 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -22,7 +22,7 @@ TRACE_2("params",_caller,_target); if (!local _target) exitWith { TRACE_1("running where local",local _target); - ["actionPlaceInBodyBag", [_caller, _target], [_target]] call CBA_fnc_targetEvent; + ["ace_actionPlaceInBodyBag", [_caller, _target], [_target]] call CBA_fnc_targetEvent; objNull }; @@ -47,6 +47,6 @@ private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; _bodyBag setPosASL _position; _bodyBag setDir _direction; -["placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server +["ace_placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server _bodyBag diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 7bc90005afb..1eaa0ec32d9 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -26,7 +26,7 @@ _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; // Check if there is a tourniquet on this bodypart if ((_tourniquets select _part) == 0) exitWith { _output = LSTRING(noTourniquetOnBodyPart); - ["displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; // Removing the tourniquet @@ -44,7 +44,7 @@ TRACE_2("meds",_part,_delayedMedications); _x params ["", "", "_medPartNum"]; if (_part == _medPartNum) then { TRACE_1("delayed medication call after tourniquet removeal",_x); - ["treatmentAdvanced_medicationLocal", _x, [_target]] call CBA_fnc_targetEvent; + ["ace_treatmentAdvanced_medicationLocal", _x, [_target]] call CBA_fnc_targetEvent; _delayedMedications set [_forEachIndex, -1]; _updatedArray = true; }; diff --git a/addons/medical/functions/fnc_actionUnloadUnit.sqf b/addons/medical/functions/fnc_actionUnloadUnit.sqf index 2039c60ffe7..75fe76bce91 100644 --- a/addons/medical/functions/fnc_actionUnloadUnit.sqf +++ b/addons/medical/functions/fnc_actionUnloadUnit.sqf @@ -21,4 +21,4 @@ params ["_caller", "_target", ["_drag", false]]; if (vehicle _target == _target) exitWith {}; if (([_target] call EFUNC(common,isAwake))) exitWith {}; -["unloadPersonEvent", [_target, vehicle _target, _caller], _target] call CBA_fnc_targetEvent; +["ace_unloadPersonEvent", [_target, vehicle _target, _caller], _target] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf index 2dd1abb29ac..2665a1cb7c6 100644 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf @@ -22,4 +22,4 @@ params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], [" _adjustment = _unit getVariable [QGVAR(heartRateAdjustments), []]; _adjustment pushBack [_value, _time, _callBack]; _unit setVariable [QGVAR(heartRateAdjustments), _adjustment ]; -["Medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call CBA_fnc_localEvent; +["ace_medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index a38fd719246..d01a99202e3 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -20,7 +20,7 @@ private ["_moment", "_logVarName", "_log","_newLog", "_logs"]; params ["_unit", "_type", "_message", "_arguments"]; if (!local _unit) exitWith { - ["addToMedicalLog", _this, _unit] call CBA_fnc_targetEvent; + ["ace_addToMedicalLog", _this, _unit] call CBA_fnc_targetEvent; }; date params ["", "", "", "_hour", "_minute"]; @@ -43,7 +43,7 @@ if (count _log >= 8) then { _log pushBack [_message, _moment, _type, _arguments]; _unit setVariable [_logVarName, _log, true]; -["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; +["ace_medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; _logs = _unit getVariable [QGVAR(allLogs), []]; if !(_logVarName in _logs) then { diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index 3b335b503f2..cf9fc4e0f15 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -18,7 +18,7 @@ private ["_log", "_inList", "_amount"]; params ["_unit", "_newItem"]; if (!local _unit) exitWith { - ["addToTriageCard", _this, _unit] call CBA_fnc_targetEvent; + ["ace_addToTriageCard", _this, _unit] call CBA_fnc_targetEvent; }; _log = _unit getVariable [QGVAR(triageCard), []]; @@ -41,4 +41,4 @@ if (!_inList) then { _log pushBack [_newItem, 1, ACE_gameTime]; }; _unit setVariable [QGVAR(triageCard), _log, true]; -["Medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; +["ace_medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index 96115cc3b84..e261adf7af4 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -18,7 +18,7 @@ params ["_unit", ["_force", false]]; if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {}; if !(local _unit) exitWith { - ["addVitalLoop", [_unit, _force], _unit] call CBA_fnc_targetEvent; + ["ace_addVitalLoop", [_unit, _force], _unit] call CBA_fnc_targetEvent; }; // Quit if the unit already has a vital loop, or is dead, unless it's forced diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 82e1f34e5d1..dc13e944ddb 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -42,7 +42,7 @@ if (_show) then { if (ACE_player distance _target > MAX_DISTANCE) exitwith { ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; [_idPFH] call CBA_fnc_removePerFrameHandler; - ["displayTextStructured", [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; }; disableSerialization; diff --git a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf index 18edfce2947..e0a28dfd183 100644 --- a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf +++ b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf @@ -19,6 +19,6 @@ params ["_unit", "_originOfrequest"]; if (local _unit && !(local _originOfrequest)) then { _openWounds = _unit getVariable [QGVAR(openWounds), []]; { - ["medical_propagateWound", [_unit, _x], [_originOfrequest]] call CBA_fnc_targetEvent; + ["ace_medical_propagateWound", [_unit, _x], [_originOfrequest]] call CBA_fnc_targetEvent; } forEach _openWounds; }; diff --git a/addons/medical/functions/fnc_requestWoundSync.sqf b/addons/medical/functions/fnc_requestWoundSync.sqf index 705a3b58ef8..9f72c0b3224 100644 --- a/addons/medical/functions/fnc_requestWoundSync.sqf +++ b/addons/medical/functions/fnc_requestWoundSync.sqf @@ -19,4 +19,4 @@ params [ "_target", "_caller"]; if (local _target || GVAR(level) < 2) exitWith {}; // if the target is local, we already got the most update to date information if (_target getVariable [QGVAR(isWoundSynced), false]) exitWith {}; _target setVariable [QGVAR(isWoundSynced), true]; -["medical_woundUpdateRequest", [_target, _caller], [_target]] call CBA_fnc_targetEvent; +["ace_medical_woundUpdateRequest", [_target, _caller], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf index a5ae69259a6..c37d14cde86 100644 --- a/addons/medical/functions/fnc_serverRemoveBody.sqf +++ b/addons/medical/functions/fnc_serverRemoveBody.sqf @@ -21,7 +21,7 @@ params ["_target"]; TRACE_2("",_target,isPlayer _target); //Hide the body globaly -["hideObjectGlobal", [_target, true]] call CBA_fnc_serverEvent; +["ace_hideObjectGlobal", [_target, true]] call CBA_fnc_serverEvent; if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];}; GVAR(bodiesToDelete) pushBack _target; diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index 318a3a506da..e861635f795 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -21,7 +21,7 @@ if (_unit getVariable [QGVAR(inCardiacArrest),false]) exitWith {}; _unit setVariable [QGVAR(inCardiacArrest), true,true]; _unit setVariable [QGVAR(heartRate), 0]; -["Medical_onEnteredCardiacArrest", [_unit]] call CBA_fnc_localEvent; +["ace_medical_onEnteredCardiacArrest", [_unit]] call CBA_fnc_localEvent; [_unit, true] call FUNC(setUnconscious); _timeInCardiacArrest = 120 + round(random(600)); diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 3ee1e8481d2..5683d7331a1 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -20,7 +20,7 @@ params ["_unit", ["_force", false], ["_delaySetDamage", false]]; if ((!alive _unit) || {_unit getVariable ["ACE_isDead", false]}) exitWith {true}; if (!local _unit) exitwith { - ["setDead", [_unit, _force], _unit] call CBA_fnc_targetEvent; + ["ace_setDead", [_unit, _force], _unit] call CBA_fnc_targetEvent; false; }; @@ -51,7 +51,7 @@ if (isPLayer _unit) then { _unit setVariable ["isDeadPlayer", true, true]; }; -["medical_onSetDead", [_unit]] call CBA_fnc_localEvent; +["ace_medical_onSetDead", [_unit]] call CBA_fnc_localEvent; //Delay a frame before killing the unit via scripted damage //to avoid triggering the "Killed" Event twice (and having the wrong killer) diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 97d0c20b14d..6ded061bb4d 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -26,7 +26,7 @@ params ["_unit", "_selection", "_damage", ["_disabled", false]]; // Unit isn't local, give function to machine where it is. if !(local _unit) exitWith { - ["setHitPointDamage", _this, _unit] call CBA_fnc_targetEvent; + ["ace_setHitPointDamage", _this, _unit] call CBA_fnc_targetEvent; }; // Check if overall damage adjustment is disabled diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 7a3f4f17dd8..69f745ed01d 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -39,7 +39,7 @@ if !(_set) exitWith { if !(!(isNull _unit) && {(_unit isKindOf "CAManBase") && ([_unit] call EFUNC(common,isAwake))}) exitWith{}; if (!local _unit) exitWith { - ["setUnconscious", [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; + ["ace_setUnconscious", [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; }; _unit setVariable ["ACE_isUnconscious", true, true]; @@ -122,4 +122,4 @@ _startingTime = ACE_time; // unconscious can't talk [_unit, "isUnconscious"] call EFUNC(common,muteUnit); -["medical_onUnconscious", [_unit, true]] call CBA_fnc_globalEvent; +["ace_medical_onUnconscious", [_unit, true]] call CBA_fnc_globalEvent; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index f59a540bdc2..46967d3c4f2 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -239,7 +239,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index 599f7fdad9e..1c041b05b99 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -22,9 +22,9 @@ if (alive _target && {(_target getVariable [QGVAR(inCardiacArrest), false] || _t [_target, "activity_view", LSTRING(Activity_cpr), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); if (local _target) then { - ["treatmentAdvanced_CPRLocal", [_caller, _target]] call CBA_fnc_localEvent; + ["ace_treatmentAdvanced_CPRLocal", [_caller, _target]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_CPRLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; + ["ace_treatmentAdvanced_CPRLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; }; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index bebc2d88a0f..c387649705c 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -27,9 +27,9 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitWith { }; if (local _target) then { - ["treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; + ["ace_treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; + ["ace_treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; }; /* { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index c657dfc8da4..eeeeb431bb8 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -90,7 +90,7 @@ _openWounds set [_mostEffectiveSpot, _mostEffectiveInjury]; _target setVariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; if (USE_WOUND_EVENT_SYNC) then { - ["medical_propagateWound", [_target, _mostEffectiveInjury]] call CBA_fnc_globalEvent; + ["ace_medical_propagateWound", [_target, _mostEffectiveInjury]] call CBA_fnc_globalEvent; }; // Handle the reopening of bandaged wounds if (_impact > 0 && {GVAR(enableAdvancedWounds)}) then { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf index 6e7146719de..a9ef6ee3a40 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf @@ -13,9 +13,9 @@ params ["_caller", "_target", "_selectionName", "_className", "_items"]; if (local _target) then { - ["treatmentAdvanced_fullHealLocal", [_caller, _target]] call CBA_fnc_localEvent; + ["ace_treatmentAdvanced_fullHealLocal", [_caller, _target]] call CBA_fnc_localEvent; } else { - ["treatmentAdvanced_fullHealLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; + ["ace_treatmentAdvanced_fullHealLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index 95948c465c2..2365eaea5d0 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -22,7 +22,7 @@ TRACE_5("params",_caller,_target,_selectionName,_className,_items); private _part = [_selectionName] call FUNC(selectionNameToNumber); -["treatmentAdvanced_medicationLocal", [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; +["ace_treatmentAdvanced_medicationLocal", [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; { if (_x != "") then { diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index 16d2192a2bf..d7a87bd3c87 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -21,7 +21,7 @@ private ["_hitSelections", "_hitPoints", "_point", "_damage"]; params ["_caller", "_target", "_selection", "_className"]; if (local _target) then { - ["treatmentBasic_bandageLocal", [_target, _selection]] call CBA_fnc_localEvent; + ["ace_treatmentBasic_bandageLocal", [_target, _selection]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_bandageLocal", [_target, _selection], _target] call CBA_fnc_targetEvent; + ["ace_treatmentBasic_bandageLocal", [_target, _selection], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf index 94353055c0e..9a65a9deb44 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target", "_treatmentClassname"]; if (local _target) then { - ["treatmentBasic_bloodbagLocal", [_target, _treatmentClassname]] call CBA_fnc_localEvent; + ["ace_treatmentBasic_bloodbagLocal", [_target, _treatmentClassname]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_bloodbagLocal", [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; + ["ace_treatmentBasic_bloodbagLocal", [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf index 20e6d44f969..4d424923da1 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf @@ -20,7 +20,7 @@ params ["_caller", "_target"]; if (local _target) then { - ["treatmentBasic_morphineLocal", [_target]] call CBA_fnc_localEvent; + ["ace_treatmentBasic_morphineLocal", [_target]] call CBA_fnc_localEvent; } else { - ["treatmentBasic_morphineLocal", [_target], _target] call CBA_fnc_targetEvent; + ["ace_treatmentBasic_morphineLocal", [_target], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index d584caca834..3f5c4d2493f 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -23,9 +23,9 @@ if (count _items == 0) exitWith {false}; _removeItem = _items select 0; if (local _target) then { - ["treatmentIVLocal", [_target, _className]] call CBA_fnc_localEvent; + ["ace_treatmentIVLocal", [_target, _className]] call CBA_fnc_localEvent; } else { - ["treatmentIVLocal", [_target, _className], _target] call CBA_fnc_targetEvent; + ["ace_treatmentIVLocal", [_target, _className], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index b866aa65aff..98b5a224113 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -28,22 +28,22 @@ if (count _items == 0) exitWith {false}; _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part == 0 || _part == 1) exitWith { - // ["displayTextStructured", ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; + // ["ace_displayTextStructured", ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; false; }; _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; if ((_tourniquets select _part) > 0) exitWith { _output = "There is already a tourniquet on this body part!"; // TODO localization - ["displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; false; }; _removeItem = _items select 0; if (local _target) then { - ["treatmentTourniquetLocal", [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; + ["ace_treatmentTourniquetLocal", [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; } else { - ["treatmentTourniquetLocal", [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; + ["ace_treatmentTourniquetLocal", [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index aca94c5be6f..0a857c1f18c 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -95,4 +95,4 @@ if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { [_target] call FUNC(addVitalLoop); }; -["medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; +["ace_medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index bda65fe4778..d278c2d7d67 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -39,7 +39,7 @@ if (!alive _unit) exitWith { _unit setUnconscious false; [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - ["medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; + ["ace_medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , QGVAR(unconscious)); @@ -96,7 +96,7 @@ if !(_unit getVariable ["ACE_isUnconscious",false]) exitWith { }; _unit setVariable [QGVAR(vehicleAwakeAnim), nil]; - ["medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; + ["ace_medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; // EXIT PFH [_idPFH] call CBA_fnc_removePerFrameHandler; }; diff --git a/addons/medical/functions/fnc_useItem.sqf b/addons/medical/functions/fnc_useItem.sqf index e5ee6b05178..8ab8b3cb3da 100644 --- a/addons/medical/functions/fnc_useItem.sqf +++ b/addons/medical/functions/fnc_useItem.sqf @@ -25,18 +25,18 @@ if (isNil QGVAR(setting_allowSharedEquipment)) then { if (GVAR(setting_allowSharedEquipment) && {[_patient, _item] call EFUNC(common,hasItem)}) exitWith { if (local _patient) then { - ["useItem", [_patient, _item]] call CBA_fnc_localEvent; + ["ace_useItem", [_patient, _item]] call CBA_fnc_localEvent; } else { - ["useItem", [_patient, _item], _patient] call CBA_fnc_targetEvent; + ["ace_useItem", [_patient, _item], _patient] call CBA_fnc_targetEvent; }; [true, _patient]; }; if ([_medic, _item] call EFUNC(common,hasItem)) exitWith { if (local _medic) then { - ["useItem", [_medic, _item]] call CBA_fnc_localEvent; + ["ace_useItem", [_medic, _item]] call CBA_fnc_localEvent; } else { - ["useItem", [_medic, _item], _medic] call CBA_fnc_targetEvent; + ["ace_useItem", [_medic, _item], _medic] call CBA_fnc_targetEvent; }; [true, _medic]; }; @@ -48,9 +48,9 @@ if ([vehicle _medic] call FUNC(isMedicalVehicle) && {vehicle _medic != _medic}) if ([_medic, _x] call FUNC(canAccessMedicalEquipment) && {([_x, _item] call EFUNC(common,hasItem))}) exitWith { _return = [true, _x]; if (local _x) then { - ["useItem", [_x, _item]] call CBA_fnc_localEvent; + ["ace_useItem", [_x, _item]] call CBA_fnc_localEvent; } else { - ["useItem", [_x, _item], _x] call CBA_fnc_targetEvent; + ["ace_useItem", [_x, _item], _x] call CBA_fnc_targetEvent; }; }; } forEach _crew; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 864218c23af..c2ad5a78b57 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -6,7 +6,7 @@ GVAR(MenuPFHID) = -1; GVAR(lastOpenedOn) = -1; GVAR(pendingReopen) = false; -["medical_treatmentSuccess", { +["ace_medical_treatmentSuccess", { if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { GVAR(pendingReopen) = false; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 27e0db03b99..960ff0bf71d 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -16,3 +16,9 @@ class CfgPatches { #include "ui\menu.hpp" #include "ACE_Settings.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + medical_treatmentSuccess = "ace_medical_treatmentSuccess"; + Medical_onMenuOpen = "ace_medical_onMenuOpen"; + displayTextStructured = "ace_displayTextStructured"; +}; \ No newline at end of file diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index f8b38d46fe0..33e934afe55 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -81,10 +81,10 @@ GVAR(MenuPFHID) = [{ closeDialog 314412; //If we failed because of distance check, show UI message: if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then { - ["displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call CBA_fnc_localEvent; }; }; }, 0, [_display]] call CBA_fnc_addPerFrameHandler; -["Medical_onMenuOpen", [ACE_player, _target]] call CBA_fnc_localEvent; +["ace_medical_onMenuOpen", [ACE_player, _target]] call CBA_fnc_localEvent; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index aecfc8141c5..6f52de1776c 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -20,7 +20,7 @@ _closeCode = { //Add Eventhandler: -["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; +["ace_rangerfinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; //Global Variables to default: GVAR(gpsPositionASL) = [0,0,0]; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 7a39df8980d..ecb4ac2e973 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -17,3 +17,7 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "gui.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + RangerfinderData = "ace_rangerfinderData"; +}; \ No newline at end of file diff --git a/addons/mk6mortar/XEH_postInit.sqf b/addons/mk6mortar/XEH_postInit.sqf index 4d0216d00ad..c5bcf134ac1 100644 --- a/addons/mk6mortar/XEH_postInit.sqf +++ b/addons/mk6mortar/XEH_postInit.sqf @@ -15,9 +15,9 @@ _static setMagazineTurretAmmo [_magazine, _ammoCount, [0]]; }] call CBA_fnc_addEventHandler; -["initMortar", {_this call FUNC(mortarInit);}] call CBA_fnc_addEventHandler; +["ace_initMortar", {_this call FUNC(mortarInit);}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; -["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call CBA_fnc_addEventHandler; -["infoDisplayChanged", {_this call FUNC(turretDisplayLoaded);}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call CBA_fnc_addEventHandler; +["ace_infoDisplayChanged", {_this call FUNC(turretDisplayLoaded);}] call CBA_fnc_addEventHandler; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 102875a1959..d108c81ff3d 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -32,3 +32,10 @@ class RscStructuredText; #include "RscInGameUI.hpp" #include "RscRangeTable.hpp" + +class ACE_newEvents { + infoDisplayChanged = "ace_infoDisplayChanged"; + playerVehicleChanged = "ace_playerVehicleChanged"; + initMortar = "ace_initMortar"; + initMortar = "ace_initMortar"; +}; \ No newline at end of file diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 8c3dfbae8cd..eb5d584e765 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -29,7 +29,7 @@ if (!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVa if (GVAR(useAmmoHandling) && {!(_mortar getVariable [QGVAR(initialized),false]) && !(_mortar getVariable [QGVAR(exclude),false])}) then { //wait for proper turret locality change [{ - ["initMortar", [_this], [_this]] call CBA_fnc_globalEvent; + ["ace_initMortar", [_this], [_this]] call CBA_fnc_globalEvent; }, _mortar, 0.05] call EFUNC(common,waitAndExecute); }; }, _newVehicle] call EFUNC(common,runAfterSettingsInit); diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index 1bd8862fe16..8eabe08f0df 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["InitSettingsFromModules", { +["ace_initSettingsFromModules", { // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index d25e193d327..d09fcbd5f11 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -25,4 +25,7 @@ class CfgVehicles { }; }; -#include "CfgEventHandlers.hpp" \ No newline at end of file +#include "CfgEventHandlers.hpp" +class ACE_newEvents { + InitSettingsFromModules = "ace_initSettingsFromModules"; +}; \ No newline at end of file diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index 3da8465c4bd..3b18cb937bb 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -3,8 +3,8 @@ if (!hasInterface) exitWith {}; -["playerChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; -["playerInventoryChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; +["ace_playerChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", FUNC(handleVirtualMass)] call CBA_fnc_addEventHandler; ["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), { diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 8ea42fbf0c9..bca174c422e 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -18,3 +18,8 @@ class CfgPatches { #include "CfgMoves.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + playerInventoryChanged = "ace_playerInventoryChanged"; + playerChanged = "ace_playerChanged"; +}; \ No newline at end of file diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 9b497c0da17..7b3dfe71d38 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -23,7 +23,7 @@ GVAR(showNamesTime) = -10; [29, [false, false, false]], false] call CBA_fnc_addKeybind; //LeftControl Key // Wait until the colors are defined before starting to draw the nametags -["SettingsInitialized", { +["ace_settingsInitialized", { // Draw handle call FUNC(updateSettings); }] call CBA_fnc_addEventHandler; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index a2d38254f1e..b3abf02a7a7 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -17,3 +17,7 @@ class CfgPatches { #include "CfgVehicles.hpp" #include + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 85e4e768cc8..3c19f7969b6 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -29,8 +29,8 @@ GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; // Setup the event handlers -["playerInventoryChanged", FUNC(updatePPEffects)] call CBA_fnc_addEventHandler; -["playerVisionModeChanged", { +["ace_playerInventoryChanged", FUNC(updatePPEffects)] call CBA_fnc_addEventHandler; +["ace_playerVisionModeChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onVisionModeChanged); }] call CBA_fnc_addEventHandler; @@ -39,8 +39,8 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; _this call FUNC(updatePPEffects); _this call FUNC(onCameraViewChanged); }] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; -["playerTurretChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; +["ace_playerTurretChanged", {_this call FUNC(updatePPEffects)}] call CBA_fnc_addEventHandler; // Add keybinds ["ACE3 Equipment", QGVAR(IncreaseNVGBrightness), localize LSTRING(IncreaseNVGBrightness), @@ -72,5 +72,5 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; [209, [false, false, true]], false] call CBA_fnc_addKeybind; //PageDown + ALT // Register fire event handler -["firedPlayer", DFUNC(blending)] call CBA_fnc_addEventHandler; -["firedPlayerVehicle", DFUNC(blending)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(blending)] call CBA_fnc_addEventHandler; +["ace_firedPlayerVehicle", DFUNC(blending)] call CBA_fnc_addEventHandler; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 1edeca6e5bc..a70cda08360 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -16,3 +16,12 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + playerVisionModeChanged = "ace_playerVisionModeChanged"; + firedPlayerVehicle = "ace_firedPlayerVehicle"; + firedPlayer = "ace_firedPlayer"; + playerTurretChanged = "ace_playerTurretChanged"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerInventoryChanged = "ace_playerInventoryChanged"; +}; \ No newline at end of file diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index 0e37839dcac..ae4c8350723 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -28,7 +28,7 @@ GVAR(camera) = objNull; }; // save control for fired EH -["infoDisplayChanged", { +["ace_infoDisplayChanged", { if (!isNull ((_this select 0) displayCtrl 1713001)) then { uiNamespace setVariable [QGVAR(RscWeaponInfo2D), _this select 0]; }; @@ -52,4 +52,4 @@ GVAR(camera) = objNull; }] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index 79f71842eeb..382f97e5558 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -33,3 +33,8 @@ class CfgPatches { #include "CfgJointRails.hpp" #include "CfgPreloadTextures.hpp" + +class ACE_newEvents { + infoDisplayChanged = "ace_infoDisplayChanged"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/optionsmenu/XEH_postInit.sqf b/addons/optionsmenu/XEH_postInit.sqf index 90365be2624..2ef332446a8 100644 --- a/addons/optionsmenu/XEH_postInit.sqf +++ b/addons/optionsmenu/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["SettingsInitialized", { +["ace_settingsInitialized", { GVAR(categories) pushBack ""; //Ensure All Catagories is at top { if !(_x select 8 in GVAR(categories)) then { diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index 4acfef321f2..d4e49b90de3 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -39,3 +39,7 @@ class CfgCommands { "http://ace3mod.com/version.html" }; }; + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index e2fd88f5962..c42ce1f9fd4 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -19,7 +19,7 @@ if (hasInterface) then { [19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key }; -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_1("SettingsInitialized eh", GVAR(enabled)); if (!GVAR(enabled)) exitWith {}; @@ -35,8 +35,8 @@ if (hasInterface) then { GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; // Install event handlers for spare barrels - ["spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call CBA_fnc_addEventHandler; - ["spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call CBA_fnc_addEventHandler; + ["ace_spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call CBA_fnc_addEventHandler; + ["ace_spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call CBA_fnc_addEventHandler; // Schedule cool down calculation of stored spare barrels [] call FUNC(updateSpareBarrelsTemperaturesThread); @@ -52,18 +52,18 @@ if (hasInterface) then { ["CAManBase", "Take", {_this call FUNC(handleTakeEH);}] call CBA_fnc_addClassEventHandler; // Register fire event handler - ["firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; + ["ace_firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; // Only add eh to non local players if dispersion is enabled if (GVAR(overheatingDispersion)) then { - ["firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; }; // Schedule cool down calculation of player weapons at (infrequent) regular intervals [] call FUNC(updateTemperatureThread); // Install event handler to display temp when a barrel was swapped - ["showWeaponTemperature", DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; + ["ace_showWeaponTemperature", DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; // Install event handler to initiate an assisted barrel swap - ["initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; + ["ace_initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 673edcf77f0..dcf9c64ea3c 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -49,4 +49,18 @@ class CfgGesturesMale { speed = 0.3; }; }; +}; +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + initiateSwapBarrelAssisted = "ace_initiateSwapBarrelAssisted"; + showWeaponTemperature = "ace_showWeaponTemperature"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; + spareBarrelsLoadCoolest = "ace_spareBarrelsLoadCoolest"; + spareBarrelsSendTemperatureHint = "ace_spareBarrelsSendTemperatureHint"; + spareBarrelsLoadCoolest = "ace_spareBarrelsLoadCoolest"; + initiateSwapBarrelAssisted = "ace_initiateSwapBarrelAssisted"; + displayTextStructured = "ace_displayTextStructured"; + showWeaponTemperature = "ace_showWeaponTemperature"; + weaponJammed = "ace_weaponJammed"; }; \ No newline at end of file diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index e85bb12673c..ba58231336b 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -43,7 +43,7 @@ if (_ammo > 0) then { // only display the hint once, after you try to shoot an already jammed weapon GVAR(knowAboutJam) = false; -["weaponJammed", [_unit,_weapon]] call CBA_fnc_localEvent; +["ace_weaponJammed", [_unit,_weapon]] call CBA_fnc_localEvent; if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index ee314b9edf3..c77a5dbed23 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -50,4 +50,4 @@ _gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; // Send an event so the machines of the assistant and gunner can show the hint -["showWeaponTemperature", _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; +["ace_showWeaponTemperature", _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index 621f246432f..77ef2199bf6 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -73,4 +73,4 @@ if (_countExtremelyHot > 0) then { }; TRACE_1("_output",_output); -["displayTextStructured", [_output, _size, _player], [_player]] call CBA_fnc_targetEvent; +["ace_displayTextStructured", [_output, _size, _player], [_player]] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf index 73a06e53d1f..326afcae1cd 100644 --- a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf +++ b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf @@ -30,4 +30,4 @@ playSound "ACE_BarrelSwap"; [3, [_assistant, _gunner, _weapon], {}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); -["initiateSwapBarrelAssisted", [_assistant, _gunner, _weapon], _gunner] call CBA_fnc_targetEvent; +["ace_initiateSwapBarrelAssisted", [_assistant, _gunner, _weapon], _gunner] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 6898ff648b1..73cf5f60065 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -34,7 +34,7 @@ private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon > // store the removed barrel with the former weapon temperature. The server // also updates the current weapon temperature to match that of the new // loaded barrel. -["spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call CBA_fnc_serverEvent; +["ace_spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call CBA_fnc_serverEvent; // Store the update time _gunner setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; diff --git a/addons/overpressure/XEH_postInit.sqf b/addons/overpressure/XEH_postInit.sqf index 8e39b7fdcce..dd74ec5c3ad 100644 --- a/addons/overpressure/XEH_postInit.sqf +++ b/addons/overpressure/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["overpressure", FUNC(overpressureDamage)] call CBA_fnc_addEventHandler; +["ace_overpressure", FUNC(overpressureDamage)] call CBA_fnc_addEventHandler; // Register fire event handler -["firedPlayer", DFUNC(firedEHBB)] call CBA_fnc_addEventHandler; -["firedPlayerVehicle", DFUNC(firedEHOP)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(firedEHBB)] call CBA_fnc_addEventHandler; +["ace_firedPlayerVehicle", DFUNC(firedEHOP)] call CBA_fnc_addEventHandler; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 0524f6e4c93..443bee528d4 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -14,3 +14,11 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgWeapons.hpp" + +class ACE_newEvents { + firedPlayerVehicle = "ace_firedPlayerVehicle"; + firedPlayer = "ace_firedPlayer"; + overpressure = "ace_overpressure"; + overpressure = "ace_overpressure"; + overpressure = "ace_overpressure"; +}; \ No newline at end of file diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 4835b537e45..aa2997d0e7b 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -37,7 +37,7 @@ private _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; +["ace_overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Damage to the firer private _distance = 2 * ([_position, _direction, _backblastRange, _unit] call FUNC(getDistance)); diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index 0b2b85a00cc..b8c47a826b8 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -40,7 +40,7 @@ private _direction = vectorDir _projectile; private _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; +["ace_overpressure", [_unit, _position, _direction, _weapon, _magazine, _ammo], _affected] call CBA_fnc_targetEvent; // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf index e732f7ecdfc..799acf92b66 100644 --- a/addons/parachute/XEH_postInit.sqf +++ b/addons/parachute/XEH_postInit.sqf @@ -33,7 +33,7 @@ if (!hasInterface) exitWith {}; [24, [false, false, false]], false] call CBA_fnc_addKeybind; GVAR(PFH) = false; -["playerVehicleChanged",{ +["ace_playerVehicleChanged",{ if (!GVAR(PFH) && {(vehicle ACE_player) isKindOf "ParachuteBase"}) then { GVAR(PFH) = true; [FUNC(onEachFrame), 0.1, []] call CALLSTACK(CBA_fnc_addPerFrameHandler); @@ -41,6 +41,6 @@ GVAR(PFH) = false; }] call CBA_fnc_addEventHandler; // don't show speed and height when in expert mode -["infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call CBA_fnc_addEventHandler; +["ace_infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call CBA_fnc_addEventHandler; -["playerInventoryChanged", FUNC(storeParachute)] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", FUNC(storeParachute)] call CBA_fnc_addEventHandler; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 3671177e28f..8c914259b2e 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -16,3 +16,9 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscTitles.hpp" + +class ACE_newEvents { + playerVehicleChanged = "ace_playerVehicleChanged"; + playerInventoryChanged = "ace_playerInventoryChanged"; + infoDisplayChanged = "ace_infoDisplayChanged"; +}; \ No newline at end of file diff --git a/addons/rearm/XEH_postInit.sqf b/addons/rearm/XEH_postInit.sqf index 3ff17057d05..d49af32eab5 100644 --- a/addons/rearm/XEH_postInit.sqf +++ b/addons/rearm/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}]; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index c15721c9df0..305167b8608 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -18,3 +18,8 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + playerVehicleChanged = "ace_playerVehicleChanged"; + medical_onUnconscious = "ace_medical_onUnconscious"; +}; \ No newline at end of file diff --git a/addons/recoil/XEH_postInit.sqf b/addons/recoil/XEH_postInit.sqf index 9375b05a2c4..29e54646127 100644 --- a/addons/recoil/XEH_postInit.sqf +++ b/addons/recoil/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" // Register fire event handler -["firedPlayer", DFUNC(camShake)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(camShake)] call CBA_fnc_addEventHandler; diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index 5b8002bc37c..266bfb817d9 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -21,3 +21,7 @@ class CfgCameraShake { // What does this do, really? It seems like the engine no longer respects it. defaultCaliberCoefWeaponFire = 0; }; + +class ACE_newEvents { + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 12dd2c59942..b55575e72c6 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 6140cefe8cd..a030633d0a1 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -15,3 +15,11 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + setFuel = "ace_setFuel"; + setVectorDirAndUp = "ace_setVectorDirAndUp"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; +}; \ No newline at end of file diff --git a/addons/refuel/functions/fnc_checkFuel.sqf b/addons/refuel/functions/fnc_checkFuel.sqf index adc5c81674d..ce815a3f1d0 100644 --- a/addons/refuel/functions/fnc_checkFuel.sqf +++ b/addons/refuel/functions/fnc_checkFuel.sqf @@ -27,9 +27,9 @@ private _fuel = [_target] call FUNC(getFuel); params ["_args"]; _args params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_fuel", 0, [0]]]; if (_fuel > 0 ) then { - ["displayTextStructured", [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit], _unit] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit], _unit] call CBA_fnc_targetEvent; } else { - ["displayTextStructured", [LSTRING(Hint_Empty), 2, _unit], _unit] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [LSTRING(Hint_Empty), 2, _unit], _unit] call CBA_fnc_targetEvent; }; true }, diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index 306f7d83890..c46156a26e8 100644 --- a/addons/refuel/functions/fnc_connectNozzleAction.sqf +++ b/addons/refuel/functions/fnc_connectNozzleAction.sqf @@ -119,7 +119,7 @@ _endPosTestOffset set [2, (_startingOffset select 2)]; }; }; }; - ["setVectorDirAndUp", [_nozzle, _dirAndUp], _nozzle] call CBA_fnc_targetEvent; + ["ace_setVectorDirAndUp", [_nozzle, _dirAndUp], _nozzle] call CBA_fnc_targetEvent; _nozzle setVariable [QGVAR(sink), _target, true]; _nozzle setVariable [QGVAR(isConnected), true, true]; _target setVariable [QGVAR(nozzle), _nozzle, true]; diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index 3f7a6259e74..bdd49d01d0e 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -79,7 +79,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> }; _unit setVariable [QGVAR(tempFuel), _fuelInSink]; - ["setFuel", [_sink, _fuelInSink], _sink] call CBA_fnc_targetEvent; + ["ace_setFuel", [_sink, _fuelInSink], _sink] call CBA_fnc_targetEvent; [_source, _fuelInSource] call FUNC(setFuel); } else { _unit setVariable [QGVAR(tempFuel), fuel _sink]; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 946b3a17862..d5ce159f382 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -18,7 +18,7 @@ if (!hasInterface) exitWith {}; {false}, [19, [false, true, false]], false] call CBA_fnc_addKeybind; -["setAmmoSync", { +["ace_setAmmoSync", { //To propagate the setAmmo change, do it on all clients params ["_unit", "_weapon", "_ammo"]; TRACE_3("setAmmoSync EH",_unit,_weapon,_ammo); @@ -35,7 +35,7 @@ if (!hasInterface) exitWith {}; // Return the magazine if it's the wrong type if (_magazineType != (_magazine select 0)) exitWith { - ["returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; + ["ace_returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; private _ammoCount = _receiver ammo currentWeapon _receiver; @@ -43,15 +43,15 @@ if (!hasInterface) exitWith {}; // Return the magazine if the belt is full or empty if ((_ammoCount == 0) || _ammoMissing == 0) exitWith { - ["returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; + ["ace_returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; // Add the ammo private _ammoAdded = _ammoMissing min (_magazine select 1); - ["setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; + ["ace_setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; if ((_magazine select 1) - _ammoAdded > 0) then { - ["returnedAmmo", [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; + ["ace_returnedAmmo", [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; }; }] call CBA_fnc_addEventHandler; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 86ba809a934..cd22dfc98c0 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -21,3 +21,12 @@ class CfgPatches { #include "CfgActions.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + setAmmoSync = "ace_setAmmoSync"; + returnedAmmo = "ace_returnedAmmo"; + setAmmoSync = "ace_setAmmoSync"; + returnedAmmo = "ace_returnedAmmo"; + returnedAmmo = "ace_returnedAmmo"; + linkedAmmo = "ace_linkedAmmo"; +}; \ No newline at end of file diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index 5c3d04a00a1..ba5d4ddca41 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -46,7 +46,7 @@ private _onFinish = { (_this select 0) params ["_player", "_target", "_magazine"]; // Raise event on remote unit - ["linkedAmmo", [_target, _player, _magazine], [_target]] call CBA_fnc_targetEvent; + ["ace_linkedAmmo", [_target, _player, _magazine], [_target]] call CBA_fnc_targetEvent; }; private _onFailure = { diff --git a/addons/reloadlaunchers/XEH_postInit.sqf b/addons/reloadlaunchers/XEH_postInit.sqf index 5d436b2b045..0800c4b0eb0 100644 --- a/addons/reloadlaunchers/XEH_postInit.sqf +++ b/addons/reloadlaunchers/XEH_postInit.sqf @@ -1,4 +1,4 @@ // by commy2 #include "script_component.hpp" -["reloadLauncher", {_this call DFUNC(reloadLauncher)}] call CBA_fnc_addEventHandler; +["ace_reloadLauncher", {_this call DFUNC(reloadLauncher)}] call CBA_fnc_addEventHandler; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 6a04f6339a3..df2a8e5e359 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -16,3 +16,8 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + +class ACE_newEvents { + reloadLauncher = "ace_reloadLauncher"; + reloadLauncher = "ace_reloadLauncher"; +}; \ No newline at end of file diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index ea2ad467c1e..59d28f8cad8 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -32,7 +32,7 @@ private ["_onSuccess", "_onFailure", "_condition"]; _onSuccess = { (_this select 0 select 0) removeMagazine (_this select 0 select 3); - ["reloadLauncher", _this select 0, _this select 0 select 1] call CBA_fnc_targetEvent; + ["ace_reloadLauncher", _this select 0, _this select 0 select 1] call CBA_fnc_targetEvent; [localize LSTRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); }; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 526cdc0b845..660eea866ab 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["setVehicleDamage", {_this call FUNC(setDamage)}] call CBA_fnc_addEventHandler; -["setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; +["ace_setVehicleDamage", {_this call FUNC(setDamage)}] call CBA_fnc_addEventHandler; +["ace_setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; // wheels -["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; +["ace_setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index d377342adfc..e4f3807e380 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -18,3 +18,24 @@ class CfgPatches { #include "CfgActions.hpp" #include "CfgVehicles.hpp" #include "CfgEden.hpp" + +class ACE_newEvents { + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; + setVehicleDamage = "ace_setVehicleDamage"; + fixPosition = "ace_fixPosition"; + fixCollision = "ace_fixCollision"; + displayTextStructured = "ace_displayTextStructured"; + displayTextStructured = "ace_displayTextStructured"; + engineOn = "ace_engineOn"; + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; + setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + fixCollision = "ace_fixCollision"; + setWheelHitPointDamage = "ace_setWheelHitPointDamage"; + fixCollision = "ace_fixCollision"; + AddCargoByClass = "ace_addCargoByClass"; +}; \ No newline at end of file diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 717c3ee9489..2d133da3c1e 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -33,4 +33,4 @@ if (!EGVAR(common,settingsInitFinished)) exitWith { if (!_force && !GVAR(addSpareParts)) exitWith {}; // Load -["AddCargoByClass", [_part, _vehicle, _amount]] call CBA_fnc_localEvent; +["ace_addCargoByClass", [_part, _vehicle, _amount]] call CBA_fnc_localEvent; diff --git a/addons/repair/functions/fnc_doRemoveTrack.sqf b/addons/repair/functions/fnc_doRemoveTrack.sqf index 997d1b6bce2..00adf18cc1c 100644 --- a/addons/repair/functions/fnc_doRemoveTrack.sqf +++ b/addons/repair/functions/fnc_doRemoveTrack.sqf @@ -27,14 +27,14 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["fixCollision", _unit] call CBA_fnc_localEvent; +["ace_fixCollision", _unit] call CBA_fnc_localEvent; // spawn track private _newTrack = ["ACE_Track", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); TRACE_2("new track created",_newTrack,damage _newTrack); // raise event to set the new hitpoint damage -["setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; +["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRemoveWheel.sqf b/addons/repair/functions/fnc_doRemoveWheel.sqf index 3f0a29293f8..bf734af1ff6 100644 --- a/addons/repair/functions/fnc_doRemoveWheel.sqf +++ b/addons/repair/functions/fnc_doRemoveWheel.sqf @@ -27,14 +27,14 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["fixCollision", _unit] call CBA_fnc_localEvent; +["ace_fixCollision", _unit] call CBA_fnc_localEvent; // spawn wheel private _newWheel = ["ACE_Wheel", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); TRACE_2("new wheel created",_newWheel,damage _newWheel); // raise event to set the new hitpoint damage -["setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; +["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRepair.sqf b/addons/repair/functions/fnc_doRepair.sqf index 084511b7639..8c8b8182f9f 100644 --- a/addons/repair/functions/fnc_doRepair.sqf +++ b/addons/repair/functions/fnc_doRepair.sqf @@ -34,7 +34,7 @@ private _hitPointNewDamage = (_hitPointCurDamage - 0.5) max _postRepairDamageMin if (_hitPointNewDamage < _hitPointCurDamage) then { // raise event to set the new hitpoint damage TRACE_3("repairing main point", _vehicle, _hitPointIndex, _hitPointNewDamage); - ["setVehicleHitPointDamage", [_vehicle, _hitPointIndex, _hitPointNewDamage], _vehicle] call CBA_fnc_targetEvent; + ["ace_setVehicleHitPointDamage", [_vehicle, _hitPointIndex, _hitPointNewDamage], _vehicle] call CBA_fnc_targetEvent; _hitPointCurDamage = _hitPointNewDamage; }; @@ -55,7 +55,7 @@ if (isArray _hitpointGroupConfig) then { private _subPointNewDamage = (_subPointCurDamage - 0.5) max _postRepairDamageMin; if (_subPointNewDamage < _subPointCurDamage) then { TRACE_3("repairing sub point", _vehicle, _subHitIndex, _subPointNewDamage); - ["setVehicleHitPointDamage", [_vehicle, _subHitIndex, _subPointNewDamage], _vehicle] call CBA_fnc_targetEvent; + ["ace_setVehicleHitPointDamage", [_vehicle, _subHitIndex, _subPointNewDamage], _vehicle] call CBA_fnc_targetEvent; }; }; } forEach _subHitArray; diff --git a/addons/repair/functions/fnc_doRepairTrack.sqf b/addons/repair/functions/fnc_doRepairTrack.sqf index 7959edbab7b..897ef881c1e 100644 --- a/addons/repair/functions/fnc_doRepairTrack.sqf +++ b/addons/repair/functions/fnc_doRepairTrack.sqf @@ -41,7 +41,7 @@ _hitPointDamage = (_hitPointDamage - _damageRepaired) min 0; deleteVehicle _track; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", [_vehicle, _hitPoint, _hitPointDamage], _vehicle] call CBA_fnc_targetEvent; +["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _hitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceTrack.sqf b/addons/repair/functions/fnc_doReplaceTrack.sqf index 7fbafac99d8..1de9c3b7bfd 100644 --- a/addons/repair/functions/fnc_doReplaceTrack.sqf +++ b/addons/repair/functions/fnc_doReplaceTrack.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _track; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; +["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceWheel.sqf b/addons/repair/functions/fnc_doReplaceWheel.sqf index 742ae1d3bf6..3d6b161cfac 100644 --- a/addons/repair/functions/fnc_doReplaceWheel.sqf +++ b/addons/repair/functions/fnc_doReplaceWheel.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _wheel; // raise event to set the new hitpoint damage -["setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; +["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index f952e561c4d..f79510aea76 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -38,10 +38,10 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitWith {false}; if ((isEngineOn _target) && {GVAR(autoShutOffEngineWhenStartingRepair)}) then { - ["engineOn", [_target, false], _target] call CBA_fnc_targetEvent; + ["ace_engineOn", [_target, false], _target] call CBA_fnc_targetEvent; }; if ((isEngineOn _target) && {!GVAR(autoShutOffEngineWhenStartingRepair)}) exitWith { - ["displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call CBA_fnc_localEvent; + ["ace_displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call CBA_fnc_localEvent; false }; @@ -235,7 +235,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + ["ace_displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/repair/functions/fnc_spawnObject.sqf b/addons/repair/functions/fnc_spawnObject.sqf index d4da90b7f9a..3b5c9caa9b9 100644 --- a/addons/repair/functions/fnc_spawnObject.sqf +++ b/addons/repair/functions/fnc_spawnObject.sqf @@ -28,7 +28,7 @@ _newObject setPosASL _position; _newObject setDamage _damage; -["fixCollision", _newObject] call CBA_fnc_localEvent; -["fixPosition", _newObject] call CBA_fnc_localEvent; +["ace_fixCollision", _newObject] call CBA_fnc_localEvent; +["ace_fixPosition", _newObject] call CBA_fnc_localEvent; _newObject diff --git a/addons/respawn/XEH_postInit.sqf b/addons/respawn/XEH_postInit.sqf index 43a96833779..d20f6ccbe03 100644 --- a/addons/respawn/XEH_postInit.sqf +++ b/addons/respawn/XEH_postInit.sqf @@ -1,5 +1,5 @@ // by commy2 #include "script_component.hpp" -["rallypointMoved", {_this call FUNC(updateRallypoint)}] call CBA_fnc_addEventHandler; -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // hide enemy rallypoint markers +["ace_rallypointMoved", {_this call FUNC(updateRallypoint)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // hide enemy rallypoint markers diff --git a/addons/respawn/XEH_serverPostInit.sqf b/addons/respawn/XEH_serverPostInit.sqf index 65cc1e9727d..331baa8c205 100644 --- a/addons/respawn/XEH_serverPostInit.sqf +++ b/addons/respawn/XEH_serverPostInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["SettingsInitialized", { +["ace_settingsInitialized", { if (GVAR(RemoveDeadBodiesDisconnected)) then { addMissionEventHandler ["HandleDisconnect", { [{ diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 4a23d1f6506..e723e6a6f5b 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -17,3 +17,12 @@ class CfgPatches { #include "CfgVehicleClasses.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + playerChanged = "ace_playerChanged"; + rallypointMoved = "ace_rallypointMoved"; + killedByFriendly = "ace_killedByFriendly"; + rallypointMoved = "ace_rallypointMoved"; + rallypointMoved = "ace_rallypointMoved"; +}; \ No newline at end of file diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index b857b58f830..2d255f60478 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -60,7 +60,7 @@ if (isNil _name) then { createMarker [_respawnMarker, _rallypoint]; }; - ["rallypointMoved", [_rallypoint, _side]] call CBA_fnc_globalEvent; + ["ace_rallypointMoved", [_rallypoint, _side]] call CBA_fnc_globalEvent; } else { deleteVehicle _rallypoint; ACE_LOGERROR("Multiple Rallypoints of same type."); diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index 24e5f55a977..08ed8a594d5 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -48,7 +48,7 @@ _position set [2, 0]; _rallypoint setVariable [QGVAR(markerDate), [dayTime, "HH:MM"] call BIS_fnc_timeToString, true]; - ["rallypointMoved", [_rallypoint, _side, _position]] call CBA_fnc_globalEvent; + ["ace_rallypointMoved", [_rallypoint, _side, _position]] call CBA_fnc_globalEvent; [localize LSTRING(Deployed)] call EFUNC(common,displayTextStructured); }, [_rallypoint, _unit, _position], 5] call EFUNC(common,waitAndExecute); diff --git a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf index e4ddc5bb350..388302150d7 100644 --- a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf +++ b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf @@ -22,5 +22,5 @@ if (_unit != _killer && {side group _unit in [side group ACE_player, civilian]} systemChat format ["%1 was killed by %2", [_unit, false, true] call EFUNC(common,getName), [_killer, false, true] call EFUNC(common,getName)]; // Raise ACE globalEvent - ["killedByFriendly", [_unit, _killer]] call CBA_fnc_globalEvent; + ["ace_killedByFriendly", [_unit, _killer]] call CBA_fnc_globalEvent; }; diff --git a/addons/sandbag/XEH_postInit.sqf b/addons/sandbag/XEH_postInit.sqf index a186e38a7ad..74a8e67b74a 100644 --- a/addons/sandbag/XEH_postInit.sqf +++ b/addons/sandbag/XEH_postInit.sqf @@ -12,14 +12,14 @@ GVAR(deployPFH) = -1; GVAR(deployDirection) = 0; // Cancel deploy sandbag if interact menu opened -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel deploy on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 6b7ce1a456f..1f3c7e16526 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -13,4 +13,12 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" \ No newline at end of file +#include "CfgWeapons.hpp" +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerInventoryChanged = "ace_playerInventoryChanged"; + playerChanged = "ace_playerChanged"; + interactMenuOpened = "ace_interactMenuOpened"; + enableSimulationGlobal = "ace_enableSimulationGlobal"; +}; \ No newline at end of file diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index 163c64b8f28..ca81929a78b 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -27,7 +27,7 @@ _sandBag = createVehicle ["ACE_SandbagObject_NoGeo", [0, 0, 0], [], 0, "NONE"]; GVAR(sandBag) = _sandBag; // prevent collisions with sandbag -["enableSimulationGlobal", [_sandBag, false]] call CBA_fnc_serverEvent; +["ace_enableSimulationGlobal", [_sandBag, false]] call CBA_fnc_serverEvent; GVAR(deployDirection) = 0; diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index ed40a52ef29..4ebfe39bf38 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -10,10 +10,10 @@ if (!hasInterface) exitWith {}; // Check inventory when it changes -["playerInventoryChanged", FUNC(inventoryCheck)] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", FUNC(inventoryCheck)] call CBA_fnc_addEventHandler; // Instantly hide knobs when scoping in -["cameraViewChanged", { +["ace_cameraViewChanged", { EXPLODE_2_PVT(_this,_player,_newCameraView); if (_newCameraView == "GUNNER") then { private "_layer"; @@ -152,5 +152,5 @@ if (!hasInterface) exitWith {}; // Register fire event handler -["firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; -["firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(firedEH)] call CBA_fnc_addEventHandler; +["ace_firedPlayerNonLocal", DFUNC(firedEH)] call CBA_fnc_addEventHandler; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 42be2830442..63eab66219d 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -21,3 +21,10 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "RscTitles.hpp" + +class ACE_newEvents { + cameraViewChanged = "ace_cameraViewChanged"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; + playerInventoryChanged = "ace_playerInventoryChanged"; +}; \ No newline at end of file diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index e9dcbfa6daf..2ce615c68ae 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -3,7 +3,7 @@ // Exit on Headless if (!hasInterface) exitWith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_1("SettingInit", GVAR(enable)); //If not enabled, then do not add CanInteractWith Condition or event handlers: @@ -13,6 +13,6 @@ if (!hasInterface) exitWith {}; ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); // Handle interruptions - ["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; - ["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + ["ace_medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + ["ace_setHandcuffed", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 96d3edab7b2..65e23cd1ad9 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -16,3 +16,9 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgMoves.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + SetHandcuffed = "ace_setHandcuffed"; + medical_onUnconscious = "ace_medical_onUnconscious"; +}; \ No newline at end of file diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index 6e32ed04133..5aaedf48be0 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -23,3 +23,8 @@ class CfgRespawnTemplates { onPlayerRespawn = QFUNC(respawnTemplate); }; }; + +class ACE_newEvents { + spectatorStaged = "ace_spectatorStaged"; + spectatorSet = "ace_spectatorSet"; +}; \ No newline at end of file diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 09c91ea4efe..9e7e4e02784 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -170,4 +170,4 @@ GVAR(interrupts) = []; // Mark spectator state for reference GVAR(isSet) = _set; -["spectatorSet",[_set]] call CBA_fnc_localEvent; +["ace_spectatorSet", [_set]] call CBA_fnc_localEvent; diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 5d65f74a819..f833d9a4c89 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -64,7 +64,7 @@ if !(_set isEqualTo (GETVAR(_unit,GVAR(isStaged),false))) then { // Mark spectator state for reference _unit setVariable [QGVAR(isStaged), _set, true]; - ["spectatorStaged",[_set]] call CBA_fnc_localEvent; + ["ace_spectatorStaged", [_set]] call CBA_fnc_localEvent; }; //BandAid for #2677 - if player in unitList weird before being staged, weird things can happen diff --git a/addons/switchunits/XEH_postInit.sqf b/addons/switchunits/XEH_postInit.sqf index 41d975f1026..3ec08621c66 100644 --- a/addons/switchunits/XEH_postInit.sqf +++ b/addons/switchunits/XEH_postInit.sqf @@ -20,7 +20,7 @@ if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then { [player] call FUNC(startSwitchUnits); } else { - ["SettingChanged", { + ["ace_settingChanged", { PARAMS_2(_name,_value); if ((_name == QGVAR(EnableSwitchUnits)) && {_value}) then { [player] call FUNC(startSwitchUnits); diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index 22a4924709b..6caf7a955cd 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -15,3 +15,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + SettingChanged = "ace_settingChanged"; +}; \ No newline at end of file diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 0f4283f4eeb..88b0480df3d 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -7,20 +7,20 @@ GVAR(cancelTime) = 0; GVAR(currentStep) = 3; GVAR(currentAngle) = 0; -/*["interactMenuOpened", { +/*["ace_interactMenuOpened", { if ((ACE_time > GVAR(cancelTime)) && !isNull GVAR(ladder)) then { GVAR(ladder) call FUNC(cancelTLdeploy); }; }] call CBA_fnc_addEventHandler;*/ // Cancel adjustment if interact menu opens -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel adjusting on player change. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 02740639fe5..9ef3e2e42bc 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -13,3 +13,11 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + interactMenuOpened = "ace_interactMenuOpened"; + medical_onUnconscious = "ace_medical_onUnconscious"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerChanged = "ace_playerChanged"; + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/tagging/XEH_postInit.sqf b/addons/tagging/XEH_postInit.sqf index bd6f502287c..df5d3a1a5b6 100644 --- a/addons/tagging/XEH_postInit.sqf +++ b/addons/tagging/XEH_postInit.sqf @@ -44,4 +44,4 @@ if (!isServer) exitWith {}; GVAR(testingThread) = false; GVAR(tagsToTest) = []; -["createTag", DFUNC(createTag)] call CBA_fnc_addEventHandler; +["ace_createTag", DFUNC(createTag)] call CBA_fnc_addEventHandler; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index dcd1fb845de..38d974a8ec2 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -15,3 +15,9 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + +class ACE_newEvents { + createTag = "ace_createTag"; + createTag = "ace_createTag"; + tagCreated = "ace_tagCreated"; +}; \ No newline at end of file diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 8ec65ccd025..20ca33bd2e0 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -34,7 +34,7 @@ _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers -["tagCreated", [_tag, _texture, _object, _unit]] call CBA_fnc_globalEvent; +["ace_tagCreated", [_tag, _texture, _object, _unit]] call CBA_fnc_globalEvent; if (isNull _object) exitWith {true}; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index b00f7ed88e4..0cf5336dec3 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -109,7 +109,7 @@ _unit playActionNow "PutDown"; playSound3D [QUOTE(PATHTO_R(sounds\spray.ogg)), _unit, false, (eyePos _unit), 10, 1, 15]; // Tell the server to create the tag and handle its destruction - ["createTag", _this] call CBA_fnc_serverEvent; + ["ace_createTag", _this] call CBA_fnc_serverEvent; }, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); true diff --git a/addons/trenches/XEH_postInit.sqf b/addons/trenches/XEH_postInit.sqf index f9deb53ff14..6fb3c9b33fb 100644 --- a/addons/trenches/XEH_postInit.sqf +++ b/addons/trenches/XEH_postInit.sqf @@ -13,14 +13,14 @@ GVAR(digPFH) = -1; GVAR(digDirection) = 0; // Cancel dig sandbag if interact menu opened -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel dig on player change. This does work when returning to lobby, but not when hard disconnecting. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerInventoryChanged", {_this call FUNC(handlePlayerInventoryChanged)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index e1b14fa37c0..ad484212f02 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -15,3 +15,12 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerInventoryChanged = "ace_playerInventoryChanged"; + playerChanged = "ace_playerChanged"; + interactMenuOpened = "ace_interactMenuOpened"; + enableSimulationGlobal = "ace_enableSimulationGlobal"; +}; \ No newline at end of file diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index eb6a75ae446..9a51e43b67a 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -36,7 +36,7 @@ _trench = createVehicle [_noGeoModel, [0, 0, 0], [], 0, "NONE"]; GVAR(trench) = _trench; // prevent collisions with trench -["enableSimulationGlobal", [_trench, false]] call CBA_fnc_serverEvent; +["ace_enableSimulationGlobal", [_trench, false]] call CBA_fnc_serverEvent; GVAR(digDirection) = 0; diff --git a/addons/tripod/XEH_postInit.sqf b/addons/tripod/XEH_postInit.sqf index 438a5a26ae3..577f0c50376 100644 --- a/addons/tripod/XEH_postInit.sqf +++ b/addons/tripod/XEH_postInit.sqf @@ -7,13 +7,13 @@ GVAR(adjustPFH) = -1; GVAR(height) = 0; // Cancel adjustment if interact menu opens -["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; +["ace_interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call CBA_fnc_addEventHandler; // Cancel adjusting on player change. -["playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 80379019c35..f4a5163980c 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -13,4 +13,10 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" \ No newline at end of file +#include "CfgWeapons.hpp" +class ACE_newEvents { + medical_onUnconscious = "ace_medical_onUnconscious"; + playerVehicleChanged = "ace_playerVehicleChanged"; + playerChanged = "ace_playerChanged"; + interactMenuOpened = "ace_interactMenuOpened"; +}; \ No newline at end of file diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 2ef05fe15c9..47b7c8c1399 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -3,7 +3,7 @@ // Exit on Headless if (!hasInterface) exitWith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { // Initial settings [true] call FUNC(setElements); diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index d6fbed61ae3..36f97719e73 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -18,3 +18,7 @@ class CfgPatches { #include "RscChat.hpp" #include "RscVignette.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index e4cdf9a55b7..a39bab6e720 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -18,3 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "RscInGameUI.hpp" + +class ACE_newEvents { + RangerfinderData = "ace_rangerfinderData"; +}; \ No newline at end of file diff --git a/addons/vector/functions/fnc_dataTransfer.sqf b/addons/vector/functions/fnc_dataTransfer.sqf index 9c5e2dbf97a..6c51332e884 100644 --- a/addons/vector/functions/fnc_dataTransfer.sqf +++ b/addons/vector/functions/fnc_dataTransfer.sqf @@ -22,4 +22,4 @@ _direction = call FUNC(getDirection); _azimuth = _direction select 0; _inclination = _direction select 1; //Send Data to connected GPS -["RangerfinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file +["ace_rangerfinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file diff --git a/addons/vehiclelock/XEH_postInit.sqf b/addons/vehiclelock/XEH_postInit.sqf index 5d250867ee7..0a9d00ffbc8 100644 --- a/addons/vehiclelock/XEH_postInit.sqf +++ b/addons/vehiclelock/XEH_postInit.sqf @@ -1,12 +1,12 @@ #include "script_component.hpp" //Add Event Handlers -["VehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call CBA_fnc_addEventHandler; -["VehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call CBA_fnc_addEventHandler; +["ace_vehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call CBA_fnc_addEventHandler; +["ace_vehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitwith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_1("SettingsInitialized eh",GVAR(LockVehicleInventory)); if (GVAR(LockVehicleInventory)) then { diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 9ee1343bc87..31a87fafdf2 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -17,3 +17,12 @@ class CfgPatches { #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; + VehicleLock_SetupCustomKey = "ace_vehicleLock_SetupCustomKey"; + VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; + VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; + VehicleLock_SetupCustomKey = "ace_vehicleLock_SetupCustomKey"; +}; \ No newline at end of file diff --git a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf index c2035d81886..ea8a22d3528 100644 --- a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf @@ -36,7 +36,7 @@ if (_useCustom) then { _keyMagazine = _newMags select 0; TRACE_2("setting up key on server",_veh,_keyMagazine); //Have the server run add the key to the vehicle's key array: - ["VehicleLock_SetupCustomKey", [_veh, _keyMagazine]] call CBA_fnc_serverEvent; + ["ace_vehicleLock_SetupCustomKey", [_veh, _keyMagazine]] call CBA_fnc_serverEvent; } else { _keyName = [_veh] call FUNC(getVehicleSideKey); _unit addItem _keyName; //addItem has global effects diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index fa82e8838b6..ac16e0467fa 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -38,7 +38,7 @@ TRACE_1("params",_vehicle); }; if ((_lock && {(locked _vehicle) != 2}) || {!_lock && {(locked _vehicle) != 0}}) then { TRACE_3("Setting Lock State",_lock,(typeOf _vehicle),_vehicle); - ["VehicleLock_SetVehicleLock", [_vehicle, _lock], [_vehicle]] call CBA_fnc_targetEvent; + ["ace_vehicleLock_SetVehicleLock", [_vehicle, _lock], [_vehicle]] call CBA_fnc_targetEvent; }; }; //Delay call until mission start (so everyone has the eventHandler's installed) diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 291f6e42bc7..9743eb5275f 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -55,7 +55,7 @@ switch (_funcType) do { [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize LSTRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); }; case "finishLockpick": { - ["VehicleLock_SetVehicleLock", [_veh, false], [_veh]] call CBA_fnc_targetEvent; + ["ace_vehicleLock_SetVehicleLock", [_veh, false], [_veh]] call CBA_fnc_targetEvent; }; default { ERROR("bad function type"); diff --git a/addons/viewdistance/XEH_clientInit.sqf b/addons/viewdistance/XEH_clientInit.sqf index a72194a989c..a1b81a6ddb4 100644 --- a/addons/viewdistance/XEH_clientInit.sqf +++ b/addons/viewdistance/XEH_clientInit.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -["SettingsInitialized", { +["ace_settingsInitialized", { // if not enabled, then bugger off. if !(GVAR(enabled)) exitWith {}; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 2de8b2c9549..83fda3cc099 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -15,3 +15,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "ACE_Settings.hpp" #include "CfgVehicles.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index acde791f79f..f9d1cf1d78f 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -198,4 +198,4 @@ if (!hasInterface) exitWith {}; // Register fire event handler -["firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; +["ace_firedPlayer", DFUNC(throwGrenade)] call CBA_fnc_addEventHandler; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 231d167cd0b..5132c4084bb 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -14,3 +14,8 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + firedPlayer = "ace_firedPlayer"; + displayTextPicture = "ace_displayTextPicture"; +}; \ No newline at end of file diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 10fc20e001a..5a6697cabc0 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -26,4 +26,4 @@ private _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNa private _text = [format ["%1 x%2", _name, _numberofGrenades], _color] call EFUNC(common,stringToColoredText); private _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); -["displayTextPicture", [_text, _picture]] call CBA_fnc_localEvent; +["ace_displayTextPicture", [_text, _picture]] call CBA_fnc_localEvent; diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index 6fb14aeacf0..92d26880387 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -58,7 +58,7 @@ simulWeatherSync; -["SettingsInitialized",{ +["ace_settingsInitialized",{ TRACE_1("SettingsInitialized",GVAR(syncRain)); //Create a 0 sec delay PFEH to update rain every frame: diff --git a/addons/weather/XEH_postServerInit.sqf b/addons/weather/XEH_postServerInit.sqf index 4e6a1129962..c72dd8db4cd 100644 --- a/addons/weather/XEH_postServerInit.sqf +++ b/addons/weather/XEH_postServerInit.sqf @@ -9,7 +9,7 @@ GVAR(rain_current_range) = -1+(random 2); // Wind call FUNC(initWind); -["SettingsInitialized", { +["ace_settingsInitialized", { TRACE_2("SettingsInitialized",GVAR(enableServerController),GVAR(serverUpdateInterval)); if (GVAR(enableServerController)) then { diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 50e2f8ace03..35c3237ad82 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -15,4 +15,8 @@ class CfgPatches { #include "CfgWorlds.hpp" #include "RscTitles.hpp" #include "CfgVehicles.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "ACE_Settings.hpp" +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + SettingsInitialized = "ace_settingsInitialized"; +}; \ No newline at end of file diff --git a/addons/winddeflection/XEH_postInit.sqf b/addons/winddeflection/XEH_postInit.sqf index f78309c30cd..fe454cb00de 100644 --- a/addons/winddeflection/XEH_postInit.sqf +++ b/addons/winddeflection/XEH_postInit.sqf @@ -4,17 +4,17 @@ if (!hasInterface) exitWith {}; GVAR(trackedBullets) = []; -["SettingsInitialized", { +["ace_settingsInitialized", { //If not enabled, dont't add PFEH if (!GVAR(enabled)) exitWith {}; // Register fire event handler - ["firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; - ["firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayer", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; if (GVAR(vehicleEnabled)) then { - ["firedPlayerVehicle", DFUNC(handleFired)] call CBA_fnc_addEventHandler; - ["firedPlayerVehicleNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerVehicle", DFUNC(handleFired)] call CBA_fnc_addEventHandler; + ["ace_firedPlayerVehicleNonLocal", DFUNC(handleFired)] call CBA_fnc_addEventHandler; }; [] call FUNC(updateTrajectoryPFH); diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index a7bedbb9eff..220899d1841 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -23,3 +23,11 @@ class CfgAddons { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + SettingsInitialized = "ace_settingsInitialized"; + firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; + firedPlayerVehicle = "ace_firedPlayerVehicle"; + firedPlayerNonLocal = "ace_firedPlayerNonLocal"; + firedPlayer = "ace_firedPlayer"; +}; \ No newline at end of file diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index 8e7ee84a078..136851458b4 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -5,7 +5,7 @@ ADDON = false; #include "XEH_PREP.hpp" if (isServer) then { - ["zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call CBA_fnc_addEventHandler; + ["ace_zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call CBA_fnc_addEventHandler; }; ADDON = true; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index f41769e7270..737c73cb9a8 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -42,3 +42,12 @@ class ACE_Curator { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + +class ACE_newEvents { + zeusUnitAssigned = "ace_zeusUnitAssigned"; + SetSurrendered = "ace_setSurrendered"; + SetHandcuffed = "ace_setHandcuffed"; + AddCargoByClass = "ace_addCargoByClass"; + AddCargoByClass = "ace_addCargoByClass"; + zeusUnitAssigned = "ace_zeusUnitAssigned"; +}; \ No newline at end of file diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index cfcbdc685bb..84c4dd59ecb 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -175,7 +175,7 @@ if (_activated) then { [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; // Added by ace_zeus - ["zeusUnitAssigned", [_logic,_player]] call CBA_fnc_globalEvent; + ["ace_zeusUnitAssigned", [_logic,_player]] call CBA_fnc_globalEvent; //--- Forced interface //if (_forced) then { diff --git a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf index 91b1b4d7644..492914eb1c5 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareTrack.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Track" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["AddCargoByClass", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargoByClass", ["ACE_Track", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf index f6f1fadb5ac..105acb2b83f 100644 --- a/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf +++ b/addons/zeus/functions/fnc_moduleAddSpareWheel.sqf @@ -32,7 +32,7 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded) && ["ace_repair"] call EFUNC(c if (getNumber (configFile >> "CfgVehicles" >> "ACE_Wheel" >> QEGVAR(cargo,size)) > [_mouseOverUnit] call EFUNC(cargo,getCargoSpaceLeft)) then { [LSTRING(OnlyEnoughCargoSpace)] call EFUNC(common,displayTextStructured); } else { - ["AddCargoByClass", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; + ["ace_addCargoByClass", ["ACE_Wheel", _mouseOverUnit, 1, true]] call CBA_fnc_localEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleCaptive.sqf b/addons/zeus/functions/fnc_moduleCaptive.sqf index d9b1c429e02..ee0781b43f3 100644 --- a/addons/zeus/functions/fnc_moduleCaptive.sqf +++ b/addons/zeus/functions/fnc_moduleCaptive.sqf @@ -38,7 +38,7 @@ if (isNil QEFUNC(captives,setHandcuffed)) then { } else { _captive = GETVAR(_unit,EGVAR(captives,isHandcuffed),false); // Event initalized by ACE_Captives - ["SetHandcuffed", [_unit, !_captive], _unit] call CBA_fnc_targetEvent; + ["ace_setHandcuffed", [_unit, !_captive], _unit] call CBA_fnc_targetEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleSurrender.sqf b/addons/zeus/functions/fnc_moduleSurrender.sqf index 9ef8270eeee..08b74847c1a 100644 --- a/addons/zeus/functions/fnc_moduleSurrender.sqf +++ b/addons/zeus/functions/fnc_moduleSurrender.sqf @@ -41,7 +41,7 @@ if (isNil QEFUNC(captives,setSurrendered)) then { } else { _surrendering = GETVAR(_unit,EGVAR(captives,isSurrendering),false); // Event initalized by ACE_Captives - ["SetSurrendered", [_unit, !_surrendering], _unit] call CBA_fnc_targetEvent; + ["ace_setSurrendered", [_unit, !_surrendering], _unit] call CBA_fnc_targetEvent; }; }; }; From 207d6612da4d9f6f0444ae7df703c78de6213ca0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 24 May 2016 15:06:17 +0100 Subject: [PATCH 195/268] Remove duplicate ACE_newEvents entries --- addons/atragmx/XEH_postInit.sqf | 2 +- addons/atragmx/config.cpp | 4 +- addons/backpacks/config.cpp | 3 +- addons/captives/config.cpp | 9 +--- addons/cargo/config.cpp | 8 +-- addons/common/XEH_postInit.sqf | 8 +-- addons/common/config.cpp | 33 ++---------- .../fnc__handleRequestAllSyncedEvents.sqf | 2 +- .../fnc__handleRequestSyncedEvent.sqf | 2 +- .../functions/fnc_requestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- addons/dagr/XEH_postInit.sqf | 2 +- addons/dagr/config.cpp | 2 +- addons/disarming/config.cpp | 4 +- addons/dragging/config.cpp | 9 +--- addons/gforces/config.cpp | 2 - addons/goggles/config.cpp | 3 +- addons/grenades/config.cpp | 3 +- addons/hearing/config.cpp | 2 +- addons/interact_menu/config.cpp | 6 +-- addons/interaction/config.cpp | 7 +-- addons/interaction/functions/fnc_joinTeam.sqf | 2 +- addons/laser/config.cpp | 4 +- addons/maptools/config.cpp | 6 +-- addons/medical/config.cpp | 51 +------------------ addons/medical_menu/config.cpp | 4 +- addons/microdagr/XEH_clientInit.sqf | 2 +- addons/microdagr/config.cpp | 2 +- addons/mk6mortar/config.cpp | 3 +- addons/optics/config.cpp | 2 +- addons/overheating/config.cpp | 5 +- addons/overpressure/config.cpp | 4 +- addons/rearm/config.cpp | 2 +- addons/refuel/config.cpp | 3 +- addons/reload/config.cpp | 5 +- addons/reloadlaunchers/config.cpp | 3 +- addons/repair/config.cpp | 12 +---- addons/respawn/config.cpp | 4 +- addons/sandbag/config.cpp | 2 +- addons/scopes/config.cpp | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/tagging/config.cpp | 3 +- addons/trenches/config.cpp | 2 +- addons/tripod/config.cpp | 2 +- addons/ui/config.cpp | 2 +- addons/vector/config.cpp | 4 +- addons/vector/functions/fnc_dataTransfer.sqf | 2 +- addons/vehiclelock/config.cpp | 5 +- addons/viewdistance/config.cpp | 2 +- addons/weaponselect/config.cpp | 2 +- addons/weather/config.cpp | 3 +- addons/winddeflection/config.cpp | 2 +- addons/zeus/config.cpp | 4 +- 53 files changed, 61 insertions(+), 207 deletions(-) diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index dc4230ebaa2..5cbdea57b82 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [] call FUNC(init); [] call FUNC(restore_user_data); -["ace_rangerfinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; +["ace_rangefinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 925c1a4dfc9..d46b0f1583e 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -16,5 +16,5 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "RscTitles.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangerfinderData"; -}; \ No newline at end of file + RangerfinderData = "ace_rangefinderData"; +}; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index 212ea47b5f2..520d83a240b 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -16,5 +16,4 @@ class CfgPatches { class ACE_newEvents { backpackOpened = "ace_backpackOpened"; - backpackOpened = "ace_backpackOpened"; -}; \ No newline at end of file +}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 8b3aec38f27..e526f110196 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -27,11 +27,4 @@ class ACE_newEvents { MoveInCaptive = "ace_moveInCaptive"; playerChanged = "ace_playerChanged"; CaptiveStatusChanged = "ace_captiveStatusChanged"; - CaptiveStatusChanged = "ace_captiveStatusChanged"; - SetSurrendered = "ace_setSurrendered"; - SetHandcuffed = "ace_setHandcuffed"; - MoveOutCaptive = "ace_moveOutCaptive"; - SetHandcuffed = "ace_setHandcuffed"; - MoveInCaptive = "ace_moveInCaptive"; - SetHandcuffed = "ace_setHandcuffed"; -}; \ No newline at end of file +}; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 1c20a0d7622..73efef25ba7 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -22,15 +22,9 @@ class ACE_newEvents { cargoUnloaded = "ace_cargoUnloaded"; displayTextStructured = "ace_displayTextStructured"; cargoLoaded = "ace_cargoLoaded"; - displayTextStructured = "ace_displayTextStructured"; AddCargoByClass = "ace_addCargoByClass"; ServerUnloadCargo = "ace_serverUnloadCargo"; - displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; UnloadCargo = "ace_unloadCargo"; - displayTextStructured = "ace_displayTextStructured"; - LoadCargo = "ace_loadCargo"; hideObjectGlobal = "ace_hideObjectGlobal"; - AddCargoByClass = "ace_addCargoByClass"; cargoAddedByClass = "ace_cargoAddedByClass"; -}; \ No newline at end of file +}; diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index bc109cb6367..26f25d9ea40 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -178,14 +178,14 @@ if (isServer) then { if (!isServer) then { ["PlayerJip", { ACE_LOGINFO("JIP event synchronization initialized"); - ["ace_sEH_all", [player]] call CBA_fnc_serverEvent; + ["ace_SEH_all", [player]] call CBA_fnc_serverEvent; }] call CBA_fnc_addEventHandler; } else { - ["ace_sEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; + ["ace_SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -["ace_sEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; -["ace_sEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; +["ace_SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +["ace_SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3a9a962d9c9..bf911907ad6 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -30,10 +30,9 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; SettingsInitialized = "ace_settingsInitialized"; InitSettingsFromModules = "ace_initSettingsFromModules"; - SEH_s = "ace_sEH_s"; - SEH = "ace_sEH"; - SEH_all = "ace_sEH_all"; - SEH_all = "ace_sEH_all"; + SEH_s = "ace_SEH_s"; + SEH = "ace_SEH"; + SEH_all = "ace_SEH_all"; enableSimulationGlobal = "ace_enableSimulationGlobal"; hideObjectGlobal = "ace_hideObjectGlobal"; setVanillaHitPointDamage = "ace_setVanillaHitPointDamage"; @@ -53,43 +52,17 @@ class ACE_newEvents { fixFloating = "ace_fixFloating"; fixCollision = "ace_fixCollision"; setStatusEffect = "ace_setStatusEffect"; - SEH_s = "ace_sEH_s"; - SEH_s = "ace_sEH_s"; - setSpeaker = "ace_setSpeaker"; - displayTextStructured = "ace_displayTextStructured"; - unloadPersonEvent = "ace_unloadPersonEvent"; - hideObjectGlobal = "ace_hideObjectGlobal"; - SEH = "ace_sEH"; - SettingChanged = "ace_settingChanged"; SettingChanged = "ace_settingChanged"; - SEH_s = "ace_sEH_s"; - setSpeaker = "ace_setSpeaker"; - setSpeaker = "ace_setSpeaker"; - setSpeaker = "ace_setSpeaker"; - loadPersonEvent = "ace_loadPersonEvent"; - hideObjectGlobal = "ace_hideObjectGlobal"; - HeadbugFixUsed = "ace_headbugFixUsed"; HeadbugFixUsed = "ace_headbugFixUsed"; blockDamage = "ace_blockDamage"; - blockDamage = "ace_blockDamage"; firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; firedPlayerVehicle = "ace_firedPlayerVehicle"; firedNonPlayer = "ace_firedNonPlayer"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; - switchMove = "ace_switchMove"; - playMoveNow = "ace_playMoveNow"; - playMoveNow = "ace_playMoveNow"; - playMoveNow = "ace_playMoveNow"; - playMoveNow = "ace_playMoveNow"; - playMove = "ace_playMove"; - playMove = "ace_playMove"; unlockVehicle = "ace_unlockVehicle"; lockVehicle = "ace_lockVehicle"; - playerInventoryChanged = "ace_playerInventoryChanged"; - SettingChanged = "ace_settingChanged"; - playMoveNow = QGVAR(playMoveNow); }; #include "CfgEventHandlers.hpp" diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 1d4ac98f3ca..5c95d7c030b 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - ["ace_sEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; + ["ace_SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 4dd2e6359e7..ed55997baac 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - ["ace_sEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; + ["ace_SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index da01201395c..55270307644 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -["ace_sEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; +["ace_SEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 996ff0f4c87..08734463bea 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -["ace_sEH", _eventData] call CBA_fnc_globalEvent; +["ace_SEH", _eventData] call CBA_fnc_globalEvent; diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index 84e45a8f854..512ec68eef1 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -30,4 +30,4 @@ GVAR(vectorConnected) = false; GVAR(noVectorData) = true; GVAR(vectorGrid) = "00000000"; -["ace_rangerfinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; +["ace_rangefinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index fc63e4a0ecf..e619f887175 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -18,5 +18,5 @@ class CfgPatches { #include "RscTitles.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangerfinderData"; + RangerfinderData = "ace_rangefinderData"; }; \ No newline at end of file diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index d8358a2bd32..b7868726ed9 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -21,6 +21,4 @@ class CfgPatches { class ACE_newEvents { DisarmDebugCallback = "ace_disarmDebugCallback"; DisarmDropItems = "ace_disarmDropItems"; - DisarmDropItems = "ace_disarmDropItems"; - DisarmDebugCallback = "ace_disarmDebugCallback"; -}; \ No newline at end of file +}; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 59bec425d82..ef9d57bcd11 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -25,11 +25,4 @@ class ACE_newEvents { fixFloating = "ace_fixFloating"; fixPosition = "ace_fixPosition"; fixCollision = "ace_fixCollision"; - fixCollision = "ace_fixCollision"; - fixFloating = "ace_fixFloating"; - fixPosition = "ace_fixPosition"; - fixCollision = "ace_fixCollision"; - fixCollision = "ace_fixCollision"; - setDir = "ace_setDir"; - setDir = "ace_setDir"; -}; \ No newline at end of file +}; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index d0d7965ffa3..79a2a850eda 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -13,9 +13,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" - #include "CfgWeapons.hpp" - #include "CfgVehicles.hpp" class ACE_newEvents { diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 7f7d932cb14..409f114b98f 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -276,5 +276,4 @@ class ACE_newEvents { cameraViewChanged = "ace_cameraViewChanged"; GlassesChanged = "ace_glassesChanged"; GlassesCracked = "ace_glassesCracked"; - GlassesCracked = "ace_glassesCracked"; -}; \ No newline at end of file +}; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 27c729f06d5..01c3b51bdbc 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -25,5 +25,4 @@ class ACE_newEvents { firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; flashbangExplosion = "ace_flashbangExplosion"; - flashbangExplosion = "ace_flashbangExplosion"; -}; \ No newline at end of file +}; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 1654f083d7b..255f0e6cb53 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -29,4 +29,4 @@ class ACE_newEvents { playerInventoryChanged = "ace_playerInventoryChanged"; playerTurretChanged = "ace_playerTurretChanged"; playerVehicleChanged = "ace_playerVehicleChanged"; -}; \ No newline at end of file +}; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 663eaccea84..898829dd5e9 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -29,9 +29,5 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; clearConditionCaches = "ace_clearConditionCaches"; - clearConditionCaches = "ace_clearConditionCaches"; interactMenuClosed = "ace_interactMenuClosed"; - clearConditionCaches = "ace_clearConditionCaches"; - clearConditionCaches = "ace_clearConditionCaches"; - interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file +}; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index b914d94beec..9359c10df18 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -25,9 +25,6 @@ class ACE_newEvents { sendAway = "ace_sendAway"; setVelocity = "ace_setVelocity"; displayTextStructured = "ace_displayTextStructured"; - pardon = "ace_pardon"; - displayTextStructured = "ace_displayTextStructured"; - CBA_teamColorChanged = "ace_cBA_teamColorChanged"; - getDown = "ace_getDown"; + CBA_teamColorChanged = "ace_CBA_teamColorChanged"; selectLeader = "ace_selectLeader"; -}; \ No newline at end of file +}; diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 46b0f79d5f8..bd3db0e294c 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -18,7 +18,7 @@ params ["_unit", "_team"]; -["ace_cBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; +["ace_CBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; // display message if (_unit == ACE_player) then { diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index 3a334f3b9de..746471a4935 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -17,6 +17,4 @@ class CfgPatches { class ACE_newEvents { laser_laserOff = "ace_laser_laserOff"; laser_laserOn = "ace_laser_laserOn"; - laser_laserOn = "ace_laser_laserOn"; - laser_laserOff = "ace_laser_laserOff"; -}; \ No newline at end of file +}; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 2d9d92345a9..01a68e9d3c4 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -72,8 +72,4 @@ class ACE_newEvents { drawing_requestMarkers = "ace_drawing_requestMarkers"; drawing_addLineMarker = "ace_drawing_addLineMarker"; drawing_removeLineMarker = "ace_drawing_removeLineMarker"; - drawing_addLineMarker = "ace_drawing_addLineMarker"; - drawing_removeLineMarker = "ace_drawing_removeLineMarker"; - drawing_requestMarkers = "ace_drawing_requestMarkers"; - drawing_sendbackMarkers = "ace_drawing_sendbackMarkers"; -}; \ No newline at end of file +}; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 832be32cb64..e78c5bea032 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -50,63 +50,14 @@ class ACE_newEvents { medical_woundUpdateRequest = "ace_medical_woundUpdateRequest"; medical_propagateWound = "ace_medical_propagateWound"; useItem = "ace_useItem"; - useItem = "ace_useItem"; - useItem = "ace_useItem"; - useItem = "ace_useItem"; - useItem = "ace_useItem"; - useItem = "ace_useItem"; - medical_onUnconscious = "ace_medical_onUnconscious"; - medical_onUnconscious = "ace_medical_onUnconscious"; medical_treatmentSuccess = "ace_medical_treatmentSuccess"; - treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; - treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; - displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; - treatmentIVLocal = "ace_treatmentIVLocal"; - treatmentIVLocal = "ace_treatmentIVLocal"; - treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; - treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; - treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; - treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; - treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; - treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; - treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; - treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; - treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; - treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; - treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; - medical_propagateWound = "ace_medical_propagateWound"; - treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; - treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; displayTextStructured = "ace_displayTextStructured"; - medical_onUnconscious = "ace_medical_onUnconscious"; - setUnconscious = "ace_setUnconscious"; - setHitPointDamage = "ace_setHitPointDamage"; medical_onSetDead = "ace_medical_onSetDead"; - setDead = "ace_setDead"; Medical_onEnteredCardiacArrest = "ace_medical_onEnteredCardiacArrest"; hideObjectGlobal = "ace_hideObjectGlobal"; - medical_woundUpdateRequest = "ace_medical_woundUpdateRequest"; - medical_propagateWound = "ace_medical_propagateWound"; - displayTextStructured = "ace_displayTextStructured"; addVitalLoop = "ace_addVitalLoop"; Medical_onItemAddedToTriageCard = "ace_medical_onItemAddedToTriageCard"; - addToTriageCard = "ace_addToTriageCard"; medical_onLogEntryAdded = "ace_medical_onLogEntryAdded"; - addToMedicalLog = "ace_addToMedicalLog"; Medical_onHeartRateAdjustmentAdded = "ace_medical_onHeartRateAdjustmentAdded"; unloadPersonEvent = "ace_unloadPersonEvent"; - treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; - displayTextStructured = "ace_displayTextStructured"; - placedInBodyBag = "ace_placedInBodyBag"; - actionPlaceInBodyBag = "ace_actionPlaceInBodyBag"; - displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; - actionCheckPulseLocal = "ace_actionCheckPulseLocal"; - actionCheckPulseLocal = "ace_actionCheckPulseLocal"; - displayTextStructured = "ace_displayTextStructured"; - actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; - actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; -}; \ No newline at end of file +}; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 960ff0bf71d..0183c0207f8 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_medical"}; author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; - authorUrl = "http://ace3mod.com"; + authorUrl = "http://ace3mod.com"; VERSION_CONFIG; }; }; @@ -21,4 +21,4 @@ class ACE_newEvents { medical_treatmentSuccess = "ace_medical_treatmentSuccess"; Medical_onMenuOpen = "ace_medical_onMenuOpen"; displayTextStructured = "ace_displayTextStructured"; -}; \ No newline at end of file +}; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 6f52de1776c..62d49a1fd3d 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -20,7 +20,7 @@ _closeCode = { //Add Eventhandler: -["ace_rangerfinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; +["ace_rangefinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; //Global Variables to default: GVAR(gpsPositionASL) = [0,0,0]; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index ecb4ac2e973..4cbc4b4cbf5 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -19,5 +19,5 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangerfinderData"; + RangerfinderData = "ace_rangefinderData"; }; \ No newline at end of file diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index d108c81ff3d..31fba6f7ba7 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -37,5 +37,4 @@ class ACE_newEvents { infoDisplayChanged = "ace_infoDisplayChanged"; playerVehicleChanged = "ace_playerVehicleChanged"; initMortar = "ace_initMortar"; - initMortar = "ace_initMortar"; -}; \ No newline at end of file +}; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index 382f97e5558..64affd601f2 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -37,4 +37,4 @@ class CfgPatches { class ACE_newEvents { infoDisplayChanged = "ace_infoDisplayChanged"; firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file +}; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index dcf9c64ea3c..89158a67e1c 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -58,9 +58,6 @@ class ACE_newEvents { firedPlayer = "ace_firedPlayer"; spareBarrelsLoadCoolest = "ace_spareBarrelsLoadCoolest"; spareBarrelsSendTemperatureHint = "ace_spareBarrelsSendTemperatureHint"; - spareBarrelsLoadCoolest = "ace_spareBarrelsLoadCoolest"; - initiateSwapBarrelAssisted = "ace_initiateSwapBarrelAssisted"; displayTextStructured = "ace_displayTextStructured"; - showWeaponTemperature = "ace_showWeaponTemperature"; weaponJammed = "ace_weaponJammed"; -}; \ No newline at end of file +}; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 443bee528d4..5e37dd9ecbf 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -19,6 +19,4 @@ class ACE_newEvents { firedPlayerVehicle = "ace_firedPlayerVehicle"; firedPlayer = "ace_firedPlayer"; overpressure = "ace_overpressure"; - overpressure = "ace_overpressure"; - overpressure = "ace_overpressure"; -}; \ No newline at end of file +}; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index 305167b8608..006e3e8bcc3 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -22,4 +22,4 @@ class CfgPatches { class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; medical_onUnconscious = "ace_medical_onUnconscious"; -}; \ No newline at end of file +}; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index a030633d0a1..b903970a3bb 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -21,5 +21,4 @@ class ACE_newEvents { setFuel = "ace_setFuel"; setVectorDirAndUp = "ace_setVectorDirAndUp"; displayTextStructured = "ace_displayTextStructured"; - displayTextStructured = "ace_displayTextStructured"; -}; \ No newline at end of file +}; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index cd22dfc98c0..e82dab39c82 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -25,8 +25,5 @@ class CfgPatches { class ACE_newEvents { setAmmoSync = "ace_setAmmoSync"; returnedAmmo = "ace_returnedAmmo"; - setAmmoSync = "ace_setAmmoSync"; - returnedAmmo = "ace_returnedAmmo"; - returnedAmmo = "ace_returnedAmmo"; linkedAmmo = "ace_linkedAmmo"; -}; \ No newline at end of file +}; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index df2a8e5e359..915316ac399 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -19,5 +19,4 @@ class CfgPatches { class ACE_newEvents { reloadLauncher = "ace_reloadLauncher"; - reloadLauncher = "ace_reloadLauncher"; -}; \ No newline at end of file +}; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index e4f3807e380..84d8a6fa83e 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -24,18 +24,8 @@ class ACE_newEvents { setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; setVehicleDamage = "ace_setVehicleDamage"; fixPosition = "ace_fixPosition"; - fixCollision = "ace_fixCollision"; - displayTextStructured = "ace_displayTextStructured"; displayTextStructured = "ace_displayTextStructured"; engineOn = "ace_engineOn"; - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; - setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; - setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; - fixCollision = "ace_fixCollision"; - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; fixCollision = "ace_fixCollision"; AddCargoByClass = "ace_addCargoByClass"; -}; \ No newline at end of file +}; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index e723e6a6f5b..e70532fee07 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -23,6 +23,4 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; rallypointMoved = "ace_rallypointMoved"; killedByFriendly = "ace_killedByFriendly"; - rallypointMoved = "ace_rallypointMoved"; - rallypointMoved = "ace_rallypointMoved"; -}; \ No newline at end of file +}; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 1f3c7e16526..80938d6ff4a 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -21,4 +21,4 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; enableSimulationGlobal = "ace_enableSimulationGlobal"; -}; \ No newline at end of file +}; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 63eab66219d..038739d558c 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -27,4 +27,4 @@ class ACE_newEvents { firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; playerInventoryChanged = "ace_playerInventoryChanged"; -}; \ No newline at end of file +}; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 9ef3e2e42bc..81b210c80c7 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -20,4 +20,4 @@ class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file +}; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index 38d974a8ec2..96ecadbf035 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -17,7 +17,6 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - createTag = "ace_createTag"; createTag = "ace_createTag"; tagCreated = "ace_tagCreated"; -}; \ No newline at end of file +}; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index ad484212f02..3d5c3a5a17f 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -23,4 +23,4 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; enableSimulationGlobal = "ace_enableSimulationGlobal"; -}; \ No newline at end of file +}; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index f4a5163980c..f57dbb7b9ed 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -19,4 +19,4 @@ class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file +}; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index 36f97719e73..b00b209f52c 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -21,4 +21,4 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file +}; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index a39bab6e720..fae30f790eb 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -20,5 +20,5 @@ class CfgPatches { #include "RscInGameUI.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangerfinderData"; -}; \ No newline at end of file + RangerfinderData = "ace_rangefinderData"; +}; diff --git a/addons/vector/functions/fnc_dataTransfer.sqf b/addons/vector/functions/fnc_dataTransfer.sqf index 6c51332e884..1c3a67c1cb5 100644 --- a/addons/vector/functions/fnc_dataTransfer.sqf +++ b/addons/vector/functions/fnc_dataTransfer.sqf @@ -22,4 +22,4 @@ _direction = call FUNC(getDirection); _azimuth = _direction select 0; _inclination = _direction select 1; //Send Data to connected GPS -["ace_rangerfinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file +["ace_rangefinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 31a87fafdf2..8dbc7a5ece3 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -22,7 +22,4 @@ class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; VehicleLock_SetupCustomKey = "ace_vehicleLock_SetupCustomKey"; - VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; - VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; - VehicleLock_SetupCustomKey = "ace_vehicleLock_SetupCustomKey"; -}; \ No newline at end of file +}; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 83fda3cc099..a9af73b78ee 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -18,4 +18,4 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file +}; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 5132c4084bb..04a674a576a 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -18,4 +18,4 @@ class CfgPatches { class ACE_newEvents { firedPlayer = "ace_firedPlayer"; displayTextPicture = "ace_displayTextPicture"; -}; \ No newline at end of file +}; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 35c3237ad82..280efd36540 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -18,5 +18,4 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file +}; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 220899d1841..48f24920c47 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -30,4 +30,4 @@ class ACE_newEvents { firedPlayerVehicle = "ace_firedPlayerVehicle"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file +}; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 737c73cb9a8..0758e1557be 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -48,6 +48,4 @@ class ACE_newEvents { SetSurrendered = "ace_setSurrendered"; SetHandcuffed = "ace_setHandcuffed"; AddCargoByClass = "ace_addCargoByClass"; - AddCargoByClass = "ace_addCargoByClass"; - zeusUnitAssigned = "ace_zeusUnitAssigned"; -}; \ No newline at end of file +}; From 331c3c70cb53957f01ad88c91d49d0c5be0f1ade Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 24 May 2016 18:58:27 +0200 Subject: [PATCH 196/268] Verify and fix cargo, nametags, rearm, reload, repair, ui, Convert infoDisplayChanged in common and mk6mortar Rsc's --- addons/cargo/XEH_postInit.sqf | 2 +- addons/cargo/config.cpp | 2 +- addons/cargo/functions/fnc_unloadItem.sqf | 2 +- addons/common/RscInfoType.hpp | 54 +++++++++---------- addons/mk6mortar/RscInGameUI.hpp | 2 +- addons/nametags/XEH_postInit.sqf | 2 +- .../nametags/functions/fnc_initIsSpeaking.sqf | 2 +- .../rearm/functions/fnc_rearmSuccessLocal.sqf | 8 +-- addons/reload/XEH_postInit.sqf | 10 ++-- addons/reload/config.cpp | 2 +- addons/repair/XEH_postInit.sqf | 6 +-- addons/repair/config.cpp | 6 +-- addons/repair/functions/fnc_doRemoveTrack.sqf | 2 +- addons/repair/functions/fnc_doRemoveWheel.sqf | 2 +- addons/repair/functions/fnc_doRepair.sqf | 4 +- addons/repair/functions/fnc_doRepairTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceTrack.sqf | 2 +- .../repair/functions/fnc_doReplaceWheel.sqf | 2 +- .../functions/fnc_setHitPointDamage.sqf | 2 +- addons/ui/XEH_clientInit.sqf | 4 +- 20 files changed, 59 insertions(+), 59 deletions(-) diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 90995b8659e..99242d3726f 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -44,7 +44,7 @@ // TOOO maybe drag/carry the unloaded item? }] call CBA_fnc_addEventHandler; -["ServerUnloadCargo", { +[QGVAR("serverUnload"), { params ["_item", "_emptyPosAGL"]; _item hideObjectGlobal false; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 73efef25ba7..4d8a622e363 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -23,7 +23,7 @@ class ACE_newEvents { displayTextStructured = "ace_displayTextStructured"; cargoLoaded = "ace_cargoLoaded"; AddCargoByClass = "ace_addCargoByClass"; - ServerUnloadCargo = "ace_serverUnloadCargo"; + ServerUnloadCargo = QGVAR(serverUnload); UnloadCargo = "ace_unloadCargo"; hideObjectGlobal = "ace_hideObjectGlobal"; cargoAddedByClass = "ace_cargoAddedByClass"; diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 5faad01120e..204a8479cac 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -52,7 +52,7 @@ if (_item isEqualType objNull) then { detach _item; // hideObjectGlobal must be executed before setPos to ensure light objects are rendered correctly // do both on server to ensure they are executed in the correct order - ["ace_serverUnloadCargo", [_item, _emptyPosAGL]] call CBA_fnc_serverEvent; + [QGVAR(serverUnload), [_item, _emptyPosAGL]] call CBA_fnc_serverEvent; } else { private _newItem = createVehicle [_item, _emptyPosAGL, [], 0, ""]; _newItem setPosASL (AGLtoASL _emptyPosAGL); diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index c6136d01071..5828e4b18f9 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -1,111 +1,111 @@ class RscInGameUI { class RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoNoHUD { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSoldier: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSoldier', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Soldier')])] call CBA_fnc_localEvent;); }; class RscUnitInfoTank: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgVehicle', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Vehicle')])] call CBA_fnc_localEvent;); }; class RscUnitInfoAirNoWeapon: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfoAir: RscUnitInfoAirNoWeapon { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfo_AH64D_gunner { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgAircraft', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Aircraft')])] call CBA_fnc_localEvent;); }; class RscUnitInfoUAV { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgUAV', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'UAV')])] call CBA_fnc_localEvent;); }; class RscUnitInfoSubmarine: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Submarine')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgSubmarine', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Submarine')])] call CBA_fnc_localEvent;); }; class RscUnitInfoShip: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Ship')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgShip', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Ship')])] call CBA_fnc_localEvent;); }; class RscWeaponEmpty { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinder { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeArtilleryAuto { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_dlgArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Artillery')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderPAS13 { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderMAAWS { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsCom { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderAbramsGun { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscWeaponRangeFinderStrykerMGSGun { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_strider_commander { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_titan { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_punisher { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_SDV_periscope { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoParachute: RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2('ACE_dlgParachute', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Parachute')])] call CBA_fnc_localEvent;); }; class RscUnitVehicle { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscOptics_LaserDesignator_02 { - onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscStaminaBar { diff --git a/addons/mk6mortar/RscInGameUI.hpp b/addons/mk6mortar/RscInGameUI.hpp index 864dcecda32..7d325128272 100644 --- a/addons/mk6mortar/RscInGameUI.hpp +++ b/addons/mk6mortar/RscInGameUI.hpp @@ -3,7 +3,7 @@ class RscInGameUI { class CA_IGUI_elements_group: RscControlsGroup {}; }; class ACE_Mk6_RscWeaponRangeArtillery: RscWeaponRangeArtillery { - onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery', _this select 0)]; [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Mk6Mortar')])] call CBA_fnc_localEvent;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_Mk6_RscWeaponRangeArtillery', _this select 0)]; [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Mk6Mortar')])] call CBA_fnc_localEvent;); controls[] = {"ACE_ChargeDisplay", "ACE_MILS_GROUP", "CA_IGUI_elements_group","CA_RangeElements_group"}; class ACE_ChargeDisplay: RscStructuredText { idc = 80085; diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 7b3dfe71d38..d469843d22b 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -29,7 +29,7 @@ GVAR(showNamesTime) = -10; }] call CBA_fnc_addEventHandler; // Change settings accordingly when they are changed -["SettingChanged", { +["ace_settingChanged", { params ["_name"]; if (_name == QGVAR(showPlayerNames)) then { call FUNC(updateSettings); diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf index 3904b7f552d..1e6484c7fa7 100644 --- a/addons/nametags/functions/fnc_initIsSpeaking.sqf +++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf @@ -28,7 +28,7 @@ if (isServer) then { if (!hasInterface) exitWith {}; -["playerChanged", { +["ace_playerChanged", { //When player changes, make sure to reset old unit's variable params ["", "_oldUnit"]; if ((!isNull _oldUnit) && {_oldUnit getVariable [QGVAR(isSpeakingInGame), false]}) then { diff --git a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf index b015b842a41..f2a826fa3b3 100644 --- a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf +++ b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf @@ -40,7 +40,7 @@ if (_maxMagazines == 1) then { if (GVAR(level) == 1) then { // Fill magazine completely _target setMagazineTurretAmmo [_magazineClass, _rounds, _turretPath]; - ["displayTextStructured", + ["ace_displayTextStructured", [ [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -50,7 +50,7 @@ if (_maxMagazines == 1) then { } else { // Fill only at most _numRounds _target setMagazineTurretAmmo [_magazineClass, ((_target magazineTurretAmmo [_magazineClass, _turretPath]) + _numRounds) min _rounds, _turretPath]; - ["displayTextStructured", + ["ace_displayTextStructured", [ [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -77,7 +77,7 @@ if (_maxMagazines == 1) then { } else { _target setMagazineTurretAmmo [_magazineClass, _currentRounds + _numRounds, _turretPath]; }; - ["displayTextStructured", + ["ace_displayTextStructured", [ [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -91,7 +91,7 @@ if (_maxMagazines == 1) then { _target addMagazineTurret [_magazineClass, _turretPath]; _target setMagazineTurretAmmo [_magazineClass, _currentRounds, _turretPath]; }; - ["displayTextStructured", + ["ace_displayTextStructured", [ [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index d5ce159f382..5ce2096118c 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -18,16 +18,16 @@ if (!hasInterface) exitWith {}; {false}, [19, [false, true, false]], false] call CBA_fnc_addKeybind; -["ace_setAmmoSync", { +[QGVAR(syncAmmo), { //To propagate the setAmmo change, do it on all clients params ["_unit", "_weapon", "_ammo"]; - TRACE_3("setAmmoSync EH",_unit,_weapon,_ammo); + TRACE_3("syncAmmo EH",_unit,_weapon,_ammo); _unit setAmmo [_weapon, _ammo]; }] call CBA_fnc_addEventHandler; // Listen for attempts to link ammo -["linkedAmmo", { +["ace_linkedAmmo", { params ["_receiver", "_giver", "_magazine"]; private _magazineType = currentMagazine _receiver; @@ -48,7 +48,7 @@ if (!hasInterface) exitWith {}; // Add the ammo private _ammoAdded = _ammoMissing min (_magazine select 1); - ["ace_setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; + [QGVAR(syncAmmo), [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; if ((_magazine select 1) - _ammoAdded > 0) then { ["ace_returnedAmmo", [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; @@ -56,7 +56,7 @@ if (!hasInterface) exitWith {}; }] call CBA_fnc_addEventHandler; // Listen for returned magazines -["returnedAmmo", { +["ace_returnedAmmo", { params ["_receiver", "", "_magazine"]; TRACE_2("returnedAmmo EH",_receiver,_magazine); diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index e82dab39c82..8d773efa4bb 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -23,7 +23,7 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { - setAmmoSync = "ace_setAmmoSync"; + setAmmoSync = QGVAR(syncAmmo); returnedAmmo = "ace_returnedAmmo"; linkedAmmo = "ace_linkedAmmo"; }; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 660eea866ab..2f0bbe7869c 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["ace_setVehicleDamage", {_this call FUNC(setDamage)}] call CBA_fnc_addEventHandler; -["ace_setVehicleHitPointDamage", {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; +[QGVAR(setVehicleDamage), {_this call FUNC(setDamage)}] call CBA_fnc_addEventHandler; +[QGVAR(setVehicleHitPointDamage), {_this call FUNC(setHitPointDamage)}] call CBA_fnc_addEventHandler; // wheels -["ace_setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; +[QGVAR(setWheelHitPointDamage), {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index 84d8a6fa83e..05bf5cbd3ec 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -20,9 +20,9 @@ class CfgPatches { #include "CfgEden.hpp" class ACE_newEvents { - setWheelHitPointDamage = "ace_setWheelHitPointDamage"; - setVehicleHitPointDamage = "ace_setVehicleHitPointDamage"; - setVehicleDamage = "ace_setVehicleDamage"; + setWheelHitPointDamage = QGVAR(setWheelHitPointDamage); + setVehicleHitPointDamage = QGVAR(setVehicleHitPointDamage); + setVehicleDamage = QGVAR(setVehicleDamage); fixPosition = "ace_fixPosition"; displayTextStructured = "ace_displayTextStructured"; engineOn = "ace_engineOn"; diff --git a/addons/repair/functions/fnc_doRemoveTrack.sqf b/addons/repair/functions/fnc_doRemoveTrack.sqf index 00adf18cc1c..8c3554adc1d 100644 --- a/addons/repair/functions/fnc_doRemoveTrack.sqf +++ b/addons/repair/functions/fnc_doRemoveTrack.sqf @@ -34,7 +34,7 @@ private _newTrack = ["ACE_Track", getPosASL _unit, _hitPointDamage] call FUNC(sp TRACE_2("new track created",_newTrack,damage _newTrack); // raise event to set the new hitpoint damage -["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; +[QGVAR(setWheelHitPointDamage), [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRemoveWheel.sqf b/addons/repair/functions/fnc_doRemoveWheel.sqf index bf734af1ff6..1d2fedeb778 100644 --- a/addons/repair/functions/fnc_doRemoveWheel.sqf +++ b/addons/repair/functions/fnc_doRemoveWheel.sqf @@ -34,7 +34,7 @@ private _newWheel = ["ACE_Wheel", getPosASL _unit, _hitPointDamage] call FUNC(sp TRACE_2("new wheel created",_newWheel,damage _newWheel); // raise event to set the new hitpoint damage -["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; +[QGVAR(setWheelHitPointDamage), [_vehicle, _hitPoint, 1], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doRepair.sqf b/addons/repair/functions/fnc_doRepair.sqf index 8c8b8182f9f..ede096a1fb7 100644 --- a/addons/repair/functions/fnc_doRepair.sqf +++ b/addons/repair/functions/fnc_doRepair.sqf @@ -34,7 +34,7 @@ private _hitPointNewDamage = (_hitPointCurDamage - 0.5) max _postRepairDamageMin if (_hitPointNewDamage < _hitPointCurDamage) then { // raise event to set the new hitpoint damage TRACE_3("repairing main point", _vehicle, _hitPointIndex, _hitPointNewDamage); - ["ace_setVehicleHitPointDamage", [_vehicle, _hitPointIndex, _hitPointNewDamage], _vehicle] call CBA_fnc_targetEvent; + [QGVAR(setVehicleHitPointDamage), [_vehicle, _hitPointIndex, _hitPointNewDamage], _vehicle] call CBA_fnc_targetEvent; _hitPointCurDamage = _hitPointNewDamage; }; @@ -55,7 +55,7 @@ if (isArray _hitpointGroupConfig) then { private _subPointNewDamage = (_subPointCurDamage - 0.5) max _postRepairDamageMin; if (_subPointNewDamage < _subPointCurDamage) then { TRACE_3("repairing sub point", _vehicle, _subHitIndex, _subPointNewDamage); - ["ace_setVehicleHitPointDamage", [_vehicle, _subHitIndex, _subPointNewDamage], _vehicle] call CBA_fnc_targetEvent; + [QGVAR(setVehicleHitPointDamage), [_vehicle, _subHitIndex, _subPointNewDamage], _vehicle] call CBA_fnc_targetEvent; }; }; } forEach _subHitArray; diff --git a/addons/repair/functions/fnc_doRepairTrack.sqf b/addons/repair/functions/fnc_doRepairTrack.sqf index 897ef881c1e..34f29506a36 100644 --- a/addons/repair/functions/fnc_doRepairTrack.sqf +++ b/addons/repair/functions/fnc_doRepairTrack.sqf @@ -41,7 +41,7 @@ _hitPointDamage = (_hitPointDamage - _damageRepaired) min 0; deleteVehicle _track; // raise event to set the new hitpoint damage -["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _hitPointDamage], _vehicle] call CBA_fnc_targetEvent; +[QGVAR(setWheelHitPointDamage), [_vehicle, _hitPoint, _hitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceTrack.sqf b/addons/repair/functions/fnc_doReplaceTrack.sqf index 1de9c3b7bfd..b0b71e5b618 100644 --- a/addons/repair/functions/fnc_doReplaceTrack.sqf +++ b/addons/repair/functions/fnc_doReplaceTrack.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _track; // raise event to set the new hitpoint damage -["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; +[QGVAR(setWheelHitPointDamage), [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_doReplaceWheel.sqf b/addons/repair/functions/fnc_doReplaceWheel.sqf index 3d6b161cfac..24b995a45f2 100644 --- a/addons/repair/functions/fnc_doReplaceWheel.sqf +++ b/addons/repair/functions/fnc_doReplaceWheel.sqf @@ -44,7 +44,7 @@ if (_newHitPointDamage >= 1) exitWith {}; deleteVehicle _wheel; // raise event to set the new hitpoint damage -["ace_setWheelHitPointDamage", [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; +[QGVAR(setWheelHitPointDamage), [_vehicle, _hitPoint, _newHitPointDamage], _vehicle] call CBA_fnc_targetEvent; // display text message if enabled if (GVAR(DisplayTextOnRepair)) then { diff --git a/addons/repair/functions/fnc_setHitPointDamage.sqf b/addons/repair/functions/fnc_setHitPointDamage.sqf index ba04cdb7eba..0f809b345c5 100644 --- a/addons/repair/functions/fnc_setHitPointDamage.sqf +++ b/addons/repair/functions/fnc_setHitPointDamage.sqf @@ -1,7 +1,7 @@ /* * Author: commy2 * Set the hitpoint damage and change the structural damage acordingly, requires local vehicle. - * Handles the "setVehicleHitPointDamage" event + * Handles the "ace_repair_setVehicleHitPointDamage" event * * Arguments: * 0: Local Vehicle to Damage diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 47b7c8c1399..117fd414a09 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -8,7 +8,7 @@ if (!hasInterface) exitWith {}; [true] call FUNC(setElements); // On load and entering/exiting a vehicle - ["infoDisplayChanged", { + ["ace_infoDisplayChanged", { // Selective UI Advanced // Defaults must be set in this EH to make sure controls are activated and advanced settings can be modified private _force = [true, false] select (GVAR(allowSelectiveUI)); @@ -18,7 +18,7 @@ if (!hasInterface) exitWith {}; }] call CBA_fnc_addEventHandler; // On changing settings - ["SettingChanged", { + ["ace_settingChanged", { params ["_name"]; // Selective UI Basic From 30b15ee3d31dd70c546fa6c745d2ba7f4bf1d2d7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 24 May 2016 19:22:48 +0200 Subject: [PATCH 197/268] Fix quotes in cargo --- addons/cargo/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 99242d3726f..2fe1e2c5167 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -21,7 +21,7 @@ }; }] call CBA_fnc_addEventHandler; -["UnloadCargo", { +["ace_unloadCargo", { params ["_item", "_vehicle", ["_unloader", objNull]]; TRACE_3("UnloadCargo EH",_item,_vehicle,_unloader); @@ -44,7 +44,7 @@ // TOOO maybe drag/carry the unloaded item? }] call CBA_fnc_addEventHandler; -[QGVAR("serverUnload"), { +[QGVAR(serverUnload), { params ["_item", "_emptyPosAGL"]; _item hideObjectGlobal false; From da4c08fb6c2d63b42a97219c64cbfa4790cf3df3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 24 May 2016 20:51:10 +0200 Subject: [PATCH 198/268] QGVAR all reload events --- addons/reload/XEH_postInit.sqf | 10 +++++----- addons/reload/config.cpp | 4 ++-- addons/reload/functions/fnc_startLinkingBelt.sqf | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 5ce2096118c..193fdaf79b7 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -27,7 +27,7 @@ if (!hasInterface) exitWith {}; }] call CBA_fnc_addEventHandler; // Listen for attempts to link ammo -["ace_linkedAmmo", { +[QGVAR(linkedAmmo), { params ["_receiver", "_giver", "_magazine"]; private _magazineType = currentMagazine _receiver; @@ -35,7 +35,7 @@ if (!hasInterface) exitWith {}; // Return the magazine if it's the wrong type if (_magazineType != (_magazine select 0)) exitWith { - ["ace_returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; + [QGVAR(returnedAmmo), [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; private _ammoCount = _receiver ammo currentWeapon _receiver; @@ -43,7 +43,7 @@ if (!hasInterface) exitWith {}; // Return the magazine if the belt is full or empty if ((_ammoCount == 0) || _ammoMissing == 0) exitWith { - ["ace_returnedAmmo", [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; + [QGVAR(returnedAmmo), [_giver,_receiver,_magazine], [_giver]] call CBA_fnc_targetEvent; }; // Add the ammo @@ -51,12 +51,12 @@ if (!hasInterface) exitWith {}; [QGVAR(syncAmmo), [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call CBA_fnc_globalEvent; if ((_magazine select 1) - _ammoAdded > 0) then { - ["ace_returnedAmmo", [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; + [QGVAR(returnedAmmo), [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]], [_giver]] call CBA_fnc_targetEvent; }; }] call CBA_fnc_addEventHandler; // Listen for returned magazines -["ace_returnedAmmo", { +[QGVAR(returnedAmmo), { params ["_receiver", "", "_magazine"]; TRACE_2("returnedAmmo EH",_receiver,_magazine); diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 8d773efa4bb..8910929376f 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -24,6 +24,6 @@ class CfgPatches { class ACE_newEvents { setAmmoSync = QGVAR(syncAmmo); - returnedAmmo = "ace_returnedAmmo"; - linkedAmmo = "ace_linkedAmmo"; + returnedAmmo = QGVAR(returnedAmmo); + linkedAmmo = QGVAR(linkedAmmo); }; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index ba5d4ddca41..8b8768dbba1 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -46,7 +46,7 @@ private _onFinish = { (_this select 0) params ["_player", "_target", "_magazine"]; // Raise event on remote unit - ["ace_linkedAmmo", [_target, _player, _magazine], [_target]] call CBA_fnc_targetEvent; + [QGVAR(linkedAmmo), [_target, _player, _magazine], [_target]] call CBA_fnc_targetEvent; }; private _onFailure = { From dd2e9140ae2dec31b3dc38f36b1008aab2c4fe72 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 01:44:56 +0200 Subject: [PATCH 199/268] Q(E)GVAR rangefinderData event --- addons/atragmx/XEH_postInit.sqf | 2 +- addons/atragmx/config.cpp | 3 ++- addons/dagr/XEH_postInit.sqf | 2 +- addons/dagr/config.cpp | 4 ++-- addons/microdagr/XEH_clientInit.sqf | 2 +- addons/microdagr/config.cpp | 4 ++-- addons/vector/config.cpp | 2 +- addons/vector/functions/fnc_dataTransfer.sqf | 2 +- 8 files changed, 11 insertions(+), 10 deletions(-) diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 5cbdea57b82..82f3c25aeb5 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -49,4 +49,4 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [] call FUNC(init); [] call FUNC(restore_user_data); -["ace_rangefinderData", {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; +[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index d46b0f1583e..d866d6bc839 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -15,6 +15,7 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscTitles.hpp" + class ACE_newEvents { - RangerfinderData = "ace_rangefinderData"; + RangerfinderData = QEGVAR(vector,rangefinderData); }; diff --git a/addons/dagr/XEH_postInit.sqf b/addons/dagr/XEH_postInit.sqf index 512ec68eef1..4c3fce167dd 100644 --- a/addons/dagr/XEH_postInit.sqf +++ b/addons/dagr/XEH_postInit.sqf @@ -30,4 +30,4 @@ GVAR(vectorConnected) = false; GVAR(noVectorData) = true; GVAR(vectorGrid) = "00000000"; -["ace_rangefinderData", FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; +[QEGVAR(vector,rangefinderData), FUNC(handleRangeFinderData)] call CBA_fnc_addEventHandler; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index e619f887175..7eac84dc74e 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -18,5 +18,5 @@ class CfgPatches { #include "RscTitles.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangefinderData"; -}; \ No newline at end of file + RangerfinderData = QEGVAR(vector,rangefinderData); +}; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf index 62d49a1fd3d..22889f378c2 100644 --- a/addons/microdagr/XEH_clientInit.sqf +++ b/addons/microdagr/XEH_clientInit.sqf @@ -20,7 +20,7 @@ _closeCode = { //Add Eventhandler: -["ace_rangefinderData", {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; +[QEGVAR(vector,rangefinderData), {_this call FUNC(recieveRangefinderData)}] call CBA_fnc_addEventHandler; //Global Variables to default: GVAR(gpsPositionASL) = [0,0,0]; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 4cbc4b4cbf5..fc95c29e6d2 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -19,5 +19,5 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangefinderData"; -}; \ No newline at end of file + RangerfinderData = QEGVAR(vector,rangefinderData); +}; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index fae30f790eb..88cfd154395 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -20,5 +20,5 @@ class CfgPatches { #include "RscInGameUI.hpp" class ACE_newEvents { - RangerfinderData = "ace_rangefinderData"; + RangerfinderData = QGVAR(rangefinderData); }; diff --git a/addons/vector/functions/fnc_dataTransfer.sqf b/addons/vector/functions/fnc_dataTransfer.sqf index 1c3a67c1cb5..f99490f04c4 100644 --- a/addons/vector/functions/fnc_dataTransfer.sqf +++ b/addons/vector/functions/fnc_dataTransfer.sqf @@ -22,4 +22,4 @@ _direction = call FUNC(getDirection); _azimuth = _direction select 0; _inclination = _direction select 1; //Send Data to connected GPS -["ace_rangefinderData", [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; \ No newline at end of file +[QGVAR(rangefinderData), [_distance, _azimuth, _inclination]] call CBA_fnc_localEvent; From 99675417c698bbf1804dabb11ebf3eeb96c27359 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 01:51:58 +0200 Subject: [PATCH 200/268] QGVAR and fix events in concertina_wire, disarming and explosives --- addons/concertina_wire/config.cpp | 3 ++- addons/disarming/XEH_postInit.sqf | 4 ++-- addons/disarming/config.cpp | 4 ++-- addons/disarming/functions/fnc_eventTargetFinish.sqf | 2 +- addons/disarming/functions/fnc_openDisarmDialog.sqf | 2 +- addons/explosives/XEH_postInit.sqf | 10 +++++----- addons/explosives/config.cpp | 6 +++--- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index 6404b1018ed..68bb4816dba 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -13,6 +13,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" + class ACE_newEvents { interactMenuOpened = "ace_interactMenuOpened"; -}; \ No newline at end of file +}; diff --git a/addons/disarming/XEH_postInit.sqf b/addons/disarming/XEH_postInit.sqf index 92a2c101481..6944f8b146a 100644 --- a/addons/disarming/XEH_postInit.sqf +++ b/addons/disarming/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" -["ace_disarmDropItems", FUNC(eventTargetStart)] call CBA_fnc_addEventHandler; -["ace_disarmDebugCallback", FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler; +[QGVAR(dropItems), FUNC(eventTargetStart)] call CBA_fnc_addEventHandler; +[QGVAR(debugCallback), FUNC(eventCallerFinish)] call CBA_fnc_addEventHandler; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index b7868726ed9..39a536e1b21 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -19,6 +19,6 @@ class CfgPatches { #include "gui_disarm.hpp" class ACE_newEvents { - DisarmDebugCallback = "ace_disarmDebugCallback"; - DisarmDropItems = "ace_disarmDropItems"; + DisarmDebugCallback = QGVAR(debugCallback); + DisarmDropItems = QGVAR(dropItems); }; diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index 1bd1ffa342b..42580d81f36 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -23,5 +23,5 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this); - ["ace_disarmDebugCallback", [_caller, _target, _errorMsg], [_caller]] call CBA_fnc_targetEvent; + [QGVAR(debugCallback), [_caller, _target, _errorMsg], [_caller]] call CBA_fnc_targetEvent; }; diff --git a/addons/disarming/functions/fnc_openDisarmDialog.sqf b/addons/disarming/functions/fnc_openDisarmDialog.sqf index ea0de8942a2..0883fde2ddf 100644 --- a/addons/disarming/functions/fnc_openDisarmDialog.sqf +++ b/addons/disarming/functions/fnc_openDisarmDialog.sqf @@ -42,7 +42,7 @@ GVAR(disarmTarget) = _target; if (isNull GVAR(disarmTarget)) exitWith {ERROR("disarmTarget is null");}; TRACE_2("Debug: Droping %1 from %2",_data,GVAR(disarmTarget)); - ["ace_disarmDropItems", [ACE_player, GVAR(disarmTarget), [_data]], [GVAR(disarmTarget)]] call CBA_fnc_targetEvent; + [QGVAR(dropItems), [ACE_player, GVAR(disarmTarget), [_data]], [GVAR(disarmTarget)]] call CBA_fnc_targetEvent; false //not sure what this does }]; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 8b08ffd804e..27a1371447e 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -28,7 +28,7 @@ if (isServer) then { [_unit] call FUNC(onIncapacitated); }] call CBA_fnc_addEventHandler; - ["clientRequestsOrientations", { + [QGVAR(clientRequestOrientations), { params ["_logic"]; TRACE_1("clientRequestsOrientations received:",_logic); // Filter the array before sending it @@ -37,7 +37,7 @@ if (isServer) then { (!isNull _explosive && {alive _explosive}) }; TRACE_1("serverSendsOrientations sent:",GVAR(explosivesOrientations)); - ["ace_serverSendsOrientations", [GVAR(explosivesOrientations)], _logic] call CBA_fnc_targetEvent; + [QGVAR(serverSendOrientations), [GVAR(explosivesOrientations)], _logic] call CBA_fnc_targetEvent; }] call CBA_fnc_addEventHandler; }; @@ -51,7 +51,7 @@ GVAR(CurrentSpeedDial) = 0; // In case we are a JIP client, ask the server for orientation of any previously // placed mine. if (didJIP) then { - ["serverSendsOrientations", { + [QGVAR(serverSendOrientations), { params ["_explosivesOrientations"]; TRACE_1("serverSendsOrientations received:",_explosivesOrientations); { @@ -66,10 +66,10 @@ if (didJIP) then { // Create a logic to get the client ID GVAR(localLogic) = ([sideLogic] call CBA_fnc_getSharedGroup) createUnit ["Logic", [0,0,0], [], 0, "NONE"]; TRACE_1("clientRequestsOrientations sent:",GVAR(localLogic)); - ["ace_clientRequestsOrientations", [GVAR(localLogic)]] call CBA_fnc_serverEvent; + [QGVAR(clientRequestOrientations), [GVAR(localLogic)]] call CBA_fnc_serverEvent; }; -["interactMenuOpened", { +["ace_interactMenuOpened", { //Cancel placement if interact menu opened if (GVAR(pfeh_running)) then { GVAR(placeAction) = PLACE_CANCEL; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 8b5b91007bc..6dc7d957197 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -45,6 +45,6 @@ class CfgMineTriggers { class ACE_newEvents { medical_onUnconscious = "ace_medical_onUnconscious"; - clientRequestsOrientations = "ace_clientRequestsOrientations"; - serverSendsOrientations = "ace_serverSendsOrientations"; -}; \ No newline at end of file + clientRequestsOrientations = QGVAR(clientRequestOrientations); + serverSendsOrientations = QGVAR(serverSendOrientations); +}; From b54d1985f1c6d8447caeb2b9e3e218a5ca041fda Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 01:57:41 +0200 Subject: [PATCH 201/268] QGVAR and fix gforces, goggles, grenades, hearing, interact_menu --- addons/gforces/XEH_postInit.sqf | 2 +- addons/goggles/XEH_postInit.sqf | 4 ++-- addons/grenades/XEH_postInit.sqf | 2 +- addons/grenades/config.cpp | 2 +- addons/grenades/functions/fnc_flashbangThrownFuze.sqf | 2 +- addons/hearing/XEH_postInit.sqf | 4 ++-- addons/interact_menu/XEH_clientInit.sqf | 8 ++++---- addons/interact_menu/config.cpp | 2 +- addons/interact_menu/functions/fnc_keyUp.sqf | 4 ++-- addons/interact_menu/functions/fnc_render.sqf | 4 ++-- 10 files changed, 17 insertions(+), 17 deletions(-) diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf index 795b473164a..4401b1f5dd9 100644 --- a/addons/gforces/XEH_postInit.sqf +++ b/addons/gforces/XEH_postInit.sqf @@ -19,7 +19,7 @@ GVAR(pfID) = -1; [] call FUNC(addPFEH); TRACE_1("adding temp PFEH [start in]",GVAR(pfID)); }; - ["playerVehicleChanged", { + ["ace_playerVehicleChanged", { params ["", "_vehicle"]; TRACE_2("playerVehicleChanged",_vehicle,typeOf _vehicle); if (_vehicle isKindOf "Air") then { diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 25ee3ba5af3..ac7386ccdbf 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -56,7 +56,7 @@ GVAR(OldGlasses) = ""; }] call CBA_fnc_addEventHandler; // add glasses eventhandlers -["GlassesChanged", { +["ace_glassesChanged", { params ["_unit", "_glasses"]; SETGLASSES(_unit,GLASSESDEFAULT); @@ -70,7 +70,7 @@ GVAR(OldGlasses) = ""; }; }] call CBA_fnc_addEventHandler; -["GlassesCracked", { +["ace_glassesCracked", { params ["_unit"]; _unit setVariable ["ACE_EyesDamaged", true]; diff --git a/addons/grenades/XEH_postInit.sqf b/addons/grenades/XEH_postInit.sqf index 2d05c622c93..e47734c53ef 100644 --- a/addons/grenades/XEH_postInit.sqf +++ b/addons/grenades/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" -["ace_flashbangExplosion", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler; +["ace_flashbangExploded", {_this call FUNC(flashbangExplosionEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 01c3b51bdbc..584be36c2ee 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -24,5 +24,5 @@ class ACE_newEvents { firedNonPlayer = "ace_firedNonPlayer"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; - flashbangExplosion = "ace_flashbangExplosion"; + flashbangExplosion = "ace_flashbangExploded"; }; diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index a617ea3a7a5..5c05abc9a3c 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -21,5 +21,5 @@ TRACE_1("params",_projectile); if (alive _projectile) then { playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - ["ace_flashbangExplosion", [getPosASL _projectile]] call CBA_fnc_globalEvent; + ["ace_flashbangExploded", [getPosASL _projectile]] call CBA_fnc_globalEvent; }; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index 3502b850200..5f92b239bbe 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -20,7 +20,7 @@ GVAR(volumeAttenuation) = 1; //Add XEH: ["CAManBase", "FiredNear", FUNC(firedNear)] call CBA_fnc_addClassEventHandler; ["CAManBase", "Explosion", FUNC(explosionNear)] call CBA_fnc_addClassEventHandler; - + // Update hearing protection now: [] call FUNC(updateHearingProtection); @@ -32,7 +32,7 @@ GVAR(volumeAttenuation) = 1; ["ace_playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; // Reset deafness on respawn (or remote control player switch) - ["playerChanged", { + ["ace_playerChanged", { GVAR(deafnessDV) = 0; GVAR(deafnessPrior) = 0; ACE_player setVariable [QGVAR(deaf), false]; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 40b6e3eb251..26617c25b94 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -15,7 +15,7 @@ GVAR(ParsedTextCached) = []; }; }] call CBA_fnc_addEventHandler; -["SettingsInitialized", { +["ace_settingsInitialized", { //Setup text/shadow/size/color settings matrix [] call FUNC(setupTextColors); // Install the render EH on the main display @@ -41,7 +41,7 @@ GVAR(ParsedTextCached) = []; // Listens for the falling unconscious event, just in case the menu needs to be closed -["medical_onUnconscious", { +["ace_medical_onUnconscious", { // If no menu is open just quit if (GVAR(openedMenuType) < 0) exitWith {}; @@ -57,11 +57,11 @@ GVAR(ParsedTextCached) = []; ["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // background options -["interactMenuOpened", { +["ace_interactMenuOpened", { if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), true] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==2) then {0 cutRsc[QGVAR(menuBackground), "PLAIN", 1, false];}; }] call CBA_fnc_addEventHandler; -["interactMenuClosed", { +["ace_interactMenuClosed", { if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);}; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; }] call CBA_fnc_addEventHandler; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 898829dd5e9..3ddd78a431f 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -28,6 +28,6 @@ class ACE_newEvents { SettingChanged = "ace_settingChanged"; playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; - clearConditionCaches = "ace_clearConditionCaches"; + clearConditionCaches = QGVAR(clearConditionCaches); interactMenuClosed = "ace_interactMenuClosed"; }; diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf index 5f7fe728882..969e1f2b08f 100644 --- a/addons/interact_menu/functions/fnc_keyUp.sqf +++ b/addons/interact_menu/functions/fnc_keyUp.sqf @@ -28,7 +28,7 @@ if(GVAR(actionSelected)) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; + [QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent; // exit scope if selecting an action on key release is disabled if (!(GVAR(actionOnKeyRelease)) && !_calledByClicking) exitWith {}; @@ -40,7 +40,7 @@ if(GVAR(actionSelected)) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; + [QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent; }; }; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 555886a55d4..1efe9bcf4dc 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -97,7 +97,7 @@ if (GVAR(openedMenuType) >= 0) then { private _target = GVAR(selectedTarget); // Clear the conditions caches - ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; + [QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent; // Check the action conditions private _actionData = GVAR(selectedAction) select 0; @@ -106,7 +106,7 @@ if (GVAR(openedMenuType) >= 0) then { [_target, _player, _actionData select 6] call (_actionData select 3); // Clear the conditions caches again if the action was performed - ["ace_clearConditionCaches", []] call CBA_fnc_localEvent; + [QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent; }; }; }; From 7ede53bbdd638f43a0a9bfe3a42767a7686d1c2b Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 02:09:11 +0200 Subject: [PATCH 202/268] QGVAR and Fix laser, map, map_gestures, maptools, modules, nightvision, optics --- addons/laser/XEH_post_init.sqf | 4 ++-- addons/laser/config.cpp | 5 +++-- addons/laser/functions/fnc_laserOff.sqf | 2 +- addons/laser/functions/fnc_laserOn.sqf | 2 +- addons/map/XEH_postInitClient.sqf | 6 +++--- addons/map_gestures/XEH_serverPostInit.sqf | 2 +- addons/map_gestures/functions/fnc_transmit.sqf | 2 +- addons/map_gestures/script_component.hpp | 2 -- addons/maptools/XEH_postInitClient.sqf | 2 +- addons/maptools/XEH_preInit.sqf | 8 ++++---- addons/maptools/config.cpp | 8 ++++---- addons/maptools/functions/fnc_copyMapRemoteSend.sqf | 2 +- addons/maptools/functions/fnc_copyMapStart.sqf | 2 +- addons/maptools/functions/fnc_handleKeyDown.sqf | 2 +- addons/maptools/functions/fnc_handleMouseButton.sqf | 2 +- addons/modules/config.cpp | 3 ++- addons/nightvision/XEH_postInitClient.sqf | 2 +- addons/optics/XEH_postInit.sqf | 2 +- 18 files changed, 29 insertions(+), 29 deletions(-) diff --git a/addons/laser/XEH_post_init.sqf b/addons/laser/XEH_post_init.sqf index 01b79a3378c..88aea3a2047 100644 --- a/addons/laser/XEH_post_init.sqf +++ b/addons/laser/XEH_post_init.sqf @@ -2,6 +2,6 @@ #include "initKeybinds.sqf" -["ace_laser_laserOn", {_this call DFUNC(handleLaserOn)}] call CBA_fnc_addEventHandler; -["ace_laser_laserOff", {_this call DFUNC(handleLaserOff)}] call CBA_fnc_addEventHandler; +["ace_laserOn", {_this call DFUNC(handleLaserOn)}] call CBA_fnc_addEventHandler; +["ace_laserOff", {_this call DFUNC(handleLaserOff)}] call CBA_fnc_addEventHandler; diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index 746471a4935..6eab695261d 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -14,7 +14,8 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscInGameUI.hpp" + class ACE_newEvents { - laser_laserOff = "ace_laser_laserOff"; - laser_laserOn = "ace_laser_laserOn"; + laser_laserOff = "ace_laserOff"; + laser_laserOn = "ace_laserOn"; }; diff --git a/addons/laser/functions/fnc_laserOff.sqf b/addons/laser/functions/fnc_laserOff.sqf index 31cbdb876e1..60a5e4e2690 100644 --- a/addons/laser/functions/fnc_laserOff.sqf +++ b/addons/laser/functions/fnc_laserOff.sqf @@ -13,4 +13,4 @@ private ["_uuid"]; _uuid = _this select 0; -["ace_laser_laserOff", [_uuid]] call CBA_fnc_globalEvent; +["ace_laserOff", [_uuid]] call CBA_fnc_globalEvent; diff --git a/addons/laser/functions/fnc_laserOn.sqf b/addons/laser/functions/fnc_laserOn.sqf index e698dda2e36..617492b614a 100644 --- a/addons/laser/functions/fnc_laserOn.sqf +++ b/addons/laser/functions/fnc_laserOn.sqf @@ -19,5 +19,5 @@ private ["_uuid", "_args"]; _uuid = format["%1%2%3", floor ACE_diagTime, floor random 1000, floor random 10000]; _args = [_uuid, _this]; -["ace_laser_laserOn", _args] call CBA_fnc_globalEvent; +["ace_laserOn", _args] call CBA_fnc_globalEvent; _uuid; diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index e9438d7508b..d39049b59ce 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -72,7 +72,7 @@ call FUNC(determineZoom); [_this select 1] call CBA_fnc_removePerFrameHandler; }, 0] call CBA_fnc_addPerFrameHandler; -["SettingsInitialized", { +["ace_settingsInitialized", { if (isMultiplayer && {GVAR(DefaultChannel) != -1}) then { //Set the chat channel once the map has finished loading [{ @@ -99,7 +99,7 @@ call FUNC(determineZoom); GVAR(flashlightInUse) = ""; GVAR(glow) = objNull; - ["playerInventoryChanged", { + ["ace_playerInventoryChanged", { private _flashlights = [ACE_player] call FUNC(getUnitFlashlights); if ((GVAR(flashlightInUse) != "") && !(GVAR(flashlightInUse) in _flashlights)) then { GVAR(flashlightInUse) = ""; @@ -135,7 +135,7 @@ call FUNC(determineZoom); // hide clock on map if player has no watch GVAR(hasWatch) = true; -["playerInventoryChanged", { +["ace_playerInventoryChanged", { if (isNull (_this select 0)) exitWith { GVAR(hasWatch) = true; }; diff --git a/addons/map_gestures/XEH_serverPostInit.sqf b/addons/map_gestures/XEH_serverPostInit.sqf index 31626b7881d..1b70e241490 100644 --- a/addons/map_gestures/XEH_serverPostInit.sqf +++ b/addons/map_gestures/XEH_serverPostInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -[EVENT_PLAYER_HAS_NO_OWNER_ID, FUNC(assignClientIDOnServer)] call CBA_fnc_addEventHandler; +[QGVAR(noOwnerID), FUNC(assignClientIDOnServer)] call CBA_fnc_addEventHandler; diff --git a/addons/map_gestures/functions/fnc_transmit.sqf b/addons/map_gestures/functions/fnc_transmit.sqf index ab975a076c5..aacff9e6791 100644 --- a/addons/map_gestures/functions/fnc_transmit.sqf +++ b/addons/map_gestures/functions/fnc_transmit.sqf @@ -31,7 +31,7 @@ if (!GVAR(EnableTransmit) || !visibleMap) exitWith { { _ownerID = _x getVariable QGVAR(owner_id); if (isNil "_ownerID") then { - [EVENT_PLAYER_HAS_NO_OWNER_ID, [name _x]] call CBA_fnc_serverEvent; + [QGVAR(noOwnerID), [name _x]] call CBA_fnc_serverEvent; } else { _playerOwnerID = ACE_player getVariable QGVAR(owner_id); if (!isNil "_playerOwnerID" && _ownerID != _playerOwnerID) then { diff --git a/addons/map_gestures/script_component.hpp b/addons/map_gestures/script_component.hpp index 2bc9b212d04..bcf6a1a97cb 100644 --- a/addons/map_gestures/script_component.hpp +++ b/addons/map_gestures/script_component.hpp @@ -15,5 +15,3 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" - -#define EVENT_PLAYER_HAS_NO_OWNER_ID "PlayerNameHasNoOwnerID" diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index eec175077e7..ec2293b3e27 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -66,7 +66,7 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; 12 call _fnc_installMapEvents; }; -["visibleMapChanged", { +["ace_visibleMapChanged", { params ["", "_mapOn"]; if (_mapOn) then { // Show GPS if required diff --git a/addons/maptools/XEH_preInit.sqf b/addons/maptools/XEH_preInit.sqf index 7e144e724d8..76daa4f3056 100644 --- a/addons/maptools/XEH_preInit.sqf +++ b/addons/maptools/XEH_preInit.sqf @@ -10,10 +10,10 @@ if (isServer) then { }; //Add Event Handlers: -["ace_drawing_removeLineMarker", FUNC(removeLineMarker)] call CBA_fnc_addEventHandler; -["ace_drawing_addLineMarker", FUNC(addLineMarker)] call CBA_fnc_addEventHandler; +[QGVAR(removeLineMarker), FUNC(removeLineMarker)] call CBA_fnc_addEventHandler; +[QGVAR(addLineMarker), FUNC(addLineMarker)] call CBA_fnc_addEventHandler; -["ace_drawing_requestMarkers", FUNC(copyMapRemoteSend)] call CBA_fnc_addEventHandler; -["ace_drawing_sendbackMarkers", FUNC(copyMapReceiveMarkers)] call CBA_fnc_addEventHandler; +[QGVAR(requestMarkers), FUNC(copyMapRemoteSend)] call CBA_fnc_addEventHandler; +[QGVAR(sendbackMarkers), FUNC(copyMapReceiveMarkers)] call CBA_fnc_addEventHandler; ADDON = true; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 01a68e9d3c4..f5267ad11af 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -68,8 +68,8 @@ class RscDisplayServerGetReady: RscDisplayGetReady { }; class ACE_newEvents { - drawing_sendbackMarkers = "ace_drawing_sendbackMarkers"; - drawing_requestMarkers = "ace_drawing_requestMarkers"; - drawing_addLineMarker = "ace_drawing_addLineMarker"; - drawing_removeLineMarker = "ace_drawing_removeLineMarker"; + drawing_sendbackMarkers = QGVAR(sendbackMarkers); + drawing_requestMarkers = QGVAR(requestMarkers); + drawing_addLineMarker = QGVAR(addLineMarker); + drawing_removeLineMarker = QGVAR(removeLineMarker); }; diff --git a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf index 452c76167a2..56ea2683e96 100644 --- a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf +++ b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf @@ -14,4 +14,4 @@ params ["_requester"]; -["ace_drawing_sendbackMarkers", [GVAR(drawing_lineMarkers)], _requester] call CBA_fnc_targetEvent; +[QGVAR(sendbackMarkers), [GVAR(drawing_lineMarkers)], _requester] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_copyMapStart.sqf b/addons/maptools/functions/fnc_copyMapStart.sqf index c1c6a7a4596..62361447f62 100644 --- a/addons/maptools/functions/fnc_copyMapStart.sqf +++ b/addons/maptools/functions/fnc_copyMapStart.sqf @@ -19,4 +19,4 @@ params ["_player", "_target"]; -["ace_drawing_requestMarkers", [_player], _target] call CBA_fnc_targetEvent; +[QGVAR(requestMarkers), [_player], _target] call CBA_fnc_targetEvent; diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index a5ed69f9e1c..c93ce4724c8 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -58,7 +58,7 @@ if (_code == DIK_DELETE) exitWith { if (_lambdaLong >= 0 && _lambdaLong <= _magDiffVector && _lambdaTrasAbs <= 5) exitWith { // Delete the line marker if (GVAR(drawing_syncMarkers)) then { - ["ace_drawing_removeLineMarker", [_x select 0]] call CBA_fnc_globalEvent; + [QGVAR(removeLineMarker), [_x select 0]] call CBA_fnc_globalEvent; } else { deleteMarkerLocal (_x select 0); GVAR(drawing_lineMarkers) = GVAR(drawing_lineMarkers) - [_x]; diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index f0fadc7cb3d..62debbb55f8 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -42,7 +42,7 @@ if (_dir != 1) then { // Already drawing -> Add tempLineMarker to permanent list if (GVAR(drawing_syncMarkers)) then { deleteMarkerLocal (GVAR(drawing_tempLineMarker) select 0); - ["ace_drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call CBA_fnc_globalEvent; + [QGVAR(addLineMarker), GVAR(drawing_tempLineMarker)] call CBA_fnc_globalEvent; // Log who drew on the briefing screen [ACE_INFOFORMAT_1("Player %1 drew on the briefing screen", profileName)] call EFUNC(common,serverLog); } else { diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index d09fcbd5f11..4349b239db2 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -26,6 +26,7 @@ class CfgVehicles { }; #include "CfgEventHandlers.hpp" + class ACE_newEvents { InitSettingsFromModules = "ace_initSettingsFromModules"; -}; \ No newline at end of file +}; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf index 3c19f7969b6..186412cddeb 100644 --- a/addons/nightvision/XEH_postInitClient.sqf +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -35,7 +35,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; _this call FUNC(onVisionModeChanged); }] call CBA_fnc_addEventHandler; -["cameraViewChanged", { +["ace_cameraViewChanged", { _this call FUNC(updatePPEffects); _this call FUNC(onCameraViewChanged); }] call CBA_fnc_addEventHandler; diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index ae4c8350723..44e59a4074f 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -35,7 +35,7 @@ GVAR(camera) = objNull; }] call CBA_fnc_addEventHandler; // camera has to be re-created every time another camera is created. Otherwise r2t is either black or transparent. @todo Add popular custom cameras to the event in ACE_common. -["activeCameraChanged", { +["ace_activeCameraChanged", { if !(_this select 1) then { GVAR(camera) cameraEffect ["TERMINATE", "BACK"]; camDestroy GVAR(camera); From c4999c13e4d0ddd99c3e741585384c017293bc7d Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 02:19:50 +0200 Subject: [PATCH 203/268] QGVAR and Fix sandbag, tagging, tripod, viewdistance, weather, zeus --- addons/sandbag/config.cpp | 1 + addons/tagging/XEH_postInit.sqf | 2 +- addons/tagging/config.cpp | 2 +- addons/tagging/functions/fnc_tag.sqf | 2 +- addons/tripod/config.cpp | 1 + addons/viewdistance/XEH_clientInit.sqf | 4 ++-- addons/weather/config.cpp | 1 + addons/zeus/XEH_preInit.sqf | 2 +- addons/zeus/config.cpp | 2 +- addons/zeus/functions/fnc_bi_moduleCurator.sqf | 2 +- 10 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 80938d6ff4a..bc59d52a8a4 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + class ACE_newEvents { medical_onUnconscious = "ace_medical_onUnconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; diff --git a/addons/tagging/XEH_postInit.sqf b/addons/tagging/XEH_postInit.sqf index df5d3a1a5b6..055cb59cfd0 100644 --- a/addons/tagging/XEH_postInit.sqf +++ b/addons/tagging/XEH_postInit.sqf @@ -44,4 +44,4 @@ if (!isServer) exitWith {}; GVAR(testingThread) = false; GVAR(tagsToTest) = []; -["ace_createTag", DFUNC(createTag)] call CBA_fnc_addEventHandler; +[QGVAR(createTag), DFUNC(createTag)] call CBA_fnc_addEventHandler; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index 96ecadbf035..e494247db3f 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -17,6 +17,6 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - createTag = "ace_createTag"; + createTag = QGVAR(createTag); tagCreated = "ace_tagCreated"; }; diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 0cf5336dec3..4cdb428f6a0 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -109,7 +109,7 @@ _unit playActionNow "PutDown"; playSound3D [QUOTE(PATHTO_R(sounds\spray.ogg)), _unit, false, (eyePos _unit), 10, 1, 15]; // Tell the server to create the tag and handle its destruction - ["ace_createTag", _this] call CBA_fnc_serverEvent; + [QGVAR(createTag), _this] call CBA_fnc_serverEvent; }, [_touchingPoint vectorAdd (_surfaceNormal vectorMultiply 0.06), _vectorDirAndUp, _texture, _object, _unit], 0.6] call EFUNC(common,waitAndExecute); true diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index f57dbb7b9ed..c8fca006875 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" + class ACE_newEvents { medical_onUnconscious = "ace_medical_onUnconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; diff --git a/addons/viewdistance/XEH_clientInit.sqf b/addons/viewdistance/XEH_clientInit.sqf index a1b81a6ddb4..25729319353 100644 --- a/addons/viewdistance/XEH_clientInit.sqf +++ b/addons/viewdistance/XEH_clientInit.sqf @@ -10,7 +10,7 @@ if (!hasInterface) exitWith {}; [false] call FUNC(adaptViewDistance); // Set the EH which waits for any of the view distance settings to be changed, so that the effect is show immediately - ["SettingChanged",{ + ["ace_settingChanged",{ params ["_name"]; if ((_name == QGVAR(viewDistanceOnFoot)) || (_name == QGVAR(viewDistanceLandVehicle)) || @@ -23,7 +23,7 @@ if (!hasInterface) exitWith {}; // Set the EH which waits for a vehicle change to automatically swap between On Foot/In Land Vehicle/In Air Vehicle // Also run when SettingsInitialized runs (not guaranteed) - ["playerVehicleChanged",{ + ["ace_playerVehicleChanged",{ [false] call FUNC(adaptViewDistance); }] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 280efd36540..ebe22716700 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -16,6 +16,7 @@ class CfgPatches { #include "RscTitles.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" + class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; }; diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf index 136851458b4..b39f4c0e040 100644 --- a/addons/zeus/XEH_preInit.sqf +++ b/addons/zeus/XEH_preInit.sqf @@ -5,7 +5,7 @@ ADDON = false; #include "XEH_PREP.hpp" if (isServer) then { - ["ace_zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call CBA_fnc_addEventHandler; + [QGVAR(zeusUnitAssigned), FUNC(handleZeusUnitAssigned)] call CBA_fnc_addEventHandler; }; ADDON = true; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 0758e1557be..1337d125188 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -44,7 +44,7 @@ class ACE_Curator { #include "ACE_Settings.hpp" class ACE_newEvents { - zeusUnitAssigned = "ace_zeusUnitAssigned"; + zeusUnitAssigned = QGVAR(zeusUnitAssigned); SetSurrendered = "ace_setSurrendered"; SetHandcuffed = "ace_setHandcuffed"; AddCargoByClass = "ace_addCargoByClass"; diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf index 84c4dd59ecb..a86f81930da 100644 --- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf +++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf @@ -175,7 +175,7 @@ if (_activated) then { [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler; // Added by ace_zeus - ["ace_zeusUnitAssigned", [_logic,_player]] call CBA_fnc_globalEvent; + [QGVAR(zeusUnitAssigned), [_logic,_player]] call CBA_fnc_globalEvent; //--- Forced interface //if (_forced) then { From fef50ae48fbae99553fba66ef43ec5a6e2525c30 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 24 May 2016 19:25:38 -0500 Subject: [PATCH 204/268] Fix duplicate event --- addons/tacticalladder/config.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 81b210c80c7..02cd3e2ea01 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -19,5 +19,4 @@ class ACE_newEvents { medical_onUnconscious = "ace_medical_onUnconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; - interactMenuOpened = "ace_interactMenuOpened"; }; From 87ee34ba354b67ffae4324b781e60fd7101019cf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 24 May 2016 19:37:24 -0500 Subject: [PATCH 205/268] vehicleLock - Use QGVAR --- addons/vehiclelock/CfgVehicles.hpp | 8 ++++---- addons/vehiclelock/XEH_postInit.sqf | 4 ++-- addons/vehiclelock/config.cpp | 4 ++-- addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf | 2 +- .../vehiclelock/functions/fnc_handleVehicleInitPost.sqf | 2 +- addons/vehiclelock/functions/fnc_lockpick.sqf | 2 +- addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index f6db9fe4675..dc025af65b3 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -3,14 +3,14 @@ class ACE_unlockVehicle { \ displayName = CSTRING(Action_UnLock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ class ACE_lockVehicle { \ displayName = CSTRING(Action_Lock); \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -27,7 +27,7 @@ displayName = CSTRING(Action_UnLock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(2,3)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,false)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.3; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ @@ -35,7 +35,7 @@ displayName = CSTRING(Action_Lock); \ distance = 4; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(hasKeyForVehicle)) && {(locked _target) in [ARR_2(0,1)]}); \ - statement = QUOTE([ARR_3('VehicleLock_SetVehicleLock', [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ + statement = QUOTE([ARR_3(QUOTE(QGVAR(setVehicleLock)), [ARR_2(_target,true)], [_target])] call CBA_fnc_targetEvent); \ priority = 0.2; \ icon = QUOTE(PATHTOF(UI\key_menuIcon_ca.paa)); \ }; \ diff --git a/addons/vehiclelock/XEH_postInit.sqf b/addons/vehiclelock/XEH_postInit.sqf index 0a9d00ffbc8..3888a6e87ab 100644 --- a/addons/vehiclelock/XEH_postInit.sqf +++ b/addons/vehiclelock/XEH_postInit.sqf @@ -1,8 +1,8 @@ #include "script_component.hpp" //Add Event Handlers -["ace_vehicleLock_SetupCustomKey", {_this call FUNC(serverSetupCustomKeyEH)}] call CBA_fnc_addEventHandler; -["ace_vehicleLock_SetVehicleLock", {_this call FUNC(setVehicleLockEH)}] call CBA_fnc_addEventHandler; +[QGVAR(setupCustomKey), {_this call FUNC(serverSetupCustomKeyEH)}] call CBA_fnc_addEventHandler; +[QGVAR(setVehicleLock), {_this call FUNC(setVehicleLockEH)}] call CBA_fnc_addEventHandler; if (!hasInterface) exitwith {}; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 8dbc7a5ece3..8b51cb60a99 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -20,6 +20,6 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - VehicleLock_SetVehicleLock = "ace_vehicleLock_SetVehicleLock"; - VehicleLock_SetupCustomKey = "ace_vehicleLock_SetupCustomKey"; + VehicleLock_SetVehicleLock = QGVAR(setVehicleLock); + VehicleLock_SetupCustomKey = QGVAR(setupCustomKey); }; diff --git a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf index ea8a22d3528..b45bf150f3f 100644 --- a/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf +++ b/addons/vehiclelock/functions/fnc_addKeyForVehicle.sqf @@ -36,7 +36,7 @@ if (_useCustom) then { _keyMagazine = _newMags select 0; TRACE_2("setting up key on server",_veh,_keyMagazine); //Have the server run add the key to the vehicle's key array: - ["ace_vehicleLock_SetupCustomKey", [_veh, _keyMagazine]] call CBA_fnc_serverEvent; + [QGVAR(setupCustomKey), [_veh, _keyMagazine]] call CBA_fnc_serverEvent; } else { _keyName = [_veh] call FUNC(getVehicleSideKey); _unit addItem _keyName; //addItem has global effects diff --git a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf index ac16e0467fa..c5e22d63364 100644 --- a/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf +++ b/addons/vehiclelock/functions/fnc_handleVehicleInitPost.sqf @@ -38,7 +38,7 @@ TRACE_1("params",_vehicle); }; if ((_lock && {(locked _vehicle) != 2}) || {!_lock && {(locked _vehicle) != 0}}) then { TRACE_3("Setting Lock State",_lock,(typeOf _vehicle),_vehicle); - ["ace_vehicleLock_SetVehicleLock", [_vehicle, _lock], [_vehicle]] call CBA_fnc_targetEvent; + [QGVAR(SetVehicleLock), [_vehicle, _lock], [_vehicle]] call CBA_fnc_targetEvent; }; }; //Delay call until mission start (so everyone has the eventHandler's installed) diff --git a/addons/vehiclelock/functions/fnc_lockpick.sqf b/addons/vehiclelock/functions/fnc_lockpick.sqf index 9743eb5275f..bf15a6eaddb 100644 --- a/addons/vehiclelock/functions/fnc_lockpick.sqf +++ b/addons/vehiclelock/functions/fnc_lockpick.sqf @@ -55,7 +55,7 @@ switch (_funcType) do { [_vehLockpickStrenth, [_unit, _veh, "finishLockpick"], {(_this select 0) call FUNC(lockpick)}, {}, (localize LSTRING(Action_LockpickInUse)), _condition] call EFUNC(common,progressBar); }; case "finishLockpick": { - ["ace_vehicleLock_SetVehicleLock", [_veh, false], [_veh]] call CBA_fnc_targetEvent; + [QGVAR(setVehicleLock), [_veh, false], [_veh]] call CBA_fnc_targetEvent; }; default { ERROR("bad function type"); diff --git a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf index d2290ef7323..9382de408e6 100644 --- a/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf +++ b/addons/vehiclelock/functions/fnc_setVehicleLockEH.sqf @@ -1,6 +1,6 @@ /* * Author: PabstMirror - * Sets a vehicle lock state because of a "VehicleLock_SetVehicleLock" event + * Sets a vehicle lock state because of a "ace_vehiclelock_setVehicleLock" event * * Arguments: * 0: Vehicle From cfb3d7f0a90bd183b45ff34d425531e332ec648f Mon Sep 17 00:00:00 2001 From: gpgpgpgp Date: Wed, 25 May 2016 09:17:19 +0800 Subject: [PATCH 206/268] add a line to support JSRS Eden (getting rid of JSRS explosion sound effect) JSRS Eden defines a SoundSetExplosion[] on ShellBase to define explosion sounds, which gives huntir unexpected exploding sound when used together. Adding SoundSetExplosion[] = {}; shall fix the problem. --- addons/huntir/CfgAmmo.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp index 33328094b2f..cb40f4a53a8 100644 --- a/addons/huntir/CfgAmmo.hpp +++ b/addons/huntir/CfgAmmo.hpp @@ -26,6 +26,7 @@ class CfgAmmo { soundHit6[] = {"",3.16228,1,2000}; soundHit7[] = {"",3.16228,1,2000}; soundHit8[] = {"",3.16228,1,2000}; + SoundSetExplosion[] = {}; multiSoundHit[] = {}; class HitEffects {}; soundFakeFall0[] = {"",3.16228,1,1000}; From 5d36f84eb1d2ad1586621334c9990fc0d4cec898 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 20:13:36 +0200 Subject: [PATCH 207/268] qGVAR overheating and reloadlaunchers --- addons/overheating/XEH_postInit.sqf | 8 ++++---- addons/overheating/config.cpp | 8 ++++---- .../functions/fnc_checkSpareBarrelsTemperatures.sqf | 2 +- .../overheating/functions/fnc_loadCoolestSpareBarrel.sqf | 2 +- addons/overheating/functions/fnc_swapBarrelAssistant.sqf | 2 +- addons/overheating/functions/fnc_swapBarrelCallback.sqf | 2 +- addons/reloadlaunchers/XEH_postInit.sqf | 2 +- addons/reloadlaunchers/config.cpp | 2 +- addons/reloadlaunchers/functions/fnc_load.sqf | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index c42ce1f9fd4..f5a162e075e 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -35,8 +35,8 @@ if (hasInterface) then { GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; // Install event handlers for spare barrels - ["ace_spareBarrelsSendTemperatureHint", FUNC(sendSpareBarrelsTemperaturesHint)] call CBA_fnc_addEventHandler; - ["ace_spareBarrelsLoadCoolest", FUNC(loadCoolestSpareBarrel)] call CBA_fnc_addEventHandler; + [QGVAR(spareBarrelsSendTemperatureHint), FUNC(sendSpareBarrelsTemperaturesHint)] call CBA_fnc_addEventHandler; + [QGVAR(spareBarrelsLoadCoolest), FUNC(loadCoolestSpareBarrel)] call CBA_fnc_addEventHandler; // Schedule cool down calculation of stored spare barrels [] call FUNC(updateSpareBarrelsTemperaturesThread); @@ -62,8 +62,8 @@ if (hasInterface) then { [] call FUNC(updateTemperatureThread); // Install event handler to display temp when a barrel was swapped - ["ace_showWeaponTemperature", DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; + [QGVAR(showWeaponTemperature), DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; // Install event handler to initiate an assisted barrel swap - ["ace_initiateSwapBarrelAssisted", DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; + [QGVAR(initiateSwapBarrelAssisted), DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 89158a67e1c..c9457161496 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -52,12 +52,12 @@ class CfgGesturesMale { }; class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - initiateSwapBarrelAssisted = "ace_initiateSwapBarrelAssisted"; - showWeaponTemperature = "ace_showWeaponTemperature"; + initiateSwapBarrelAssisted = QGVAR(initiateSwapBarrelAssisted); + showWeaponTemperature = QGVAR(showWeaponTemperature); firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; - spareBarrelsLoadCoolest = "ace_spareBarrelsLoadCoolest"; - spareBarrelsSendTemperatureHint = "ace_spareBarrelsSendTemperatureHint"; + spareBarrelsLoadCoolest = QGVAR(spareBarrelsLoadCoolest); + spareBarrelsSendTemperatureHint = QGVAR(spareBarrelsSendTemperatureHint); displayTextStructured = "ace_displayTextStructured"; weaponJammed = "ace_weaponJammed"; }; diff --git a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf index 129f80845bc..be2e1ae1a5c 100644 --- a/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf +++ b/addons/overheating/functions/fnc_checkSpareBarrelsTemperatures.sqf @@ -29,7 +29,7 @@ if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canI params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; _args params ["_player"]; // Time has enlapsed, ask the server to send the hint - ['spareBarrelsSendTemperatureHint', [_player, _player]] call CBA_fnc_serverEvent; + [QGVAR(spareBarrelsSendTemperatureHint), [_player, _player]] call CBA_fnc_serverEvent; }, {}, (localize LSTRING(CheckingSpareBarrelsTemperatures)), diff --git a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf index c77a5dbed23..f4636150b5a 100644 --- a/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf +++ b/addons/overheating/functions/fnc_loadCoolestSpareBarrel.sqf @@ -50,4 +50,4 @@ _gunner setVariable [format [QGVAR(%1_temp), _weapon], _coolestTemp, true]; [GVAR(storedSpareBarrels), _coolestMag, [_weaponTemp, ACE_Time, _barrelMass]] call CBA_fnc_hashSet; // Send an event so the machines of the assistant and gunner can show the hint -["ace_showWeaponTemperature", _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; +[QGVAR(showWeaponTemperature), _gunner], [_gunner, _weapon], [_assistant] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf index 326afcae1cd..dd6d51d109d 100644 --- a/addons/overheating/functions/fnc_swapBarrelAssistant.sqf +++ b/addons/overheating/functions/fnc_swapBarrelAssistant.sqf @@ -30,4 +30,4 @@ playSound "ACE_BarrelSwap"; [3, [_assistant, _gunner, _weapon], {}, {}, (localize LSTRING(SwappingBarrel))] call EFUNC(common,progressBar); -["ace_initiateSwapBarrelAssisted", [_assistant, _gunner, _weapon], _gunner] call CBA_fnc_targetEvent; +[QGVAR(initiateSwapBarrelAssisted), [_assistant, _gunner, _weapon], _gunner] call CBA_fnc_targetEvent; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 73cf5f60065..17864ab3f6c 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -34,7 +34,7 @@ private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon > // store the removed barrel with the former weapon temperature. The server // also updates the current weapon temperature to match that of the new // loaded barrel. -["ace_spareBarrelsLoadCoolest", [_assistant, _gunner, _weapon, _temp, _barrelMass]] call CBA_fnc_serverEvent; +[QGVAR(spareBarrelsLoadCoolest), [_assistant, _gunner, _weapon, _temp, _barrelMass]] call CBA_fnc_serverEvent; // Store the update time _gunner setVariable [format [QGVAR(%1_time), _weapon], ACE_time]; diff --git a/addons/reloadlaunchers/XEH_postInit.sqf b/addons/reloadlaunchers/XEH_postInit.sqf index 0800c4b0eb0..8c18d430c49 100644 --- a/addons/reloadlaunchers/XEH_postInit.sqf +++ b/addons/reloadlaunchers/XEH_postInit.sqf @@ -1,4 +1,4 @@ // by commy2 #include "script_component.hpp" -["ace_reloadLauncher", {_this call DFUNC(reloadLauncher)}] call CBA_fnc_addEventHandler; +[QGVAR(reloadLauncher), {_this call DFUNC(reloadLauncher)}] call CBA_fnc_addEventHandler; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 915316ac399..044b05086bd 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -18,5 +18,5 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - reloadLauncher = "ace_reloadLauncher"; + reloadLauncher = QGVAR(reloadLauncher); }; diff --git a/addons/reloadlaunchers/functions/fnc_load.sqf b/addons/reloadlaunchers/functions/fnc_load.sqf index 59d28f8cad8..863d1e91891 100644 --- a/addons/reloadlaunchers/functions/fnc_load.sqf +++ b/addons/reloadlaunchers/functions/fnc_load.sqf @@ -32,7 +32,7 @@ private ["_onSuccess", "_onFailure", "_condition"]; _onSuccess = { (_this select 0 select 0) removeMagazine (_this select 0 select 3); - ["ace_reloadLauncher", _this select 0, _this select 0 select 1] call CBA_fnc_targetEvent; + [QGVAR(reloadLauncher), _this select 0, _this select 0 select 1] call CBA_fnc_targetEvent; [localize LSTRING(LauncherLoaded)] call DEFUNC(common,displayTextStructured); }; From 4f515ec4e12a71ef3864f537d0194eb4efeef7a1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 25 May 2016 20:23:53 +0200 Subject: [PATCH 208/268] QGVAR captives, interaction --- addons/captives/XEH_postInit.sqf | 8 ++++---- addons/captives/config.cpp | 9 +++++---- addons/captives/functions/fnc_doApplyHandcuffs.sqf | 2 +- addons/captives/functions/fnc_doLoadCaptive.sqf | 2 +- addons/captives/functions/fnc_doRemoveHandcuffs.sqf | 2 +- addons/captives/functions/fnc_doUnloadCaptive.sqf | 2 +- addons/captives/functions/fnc_moduleHandcuffed.sqf | 2 +- addons/captives/functions/fnc_moduleSurrender.sqf | 2 +- addons/interaction/XEH_postInit.sqf | 12 ++++++------ addons/interaction/config.cpp | 10 ++++++---- addons/interaction/functions/fnc_getDown.sqf | 2 +- addons/interaction/functions/fnc_joinTeam.sqf | 2 +- addons/interaction/functions/fnc_pardon.sqf | 2 +- addons/interaction/functions/fnc_sendAway.sqf | 2 +- addons/interaction/functions/fnc_switchLamp.sqf | 9 +++------ addons/interaction/functions/fnc_tapShoulder.sqf | 2 +- addons/laserpointer/XEH_postInit.sqf | 2 +- addons/laserpointer/config.cpp | 2 +- addons/sitting/XEH_clientInit.sqf | 2 +- addons/sitting/config.cpp | 2 +- addons/zeus/config.cpp | 4 ++-- addons/zeus/functions/fnc_moduleCaptive.sqf | 2 +- addons/zeus/functions/fnc_moduleSurrender.sqf | 2 +- 23 files changed, 43 insertions(+), 43 deletions(-) diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 0c627c55f24..f8511b57897 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -25,11 +25,11 @@ if (isServer) then { }; ["ace_playerChanged", {_this call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; -["ace_moveInCaptive", {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler; -["ace_moveOutCaptive", {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler; +[QGVAR(moveInCaptive), {_this call FUNC(vehicleCaptiveMoveIn)}] call CBA_fnc_addEventHandler; +[QGVAR(moveOutCaptive), {_this call FUNC(vehicleCaptiveMoveOut)}] call CBA_fnc_addEventHandler; -["ace_setHandcuffed", {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler; -["ace_setSurrendered", {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; +[QGVAR(setHandcuffed), {_this call FUNC(setHandcuffed)}] call CBA_fnc_addEventHandler; +[QGVAR(setSurrendered), {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; //Medical Integration Events ["ace_medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index e526f110196..4e31f77c9a3 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -18,13 +18,14 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgEden.hpp" + class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; medical_onUnconscious = "ace_medical_onUnconscious"; - SetSurrendered = "ace_setSurrendered"; - SetHandcuffed = "ace_setHandcuffed"; - MoveOutCaptive = "ace_moveOutCaptive"; - MoveInCaptive = "ace_moveInCaptive"; + SetSurrendered = QGVAR(setSurrendered); + SetHandcuffed = QGVAR(setHandcuffed); + MoveOutCaptive = QGVAR(moveOutCaptive); + MoveInCaptive = QGVAR(moveInCaptive); playerChanged = "ace_playerChanged"; CaptiveStatusChanged = "ace_captiveStatusChanged"; }; diff --git a/addons/captives/functions/fnc_doApplyHandcuffs.sqf b/addons/captives/functions/fnc_doApplyHandcuffs.sqf index 35efa16a6d7..d80ffc40a13 100644 --- a/addons/captives/functions/fnc_doApplyHandcuffs.sqf +++ b/addons/captives/functions/fnc_doApplyHandcuffs.sqf @@ -21,6 +21,6 @@ params ["_unit", "_target"]; playSound3D [QUOTE(PATHTO_R(sounds\cable_tie_zipping.ogg)), objNull, false, (getPosASL _target), 1, 1, 10]; -["ace_setHandcuffed", [_target, true], [_target]] call CBA_fnc_targetEvent; +[QGVAR(setHandcuffed), [_target, true], [_target]] call CBA_fnc_targetEvent; _unit removeItem "ACE_CableTie"; diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index 4d45494fd27..2a8bc055ec7 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -47,4 +47,4 @@ if (isNull _vehicle) then { if (isNull _vehicle) exitWith {ERROR("");}; _unit setVariable [QGVAR(isEscorting), false, true]; -["ace_moveInCaptive", [_target, _vehicle], [_target]] call CBA_fnc_targetEvent; +[QGVAR(moveInCaptive), [_target, _vehicle], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf index e824893c34f..7f445440ba6 100644 --- a/addons/captives/functions/fnc_doRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_doRemoveHandcuffs.sqf @@ -17,4 +17,4 @@ params ["_unit", "_target"]; -["ace_setHandcuffed", [_target, false], [_target]] call CBA_fnc_targetEvent; +[QGVAR(setHandcuffed), [_target, false], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_doUnloadCaptive.sqf b/addons/captives/functions/fnc_doUnloadCaptive.sqf index b5c27706c46..fd4375e4b7a 100644 --- a/addons/captives/functions/fnc_doUnloadCaptive.sqf +++ b/addons/captives/functions/fnc_doUnloadCaptive.sqf @@ -18,4 +18,4 @@ params ["_unit", "_target"]; -["ace_moveOutCaptive", [_target], [_target]] call CBA_fnc_targetEvent; +[QGVAR(moveOutCaptive), [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/captives/functions/fnc_moduleHandcuffed.sqf b/addons/captives/functions/fnc_moduleHandcuffed.sqf index ea72ca5d267..c2cf0708d3d 100644 --- a/addons/captives/functions/fnc_moduleHandcuffed.sqf +++ b/addons/captives/functions/fnc_moduleHandcuffed.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["ace_setHandcuffed", [_x, true], [_x]] call CBA_fnc_targetEvent; + [QGVAR(setHandcuffed), [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 8e342b1aeba..04d9027896c 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -30,7 +30,7 @@ if (!isServer) exitWith {}; params ["_units"]; { TRACE_2("event",_x,local _x); - ["ace_setSurrendered", [_x, true], [_x]] call CBA_fnc_targetEvent; + [QGVAR(setSurrendered), [_x, true], [_x]] call CBA_fnc_targetEvent; } forEach _units; }, [_units], 0.05] call EFUNC(common,waitAndExecute); diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 6107b26d594..0bb6e2386a9 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -3,27 +3,27 @@ ACE_Modifier = 0; -["ace_pardon", {(_this select 0) addRating -rating (_this select 0)}] call CBA_fnc_addEventHandler; +[QGVAR(pardon), {(_this select 0) addRating -rating (_this select 0)}] call CBA_fnc_addEventHandler; -["ace_getDown", { +[QGVAR(getDown), { params ["_target"]; _target setUnitPos "DOWN"; }] call CBA_fnc_addEventHandler; -["sendAway", { +[QGVAR(sendAway), { params ["_unit", "_position"]; _unit setUnitPos "AUTO"; _unit doMove _position; }] call CBA_fnc_addEventHandler; -["lampTurnOn", { +[QGVAR(lampTurnOn), { params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; {if((_x select 1) == _disabledLampDMG) then {_lamp setHit [_x select 0, 0];};nil} count _hitPointsDamage; }] call CBA_fnc_addEventHandler; -["lampTurnOff", { +[QGVAR(lampTurnOff), { params ["_lamp", "_hitPointsDamage", "_disabledLampDMG"]; {_lamp setHit [_x select 0, (_x select 1) max _disabledLampDMG];nil} count _hitPointsDamage; }] call CBA_fnc_addEventHandler; @@ -32,7 +32,7 @@ if (!hasInterface) exitWith {}; GVAR(isOpeningDoor) = false; -["tapShoulder", { +[QGVAR(tapShoulder), { params ["_unit", "_shoulderNum"]; if (_unit == ACE_player) then { diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 9359c10df18..54444f1b6ae 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -19,12 +19,14 @@ class CfgPatches { #include "ACE_ZeusActions.hpp" class ACE_newEvents { - getDown = "ace_getDown"; - pardon = "ace_pardon"; - tapShoulder = "ace_tapShoulder"; - sendAway = "ace_sendAway"; + getDown = QGVAR(getDown); + pardon = QGVAR(pardon); + tapShoulder = QGVAR(tapShoulder); + sendAway = QGVAR(sendAway); setVelocity = "ace_setVelocity"; displayTextStructured = "ace_displayTextStructured"; CBA_teamColorChanged = "ace_CBA_teamColorChanged"; selectLeader = "ace_selectLeader"; + lampTurnOff = QGVAR(lampTurnOff); + lampTurnOn = QGVAR(lampTurnOn); }; diff --git a/addons/interaction/functions/fnc_getDown.sqf b/addons/interaction/functions/fnc_getDown.sqf index 402e6c99769..af0a9da38c0 100644 --- a/addons/interaction/functions/fnc_getDown.sqf +++ b/addons/interaction/functions/fnc_getDown.sqf @@ -27,7 +27,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); { if (count weapons _x == 0 && {random 1 < _chance}) then { - ["ace_getDown", [_x], [_x]] call CBA_fnc_targetEvent; + [QGVAR(getDown), [_x], [_x]] call CBA_fnc_targetEvent; }; false } count (_target nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index bd3db0e294c..70a2ba2b350 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -18,7 +18,7 @@ params ["_unit", "_team"]; -["ace_CBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; +["CBA_teamColorChanged", [_unit, _team]] call CBA_fnc_globalEvent; // display message if (_unit == ACE_player) then { diff --git a/addons/interaction/functions/fnc_pardon.sqf b/addons/interaction/functions/fnc_pardon.sqf index 8c9f3a39e5c..e11a92e7db7 100644 --- a/addons/interaction/functions/fnc_pardon.sqf +++ b/addons/interaction/functions/fnc_pardon.sqf @@ -15,4 +15,4 @@ params ["", "_target"]; -["ace_pardon", [_target], [_target]] call CBA_fnc_targetEvent; +[QGVAR(pardon), [_target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_sendAway.sqf b/addons/interaction/functions/fnc_sendAway.sqf index 499e1394970..c200587f2ba 100644 --- a/addons/interaction/functions/fnc_sendAway.sqf +++ b/addons/interaction/functions/fnc_sendAway.sqf @@ -31,7 +31,7 @@ _chance = [0.5, 0.8] select (count weapons _unit > 0); _position = getPosASL _unit vectorAdd (eyeDirection _unit vectorMultiply SEND_DISTANCE); _position set [2, 0]; - ["ace_sendAway", [_x, _position], [_x]] call CBA_fnc_targetEvent; + [QGVAR(sendAway), [_x, _position], [_x]] call CBA_fnc_targetEvent; }; false } count (_unit nearEntities ["Civilian", SEND_RADIUS]); diff --git a/addons/interaction/functions/fnc_switchLamp.sqf b/addons/interaction/functions/fnc_switchLamp.sqf index 199bc6c9f7c..bf386f9ef39 100644 --- a/addons/interaction/functions/fnc_switchLamp.sqf +++ b/addons/interaction/functions/fnc_switchLamp.sqf @@ -29,10 +29,7 @@ private _hitPointsDamage = []; } count _reflectors; //if lamp is on turn it off -private _eventName = ["lampTurnOn", "lampTurnOff"] select _isOn; -if(local _lamp) then { - [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG]] call CBA_fnc_localEvent; -} else { - [_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG], [_lamp]] call CBA_fnc_targetEvent; -}; +private _eventName = [QGVAR(lampTurnOn), QGVAR(lampTurnOff)] select _isOn; +[_eventName, [_lamp, _hitPointsDamage, DISABLED_LAMP_DMG], [_lamp]] call CBA_fnc_targetEvent; + _lamp setVariable ["ACE_lampOn", !_isOn, true]; diff --git a/addons/interaction/functions/fnc_tapShoulder.sqf b/addons/interaction/functions/fnc_tapShoulder.sqf index 35274b37242..d6621d2c079 100644 --- a/addons/interaction/functions/fnc_tapShoulder.sqf +++ b/addons/interaction/functions/fnc_tapShoulder.sqf @@ -25,4 +25,4 @@ if (_unit == ACE_player) then { _unit playActionNow "PutDown"; -["ace_tapShoulder", [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; +[QGVAR(tapShoulder), [_target, _shoulderNum], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index e77693a6ae0..c4c83171cb1 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" // fixes laser when being captured. Needed, because the selectionPosition of the right hand is used -["ace_setHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; +[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index 37cd2c4387c..fe695517a7a 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -20,5 +20,5 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - SetHandcuffed = "ace_setHandcuffed"; + SetHandcuffed = QEGVAR(captives,setHandcuffed); }; \ No newline at end of file diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 2ce615c68ae..e19f0c66b98 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -14,5 +14,5 @@ if (!hasInterface) exitWith {}; // Handle interruptions ["ace_medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; - ["ace_setHandcuffed", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + [QEGVAR(captives,setHandcuffed), {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 65e23cd1ad9..e46b25b5556 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -19,6 +19,6 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - SetHandcuffed = "ace_setHandcuffed"; + SetHandcuffed = QEGVAR(captives,setHandcuffed); medical_onUnconscious = "ace_medical_onUnconscious"; }; \ No newline at end of file diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 1337d125188..5db5fad0351 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -45,7 +45,7 @@ class ACE_Curator { class ACE_newEvents { zeusUnitAssigned = QGVAR(zeusUnitAssigned); - SetSurrendered = "ace_setSurrendered"; - SetHandcuffed = "ace_setHandcuffed"; + SetSurrendered = QEGVAR(captives,setSurrendered); + SetHandcuffed = QEGVAR(captives,setHandcuffed); AddCargoByClass = "ace_addCargoByClass"; }; diff --git a/addons/zeus/functions/fnc_moduleCaptive.sqf b/addons/zeus/functions/fnc_moduleCaptive.sqf index ee0781b43f3..7d1c46f873b 100644 --- a/addons/zeus/functions/fnc_moduleCaptive.sqf +++ b/addons/zeus/functions/fnc_moduleCaptive.sqf @@ -38,7 +38,7 @@ if (isNil QEFUNC(captives,setHandcuffed)) then { } else { _captive = GETVAR(_unit,EGVAR(captives,isHandcuffed),false); // Event initalized by ACE_Captives - ["ace_setHandcuffed", [_unit, !_captive], _unit] call CBA_fnc_targetEvent; + [QEGVAR(captives,setHandcuffed), [_unit, !_captive], _unit] call CBA_fnc_targetEvent; }; }; }; diff --git a/addons/zeus/functions/fnc_moduleSurrender.sqf b/addons/zeus/functions/fnc_moduleSurrender.sqf index 08b74847c1a..e14501feb04 100644 --- a/addons/zeus/functions/fnc_moduleSurrender.sqf +++ b/addons/zeus/functions/fnc_moduleSurrender.sqf @@ -41,7 +41,7 @@ if (isNil QEFUNC(captives,setSurrendered)) then { } else { _surrendering = GETVAR(_unit,EGVAR(captives,isSurrendering),false); // Event initalized by ACE_Captives - ["ace_setSurrendered", [_unit, !_surrendering], _unit] call CBA_fnc_targetEvent; + [QEGVAR(captives,setSurrendered), [_unit, !_surrendering], _unit] call CBA_fnc_targetEvent; }; }; }; From 52ea640c4b473afc9593364b4b85b2109cd4f6da Mon Sep 17 00:00:00 2001 From: voiperr Date: Fri, 27 May 2016 10:16:15 -0700 Subject: [PATCH 209/268] ace_map: More realistic flashlight glow + minor fix (#3824) * -Converted flashlight glow object to chemlight type (emits light without sprite) -Fixed issue where glow object was being deleted without being first detached * Cleanup of temp classes. * Spaces before and after = * Moved effects into Effects.hpp. --- addons/map/CfgAmmo.hpp | 84 +++++++++++---------- addons/map/CfgLights.hpp | 35 +++++++++ addons/map/Effects.hpp | 36 +++++++++ addons/map/XEH_postInitClient.sqf | 1 + addons/map/config.cpp | 4 +- addons/map/functions/fnc_flashlightGlow.sqf | 9 ++- 6 files changed, 126 insertions(+), 43 deletions(-) create mode 100644 addons/map/CfgLights.hpp create mode 100644 addons/map/Effects.hpp diff --git a/addons/map/CfgAmmo.hpp b/addons/map/CfgAmmo.hpp index 01cd9427e83..82ff6841cb3 100644 --- a/addons/map/CfgAmmo.hpp +++ b/addons/map/CfgAmmo.hpp @@ -1,48 +1,54 @@ class CfgAmmo { - - class FlareCore; - - class FlareBase: FlareCore {}; - class F_20mm_White: FlareBase {}; - - class ACE_FlashlightProxy_White: F_20mm_White { + + class Chemlight_base; + + class ACE_FlashlightProxy_White: Chemlight_base { model = "\A3\Weapons_f\empty"; - effectFlare = "FlareShell"; - - triggerTime = 0; - intensity = 0.5; - flareSize = 1; - timeToLive = 10e10; - - lightColor[] = {1,1,1,1}; - - grenadeBurningSound[] = {}; - grenadeFireSound[] = {}; - soundTrigger[] = {}; - SmokeShellSoundHit1[] = {}; - SmokeShellSoundHit2[] = {}; - SmokeShellSoundHit3[] = {}; - SmokeShellSoundLoop1[] = {}; - SmokeShellSoundLoop2[] = {}; + effectsSmoke = "ACE_FlashlightEffect_White"; + explosionTime = 0.01; + timeToLive = 1e10; + + soundImpactHard1[] = {"",1,1}; + soundImpactHard2[] = {"",1,1}; + soundImpactHard3[] = {"",1,1}; + soundImpactHard4[] = {"",1,1}; + soundImpactHard5[] = {"",1,1}; + soundImpactHard6[] = {"",1,1}; + soundImpactHard7[] = {"",1,1}; + soundImpactIron1[] = {"",1,1}; + soundImpactIron2[] = {"",1,1}; + soundImpactIron3[] = {"",1,1}; + soundImpactIron4[] = {"",1,1}; + soundImpactIron5[] = {"",1,1}; + soundImpactSoft1[] = {"",1,1}; + soundImpactSoft2[] = {"",1,1}; + soundImpactSoft3[] = {"",1,1}; + soundImpactSoft4[] = {"",1,1}; + soundImpactSoft5[] = {"",1,1}; + soundImpactSoft6[] = {"",1,1}; + soundImpactSoft7[] = {"",1,1}; + soundImpactWater1[] = {"",1,1}; + soundImpactWater2[] = {"",1,1}; + soundImpactWater3[] = {"",1,1}; + soundImpactWoodExt1[] = {"",1,1}; + soundImpactWoodExt2[] = {"",1,1}; + soundImpactWoodExt3[] = {"",1,1}; + soundImpactWoodExt4[] = {"",1,1}; }; - + class ACE_FlashlightProxy_Red: ACE_FlashlightProxy_White { - intensity = 1; - lightColor[] = {1,0,0,1}; + effectsSmoke = "ACE_FlashlightEffect_Red"; }; - - class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White { - intensity = 1; - lightColor[] = {0,1,0,1}; - }; - + class ACE_FlashlightProxy_Blue: ACE_FlashlightProxy_White { - intensity = 1.5; - lightColor[] = {0.25,0.25,1,1}; + effectsSmoke = "ACE_FlashlightEffect_Blue"; + }; + + class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White { + effectsSmoke = "ACE_FlashlightEffect_Green"; }; - + class ACE_FlashlightProxy_Yellow: ACE_FlashlightProxy_White { - intensity = 1; - lightColor[] = {1,1,0.5,1}; + effectsSmoke = "ACE_FlashlightEffect_Yellow"; }; -}; +}; \ No newline at end of file diff --git a/addons/map/CfgLights.hpp b/addons/map/CfgLights.hpp new file mode 100644 index 00000000000..bd69f9acbf4 --- /dev/null +++ b/addons/map/CfgLights.hpp @@ -0,0 +1,35 @@ +class CfgLights { + + class Chemlight_Blue; + + class ACE_FlashlightLight_White: Chemlight_Blue { + brightness = 100; + color[] = {1,1,1,1}; + diffuse[] = {1,1,1}; + intensity = 100; + position[] = {0,0,0}; + + class Attenuation { + constant = 0; + linear = 0; + quadratic = 10000; + start = 0.075; + }; + }; + + class ACE_FlashlightLight_Red: ACE_FlashlightLight_White { + diffuse[] = {1,0,0}; + }; + + class ACE_FlashlightLight_Blue: ACE_FlashlightLight_White { + diffuse[] = {0.25,0.25,1}; + }; + + class ACE_FlashlightLight_Green: ACE_FlashlightLight_White { + diffuse[] = {0,1,0}; + }; + + class ACE_FlashlightLight_Yellow: ACE_FlashlightLight_White { + diffuse[] = {1,1,0.4}; + }; +}; \ No newline at end of file diff --git a/addons/map/Effects.hpp b/addons/map/Effects.hpp new file mode 100644 index 00000000000..1dc9b4c9932 --- /dev/null +++ b/addons/map/Effects.hpp @@ -0,0 +1,36 @@ +// "Smoke" effect classes for global flashlight glow + +class ACE_FlashlightEffect_White { + class Light1 { + simulation = "light"; + type = "ACE_FlashlightLight_White"; + }; +}; + +class ACE_FlashlightEffect_Red { + class Light1 { + simulation = "light"; + type = "ACE_FlashlightLight_Red"; + }; +}; + +class ACE_FlashlightEffect_Blue { + class Light1 { + simulation = "light"; + type = "ACE_FlashlightLight_Blue"; + }; +}; + +class ACE_FlashlightEffect_Green { + class Light1 { + simulation = "light"; + type = "ACE_FlashlightLight_Green"; + }; +}; + +class ACE_FlashlightEffect_Yellow { + class Light1 { + simulation = "light"; + type = "ACE_FlashlightLight_Yellow"; + }; +}; \ No newline at end of file diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index f3b3ba6106c..18bc8793cc3 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -9,6 +9,7 @@ if (isServer) then { { if (_x isKindOf "ACE_FlashlightProxy_White") then { // ACE_LOGINFO_2("Deleting leftover light [%1:%2] from DC player [%3]", _x, typeOf _x, _disconnectedPlayer); + detach _x; deleteVehicle _x; }; } forEach attachedObjects _disconnectedPlayer; diff --git a/addons/map/config.cpp b/addons/map/config.cpp index 6d6b4030ec1..e8a38d1222b 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -29,6 +29,8 @@ class RscEdit; #include "CfgVehicles.hpp" #include "CfgAmmo.hpp" #include "CfgSounds.hpp" +#include "CfgLights.hpp" +#include "Effects.hpp" class RscMapControl { maxSatelliteAlpha = 0.5; @@ -160,4 +162,4 @@ class RscDisplayServerGetReady: RscDisplayGetReady { #include "MapControls.hpp" }; }; -}; +}; \ No newline at end of file diff --git a/addons/map/functions/fnc_flashlightGlow.sqf b/addons/map/functions/fnc_flashlightGlow.sqf index 011489f3219..799b99e3d20 100644 --- a/addons/map/functions/fnc_flashlightGlow.sqf +++ b/addons/map/functions/fnc_flashlightGlow.sqf @@ -20,7 +20,10 @@ private ["_light", "_color", "_class"]; params ["_flashlight"]; _light = GVAR(glow); -if (!isNull _light) then {deleteVehicle _light}; +if (!isNull _light) then { + detach _light; + deleteVehicle _light; +}; if (_flashlight != "") then { _color = getText (configFile >> "CfgWeapons" >> _flashlight >> "ItemInfo" >> "FlashLight" >> "ACE_Flashlight_Colour"); @@ -28,9 +31,9 @@ if (_flashlight != "") then { _class = format["ACE_FlashlightProxy_%1", _color]; _light = _class createVehicle [0,0,0]; - _light attachTo [ACE_player, [0,0.5,-0.1], "head"]; + _light attachTo [ACE_player, [0,0.1,-0.05], "neck"]; } else { _light = objNull; }; -GVAR(glow) = _light; +GVAR(glow) = _light; \ No newline at end of file From 37068a5247d5138490dec5342f181936625ce156 Mon Sep 17 00:00:00 2001 From: nic547 Date: Sat, 28 May 2016 18:48:39 +0200 Subject: [PATCH 210/268] compat for adr-97 (#3728) * Added compat_adr_97 and realisticnames p90 cyka blyat * typo * Added Balistics stuff for p90 compat * 2 spaces to 4 spaces * styled my shit * Name for Hex variants, firemodes for the civilian variant * Also changed the magzine names * fixed ubc warning * fixed my style once again * my stuff looks even better now ... * ... --- optionals/compat_adr_97/$PBOPREFIX$ | 1 + optionals/compat_adr_97/CfgAmmo.hpp | 14 ++ optionals/compat_adr_97/CfgMagazines.hpp | 7 + optionals/compat_adr_97/CfgWeapons.hpp | 67 ++++++ optionals/compat_adr_97/config.cpp | 16 ++ optionals/compat_adr_97/script_component.hpp | 5 + optionals/compat_adr_97/stringtable.xml | 221 +++++++++++++++++++ 7 files changed, 331 insertions(+) create mode 100644 optionals/compat_adr_97/$PBOPREFIX$ create mode 100644 optionals/compat_adr_97/CfgAmmo.hpp create mode 100644 optionals/compat_adr_97/CfgMagazines.hpp create mode 100644 optionals/compat_adr_97/CfgWeapons.hpp create mode 100644 optionals/compat_adr_97/config.cpp create mode 100644 optionals/compat_adr_97/script_component.hpp create mode 100644 optionals/compat_adr_97/stringtable.xml diff --git a/optionals/compat_adr_97/$PBOPREFIX$ b/optionals/compat_adr_97/$PBOPREFIX$ new file mode 100644 index 00000000000..55c01af3d50 --- /dev/null +++ b/optionals/compat_adr_97/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\compat_adr_90 \ No newline at end of file diff --git a/optionals/compat_adr_97/CfgAmmo.hpp b/optionals/compat_adr_97/CfgAmmo.hpp new file mode 100644 index 00000000000..32d4deb0765 --- /dev/null +++ b/optionals/compat_adr_97/CfgAmmo.hpp @@ -0,0 +1,14 @@ +class CfgAmmo { + class BulletBase; + class B_570x28_Ball: BulletBase { + ACE_caliber = 5.7; + ACE_bulletLength = 21.6; // http://blog.thejustnation.org/2011/04/5-7x28mm-ammo-review/ + ACE_bulletMass = 2; // based on the SS190 + ACE_ballisticCoefficients[] = {0.177}; //http://m.delphiforums.com/autogun/messages/5267/7 + ACE_velocityBoundaries[] = {}; + ACE_standardAtmosphere = "ASM"; // 50/50 chance to get it right + ACE_dragModel = 7; + ACE_muzzleVelocities[] = {716,776}; + ACE_barrelLengths[] = {264,407}; + }; +}; diff --git a/optionals/compat_adr_97/CfgMagazines.hpp b/optionals/compat_adr_97/CfgMagazines.hpp new file mode 100644 index 00000000000..fe88f128fda --- /dev/null +++ b/optionals/compat_adr_97/CfgMagazines.hpp @@ -0,0 +1,7 @@ +class CfgMagazines { + class CA_Magazine; + class 50Rnd_570x28_SMG_03: CA_Magazine { + displayName = CSTRING(P90_Mag_Name); + descriptionShort = CSTRING(P90_Mag_DescriptionShort); + }; +}; \ No newline at end of file diff --git a/optionals/compat_adr_97/CfgWeapons.hpp b/optionals/compat_adr_97/CfgWeapons.hpp new file mode 100644 index 00000000000..d77dcf562e9 --- /dev/null +++ b/optionals/compat_adr_97/CfgWeapons.hpp @@ -0,0 +1,67 @@ +class CfgWeapons { + + class Rifle_Base_F; + class SMG_03_TR_BASE: Rifle_Base_F { + ACE_barrelTwist = 228.6; // 1:9 inch twist + ACE_barrelLenght = 407; + ACE_twistDirection = 1; + modes[]= { + "Single" + }; + }; + class SMG_03_TR_black: SMG_03_TR_BASE{ + displayName = CSTRING(PS90_TR_Black_Name); + }; + class SMG_03_TR_khaki: SMG_03_TR_black { + displayName = CSTRING(PS90_TR_Khaki_Name); + }; + class SMG_03_TR_camo: SMG_03_TR_black { + displayName = CSTRING(PS90_TR_Camo_Name); + }; + class SMG_03_TR_hex: SMG_03_TR_BASE { + displayName = CSTRING(PS90_TR_Hex_Name); + }; + class SMG_03_black: SMG_03_TR_BASE { + displayName = CSTRING(PS90_Black_Name); + }; + class SMG_03_khaki: SMG_03_black { + displayName = CSTRING(PS90_Khaki_Name); + }; + class SMG_03_camo: SMG_03_black { + displayName = CSTRING(PS90_Camo_Name); + }; + class SMG_03_hex: SMG_03_black { + displayName = CSTRING(PS90_Hex_Name); + }; + class SMG_03C_BASE: SMG_03_TR_BASE { + ACE_barrelLenght = 264; + modes[]= { + "Single", + "FullAuto" + }; + }; + class SMG_03C_TR_black: SMG_03C_BASE { + displayName = CSTRING(P90_TR_Black_Name); + }; + class SMG_03C_TR_khaki: SMG_03C_TR_black { + displayName = CSTRING(P90_TR_Khaki_Name); + }; + class SMG_03C_TR_camo: SMG_03C_TR_black { + displayName = CSTRING(P90_TR_Camo_Name); + }; + class SMG_03C_TR_hex: SMG_03C_TR_black { + displayName = CSTRING(P90_TR_Hex_Name); + }; + class SMG_03C_black: SMG_03C_Base { + displayName = CSTRING(P90_Black_Name); + }; + class SMG_03C_khaki: SMG_03C_black { + displayName = CSTRING(P90_Khaki_Name); + }; + class SMG_03C_camo: SMG_03C_black { + displayName = CSTRING(P90_Camo_Name); + }; + class SMG_03C_hex: SMG_03C_black { + displayName = CSTRING(P90_Hex_Name); + }; +}; diff --git a/optionals/compat_adr_97/config.cpp b/optionals/compat_adr_97/config.cpp new file mode 100644 index 00000000000..0b879124aa6 --- /dev/null +++ b/optionals/compat_adr_97/config.cpp @@ -0,0 +1,16 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"A3_Weapons_F_Mod"}; + author[] = {"Nic547"}; + VERSION_CONFIG; + }; +}; + +#include "CfgWeapons.hpp" +#include "CfgAmmo.hpp" +#include "CfgMagazines.hpp" \ No newline at end of file diff --git a/optionals/compat_adr_97/script_component.hpp b/optionals/compat_adr_97/script_component.hpp new file mode 100644 index 00000000000..4b2da4eadbe --- /dev/null +++ b/optionals/compat_adr_97/script_component.hpp @@ -0,0 +1,5 @@ +#define COMPONENT compat_adr_97 + +#include "\z\ace\addons\main\script_mod.hpp" + +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/optionals/compat_adr_97/stringtable.xml b/optionals/compat_adr_97/stringtable.xml new file mode 100644 index 00000000000..bd91b18fa31 --- /dev/null +++ b/optionals/compat_adr_97/stringtable.xml @@ -0,0 +1,221 @@ + + + + + P90 TR (Black) + P90 TR (Černá) + P90 TR (Noir) + P90 TR (Negro) + P90 TR (Чёрный) + P90 TR (czarny) + P90 TR (Schwarz) + P90 TR (Nero) + P90 TR (Fekete) + P90 TR (Preto) + + + P90 TR (Khaki) + P90 TR (Khaki) + P90 TR (Kaki) + P90 TR (Caqui) + P90 TR (Хаки) + P90 TR (khaki) + P90 TR (Khaki) + P90 TR (Khaki) + P90 TR (Khaki) + P90 TR (Caqui) + + + P90 TR (Camo) + P90 TR (Kamufláž) + P90 TR (Camo) + P90 TR (Camuflaje) + P90 TR (Камо) + P90 TR (kamuflaż) + P90 TR (Camo) + P90 TR (Camo) + P90 TR (Terepmintás) + P90 TR (Camuflagem) + + + P90 TR (Hex) + P90 TR (Hex) + P90 TR (Hex) + P90 TR (Hex) + P90 TR (Гекс) + P90 TR (Hex) + P90 TR (hex) + P90 TR (Hex) + P90 TR (Hex) + P90 TR (Hex) + + + P90 (Black) + P90 (Černá) + P90 (Noir) + P90 (Negro) + P90 (Чёрный) + P90 (czarny) + P90 (Schwarz) + P90 (Nero) + P90 (Fekete) + P90 (Preto) + + + P90 (Khaki) + P90 (Khaki) + P90 (Kaki) + P90 (Caqui) + P90 (Хаки) + P90 (khaki) + P90 (Khaki) + P90 (Khaki) + P90 (Khaki) + P90 (Caqui) + + + P90 (Camo) + P90 (Kamufláž) + P90 (Camo) + P90 (Camuflaje) + P90 (Камо) + P90 (kamuflaż) + P90 (Camo) + P90 (Camo) + P90 (Terepmintás) + P90 (Camuflagem) + + + P90 (Hex) + P90 (Hex) + P90 (Hex) + P90 (Hex) + P90 (Гекс) + P90 (Hex) + P90 (hex) + P90 (Hex) + P90 (Hex) + P90 (Hex) + + + PS90 TR (Black) + PS90 TR (Černá) + PS90 TR (Noir) + PS90 TR (Negro) + PS90 TR (Чёрный) + PS90 TR (czarny) + PS90 TR (Schwarz) + PS90 TR (Nero) + PS90 TR (Fekete) + PS90 TR (Preto) + + + PS90 TR (Khaki) + PS90 TR (Khaki) + PS90 TR (Kaki) + PS90 TR (Caqui) + PS90 TR (Хаки) + PS90 TR (khaki) + PS90 TR (Khaki) + PS90 TR (Khaki) + PS90 TR (Khaki) + PS90 TR (Caqui) + + + PS90 TR (Camo) + PS90 TR (Kamufláž) + PS90 TR (Camo) + PS90 TR (Camuflaje) + PS90 TR (Камо) + PS90 TR (kamuflaż) + PS90 TR (Camo) + PS90 TR (Camo) + PS90 TR (Terepmintás) + PS90 TR (Camuflagem) + + + PS90 TR (Hex) + PS90 TR (Hex) + PS90 TR (Hex) + PS90 TR (Hex) + PS90 TR (Гекс) + PS90 TR (Hex) + PS90 TR (hex) + PS90 TR (Hex) + PS90 TR (Hex) + PS90 TR (Hex) + + + PS90 (Black) + PS90 (Černá) + PS90 (Noir) + PS90 (Negro) + PS90 (Чёрный) + PS90 (czarny) + PS90 (Schwarz) + PS90 (Nero) + PS90 (Fekete) + PS90 (Preto) + + + PS90 (Khaki) + PS90 (Khaki) + PS90 (Kaki) + PS90 (Caqui) + PS90 (Хаки) + PS90 (khaki) + PS90 (Khaki) + PS90 (Khaki) + PS90 (Khaki) + PS90 (Caqui) + + + PS90 (Camo) + PS90 (Kamufláž) + PS90 (Camo) + PS90 (Camuflaje) + PS90 (Камо) + PS90 (kamuflaż) + PS90 (Camo) + PS90 (Camo) + PS90 (Terepmintás) + PS90 (Camuflagem) + + + PS90 (Hex) + PS90 (Hex) + PS90 (Hex) + PS90 (Hex) + PS90 (Гекс) + PS90 (Hex) + PS90 (hex) + PS90 (Hex) + PS90 (Hex) + PS90 (Hex) + + + 5.7mm 50Rnd Mag + 5,7mm 50-as Tár + 5,7mm 50-Patronen-Magazin + Cargador de 50 balas SD de 5,7mm + Ch. 5,7mm 50Cps + Magazynek 5,7mm 50rd + 5.7mm 50náb. Zásobník + Carregador de 50 projéteis de 5.7mm + Caricatore 5.7mm 50Rnd + Магазин из 50-ти 5,7 мм + + + Caliber: 5.7mm<br />Rounds: 50<br />Used in: P90 + Kaliber: 5,7mm<br />Patronen: 50<br />Eingesetzt von: P90 + Kaliber: 5,7mm<br />Pociski: 50<br />Używany w: P90 + Calibre: 5.7mm<br />Cartouches: 50<br />Utilisé avec: P90 + Calibre: 5.7mm<br />Balas: 50<br />Se usa en: P90 + Калибр: 5,7 мм<br />Патронов: 50<br />Используются с: P90 + Calibro: 5.7mm<br />Munizioni: 50<br />In uso su: P90 + Ráže: 5.7mm<br />Nábojů: 50<br />Použití u: P90 + Calibre: 5.7mm<br />Cartuchos: 50<br />Usado em: P90 + Kaliber: 5,7mm<br />Lövedékek: 50<br />Használható: P90 + + + From 1bd44e562ab4d305837c7ecf42d2f64a5212ad7a Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 29 May 2016 11:44:00 +0200 Subject: [PATCH 211/268] replace a comma with semi colon --- addons/respawn/functions/fnc_teleportToRallypoint.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/respawn/functions/fnc_teleportToRallypoint.sqf b/addons/respawn/functions/fnc_teleportToRallypoint.sqf index 88bd0d6d52b..8e766ce0e32 100644 --- a/addons/respawn/functions/fnc_teleportToRallypoint.sqf +++ b/addons/respawn/functions/fnc_teleportToRallypoint.sqf @@ -22,7 +22,7 @@ params ["_unit", "_side", "_rallypoint"]; private "_toBase"; _toBase = _rallypoint find "_Base" != -1; -_rallypoint = missionNamespace getVariable [_rallypoint, objNull], +_rallypoint = missionNamespace getVariable [_rallypoint, objNull]; if (isNull _rallypoint) exitWith {}; From bc6f756df45069fb91a24997fcc7bbf3a286167b Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 29 May 2016 13:22:49 +0200 Subject: [PATCH 212/268] fix rallypoint being objNull, when created via 'createvehicle' --- .../respawn/functions/fnc_initRallypoint.sqf | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index dba1ae5d0a9..70475dedc28 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -19,49 +19,46 @@ params ["_rallypoint", "_respawnMarker", "_side"]; -private "_name"; -_name = typeOf _rallypoint; +private _name = typeOf _rallypoint; + +if (isNil _name) then { + missionNamespace setVariable [_name, _rallypoint]; + + _rallypoint setVariable [QGVAR(side), _side]; + + if (isServer) then { + if (_respawnMarker != "" && {!(_respawnMarker in allMapMarkers)}) then { + createMarker [_respawnMarker, _rallypoint]; + }; + + ["rallypointMoved", [_rallypoint, _side]] call EFUNC(common,globalEvent); + }; +} else { + deleteVehicle _rallypoint; + ACE_LOGERROR("Multiple Rallypoints of same type."); +}; // init visible marker if (hasInterface) then { [{ params ["_rallypoint", "_respawnMarker", "_side", "_name"]; - private ["_marker", "_type", "_date"]; - - _marker = format ["ACE_Marker_%1", _name]; + private _marker = format ["ACE_Marker_%1", _name]; // exit if marker already exist if (_marker in allMapMarkers) exitWith {}; _marker = createMarkerLocal [_marker, getPosASL _rallypoint]; - _type = ["selector_selectedFriendly", "selector_selectedEnemy"] select (_respawnMarker == ""); + + private _type = ["selector_selectedFriendly", "selector_selectedEnemy"] select (_respawnMarker == ""); _marker setMarkerTypeLocal _type; _marker setMarkerAlphaLocal ([0,1] select (_side == playerSide)); // playerSide to guarantee init - _date = _rallypoint getVariable [QGVAR(markerDate), ""]; + private _date = _rallypoint getVariable [QGVAR(markerDate), ""]; _marker setMarkerTextLocal _date; _rallypoint setVariable [QGVAR(marker), _marker]; }, [_rallypoint, _respawnMarker, _side, _name], 0.1] call EFUNC(common,waitAndExecute); }; - -if (!isServer) exitWith {}; - -if (isNil _name) then { - missionNamespace setVariable [_name, _rallypoint]; - publicVariable _name; - - _rallypoint setVariable [QGVAR(side), _side, true]; - - if (_respawnMarker != "" && {!(_respawnMarker in allMapMarkers)}) then { - createMarker [_respawnMarker, _rallypoint]; - }; - - ["rallypointMoved", [_rallypoint, _side]] call EFUNC(common,globalEvent); -} else { - deleteVehicle _rallypoint; - ACE_LOGERROR("Multiple Rallypoints of same type."); -}; From 3163b53710172115f54e4d853ee06cef7bc71f7d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 29 May 2016 11:54:44 -0500 Subject: [PATCH 213/268] gforces - Fix missing ace_settings.hpp include (#3837) --- addons/gforces/config.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index 6c40f4ce1c5..d431ab2b3c5 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -12,8 +12,7 @@ class CfgPatches { }; }; +#include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" - #include "CfgWeapons.hpp" - #include "CfgVehicles.hpp" From 4df30327acfbc03fec458c81c1a742640040b56d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 30 May 2016 13:49:08 -0500 Subject: [PATCH 214/268] Flashsuppressors - use next CBA's JM configs (#3709) #3700 --- addons/flashsuppressors/CfgWeapons.hpp | 111 ++++++++++++++++++------- 1 file changed, 80 insertions(+), 31 deletions(-) diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp index ae957ba4b0e..e807dc2ae96 100644 --- a/addons/flashsuppressors/CfgWeapons.hpp +++ b/addons/flashsuppressors/CfgWeapons.hpp @@ -29,74 +29,123 @@ class asdg_MuzzleSlot_45ACP_SMG: asdg_MuzzleSlot { // for .45ACP universal mount ACE_muzzle_mzls_smg_01 = 1; }; }; +class asdg_MuzzleSlot_762MG: asdg_MuzzleSlot { // for 7.62, 6.5 and 5.56 universal mount MG suppressors + class compatibleItems { + ACE_muzzle_mzls_B = 1; + }; +}; class MuzzleSlot; class CfgWeapons { + class Rifle_Base_F; + + class Rifle_Long_Base_F: Rifle_Base_F { + class WeaponSlotsInfo; + }; /* MX */ - - class Rifle; - class Rifle_Base_F: Rifle { + class arifle_MX_Base_F: Rifle_Base_F { class WeaponSlotsInfo; }; - class arifle_MX_Base_F: Rifle_Base_F { + class arifle_MXC_F: arifle_MX_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_H"}; + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; + }; + }; + }; + class arifle_MX_F: arifle_MX_Base_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; + }; + }; + }; + class arifle_MX_GL_F: arifle_MX_Base_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; - class arifle_MX_SW_F: arifle_MX_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - // Shit is broken again - //compatibleItems[] += {"ACE_muzzle_mzls_H"}; - compatibleItems[] = {"muzzle_snds_H","muzzle_snds_H_SW","ACE_muzzle_mzls_H"}; + class MuzzleSlot: asdg_MuzzleSlot_762MG { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; - - - /* Katiba */ - - class arifle_katiba_Base_F: Rifle_Base_F { + class arifle_MXM_F: arifle_MX_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_H"}; + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; - /* Other */ + /* Katiba */ - class Rifle_Long_Base_F: Rifle_Base_F { + class arifle_Katiba_Base_F: Rifle_Base_F { class WeaponSlotsInfo; }; - - class DMR_01_base_F: Rifle_Long_Base_F { + class arifle_Katiba_F: arifle_Katiba_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_B"}; + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; - - class LMG_Mk200_F: Rifle_Long_Base_F { + class arifle_Katiba_C_F: arifle_Katiba_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_H"}; + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; + }; + }; + }; + class arifle_Katiba_GL_F: arifle_Katiba_Base_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + class MuzzleSlot: asdg_MuzzleSlot_762 { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; - class LMG_Zafir_F: Rifle_Long_Base_F { + + /* Other */ + class LMG_Mk200_F: Rifle_Long_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_B"}; + class MuzzleSlot: asdg_MuzzleSlot_762MG { + class compatibleItems: compatibleItems { + ACE_muzzle_mzls_H = 1; + ACE_muzzle_mzls_B = 0; + }; }; }; }; From 598c3dc1812e54a36ccb2043705bab7200f99917 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 30 May 2016 17:11:06 -0500 Subject: [PATCH 215/268] Fix 1.60 UBC (slingloads) --- addons/cargo/CfgVehicles.hpp | 11 ++++++----- addons/dragging/CfgVehicles.hpp | 11 +++++------ addons/interaction/CfgVehicles.hpp | 16 ++++++++-------- addons/rearm/CfgVehicles.hpp | 24 ++++++++++-------------- addons/refuel/CfgVehicles.hpp | 27 ++++++++++++--------------- 5 files changed, 41 insertions(+), 48 deletions(-) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 69c01b9e59c..43412b7b720 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -314,15 +314,16 @@ class CfgVehicles { GVAR(space) = 20; GVAR(hasCargo) = 1; }; - class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_base_F { - GVAR(space) = 8; - GVAR(hasCargo) = 1; - }; class Land_Pod_Heli_Transport_04_repair_F: Pod_Heli_Transport_04_base_F { GVAR(space) = 12; GVAR(hasCargo) = 1; }; - + class Pod_Heli_Transport_04_crewed_base_F; + class Land_Pod_Heli_Transport_04_medevac_F: Pod_Heli_Transport_04_crewed_base_F { + GVAR(space) = 8; + GVAR(hasCargo) = 1; + }; + class StaticMortar; class Mortar_01_base_F: StaticMortar { GVAR(size) = 2; // 1 = small, 2 = large diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 1529d393195..ba4ff871868 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -19,12 +19,6 @@ class CfgVehicles { GVAR(canDrag) = 0; }; - //remove actions from Taru Pods - class Pod_Heli_Transport_04_base_F: StaticWeapon { - GVAR(canCarry) = 0; - GVAR(canDrag) = 0; - }; - class StaticMortar; class Mortar_01_base_F: StaticMortar { GVAR(canCarry) = 1; @@ -53,6 +47,11 @@ class CfgVehicles { GVAR(canCarry) = 0; GVAR(canDrag) = 0; }; + //remove actions from Taru Pods + class Pod_Heli_Transport_04_base_F: Slingload_base_F { + GVAR(canCarry) = 0; + GVAR(canDrag) = 0; + }; class EAST_Box_Base: ReammoBox_F { GVAR(canCarry) = 1; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index dae66a95585..dd6ca32de60 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -496,14 +496,6 @@ class CfgVehicles { }; }; - class Pod_Heli_Transport_04_base_F: StaticWeapon { - class ACE_Actions: ACE_Actions { - class ACE_MainActions: ACE_MainActions { - distance = 5; - }; - }; - }; - class StaticMGWeapon: StaticWeapon {}; class HMG_01_base_F: StaticMGWeapon {}; @@ -552,6 +544,14 @@ class CfgVehicles { class ACE_SelfActions {}; }; + class Slingload_base_F: ReammoBox_F {}; + class Pod_Heli_Transport_04_base_F: Slingload_base_F { + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + distance = 5; + }; + }; + }; class ACE_RepairItem_Base: ThingX { class ACE_Actions { diff --git a/addons/rearm/CfgVehicles.hpp b/addons/rearm/CfgVehicles.hpp index c13218e4729..44b7fe38af8 100644 --- a/addons/rearm/CfgVehicles.hpp +++ b/addons/rearm/CfgVehicles.hpp @@ -143,24 +143,21 @@ class CfgVehicles { MACRO_REARM_TRUCK_ACTIONS }; - class Pod_Heli_Transport_04_base_F: StaticWeapon {}; + class ThingX; + class ReammoBox_F: ThingX { + class ACE_Actions { + class ACE_MainActions {}; + }; + }; + class Slingload_base_F: ReammoBox_F {}; + class Slingload_01_Base_F: Slingload_base_F {}; + + class Pod_Heli_Transport_04_base_F: Slingload_base_F {}; class Land_Pod_Heli_Transport_04_ammo_F: Pod_Heli_Transport_04_base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; - class Slingload_base_F; - class Slingload_01_Base_F: Slingload_base_F { - class ACE_Actions { - class ACE_MainActions { - displayName = ECSTRING(interaction,MainAction); - selection = ""; - distance = 10; - condition = "true"; - }; - }; - }; - class B_Slingload_01_Ammo_F: Slingload_01_Base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS @@ -168,7 +165,6 @@ class CfgVehicles { // Dummy Vehicles - class ThingX; class GVAR(defaultCarriedObject): ThingX { class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index 078dccea37e..6774140cc75 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -480,40 +480,37 @@ class CfgVehicles { GVAR(fuelCargo) = 10000; }; - class Slingload_base_F; - class Slingload_01_Base_F: Slingload_base_F { + class ReammoBox_F: ThingX { class ACE_Actions { - class ACE_MainActions { - displayName = ECSTRING(interaction,MainAction); - selection = ""; - distance = 10; - condition = "true"; - }; + class ACE_MainActions {}; }; }; + class Slingload_base_F: ReammoBox_F {}; - class B_Slingload_01_Fuel_F: Slingload_01_Base_F { + class Pod_Heli_Transport_04_base_F: Slingload_base_F {}; + class Land_Pod_Heli_Transport_04_fuel_F: Pod_Heli_Transport_04_base_F { transportFuel = 0; //3k MACRO_REFUEL_ACTIONS - GVAR(hooks)[] = {{0.55,3.02,-0.5},{-0.52,3.02,-0.5}}; + GVAR(hooks)[] = {{-1.49,1.41,-.3}}; GVAR(fuelCargo) = 10000; }; - class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F { + class Slingload_01_Base_F: Slingload_base_F {}; + class B_Slingload_01_Fuel_F: Slingload_01_Base_F { transportFuel = 0; //3k MACRO_REFUEL_ACTIONS - GVAR(hooks)[] = {{-1.52,1.14,-1.18}}; + GVAR(hooks)[] = {{0.55,3.02,-0.5},{-0.52,3.02,-0.5}}; GVAR(fuelCargo) = 10000; }; - class Pod_Heli_Transport_04_base_F: StaticWeapon {}; - class Land_Pod_Heli_Transport_04_fuel_F: Pod_Heli_Transport_04_base_F { + class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F { transportFuel = 0; //3k MACRO_REFUEL_ACTIONS - GVAR(hooks)[] = {{-1.49,1.41,-.3}}; + GVAR(hooks)[] = {{-1.52,1.14,-1.18}}; GVAR(fuelCargo) = 10000; }; + class StorageBladder_base_F: NonStrategic { class ACE_Actions { class ACE_MainActions { From 6905e6f97f551aad26b9329924973610e8af1db7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 31 May 2016 01:53:28 -0500 Subject: [PATCH 216/268] Fix showHud if set before display loaded --- addons/common/XEH_postInit.sqf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 26f25d9ea40..9c25fea8a24 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -303,6 +303,15 @@ call FUNC(assignedItemFix); enableCamShake true; +//FUNC(showHud) needs to be refreshed if it was set during mission init +["ace_infoDisplayChanged", { + GVAR(showHudHash) params ["", "_masks"]; + if (!(_masks isEqualTo [])) then { + [] call FUNC(showHud); + }; +}] call CBA_fnc_addEventHandler; + + ////////////////////////////////////////////////// // Eventhandler to set player names ////////////////////////////////////////////////// From fa9384ffb45b1c9868c9d478f524644b83baba3e Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 31 May 2016 20:35:38 +0200 Subject: [PATCH 217/268] Fix vanilla CCIP on A-10 --- addons/aircraft/flightmodel_thunderbolt.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/aircraft/flightmodel_thunderbolt.hpp b/addons/aircraft/flightmodel_thunderbolt.hpp index fa99f404244..2446e166bca 100644 --- a/addons/aircraft/flightmodel_thunderbolt.hpp +++ b/addons/aircraft/flightmodel_thunderbolt.hpp @@ -20,4 +20,3 @@ envelope[] = {0,0,0.75,2.4,3.6,3.8,3.7,3.2,2.2,1.7,0.9}; thrustCoef[] = {1,1.2,1.3,1.25,1.06,1.01,1,0.92,0.75,0.65,0.5,0.25,0}; acceleration = 265; landingSpeed = 220; -gunAimDown = 0.087266463; From f3fbb6cbdd8f7486c2893c9d7c0d45c3843a4079 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 11 May 2016 11:18:07 +0200 Subject: [PATCH 218/268] Fixed HuntIR deployment --- addons/huntir/XEH_postInit.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/huntir/XEH_postInit.sqf b/addons/huntir/XEH_postInit.sqf index 0c518dfceab..038cd62051b 100644 --- a/addons/huntir/XEH_postInit.sqf +++ b/addons/huntir/XEH_postInit.sqf @@ -11,4 +11,3 @@ GVAR(ELEVAT) = 0.01; // Register fire event handler // Don't run for non players, as they are too dumb to launch huntirs anyway ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); -["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); From 7a8506cefd2a99a84fced531798f75936d9a1159 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Tue, 31 May 2016 23:12:57 +0200 Subject: [PATCH 219/268] Update handleFired header comment --- addons/huntir/functions/fnc_handleFired.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/huntir/functions/fnc_handleFired.sqf b/addons/huntir/functions/fnc_handleFired.sqf index 9a122c3f615..b7e8c2a0103 100644 --- a/addons/huntir/functions/fnc_handleFired.sqf +++ b/addons/huntir/functions/fnc_handleFired.sqf @@ -1,7 +1,7 @@ /* * Author: Norrin, Rocko, Ruthberg * - * Handles HuntIR projectiles. Called from the unified fired EH for all CAManBase. + * Handles HuntIR projectiles. Called from the unified fired EH for the local player. * * Arguments: * None. Parameters inherited from EFUNC(common,firedEH) From 6730d016c29324acbfa599f611c0ef129874e9ba Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 31 May 2016 21:14:43 +0200 Subject: [PATCH 220/268] Convert CfgPatches to new Eden format and CBA 2.4.1 compatibility --- addons/advanced_ballistics/config.cpp | 5 ++-- addons/ai/config.cpp | 5 ++-- addons/aircraft/config.cpp | 5 ++-- addons/apl/config.cpp | 4 +-- addons/atragmx/config.cpp | 6 ++-- addons/attach/config.cpp | 5 ++-- addons/backpacks/config.cpp | 5 ++-- addons/ballistics/config.cpp | 4 ++- addons/captives/config.cpp | 5 ++-- addons/cargo/config.cpp | 5 ++-- addons/common/config.cpp | 5 ++-- addons/concertina_wire/config.cpp | 4 ++- addons/dagr/config.cpp | 4 ++- addons/disarming/config.cpp | 5 ++-- addons/disposable/config.cpp | 5 ++-- addons/dragging/config.cpp | 5 ++-- addons/explosives/config.cpp | 5 ++-- addons/fastroping/config.cpp | 5 ++-- addons/fcs/config.cpp | 5 ++-- addons/finger/config.cpp | 37 +++++++++++++------------ addons/flashlights/config.cpp | 5 ++-- addons/flashsuppressors/config.cpp | 5 ++-- addons/fonts/config.cpp | 5 ++-- addons/frag/config.cpp | 32 +++++++++++---------- addons/gestures/config.cpp | 5 ++-- addons/gforces/config.cpp | 5 ++-- addons/goggles/config.cpp | 5 ++-- addons/grenades/config.cpp | 5 ++-- addons/hearing/config.cpp | 5 ++-- addons/hitreactions/config.cpp | 5 ++-- addons/huntir/config.cpp | 4 ++- addons/interact_menu/config.cpp | 5 ++-- addons/interaction/config.cpp | 5 ++-- addons/inventory/config.cpp | 5 ++-- addons/kestrel4500/config.cpp | 4 ++- addons/laserpointer/config.cpp | 5 ++-- addons/logistics_uavbattery/config.cpp | 5 ++-- addons/logistics_wirecutter/config.cpp | 5 ++-- addons/magazinerepack/config.cpp | 5 ++-- addons/main/config.cpp | 7 +++-- addons/map/config.cpp | 5 ++-- addons/map_gestures/config.cpp | 5 ++-- addons/maptools/config.cpp | 5 ++-- addons/markers/config.cpp | 5 ++-- addons/medical/config.cpp | 5 ++-- addons/medical_menu/config.cpp | 7 +++-- addons/microdagr/config.cpp | 5 ++-- addons/missionmodules/config.cpp | 5 ++-- addons/mk6mortar/config.cpp | 5 ++-- addons/modules/config.cpp | 5 ++-- addons/movement/config.cpp | 5 ++-- addons/mx2a/config.cpp | 4 ++- addons/nametags/config.cpp | 5 ++-- addons/nightvision/config.cpp | 5 ++-- addons/noidle/config.cpp | 5 ++-- addons/noradio/config.cpp | 5 ++-- addons/norearm/config.cpp | 5 ++-- addons/optics/config.cpp | 5 ++-- addons/optionsmenu/config.cpp | 5 ++-- addons/overheating/config.cpp | 5 ++-- addons/overpressure/config.cpp | 5 ++-- addons/parachute/config.cpp | 5 ++-- addons/rangecard/config.cpp | 6 ++-- addons/realisticnames/config.cpp | 5 ++-- addons/rearm/config.cpp | 5 ++-- addons/recoil/config.cpp | 5 ++-- addons/refuel/config.cpp | 5 ++-- addons/reload/config.cpp | 5 ++-- addons/reloadlaunchers/config.cpp | 5 ++-- addons/repair/config.cpp | 5 ++-- addons/respawn/config.cpp | 5 ++-- addons/safemode/config.cpp | 5 ++-- addons/sandbag/config.cpp | 4 ++- addons/scopes/config.cpp | 5 ++-- addons/sitting/config.cpp | 5 ++-- addons/slideshow/config.cpp | 1 - addons/smallarms/config.cpp | 5 ++-- addons/spectator/config.cpp | 5 ++-- addons/spottingscope/config.cpp | 4 ++- addons/switchunits/config.cpp | 5 ++-- addons/tacticalladder/config.cpp | 4 ++- addons/tagging/config.cpp | 5 ++-- addons/thermals/config.cpp | 5 ++-- addons/trenches/config.cpp | 5 ++-- addons/tripod/config.cpp | 4 ++- addons/ui/config.cpp | 5 ++-- addons/vector/config.cpp | 5 ++-- addons/vehiclelock/config.cpp | 4 ++- addons/vehicles/config.cpp | 5 ++-- addons/viewdistance/config.cpp | 5 ++-- addons/weaponselect/config.cpp | 5 ++-- addons/weather/config.cpp | 4 ++- addons/winddeflection/config.cpp | 5 ++-- addons/yardage450/config.cpp | 4 ++- addons/zeus/config.cpp | 5 ++-- extras/blank/config.cpp | 5 ++-- optionals/compat_adr_97/config.cpp | 6 ++-- optionals/compat_r3f/config.cpp | 4 ++- optionals/compat_rh_acc/config.cpp | 4 ++- optionals/compat_rh_de/config.cpp | 4 ++- optionals/compat_rh_m4/config.cpp | 4 ++- optionals/compat_rh_pdw/config.cpp | 4 ++- optionals/compat_rhs_afrf3/config.cpp | 4 ++- optionals/compat_rhs_usf3/config.cpp | 4 ++- optionals/compat_rksl_pm_ii/config.cpp | 4 ++- optionals/compat_sma3_iansky/config.cpp | 4 ++- optionals/noactionmenu/config.cpp | 5 ++-- optionals/server/config.cpp | 5 ++-- optionals/tracers/config.cpp | 31 +++++++++++---------- 109 files changed, 371 insertions(+), 239 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 3f974b18df4..5ba098d2cea 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_ballistics", "ace_weather"}; - author[] = {"Ruthberg"}; - authorUrl = "https://github.com/ulteq"; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index fdcb6afe9dc..17c83542a5e 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi","commy2"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp index 2ce2d0dc109..0f79bc4388c 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/apl/config.cpp b/addons/apl/config.cpp index 089f4bffe0a..da1da4b665f 100644 --- a/addons/apl/config.cpp +++ b/addons/apl/config.cpp @@ -6,8 +6,8 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; - author[] = {"Bohemia Interactive"}; - authorUrl = "http://ace3mod.com"; + author = "Bohemia Interactive"; + url = "https://www.bistudio.com/"; VERSION_CONFIG; }; }; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 3abe32ba34d..9085ea99489 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_ATragMX"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_common", "ACE_weather"}; - author = "Ruthberg"; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; @@ -14,4 +16,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscTitles.hpp" \ No newline at end of file +#include "RscTitles.hpp" diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 0ecc37788a2..29fb605ddba 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_IR_Strobe_Item"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index ddc76399212..92d8850cdab 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"bux","commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"bux","commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp index 768ba63e025..5b3513627d9 100644 --- a/addons/ballistics/config.cpp +++ b/addons/ballistics/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index c87408b3410..ab8a31688b7 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_CableTie"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_Interaction"}; - author[] = {"commy2", "KoffeinFlummi"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 1aefa496163..bcd243cf7be 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2", "Glowbal"}; - authorUrl = "https://ace3mod.com/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "Glowbal"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index cbe5c5df6a7..ccfc806eeb3 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main","ace_modules"}; - author[] = {"KoffeinFlummi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = CSTRING(ACETeam); + authors[] = {"KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG_COMMON; }; }; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index 06b7bf5d86b..a360d2c51b6 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_interaction"}; - author[] = {"Rocko", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rocko", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index 9f46660aaa2..c03bfb7a1a0 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_DAGR"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_weather"}; - author[] = {"Rosuto", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rosuto", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index 00f8204b09a..f67a73b8409 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_DebugPotato"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_Interaction"}; - author[] = {"PabstMirror"}; - authorUrl = "https://github.com/PabstMirror/"; + author = ECSTRING(common,ACETeam); + authors[] = {"PabstMirror"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index 0f256824d72..b06edfdee6c 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 0c9cfb3c43e..ec3ad9735fe 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Garth 'L-H' de Wet", "commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Garth 'L-H' de Wet", "commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 3fc047fa6a4..990b5bf209d 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Garth 'L-H' de Wet"}; - authorUrl = "http://garth.snakebiteink.co.za/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Garth 'L-H' de Wet"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index 7275741f40f..d143979e3f5 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"KoffeinFlummi", "BaerMitUmlaut"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi", "BaerMitUmlaut"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 12edf02ba3d..1a2b0b5ce34 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 2cc3be5dddc..324db481dd0 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -1,18 +1,19 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {QGVAR(moduleSettings)}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"Drill"}; - authorUrl = "https://github.com/TheDrill/"; - VERSION_CONFIG; - }; -}; - - -#include "ACE_Settings.hpp" -#include "CfgEventHandlers.hpp" -#include "CfgVehicles.hpp" +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {QGVAR(moduleSettings)}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Drill"}; + url = "http://ace3mod.com"; + VERSION_CONFIG; + }; +}; + + +#include "ACE_Settings.hpp" +#include "CfgEventHandlers.hpp" +#include "CfgVehicles.hpp" diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp index b34c4b80000..75796d5ab52 100644 --- a/addons/flashlights/config.cpp +++ b/addons/flashlights/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Flashlight_MX991", "ACE_Flashlight_KSF1", "ACE_Flashlight_XL50"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"voiper"}; - authorUrl = "https://github.com/voiperr/"; + author = ECSTRING(common,ACETeam); + authors[] = {"voiper"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp index b8e0c1e120d..3bb19829401 100644 --- a/addons/flashsuppressors/config.cpp +++ b/addons/flashsuppressors/config.cpp @@ -14,8 +14,9 @@ class CfgPatches { }; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/fonts/config.cpp b/addons/fonts/config.cpp index f37dba286ce..cfab6fa0477 100644 --- a/addons/fonts/config.cpp +++ b/addons/fonts/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; - author[] = {"jaynus"}; - authorUrl = "https://github.com/jaynus/"; + author = ECSTRING(common,ACETeam); + authors[] = {"jaynus"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 16af88bfc4c..38b6d3f93e1 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -1,15 +1,17 @@ -#include "script_component.hpp" -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"Nou"}; - VERSION_CONFIG; - }; -}; - -#include "CfgEventhandlers.hpp" -#include "CfgAmmo.hpp" -#include "ACE_Settings.hpp" \ No newline at end of file +#include "script_component.hpp" +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Nou"}; + url = "http://ace3mod.com"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventhandlers.hpp" +#include "CfgAmmo.hpp" +#include "ACE_Settings.hpp" diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index ce60d26545e..5cdf759cedb 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interact_menu"}; - author[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; - authorUrl = "https://github.com/jokoho48"; + author = ECSTRING(common,ACETeam); + authors[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index d431ab2b3c5..9b79a0adce1 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi", "esteldunedain"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi", "esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 7ac4048748a..99e1aeee7d4 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -7,8 +7,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Garth 'L-H' de Wet"}; - authorUrl = "http://garth.snakebiteink.co.za/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Garth 'L-H' de Wet"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 2f9e631fe14..570fa921a4e 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 5d130e589a8..74bbe22de91 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_EarPlugs"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"}; - author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp index 77b68b77f5c..c25787f3a21 100644 --- a/addons/hitreactions/config.cpp +++ b/addons/hitreactions/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 5fb106ad2d4..3b33482e4b2 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_HuntIR_monitor"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Norrin", "Rocko", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Norrin", "Rocko", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 8909c3d685a..a0f1841dd08 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"NouberNou", "esteldunedain"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"NouberNou", "esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 2413256bf43..65f88e4504c 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interact_menu"}; - author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp index f0982a46b47..fe1f7b24471 100644 --- a/addons/inventory/config.cpp +++ b/addons/inventory/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Pabst Mirror, commy2"}; - authorUrl = "https://github.com/PabstMirror/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Pabst Mirror, commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp index 95a533fd9f8..668ed6252bb 100644 --- a/addons/kestrel4500/config.cpp +++ b/addons/kestrel4500/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Kestrel4500"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_common", "ACE_weather"}; - author[] = {ECSTRING(common,ACETeam), "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {ECSTRING(common,ACETeam), "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index cbb3105696c..e9dce0955cc 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_acc_pointer_red","ACE_acc_pointer_green","ACE_acc_pointer_green_IR"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index c6123e590fd..01997428fe2 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_UAVBattery"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"marc_book"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"marc_book"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index d83cff40356..9cf52a8a220 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_wirecutter"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"gpgpgpgp", "PabstMirror"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"gpgpgpgp", "PabstMirror"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 47c0ac889cf..d4694858325 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2","esteldunedain"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 7b15f0c8f02..8c49885de6d 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -566,9 +566,10 @@ class CfgPatches { "cba_xeh", "cba_xeh_a3", "cba_jr" - }; - author[] = {ECSTRING(common,ACETeam)}; - authorUrl = "http://ace3mod.com/"; + }; + author = ECSTRING(common,ACETeam); + authors[] = {ECSTRING(common,ACETeam)}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/map/config.cpp b/addons/map/config.cpp index e8a38d1222b..d6da6484355 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"KoffeinFlummi","Rocko","esteldunedain"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","Rocko","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index 72e7f820787..0987a1a9874 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Dslyecxi", "MikeMatrix"}; - authorUrl = "https://github.com/MikeMatrix"; + author = ECSTRING(common,ACETeam); + authors[] = {"Dslyecxi", "MikeMatrix"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 1e82cd2269d..5e5f3c4af65 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_MapTools"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"esteldunedain"}; - authorUrl = "https://github.com/esteldunedain/"; + author = ECSTRING(common,ACETeam); + authors[] = {"esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/markers/config.cpp b/addons/markers/config.cpp index 24d3c778d8a..50ece64a018 100644 --- a/addons/markers/config.cpp +++ b/addons/markers/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index d40fb9e6a6f..63c96b12b60 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction", "ace_apl"}; - author[] = {"Glowbal", "KoffeinFlummi"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal", "KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 27e0db03b99..192b142a0ef 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -6,9 +6,10 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_medical"}; - author[] = {$STR_ACE_Common_ACETeam, "Glowbal"}; - authorUrl = "http://ace3mod.com"; - VERSION_CONFIG; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal"}; + url = "http://ace3mod.com"; + VERSION_CONFIG }; }; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 7a39df8980d..3f05a6786e6 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_microDAGR"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"PabstMirror"}; - authorUrl = "https://github.com/PabstMirror/"; + author = ECSTRING(common,ACETeam); + authors[] = {"PabstMirror"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp index c373b846159..5bedf91f674 100644 --- a/addons/missionmodules/config.cpp +++ b/addons/missionmodules/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Glowbal"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 102875a1959..7d4113b4a1d 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -7,8 +7,9 @@ class CfgPatches { weapons[] = {"ACE_RangeTable_82mm","ace_mortar_82mm"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"PabstMirror","Grey","VKing"}; - authorUrl = "https://github.com/acemod"; + author = ECSTRING(common,ACETeam); + authors[] = {"PabstMirror","Grey","VKing"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index d25e193d327..75267bf6e98 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; - author[] = {"Glowbal"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 8ea42fbf0c9..d7496ab70f2 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi","Tachii"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","KoffeinFlummi","Tachii"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/mx2a/config.cpp b/addons/mx2a/config.cpp index 45b1643ed2d..0d56e4e3e96 100644 --- a/addons/mx2a/config.cpp +++ b/addons/mx2a/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_MX2A"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl"}; - author[] = {"Spooner", "tcp"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Spooner", "tcp"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index a2d38254f1e..a1e3653c971 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = { "commy2", "esteldunedain" }; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = { "commy2", "esteldunedain" }; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 1edeca6e5bc..171424001bf 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_NVG_Gen1", "ACE_NVG_Gen2", /*"ACE_NVG_Gen3",*/ "ACE_NVG_Gen4", "ACE_NVG_Wide"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/noidle/config.cpp b/addons/noidle/config.cpp index 3c2ac1a9d63..e90c35897a2 100644 --- a/addons/noidle/config.cpp +++ b/addons/noidle/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/noradio/config.cpp b/addons/noradio/config.cpp index 86697535f81..73a90b7a8cd 100644 --- a/addons/noradio/config.cpp +++ b/addons/noradio/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/norearm/config.cpp b/addons/norearm/config.cpp index 34772586127..a779fe160cc 100644 --- a/addons/norearm/config.cpp +++ b/addons/norearm/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index 79f71842eeb..b172bc963e9 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -18,8 +18,9 @@ class CfgPatches { }; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Taosenai","KoffeinFlummi","commy2"}; - authorUrl = "http://www.ryanschultz.org/tmr/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Taosenai","KoffeinFlummi","commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index 4acfef321f2..be3e9e043bd 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Glowbal", "PabstMirror"}; - authorUrl = "http://github.com/Glowbal"; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal", "PabstMirror"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 673edcf77f0..152c344d88a 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_SpareBarrel"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 0524f6e4c93..c2d17d7c422 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi","esteldunedain"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 3671177e28f..675ad064b52 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -7,8 +7,9 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; VERSION_CONFIG; - author[] = {"Garth 'LH' de Wet"}; - authorUrl = "http://garth.snakebiteink.co.za/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Garth 'LH' de Wet"}; + url = "http://ace3mod.com"; }; }; diff --git a/addons/rangecard/config.cpp b/addons/rangecard/config.cpp index abe4e859f2c..ba02625deb8 100644 --- a/addons/rangecard/config.cpp +++ b/addons/rangecard/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_RangeCard"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ACE_Advanced_Ballistics"}; - author = "Ruthberg"; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; @@ -14,4 +16,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscTitles.hpp" \ No newline at end of file +#include "RscTitles.hpp" diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index 6a8ea592900..14b39629612 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi","TaoSensai","commy2"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi","TaoSensai","commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index c15721c9df0..cefed5b242a 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"GitHawk", "Jonpas"}; - authorUrl = "https://ace3mod.com"; + author = ECSTRING(common,ACETeam); + authors[] = {"GitHawk", "Jonpas"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index 5b8002bc37c..7076914f923 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 6140cefe8cd..7d6585eedb7 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_refuel_fuelNozzle"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"GitHawk"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"GitHawk"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 86ba809a934..0deed18d3cc 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2","KoffeinFlummi","esteldunedain"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 6a04f6339a3..7fff403502a 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index d377342adfc..39bc0c152cf 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2", "Glowbal", "Jonpas"}; - authorUrl = "https://ace3mod.com"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2", "Glowbal", "Jonpas"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 4a23d1f6506..1ce01c3a729 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Rallypoint_West", "ACE_Rallypoint_East", "ACE_Rallypoint_Independent", "ACE_Rallypoint_West_Base", "ACE_Rallypoint_East_Base", "ACE_Rallypoint_Independent_Base"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = { "ace_common" }; - author[] = { "bux578", "commy2" }; - authorUrl = "https://github.com/bux578/"; + author = ECSTRING(common,ACETeam); + authors[] = { "bux578", "commy2" }; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/safemode/config.cpp b/addons/safemode/config.cpp index 8371e7f35ff..52f85d10e09 100644 --- a/addons/safemode/config.cpp +++ b/addons/safemode/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 6b7ce1a456f..053b87f775a 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Sandbag", "ACE_Sandbag_empty"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Rocko", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rocko", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 42be2830442..fc055ca7035 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = { "ace_common" }; - author[] = {"KoffeinFlummi", "esteldunedain"}; - authorUrl = "https://github.com/KoffeinFlummi"; + author = ECSTRING(common,ACETeam); + authors[] = {"KoffeinFlummi", "esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 96d3edab7b2..a44c36293b3 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Jonpas"}; - authorUrl = "https://github.com/jonpas"; + author = ECSTRING(common,ACETeam); + authors[] = {"Jonpas"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/slideshow/config.cpp b/addons/slideshow/config.cpp index 3af3bd5354e..b196022d9b0 100644 --- a/addons/slideshow/config.cpp +++ b/addons/slideshow/config.cpp @@ -7,7 +7,6 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; author[]= {"Jonpas", "DaC"}; - authorUrl = "https://github.com/jonpas"; VERSION_CONFIG; }; }; diff --git a/addons/smallarms/config.cpp b/addons/smallarms/config.cpp index e5731df7b33..ba2864c8f0f 100644 --- a/addons/smallarms/config.cpp +++ b/addons/smallarms/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"TaoSensai", "KoffeinFlummi"}; - authorUrl = "https://github.com/Taosenai/tmr"; + author = ECSTRING(common,ACETeam); + authors[] = {"TaoSensai", "KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index 6e32ed04133..e402899a23f 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"F3 Project","Head","SilentSpike","voiper"}; - authorUrl = "https://github.com/acemod"; + author = ECSTRING(common,ACETeam); + authors[] = {"F3 Project","Head","SilentSpike","voiper"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index c3541eed39f..c74fa182ff8 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_SpottingScope"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_interaction"}; - author[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index 22a4924709b..c862982522d 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"bux578"}; - authorUrl = "https://github.com/bux578/"; + author = ECSTRING(common,ACETeam); + authors[] = {"bux578"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 02740639fe5..9b42afab16d 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_interaction"}; - author[] = {"Rocko", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rocko", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index dcd1fb845de..6b0fa413485 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_SpraypaintBlack", "ACE_SpraypaintRed", "ACE_SpraypaintGreen", "ACE_SpraypaintBlue"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"BaerMitUmlaut","esteldunedain"}; - authorUrl = "https://github.com/BaerMitUmlaut"; + author = ECSTRING(common,ACETeam); + authors[] = {"BaerMitUmlaut","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/thermals/config.cpp b/addons/thermals/config.cpp index 07d19d1b507..076de593359 100644 --- a/addons/thermals/config.cpp +++ b/addons/thermals/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"[TF]Nkey"}; - authorUrl = "https://github.com/michail-nikolaev/"; + author = ECSTRING(common,ACETeam); + authors[] = {"[TF]Nkey"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index e1b14fa37c0..bb38fecf7fa 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_EntrenchingTool"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Grey", "esteldunedain"}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {"Grey", "esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 80379019c35..a94c85408f3 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Tripod"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"Rocko", "Scubaman3D", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Rocko", "Scubaman3D", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index d6fbed61ae3..b0aa8386daa 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"VKing", "Jonpas"}; - authorUrl = "http://ace3mod.com/"; + author = ECSTRING(common,ACETeam); + authors[] = {"VKing", "Jonpas"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index e4cdf9a55b7..b54b1ef554d 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Vector", "ACE_VectorDay"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Ghost","Hamburger SV","commy2","bux578"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Ghost","Hamburger SV","commy2","bux578"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 9ee1343bc87..5ee673e5dad 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"PabstMirror"}; + author = ECSTRING(common,ACETeam); + url = "http://ace3mod.com"; + authors[] = {"PabstMirror"}; authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; }; diff --git a/addons/vehicles/config.cpp b/addons/vehicles/config.cpp index a3641a7b5ba..ce7e00c493a 100644 --- a/addons/vehicles/config.cpp +++ b/addons/vehicles/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi"}; - authorUrl = "https://github.com/KoffeinFlummi/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","KoffeinFlummi"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 2de8b2c9549..887013ef168 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Winter", "Jonpas", "Arkhir"}; - authorUrl = "https://github.com/Winter259"; + author = ECSTRING(common,ACETeam); + authors[] = {"Winter", "Jonpas", "Arkhir"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 231d167cd0b..78314a60631 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi","esteldunedain"}; - authorUrl = "https://github.com/commy2/"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 50e2f8ace03..d8d3c68078c 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index a7bedbb9eff..46d25b37074 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_weather"}; - author[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; - authorUrl = "http://ace3mod.com/"; + author = ECSTRING(common,ACETeam); + authors[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/yardage450/config.cpp b/addons/yardage450/config.cpp index 4d0f820aed6..714c16420ab 100644 --- a/addons/yardage450/config.cpp +++ b/addons/yardage450/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {"ACE_Yardage450"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_laser"}; - author[] = {"Spooner", "tcp", "Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Spooner", "tcp", "Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index f41769e7270..58db862e44f 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"SilentSpike"}; - authorUrl = "https://github.com/SilentSpike"; + author = ECSTRING(common,ACETeam); + authors[] = {"SilentSpike"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; // Use additional cfgPatches to contextually remove modules from zeus diff --git a/extras/blank/config.cpp b/extras/blank/config.cpp index a7b7bae6df2..81dd262f9b3 100644 --- a/extras/blank/config.cpp +++ b/extras/blank/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {""}; - authorUrl = ""; + author = ECSTRING(common,ACETeam); + authors[] = {""}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_adr_97/config.cpp b/optionals/compat_adr_97/config.cpp index 0b879124aa6..d3d50d35754 100644 --- a/optionals/compat_adr_97/config.cpp +++ b/optionals/compat_adr_97/config.cpp @@ -6,11 +6,13 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"A3_Weapons_F_Mod"}; - author[] = {"Nic547"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Nic547"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; #include "CfgWeapons.hpp" #include "CfgAmmo.hpp" -#include "CfgMagazines.hpp" \ No newline at end of file +#include "CfgMagazines.hpp" diff --git a/optionals/compat_r3f/config.cpp b/optionals/compat_r3f/config.cpp index d5dbc8e68cc..1c12205347c 100644 --- a/optionals/compat_r3f/config.cpp +++ b/optionals/compat_r3f/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"R3F_Armes", "R3F_Acc"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_acc/config.cpp b/optionals/compat_rh_acc/config.cpp index 9f563bd157a..7bff1dbb186 100644 --- a/optionals/compat_rh_acc/config.cpp +++ b/optionals/compat_rh_acc/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"RH_acc"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_de/config.cpp b/optionals/compat_rh_de/config.cpp index 3d82eab05ae..b444be8f2d6 100644 --- a/optionals/compat_rh_de/config.cpp +++ b/optionals/compat_rh_de/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"RH_de_cfg"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_m4/config.cpp b/optionals/compat_rh_m4/config.cpp index 9c28be4f89f..578f01620c8 100644 --- a/optionals/compat_rh_m4/config.cpp +++ b/optionals/compat_rh_m4/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"RH_m4_cfg"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_pdw/config.cpp b/optionals/compat_rh_pdw/config.cpp index 4aed0e62418..11ba26b62a9 100644 --- a/optionals/compat_rh_pdw/config.cpp +++ b/optionals/compat_rh_pdw/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"RH_PDW"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index 82873b01e22..d253199607c 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; - author[]={"Ruthberg", "GitHawk", "BaerMitUmlaut"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index ef173ad1c6c..a6de7d414b8 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; - author[]={"Ruthberg", "GitHawk", "BaerMitUmlaut"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rksl_pm_ii/config.cpp b/optionals/compat_rksl_pm_ii/config.cpp index c3ed720f8bc..201a306e7bb 100644 --- a/optionals/compat_rksl_pm_ii/config.cpp +++ b/optionals/compat_rksl_pm_ii/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"RKSL_PMII"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/compat_sma3_iansky/config.cpp b/optionals/compat_sma3_iansky/config.cpp index 4dfda508052..80054babce1 100644 --- a/optionals/compat_sma3_iansky/config.cpp +++ b/optionals/compat_sma3_iansky/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"iansky_opt"}; - author[]={"Ruthberg"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Ruthberg"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/noactionmenu/config.cpp b/optionals/noactionmenu/config.cpp index 763665660ba..3a6627712f9 100644 --- a/optionals/noactionmenu/config.cpp +++ b/optionals/noactionmenu/config.cpp @@ -7,8 +7,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; + author = ECSTRING(common,ACETeam); + authors[] = {"commy2"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/server/config.cpp b/optionals/server/config.cpp index 9cfcb350123..58ac3af1041 100644 --- a/optionals/server/config.cpp +++ b/optionals/server/config.cpp @@ -6,8 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Glowbal"}; - authorUrl = "https://github.com/Glowbal/"; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal"}; + url = "http://ace3mod.com"; VERSION_CONFIG; }; }; diff --git a/optionals/tracers/config.cpp b/optionals/tracers/config.cpp index 7ea5992f144..08e955e5961 100644 --- a/optionals/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -1,15 +1,16 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_ballistics"}; - author[] = {"ACE2 Team"}; - authorUrl = "https://www.ace3mod.com"; - VERSION_CONFIG; - }; -}; - -#include "CfgAmmo.hpp" +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_ballistics"}; + author = ECSTRING(common,ACETeam); + authors[] = {"ACE2 Team"}; + url = "http://ace3mod.com"; + VERSION_CONFIG; + }; +}; + +#include "CfgAmmo.hpp" From 1331265e65d05c45697aca18d7000df1bac4d141 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 1 Jun 2016 13:49:10 +0200 Subject: [PATCH 221/268] Move url into a macro --- addons/advanced_ballistics/config.cpp | 2 +- addons/ai/config.cpp | 2 +- addons/aircraft/config.cpp | 2 +- addons/apl/config.cpp | 2 +- addons/atragmx/config.cpp | 2 +- addons/attach/config.cpp | 2 +- addons/backpacks/config.cpp | 2 +- addons/ballistics/config.cpp | 2 +- addons/captives/config.cpp | 2 +- addons/cargo/config.cpp | 2 +- addons/common/config.cpp | 2 +- addons/concertina_wire/config.cpp | 2 +- addons/dagr/config.cpp | 2 +- addons/disarming/config.cpp | 2 +- addons/disposable/config.cpp | 2 +- addons/dragging/config.cpp | 2 +- addons/explosives/config.cpp | 2 +- addons/fastroping/config.cpp | 2 +- addons/fcs/config.cpp | 2 +- addons/finger/config.cpp | 2 +- addons/flashlights/config.cpp | 2 +- addons/flashsuppressors/config.cpp | 2 +- addons/fonts/config.cpp | 2 +- addons/frag/config.cpp | 2 +- addons/gestures/config.cpp | 2 +- addons/gforces/config.cpp | 2 +- addons/goggles/config.cpp | 2 +- addons/grenades/config.cpp | 2 +- addons/hearing/config.cpp | 2 +- addons/hitreactions/config.cpp | 2 +- addons/huntir/config.cpp | 2 +- addons/interact_menu/config.cpp | 2 +- addons/interaction/config.cpp | 2 +- addons/inventory/config.cpp | 2 +- addons/kestrel4500/config.cpp | 2 +- addons/laserpointer/config.cpp | 2 +- addons/logistics_uavbattery/config.cpp | 2 +- addons/logistics_wirecutter/config.cpp | 2 +- addons/magazinerepack/config.cpp | 2 +- addons/main/config.cpp | 1180 +++++++++++------------ addons/main/script_mod.hpp | 35 +- addons/map/config.cpp | 2 +- addons/map_gestures/config.cpp | 2 +- addons/maptools/config.cpp | 2 +- addons/markers/config.cpp | 2 +- addons/medical/config.cpp | 2 +- addons/medical_menu/config.cpp | 2 +- addons/microdagr/config.cpp | 2 +- addons/missionmodules/config.cpp | 2 +- addons/mk6mortar/config.cpp | 2 +- addons/modules/config.cpp | 2 +- addons/movement/config.cpp | 2 +- addons/mx2a/config.cpp | 2 +- addons/nametags/config.cpp | 2 +- addons/nightvision/config.cpp | 2 +- addons/noidle/config.cpp | 2 +- addons/noradio/config.cpp | 2 +- addons/norearm/config.cpp | 2 +- addons/optics/config.cpp | 2 +- addons/optionsmenu/config.cpp | 2 +- addons/overheating/config.cpp | 2 +- addons/overpressure/config.cpp | 2 +- addons/parachute/config.cpp | 2 +- addons/rangecard/config.cpp | 2 +- addons/realisticnames/config.cpp | 2 +- addons/rearm/config.cpp | 2 +- addons/recoil/config.cpp | 2 +- addons/refuel/config.cpp | 2 +- addons/reload/config.cpp | 2 +- addons/reloadlaunchers/config.cpp | 2 +- addons/repair/config.cpp | 2 +- addons/respawn/config.cpp | 2 +- addons/safemode/config.cpp | 2 +- addons/sandbag/config.cpp | 2 +- addons/scopes/config.cpp | 2 +- addons/sitting/config.cpp | 2 +- addons/smallarms/config.cpp | 2 +- addons/spectator/config.cpp | 2 +- addons/spottingscope/config.cpp | 2 +- addons/switchunits/config.cpp | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/tagging/config.cpp | 2 +- addons/thermals/config.cpp | 2 +- addons/trenches/config.cpp | 2 +- addons/tripod/config.cpp | 2 +- addons/ui/config.cpp | 2 +- addons/vector/config.cpp | 2 +- addons/vehiclelock/config.cpp | 2 +- addons/vehicles/config.cpp | 2 +- addons/viewdistance/config.cpp | 2 +- addons/weaponselect/config.cpp | 2 +- addons/weather/config.cpp | 2 +- addons/winddeflection/config.cpp | 2 +- addons/yardage450/config.cpp | 2 +- addons/zeus/config.cpp | 2 +- extras/blank/config.cpp | 2 +- optionals/compat_adr_97/config.cpp | 2 +- optionals/compat_r3f/config.cpp | 2 +- optionals/compat_rh_acc/config.cpp | 2 +- optionals/compat_rh_de/config.cpp | 2 +- optionals/compat_rh_m4/config.cpp | 2 +- optionals/compat_rh_pdw/config.cpp | 2 +- optionals/compat_rhs_afrf3/config.cpp | 2 +- optionals/compat_rhs_usf3/config.cpp | 2 +- optionals/compat_rksl_pm_ii/config.cpp | 2 +- optionals/compat_sma3_iansky/config.cpp | 2 +- optionals/noactionmenu/config.cpp | 2 +- optionals/server/config.cpp | 2 +- optionals/tracers/config.cpp | 2 +- 109 files changed, 716 insertions(+), 713 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 5ba098d2cea..e214875f5c7 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics", "ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index 17c83542a5e..1db145a8940 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp index 0f79bc4388c..4e25a1fb10a 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/apl/config.cpp b/addons/apl/config.cpp index da1da4b665f..8d78ca2de3b 100644 --- a/addons/apl/config.cpp +++ b/addons/apl/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; author = "Bohemia Interactive"; - url = "https://www.bistudio.com/"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 9085ea99489..37e5e63d6c6 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 29fb605ddba..573bc699ba3 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index 92d8850cdab..07b456b2230 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux","commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp index 5b3513627d9..6f09728adee 100644 --- a/addons/ballistics/config.cpp +++ b/addons/ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index ab8a31688b7..b38b90ab236 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index bcd243cf7be..02fa224a1a4 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index ccfc806eeb3..89af49afd83 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main","ace_modules"}; author = CSTRING(ACETeam); authors[] = {"KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG_COMMON; }; }; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index a360d2c51b6..1824889d637 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index c03bfb7a1a0..30b0e033cdd 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Rosuto", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index f67a73b8409..04690860dc8 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index b06edfdee6c..bc8a3eedfda 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index ec3ad9735fe..cd67eb4c114 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet", "commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 990b5bf209d..4419c5e2e01 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index d143979e3f5..478ac20b33c 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "BaerMitUmlaut"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 1a2b0b5ce34..1c98a210ef0 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 324db481dd0..16fe62ff255 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Drill"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp index 75796d5ab52..1a1e84e9b65 100644 --- a/addons/flashlights/config.cpp +++ b/addons/flashlights/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"voiper"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp index 3bb19829401..688a9c1eb1a 100644 --- a/addons/flashsuppressors/config.cpp +++ b/addons/flashsuppressors/config.cpp @@ -16,7 +16,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/fonts/config.cpp b/addons/fonts/config.cpp index cfab6fa0477..5d7ec5cffcd 100644 --- a/addons/fonts/config.cpp +++ b/addons/fonts/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"jaynus"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 38b6d3f93e1..07f6208c4fb 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Nou"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index 5cdf759cedb..f3c1c37f405 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index 9b79a0adce1..5a8c7cfc360 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 99e1aeee7d4..cc1d5f1a430 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 570fa921a4e..480e6548356 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 74bbe22de91..ae9d7477b96 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp index c25787f3a21..5308b36a8f8 100644 --- a/addons/hitreactions/config.cpp +++ b/addons/hitreactions/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 3b33482e4b2..9257d14cd03 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Norrin", "Rocko", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index a0f1841dd08..fb7383a0384 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"NouberNou", "esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 65f88e4504c..653980c9d81 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp index fe1f7b24471..1ad08febbf4 100644 --- a/addons/inventory/config.cpp +++ b/addons/inventory/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Pabst Mirror, commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp index 668ed6252bb..093fcdaa9a9 100644 --- a/addons/kestrel4500/config.cpp +++ b/addons/kestrel4500/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index e9dce0955cc..c99397c02e1 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index 01997428fe2..ed64ebf85fc 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"marc_book"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index 9cf52a8a220..4301b16e294 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"gpgpgpgp", "PabstMirror"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index d4694858325..011414814bb 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 8c49885de6d..d579dd6fca1 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -1,592 +1,592 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { - // Vanilla - "3den", - "a3_air_f", - "a3_air_f_beta", - "a3_air_f_beta_heli_attack_01", - "a3_air_f_beta_heli_attack_02", - "a3_air_f_beta_heli_transport_01", - "a3_air_f_beta_heli_transport_02", - "a3_air_f_beta_parachute_01", - "a3_air_f_beta_parachute_02", - "a3_air_f_epb_heli_light_03", - "a3_air_f_epc_plane_cas_01", - "a3_air_f_epc_plane_cas_02", - "a3_air_f_epc_plane_fighter_03", - "a3_air_f_gamma_plane_fighter_03", - "a3_air_f_gamma_uav_01", - "a3_air_f_gamma_uav_02", - "a3_air_f_heli", - "a3_air_f_heli_heli_attack_01", - "a3_air_f_heli_heli_attack_02", - "a3_air_f_heli_heli_light_01", - "a3_air_f_heli_heli_light_02", - "a3_air_f_heli_heli_light_03", - "a3_air_f_heli_heli_transport_01", - "a3_air_f_heli_heli_transport_02", - "a3_air_f_heli_heli_transport_03", - "a3_air_f_heli_heli_transport_04", - "a3_air_f_heli_light_01", - "a3_air_f_heli_light_02", - "a3_animals_f", - "a3_animals_f_animconfig", - "a3_animals_f_chicken", - "a3_animals_f_dog", - "a3_animals_f_fishes", - "a3_animals_f_goat", - "a3_animals_f_kestrel", - "a3_animals_f_rabbit", - "a3_animals_f_seagull", - "a3_animals_f_sheep", - "a3_animals_f_snakes", - "a3_animals_f_turtle", - "a3_anims_f", - "a3_anims_f_config_sdr", - "a3_anims_f_epa", - "a3_anims_f_epc", - "a3_anims_f_exp_a", - "a3_anims_f_heli", - "a3_anims_f_kart", - "a3_anims_f_mark_deployment", - "a3_armor_f", - "a3_armor_f_amv", - "a3_armor_f_apc_wheeled_03", - "a3_armor_f_beta", - "a3_armor_f_beta_apc_tracked_02", - "a3_armor_f_epb_apc_tracked_03", - "a3_armor_f_epb_mbt_03", - "a3_armor_f_epc_mbt_01", - "a3_armor_f_marid", - "a3_armor_f_panther", - "a3_armor_f_slammer", - "a3_armor_f_t100k", - "a3_baseconfig_f", - "a3_boat_f", - "a3_boat_f_beta_boat_armed_01", - "a3_boat_f_beta_boat_transport_01", - "a3_boat_f_boat_armed_01", - "a3_boat_f_boat_transport_01", - "a3_boat_f_civilian_boat", - "a3_boat_f_epc_submarine_01_f", - "a3_boat_f_gamma_boat_transport_01", - "a3_boat_f_heli_boat_armed_01", - "a3_boat_f_heli_sdv_01", - "a3_boat_f_sdv_01", - "a3_boat_f_trawler", - "a3_cargoposes_f", - "a3_cargoposes_f_heli", - "a3_characters_f", - "a3_characters_f_beta", - "a3_characters_f_blufor", - "a3_characters_f_bootcamp", - "a3_characters_f_bootcamp_common", - "a3_characters_f_civil", - "a3_characters_f_common", - "a3_characters_f_epa", - "a3_characters_f_epb", - "a3_characters_f_epb_heads", - "a3_characters_f_epc", - "a3_characters_f_gamma", - "a3_characters_f_heads", - "a3_characters_f_indep", - "a3_characters_f_kart", - "a3_characters_f_mark", - "a3_characters_f_opfor", - "a3_characters_f_proxies", - "a3_data_f", - "a3_data_f_bootcamp", - "a3_data_f_curator", - "a3_data_f_curator_characters", - "a3_data_f_curator_eagle", - "a3_data_f_curator_intel", - "a3_data_f_curator_misc", - "a3_data_f_curator_respawn", - "a3_data_f_curator_virtual", - "a3_data_f_exp_a", - "a3_data_f_exp_a_virtual", - "a3_data_f_exp_b", - "a3_data_f_heli", - "a3_data_f_hook", - "a3_data_f_kart", - "a3_data_f_kart_particleeffects", - "a3_data_f_mark", - "a3_data_f_particleeffects", - "a3_dubbing_radio_f", - "a3_editor_f", - "a3_functions_f", - "a3_functions_f_bootcamp", - "a3_functions_f_curator", - "a3_functions_f_epa", - "a3_functions_f_epc", - "a3_functions_f_exp_a", - "a3_functions_f_heli", - "a3_functions_f_mark", - "a3_functions_f_mp_mark", - "a3_language_f", - "a3_language_f_beta", - "a3_language_f_bootcamp", - "a3_language_f_curator", - "a3_language_f_epa", - "a3_language_f_epb", - "a3_language_f_epc", - "a3_language_f_exp_a", - "a3_language_f_gamma", - "a3_language_f_heli", - "a3_language_f_kart", - "a3_language_f_mark", - "a3_language_f_mp_mark", - "a3_languagemissions_f", - "a3_languagemissions_f_beta", - "a3_languagemissions_f_gamma", - "a3_languagemissions_f_kart", - "a3_languagemissions_f_mp_mark", - "a3_map_altis", - "a3_map_altis_scenes", - "a3_map_data", - "a3_map_stratis", - "a3_map_stratis_scenes", - "a3_map_vr_scenes", - "a3_misc_f", - "a3_misc_f_helpers", - "a3_missions_f", - "a3_missions_f_beta", - "a3_missions_f_bootcamp", - "a3_missions_f_curator", - "a3_missions_f_epa", - "a3_missions_f_epb", - "a3_missions_f_epc", - "a3_missions_f_exp_a", - "a3_missions_f_gamma", - "a3_missions_f_heli", - "a3_missions_f_kart", - "a3_missions_f_mark", - "a3_missions_f_mp_mark", - "a3_modules_f", - "a3_modules_f_beta", - "a3_modules_f_beta_firingdrills", - "a3_modules_f_bootcamp", - "a3_modules_f_bootcamp_misc", - "a3_modules_f_curator", - "a3_modules_f_curator_animals", - "a3_modules_f_curator_cas", - "a3_modules_f_curator_chemlights", - "a3_modules_f_curator_curator", - "a3_modules_f_curator_effects", - "a3_modules_f_curator_environment", - "a3_modules_f_curator_flares", - "a3_modules_f_curator_intel", - "a3_modules_f_curator_lightning", - "a3_modules_f_curator_mines", - "a3_modules_f_curator_misc", - "a3_modules_f_curator_multiplayer", - "a3_modules_f_curator_objectives", - "a3_modules_f_curator_ordnance", - "a3_modules_f_curator_respawn", - "a3_modules_f_curator_smokeshells", - "a3_modules_f_dyno", - "a3_modules_f_effects", - "a3_modules_f_epb", - "a3_modules_f_epb_misc", - "a3_modules_f_events", - "a3_modules_f_exp_a", - "a3_modules_f_groupmodifiers", - "a3_modules_f_hc", - "a3_modules_f_heli", - "a3_modules_f_heli_spawnai", - "a3_modules_f_intel", - "a3_modules_f_kart", - "a3_modules_f_kart_timetrials", - "a3_modules_f_livefeed", - "a3_modules_f_mark", - "a3_modules_f_mark_firingdrills", - "a3_modules_f_mark_objectives", - "a3_modules_f_marta", - "a3_modules_f_misc", - "a3_modules_f_mp_mark", - "a3_modules_f_multiplayer", - "a3_modules_f_objectmodifiers", - "a3_modules_f_sites", - "a3_modules_f_skirmish", - "a3_modules_f_strategicmap", - "a3_modules_f_supports", - "a3_modules_f_uav", - "a3_music_f", - "a3_music_f_bootcamp", - "a3_music_f_epa", - "a3_music_f_epb", - "a3_music_f_epc", - "a3_music_f_heli", - "a3_music_f_mark", - "a3_plants_f_bush", - "a3_props_f_exp_a", - "a3_props_f_exp_a_military", - "a3_props_f_exp_a_military_equipment", - "a3_roads_f", - "a3_rocks_f", - "a3_signs_f", - "a3_signs_f_ad", - "a3_soft_f", - "a3_soft_f_beta_quadbike", - "a3_soft_f_bootcamp_offroad_01", - "a3_soft_f_bootcamp_quadbike", - "a3_soft_f_bootcamp_truck", - "a3_soft_f_car", - "a3_soft_f_crusher_ugv", - "a3_soft_f_epc_truck_03", - "a3_soft_f_gamma_hemtt", - "a3_soft_f_gamma_offroad", - "a3_soft_f_gamma_quadbike", - "a3_soft_f_gamma_truckheavy", - "a3_soft_f_heli_car", - "a3_soft_f_heli_crusher_ugv", - "a3_soft_f_heli_mrap_01", - "a3_soft_f_heli_mrap_02", - "a3_soft_f_heli_mrap_03", - "a3_soft_f_heli_quadbike", - "a3_soft_f_heli_suv", - "a3_soft_f_heli_truck", - "a3_soft_f_hemtt", - "a3_soft_f_kart_kart_01", - "a3_soft_f_mrap_01", - "a3_soft_f_mrap_02", - "a3_soft_f_mrap_03", - "a3_soft_f_offroad_01", - "a3_soft_f_quadbike", - "a3_soft_f_suv", - "a3_soft_f_truck", - "a3_soft_f_truckheavy", - "a3_sounds_f", - "a3_sounds_f_bootcamp", - "a3_sounds_f_epb", - "a3_sounds_f_epc", - "a3_sounds_f_exp_a", - "a3_sounds_f_mark", - "a3_static_f", - "a3_static_f_beta_mortar_01", - "a3_static_f_gamma", - "a3_static_f_gamma_aa", - "a3_static_f_gamma_at", - "a3_static_f_gamma_mortar_01", - "a3_static_f_mark_designator_01", - "a3_static_f_mark_designator_02", - "a3_static_f_mortar_01", - "a3_structures_f", - "a3_structures_f_bootcamp_civ_camping", - "a3_structures_f_bootcamp_civ_sportsgrounds", - "a3_structures_f_bootcamp_ind_cargo", - "a3_structures_f_bootcamp_items_electronics", - "a3_structures_f_bootcamp_items_food", - "a3_structures_f_bootcamp_items_sport", - "a3_structures_f_bootcamp_system", - "a3_structures_f_bootcamp_training", - "a3_structures_f_bootcamp_vr_blocks", - "a3_structures_f_bootcamp_vr_coverobjects", - "a3_structures_f_bootcamp_vr_helpers", - "a3_structures_f_bridges", - "a3_structures_f_civ", - "a3_structures_f_civ_accessories", - "a3_structures_f_civ_ancient", - "a3_structures_f_civ_belltowers", - "a3_structures_f_civ_calvaries", - "a3_structures_f_civ_camping", - "a3_structures_f_civ_chapels", - "a3_structures_f_civ_constructions", - "a3_structures_f_civ_dead", - "a3_structures_f_civ_garbage", - "a3_structures_f_civ_graffiti", - "a3_structures_f_civ_infoboards", - "a3_structures_f_civ_kiosks", - "a3_structures_f_civ_lamps", - "a3_structures_f_civ_market", - "a3_structures_f_civ_offices", - "a3_structures_f_civ_pavements", - "a3_structures_f_civ_playground", - "a3_structures_f_civ_sportsgrounds", - "a3_structures_f_civ_statues", - "a3_structures_f_civ_tourism", - "a3_structures_f_dominants", - "a3_structures_f_dominants_amphitheater", - "a3_structures_f_dominants_castle", - "a3_structures_f_dominants_church", - "a3_structures_f_dominants_hospital", - "a3_structures_f_dominants_lighthouse", - "a3_structures_f_dominants_wip", - "a3_structures_f_epa_civ_camping", - "a3_structures_f_epa_civ_constructions", - "a3_structures_f_epa_items_electronics", - "a3_structures_f_epa_items_food", - "a3_structures_f_epa_items_medical", - "a3_structures_f_epa_items_tools", - "a3_structures_f_epa_items_vessels", - "a3_structures_f_epa_mil_scrapyard", - "a3_structures_f_epa_walls", - "a3_structures_f_epb_civ_accessories", - "a3_structures_f_epb_civ_camping", - "a3_structures_f_epb_civ_dead", - "a3_structures_f_epb_civ_garbage", - "a3_structures_f_epb_civ_graffiti", - "a3_structures_f_epb_civ_playground", - "a3_structures_f_epb_furniture", - "a3_structures_f_epb_items_documents", - "a3_structures_f_epb_items_luggage", - "a3_structures_f_epb_items_military", - "a3_structures_f_epb_items_vessels", - "a3_structures_f_epb_naval_fishing", - "a3_structures_f_epc_civ_accessories", - "a3_structures_f_epc_civ_camping", - "a3_structures_f_epc_civ_garbage", - "a3_structures_f_epc_civ_infoboards", - "a3_structures_f_epc_civ_kiosks", - "a3_structures_f_epc_civ_playground", - "a3_structures_f_epc_civ_tourism", - "a3_structures_f_epc_dominants_ghosthotel", - "a3_structures_f_epc_dominants_stadium", - "a3_structures_f_epc_furniture", - "a3_structures_f_epc_items_documents", - "a3_structures_f_epc_items_electronics", - "a3_structures_f_epc_walls", - "a3_structures_f_exp_a", - "a3_structures_f_exp_a_vr_blocks", - "a3_structures_f_exp_a_vr_helpers", - "a3_structures_f_furniture", - "a3_structures_f_heli_civ_accessories", - "a3_structures_f_heli_civ_constructions", - "a3_structures_f_heli_civ_garbage", - "a3_structures_f_heli_civ_market", - "a3_structures_f_heli_furniture", - "a3_structures_f_heli_ind_airport", - "a3_structures_f_heli_ind_cargo", - "a3_structures_f_heli_ind_machines", - "a3_structures_f_heli_items_airport", - "a3_structures_f_heli_items_electronics", - "a3_structures_f_heli_items_food", - "a3_structures_f_heli_items_luggage", - "a3_structures_f_heli_items_sport", - "a3_structures_f_heli_items_tools", - "a3_structures_f_heli_vr_helpers", - "a3_structures_f_households", - "a3_structures_f_households_addons", - "a3_structures_f_households_house_big01", - "a3_structures_f_households_house_big02", - "a3_structures_f_households_house_shop01", - "a3_structures_f_households_house_shop02", - "a3_structures_f_households_house_small01", - "a3_structures_f_households_house_small02", - "a3_structures_f_households_house_small03", - "a3_structures_f_households_slum", - "a3_structures_f_households_stone_big", - "a3_structures_f_households_stone_shed", - "a3_structures_f_households_stone_small", - "a3_structures_f_households_wip", - "a3_structures_f_ind", - "a3_structures_f_ind_airport", - "a3_structures_f_ind_cargo", - "a3_structures_f_ind_carservice", - "a3_structures_f_ind_concretemixingplant", - "a3_structures_f_ind_crane", - "a3_structures_f_ind_dieselpowerplant", - "a3_structures_f_ind_factory", - "a3_structures_f_ind_fuelstation", - "a3_structures_f_ind_fuelstation_small", - "a3_structures_f_ind_pipes", - "a3_structures_f_ind_powerlines", - "a3_structures_f_ind_reservoirtank", - "a3_structures_f_ind_shed", - "a3_structures_f_ind_solarpowerplant", - "a3_structures_f_ind_tank", - "a3_structures_f_ind_transmitter_tower", - "a3_structures_f_ind_wavepowerplant", - "a3_structures_f_ind_windmill", - "a3_structures_f_ind_windpowerplant", - "a3_structures_f_items", - "a3_structures_f_items_cans", - "a3_structures_f_items_documents", - "a3_structures_f_items_electronics", - "a3_structures_f_items_gadgets", - "a3_structures_f_items_luggage", - "a3_structures_f_items_medical", - "a3_structures_f_items_military", - "a3_structures_f_items_stationery", - "a3_structures_f_items_tools", - "a3_structures_f_items_valuables", - "a3_structures_f_items_vessels", - "a3_structures_f_kart_civ_sportsgrounds", - "a3_structures_f_kart_mil_flags", - "a3_structures_f_kart_signs_companies", - "a3_structures_f_mark_items_military", - "a3_structures_f_mark_items_sport", - "a3_structures_f_mark_mil_flags", - "a3_structures_f_mark_training", - "a3_structures_f_mark_vr_helpers", - "a3_structures_f_mark_vr_shapes", - "a3_structures_f_mark_vr_targets", - "a3_structures_f_mil", - "a3_structures_f_mil_bagbunker", - "a3_structures_f_mil_bagfence", - "a3_structures_f_mil_barracks", - "a3_structures_f_mil_bunker", - "a3_structures_f_mil_cargo", - "a3_structures_f_mil_flags", - "a3_structures_f_mil_fortification", - "a3_structures_f_mil_helipads", - "a3_structures_f_mil_offices", - "a3_structures_f_mil_radar", - "a3_structures_f_mil_scrapyard", - "a3_structures_f_mil_shelters", - "a3_structures_f_mil_tenthangar", - "a3_structures_f_naval", - "a3_structures_f_naval_buoys", - "a3_structures_f_naval_fishing", - "a3_structures_f_naval_piers", - "a3_structures_f_naval_rowboats", - "a3_structures_f_research", - "a3_structures_f_signs_companies", - "a3_structures_f_system", - "a3_structures_f_training", - "a3_structures_f_training_invisibletarget", - "a3_structures_f_walls", - "a3_structures_f_wrecks", - "a3_supplies_f_heli", - "a3_supplies_f_heli_bladders", - "a3_supplies_f_heli_cargonets", - "a3_supplies_f_heli_fuel", - "a3_supplies_f_heli_slingload", - "a3_supplies_f_mark", - "a3_uav_f_characters_f_gamma", - "a3_uav_f_weapons_f_gamma_ammoboxes", - "a3_ui_f", - "a3_ui_f_bootcamp", - "a3_ui_f_curator", - "a3_ui_f_exp_a", - "a3_ui_f_heli", - "a3_ui_f_kart", - "a3_ui_f_mark", - "a3_ui_f_mp_mark", - "a3_uifonts_f", - "a3_weapons_f", - "a3_weapons_f_aaf", - "a3_weapons_f_acc", - "a3_weapons_f_ammoboxes", - "a3_weapons_f_beta", - "a3_weapons_f_beta_acc", - "a3_weapons_f_beta_ammoboxes", - "a3_weapons_f_beta_ebr", - "a3_weapons_f_beta_rifles_khaybar", - "a3_weapons_f_beta_rifles_mx", - "a3_weapons_f_beta_rifles_trg20", - "a3_weapons_f_bootcamp", - "a3_weapons_f_bootcamp_ammoboxes", - "a3_weapons_f_bootcamp_longrangerifles_gm6", - "a3_weapons_f_bootcamp_longrangerifles_m320", - "a3_weapons_f_csat", - "a3_weapons_f_dummyweapons", - "a3_weapons_f_ebr", - "a3_weapons_f_epa", - "a3_weapons_f_epa_acc", - "a3_weapons_f_epa_ammoboxes", - "a3_weapons_f_epa_ebr", - "a3_weapons_f_epa_longrangerifles_dmr_01", - "a3_weapons_f_epa_longrangerifles_gm6", - "a3_weapons_f_epa_rifles_mx", - "a3_weapons_f_epb", - "a3_weapons_f_epb_acc", - "a3_weapons_f_epb_ammoboxes", - "a3_weapons_f_epb_longrangerifles_gm3", - "a3_weapons_f_epb_longrangerifles_m320", - "a3_weapons_f_epb_rifles_mx_black", - "a3_weapons_f_epc", - "a3_weapons_f_explosives", - "a3_weapons_f_fia", - "a3_weapons_f_gamma", - "a3_weapons_f_gamma_acc", - "a3_weapons_f_gamma_ammoboxes", - "a3_weapons_f_gamma_items", - "a3_weapons_f_headgear", - "a3_weapons_f_itemholders", - "a3_weapons_f_items", - "a3_weapons_f_kart", - "a3_weapons_f_kart_pistols_pistol_signal_f", - "a3_weapons_f_launchers_law", - "a3_weapons_f_launchers_nlaw", - "a3_weapons_f_launchers_titan", - "a3_weapons_f_longrangerifles_gm6", - "a3_weapons_f_longrangerifles_m320", - "a3_weapons_f_machineguns_m200", - "a3_weapons_f_machineguns_zafir", - "a3_weapons_f_mark", - "a3_weapons_f_mark_acc", - "a3_weapons_f_mark_ebr", - "a3_weapons_f_mark_longrangerifles_dmr_01", - "a3_weapons_f_mark_longrangerifles_dmr_02", - "a3_weapons_f_mark_longrangerifles_dmr_03", - "a3_weapons_f_mark_longrangerifles_dmr_04", - "a3_weapons_f_mark_longrangerifles_dmr_05", - "a3_weapons_f_mark_longrangerifles_dmr_06", - "a3_weapons_f_mark_longrangerifles_gm6", - "a3_weapons_f_mark_longrangerifles_gm6_camo", - "a3_weapons_f_mark_longrangerifles_m320", - "a3_weapons_f_mark_longrangerifles_m320_camo", - "a3_weapons_f_mark_machineguns_m200", - "a3_weapons_f_mark_machineguns_mmg_01", - "a3_weapons_f_mark_machineguns_mmg_02", - "a3_weapons_f_mark_machineguns_zafir", - "a3_weapons_f_mark_rifles_khaybar", - "a3_weapons_f_mark_rifles_mk20", - "a3_weapons_f_mark_rifles_mx", - "a3_weapons_f_mark_rifles_sdar", - "a3_weapons_f_mark_rifles_trg20", - "a3_weapons_f_nato", - "a3_weapons_f_pistols_acpc2", - "a3_weapons_f_pistols_p07", - "a3_weapons_f_pistols_pdw2000", - "a3_weapons_f_pistols_pistol_heavy_01", - "a3_weapons_f_pistols_pistol_heavy_02", - "a3_weapons_f_pistols_rook40", - "a3_weapons_f_rifles_khaybar", - "a3_weapons_f_rifles_mk20", - "a3_weapons_f_rifles_mx", - "a3_weapons_f_rifles_sdar", - "a3_weapons_f_rifles_smg_02", - "a3_weapons_f_rifles_trg20", - "a3_weapons_f_rifles_vector", - "a3_weapons_f_uniforms", - "a3_weapons_f_vests", - "a3data", - "map_vr", - // CBA - "extended_eventhandlers", - "cba_ui", - "cba_xeh", - "cba_xeh_a3", - "cba_jr" +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = { + // Vanilla + "3den", + "a3_air_f", + "a3_air_f_beta", + "a3_air_f_beta_heli_attack_01", + "a3_air_f_beta_heli_attack_02", + "a3_air_f_beta_heli_transport_01", + "a3_air_f_beta_heli_transport_02", + "a3_air_f_beta_parachute_01", + "a3_air_f_beta_parachute_02", + "a3_air_f_epb_heli_light_03", + "a3_air_f_epc_plane_cas_01", + "a3_air_f_epc_plane_cas_02", + "a3_air_f_epc_plane_fighter_03", + "a3_air_f_gamma_plane_fighter_03", + "a3_air_f_gamma_uav_01", + "a3_air_f_gamma_uav_02", + "a3_air_f_heli", + "a3_air_f_heli_heli_attack_01", + "a3_air_f_heli_heli_attack_02", + "a3_air_f_heli_heli_light_01", + "a3_air_f_heli_heli_light_02", + "a3_air_f_heli_heli_light_03", + "a3_air_f_heli_heli_transport_01", + "a3_air_f_heli_heli_transport_02", + "a3_air_f_heli_heli_transport_03", + "a3_air_f_heli_heli_transport_04", + "a3_air_f_heli_light_01", + "a3_air_f_heli_light_02", + "a3_animals_f", + "a3_animals_f_animconfig", + "a3_animals_f_chicken", + "a3_animals_f_dog", + "a3_animals_f_fishes", + "a3_animals_f_goat", + "a3_animals_f_kestrel", + "a3_animals_f_rabbit", + "a3_animals_f_seagull", + "a3_animals_f_sheep", + "a3_animals_f_snakes", + "a3_animals_f_turtle", + "a3_anims_f", + "a3_anims_f_config_sdr", + "a3_anims_f_epa", + "a3_anims_f_epc", + "a3_anims_f_exp_a", + "a3_anims_f_heli", + "a3_anims_f_kart", + "a3_anims_f_mark_deployment", + "a3_armor_f", + "a3_armor_f_amv", + "a3_armor_f_apc_wheeled_03", + "a3_armor_f_beta", + "a3_armor_f_beta_apc_tracked_02", + "a3_armor_f_epb_apc_tracked_03", + "a3_armor_f_epb_mbt_03", + "a3_armor_f_epc_mbt_01", + "a3_armor_f_marid", + "a3_armor_f_panther", + "a3_armor_f_slammer", + "a3_armor_f_t100k", + "a3_baseconfig_f", + "a3_boat_f", + "a3_boat_f_beta_boat_armed_01", + "a3_boat_f_beta_boat_transport_01", + "a3_boat_f_boat_armed_01", + "a3_boat_f_boat_transport_01", + "a3_boat_f_civilian_boat", + "a3_boat_f_epc_submarine_01_f", + "a3_boat_f_gamma_boat_transport_01", + "a3_boat_f_heli_boat_armed_01", + "a3_boat_f_heli_sdv_01", + "a3_boat_f_sdv_01", + "a3_boat_f_trawler", + "a3_cargoposes_f", + "a3_cargoposes_f_heli", + "a3_characters_f", + "a3_characters_f_beta", + "a3_characters_f_blufor", + "a3_characters_f_bootcamp", + "a3_characters_f_bootcamp_common", + "a3_characters_f_civil", + "a3_characters_f_common", + "a3_characters_f_epa", + "a3_characters_f_epb", + "a3_characters_f_epb_heads", + "a3_characters_f_epc", + "a3_characters_f_gamma", + "a3_characters_f_heads", + "a3_characters_f_indep", + "a3_characters_f_kart", + "a3_characters_f_mark", + "a3_characters_f_opfor", + "a3_characters_f_proxies", + "a3_data_f", + "a3_data_f_bootcamp", + "a3_data_f_curator", + "a3_data_f_curator_characters", + "a3_data_f_curator_eagle", + "a3_data_f_curator_intel", + "a3_data_f_curator_misc", + "a3_data_f_curator_respawn", + "a3_data_f_curator_virtual", + "a3_data_f_exp_a", + "a3_data_f_exp_a_virtual", + "a3_data_f_exp_b", + "a3_data_f_heli", + "a3_data_f_hook", + "a3_data_f_kart", + "a3_data_f_kart_particleeffects", + "a3_data_f_mark", + "a3_data_f_particleeffects", + "a3_dubbing_radio_f", + "a3_editor_f", + "a3_functions_f", + "a3_functions_f_bootcamp", + "a3_functions_f_curator", + "a3_functions_f_epa", + "a3_functions_f_epc", + "a3_functions_f_exp_a", + "a3_functions_f_heli", + "a3_functions_f_mark", + "a3_functions_f_mp_mark", + "a3_language_f", + "a3_language_f_beta", + "a3_language_f_bootcamp", + "a3_language_f_curator", + "a3_language_f_epa", + "a3_language_f_epb", + "a3_language_f_epc", + "a3_language_f_exp_a", + "a3_language_f_gamma", + "a3_language_f_heli", + "a3_language_f_kart", + "a3_language_f_mark", + "a3_language_f_mp_mark", + "a3_languagemissions_f", + "a3_languagemissions_f_beta", + "a3_languagemissions_f_gamma", + "a3_languagemissions_f_kart", + "a3_languagemissions_f_mp_mark", + "a3_map_altis", + "a3_map_altis_scenes", + "a3_map_data", + "a3_map_stratis", + "a3_map_stratis_scenes", + "a3_map_vr_scenes", + "a3_misc_f", + "a3_misc_f_helpers", + "a3_missions_f", + "a3_missions_f_beta", + "a3_missions_f_bootcamp", + "a3_missions_f_curator", + "a3_missions_f_epa", + "a3_missions_f_epb", + "a3_missions_f_epc", + "a3_missions_f_exp_a", + "a3_missions_f_gamma", + "a3_missions_f_heli", + "a3_missions_f_kart", + "a3_missions_f_mark", + "a3_missions_f_mp_mark", + "a3_modules_f", + "a3_modules_f_beta", + "a3_modules_f_beta_firingdrills", + "a3_modules_f_bootcamp", + "a3_modules_f_bootcamp_misc", + "a3_modules_f_curator", + "a3_modules_f_curator_animals", + "a3_modules_f_curator_cas", + "a3_modules_f_curator_chemlights", + "a3_modules_f_curator_curator", + "a3_modules_f_curator_effects", + "a3_modules_f_curator_environment", + "a3_modules_f_curator_flares", + "a3_modules_f_curator_intel", + "a3_modules_f_curator_lightning", + "a3_modules_f_curator_mines", + "a3_modules_f_curator_misc", + "a3_modules_f_curator_multiplayer", + "a3_modules_f_curator_objectives", + "a3_modules_f_curator_ordnance", + "a3_modules_f_curator_respawn", + "a3_modules_f_curator_smokeshells", + "a3_modules_f_dyno", + "a3_modules_f_effects", + "a3_modules_f_epb", + "a3_modules_f_epb_misc", + "a3_modules_f_events", + "a3_modules_f_exp_a", + "a3_modules_f_groupmodifiers", + "a3_modules_f_hc", + "a3_modules_f_heli", + "a3_modules_f_heli_spawnai", + "a3_modules_f_intel", + "a3_modules_f_kart", + "a3_modules_f_kart_timetrials", + "a3_modules_f_livefeed", + "a3_modules_f_mark", + "a3_modules_f_mark_firingdrills", + "a3_modules_f_mark_objectives", + "a3_modules_f_marta", + "a3_modules_f_misc", + "a3_modules_f_mp_mark", + "a3_modules_f_multiplayer", + "a3_modules_f_objectmodifiers", + "a3_modules_f_sites", + "a3_modules_f_skirmish", + "a3_modules_f_strategicmap", + "a3_modules_f_supports", + "a3_modules_f_uav", + "a3_music_f", + "a3_music_f_bootcamp", + "a3_music_f_epa", + "a3_music_f_epb", + "a3_music_f_epc", + "a3_music_f_heli", + "a3_music_f_mark", + "a3_plants_f_bush", + "a3_props_f_exp_a", + "a3_props_f_exp_a_military", + "a3_props_f_exp_a_military_equipment", + "a3_roads_f", + "a3_rocks_f", + "a3_signs_f", + "a3_signs_f_ad", + "a3_soft_f", + "a3_soft_f_beta_quadbike", + "a3_soft_f_bootcamp_offroad_01", + "a3_soft_f_bootcamp_quadbike", + "a3_soft_f_bootcamp_truck", + "a3_soft_f_car", + "a3_soft_f_crusher_ugv", + "a3_soft_f_epc_truck_03", + "a3_soft_f_gamma_hemtt", + "a3_soft_f_gamma_offroad", + "a3_soft_f_gamma_quadbike", + "a3_soft_f_gamma_truckheavy", + "a3_soft_f_heli_car", + "a3_soft_f_heli_crusher_ugv", + "a3_soft_f_heli_mrap_01", + "a3_soft_f_heli_mrap_02", + "a3_soft_f_heli_mrap_03", + "a3_soft_f_heli_quadbike", + "a3_soft_f_heli_suv", + "a3_soft_f_heli_truck", + "a3_soft_f_hemtt", + "a3_soft_f_kart_kart_01", + "a3_soft_f_mrap_01", + "a3_soft_f_mrap_02", + "a3_soft_f_mrap_03", + "a3_soft_f_offroad_01", + "a3_soft_f_quadbike", + "a3_soft_f_suv", + "a3_soft_f_truck", + "a3_soft_f_truckheavy", + "a3_sounds_f", + "a3_sounds_f_bootcamp", + "a3_sounds_f_epb", + "a3_sounds_f_epc", + "a3_sounds_f_exp_a", + "a3_sounds_f_mark", + "a3_static_f", + "a3_static_f_beta_mortar_01", + "a3_static_f_gamma", + "a3_static_f_gamma_aa", + "a3_static_f_gamma_at", + "a3_static_f_gamma_mortar_01", + "a3_static_f_mark_designator_01", + "a3_static_f_mark_designator_02", + "a3_static_f_mortar_01", + "a3_structures_f", + "a3_structures_f_bootcamp_civ_camping", + "a3_structures_f_bootcamp_civ_sportsgrounds", + "a3_structures_f_bootcamp_ind_cargo", + "a3_structures_f_bootcamp_items_electronics", + "a3_structures_f_bootcamp_items_food", + "a3_structures_f_bootcamp_items_sport", + "a3_structures_f_bootcamp_system", + "a3_structures_f_bootcamp_training", + "a3_structures_f_bootcamp_vr_blocks", + "a3_structures_f_bootcamp_vr_coverobjects", + "a3_structures_f_bootcamp_vr_helpers", + "a3_structures_f_bridges", + "a3_structures_f_civ", + "a3_structures_f_civ_accessories", + "a3_structures_f_civ_ancient", + "a3_structures_f_civ_belltowers", + "a3_structures_f_civ_calvaries", + "a3_structures_f_civ_camping", + "a3_structures_f_civ_chapels", + "a3_structures_f_civ_constructions", + "a3_structures_f_civ_dead", + "a3_structures_f_civ_garbage", + "a3_structures_f_civ_graffiti", + "a3_structures_f_civ_infoboards", + "a3_structures_f_civ_kiosks", + "a3_structures_f_civ_lamps", + "a3_structures_f_civ_market", + "a3_structures_f_civ_offices", + "a3_structures_f_civ_pavements", + "a3_structures_f_civ_playground", + "a3_structures_f_civ_sportsgrounds", + "a3_structures_f_civ_statues", + "a3_structures_f_civ_tourism", + "a3_structures_f_dominants", + "a3_structures_f_dominants_amphitheater", + "a3_structures_f_dominants_castle", + "a3_structures_f_dominants_church", + "a3_structures_f_dominants_hospital", + "a3_structures_f_dominants_lighthouse", + "a3_structures_f_dominants_wip", + "a3_structures_f_epa_civ_camping", + "a3_structures_f_epa_civ_constructions", + "a3_structures_f_epa_items_electronics", + "a3_structures_f_epa_items_food", + "a3_structures_f_epa_items_medical", + "a3_structures_f_epa_items_tools", + "a3_structures_f_epa_items_vessels", + "a3_structures_f_epa_mil_scrapyard", + "a3_structures_f_epa_walls", + "a3_structures_f_epb_civ_accessories", + "a3_structures_f_epb_civ_camping", + "a3_structures_f_epb_civ_dead", + "a3_structures_f_epb_civ_garbage", + "a3_structures_f_epb_civ_graffiti", + "a3_structures_f_epb_civ_playground", + "a3_structures_f_epb_furniture", + "a3_structures_f_epb_items_documents", + "a3_structures_f_epb_items_luggage", + "a3_structures_f_epb_items_military", + "a3_structures_f_epb_items_vessels", + "a3_structures_f_epb_naval_fishing", + "a3_structures_f_epc_civ_accessories", + "a3_structures_f_epc_civ_camping", + "a3_structures_f_epc_civ_garbage", + "a3_structures_f_epc_civ_infoboards", + "a3_structures_f_epc_civ_kiosks", + "a3_structures_f_epc_civ_playground", + "a3_structures_f_epc_civ_tourism", + "a3_structures_f_epc_dominants_ghosthotel", + "a3_structures_f_epc_dominants_stadium", + "a3_structures_f_epc_furniture", + "a3_structures_f_epc_items_documents", + "a3_structures_f_epc_items_electronics", + "a3_structures_f_epc_walls", + "a3_structures_f_exp_a", + "a3_structures_f_exp_a_vr_blocks", + "a3_structures_f_exp_a_vr_helpers", + "a3_structures_f_furniture", + "a3_structures_f_heli_civ_accessories", + "a3_structures_f_heli_civ_constructions", + "a3_structures_f_heli_civ_garbage", + "a3_structures_f_heli_civ_market", + "a3_structures_f_heli_furniture", + "a3_structures_f_heli_ind_airport", + "a3_structures_f_heli_ind_cargo", + "a3_structures_f_heli_ind_machines", + "a3_structures_f_heli_items_airport", + "a3_structures_f_heli_items_electronics", + "a3_structures_f_heli_items_food", + "a3_structures_f_heli_items_luggage", + "a3_structures_f_heli_items_sport", + "a3_structures_f_heli_items_tools", + "a3_structures_f_heli_vr_helpers", + "a3_structures_f_households", + "a3_structures_f_households_addons", + "a3_structures_f_households_house_big01", + "a3_structures_f_households_house_big02", + "a3_structures_f_households_house_shop01", + "a3_structures_f_households_house_shop02", + "a3_structures_f_households_house_small01", + "a3_structures_f_households_house_small02", + "a3_structures_f_households_house_small03", + "a3_structures_f_households_slum", + "a3_structures_f_households_stone_big", + "a3_structures_f_households_stone_shed", + "a3_structures_f_households_stone_small", + "a3_structures_f_households_wip", + "a3_structures_f_ind", + "a3_structures_f_ind_airport", + "a3_structures_f_ind_cargo", + "a3_structures_f_ind_carservice", + "a3_structures_f_ind_concretemixingplant", + "a3_structures_f_ind_crane", + "a3_structures_f_ind_dieselpowerplant", + "a3_structures_f_ind_factory", + "a3_structures_f_ind_fuelstation", + "a3_structures_f_ind_fuelstation_small", + "a3_structures_f_ind_pipes", + "a3_structures_f_ind_powerlines", + "a3_structures_f_ind_reservoirtank", + "a3_structures_f_ind_shed", + "a3_structures_f_ind_solarpowerplant", + "a3_structures_f_ind_tank", + "a3_structures_f_ind_transmitter_tower", + "a3_structures_f_ind_wavepowerplant", + "a3_structures_f_ind_windmill", + "a3_structures_f_ind_windpowerplant", + "a3_structures_f_items", + "a3_structures_f_items_cans", + "a3_structures_f_items_documents", + "a3_structures_f_items_electronics", + "a3_structures_f_items_gadgets", + "a3_structures_f_items_luggage", + "a3_structures_f_items_medical", + "a3_structures_f_items_military", + "a3_structures_f_items_stationery", + "a3_structures_f_items_tools", + "a3_structures_f_items_valuables", + "a3_structures_f_items_vessels", + "a3_structures_f_kart_civ_sportsgrounds", + "a3_structures_f_kart_mil_flags", + "a3_structures_f_kart_signs_companies", + "a3_structures_f_mark_items_military", + "a3_structures_f_mark_items_sport", + "a3_structures_f_mark_mil_flags", + "a3_structures_f_mark_training", + "a3_structures_f_mark_vr_helpers", + "a3_structures_f_mark_vr_shapes", + "a3_structures_f_mark_vr_targets", + "a3_structures_f_mil", + "a3_structures_f_mil_bagbunker", + "a3_structures_f_mil_bagfence", + "a3_structures_f_mil_barracks", + "a3_structures_f_mil_bunker", + "a3_structures_f_mil_cargo", + "a3_structures_f_mil_flags", + "a3_structures_f_mil_fortification", + "a3_structures_f_mil_helipads", + "a3_structures_f_mil_offices", + "a3_structures_f_mil_radar", + "a3_structures_f_mil_scrapyard", + "a3_structures_f_mil_shelters", + "a3_structures_f_mil_tenthangar", + "a3_structures_f_naval", + "a3_structures_f_naval_buoys", + "a3_structures_f_naval_fishing", + "a3_structures_f_naval_piers", + "a3_structures_f_naval_rowboats", + "a3_structures_f_research", + "a3_structures_f_signs_companies", + "a3_structures_f_system", + "a3_structures_f_training", + "a3_structures_f_training_invisibletarget", + "a3_structures_f_walls", + "a3_structures_f_wrecks", + "a3_supplies_f_heli", + "a3_supplies_f_heli_bladders", + "a3_supplies_f_heli_cargonets", + "a3_supplies_f_heli_fuel", + "a3_supplies_f_heli_slingload", + "a3_supplies_f_mark", + "a3_uav_f_characters_f_gamma", + "a3_uav_f_weapons_f_gamma_ammoboxes", + "a3_ui_f", + "a3_ui_f_bootcamp", + "a3_ui_f_curator", + "a3_ui_f_exp_a", + "a3_ui_f_heli", + "a3_ui_f_kart", + "a3_ui_f_mark", + "a3_ui_f_mp_mark", + "a3_uifonts_f", + "a3_weapons_f", + "a3_weapons_f_aaf", + "a3_weapons_f_acc", + "a3_weapons_f_ammoboxes", + "a3_weapons_f_beta", + "a3_weapons_f_beta_acc", + "a3_weapons_f_beta_ammoboxes", + "a3_weapons_f_beta_ebr", + "a3_weapons_f_beta_rifles_khaybar", + "a3_weapons_f_beta_rifles_mx", + "a3_weapons_f_beta_rifles_trg20", + "a3_weapons_f_bootcamp", + "a3_weapons_f_bootcamp_ammoboxes", + "a3_weapons_f_bootcamp_longrangerifles_gm6", + "a3_weapons_f_bootcamp_longrangerifles_m320", + "a3_weapons_f_csat", + "a3_weapons_f_dummyweapons", + "a3_weapons_f_ebr", + "a3_weapons_f_epa", + "a3_weapons_f_epa_acc", + "a3_weapons_f_epa_ammoboxes", + "a3_weapons_f_epa_ebr", + "a3_weapons_f_epa_longrangerifles_dmr_01", + "a3_weapons_f_epa_longrangerifles_gm6", + "a3_weapons_f_epa_rifles_mx", + "a3_weapons_f_epb", + "a3_weapons_f_epb_acc", + "a3_weapons_f_epb_ammoboxes", + "a3_weapons_f_epb_longrangerifles_gm3", + "a3_weapons_f_epb_longrangerifles_m320", + "a3_weapons_f_epb_rifles_mx_black", + "a3_weapons_f_epc", + "a3_weapons_f_explosives", + "a3_weapons_f_fia", + "a3_weapons_f_gamma", + "a3_weapons_f_gamma_acc", + "a3_weapons_f_gamma_ammoboxes", + "a3_weapons_f_gamma_items", + "a3_weapons_f_headgear", + "a3_weapons_f_itemholders", + "a3_weapons_f_items", + "a3_weapons_f_kart", + "a3_weapons_f_kart_pistols_pistol_signal_f", + "a3_weapons_f_launchers_law", + "a3_weapons_f_launchers_nlaw", + "a3_weapons_f_launchers_titan", + "a3_weapons_f_longrangerifles_gm6", + "a3_weapons_f_longrangerifles_m320", + "a3_weapons_f_machineguns_m200", + "a3_weapons_f_machineguns_zafir", + "a3_weapons_f_mark", + "a3_weapons_f_mark_acc", + "a3_weapons_f_mark_ebr", + "a3_weapons_f_mark_longrangerifles_dmr_01", + "a3_weapons_f_mark_longrangerifles_dmr_02", + "a3_weapons_f_mark_longrangerifles_dmr_03", + "a3_weapons_f_mark_longrangerifles_dmr_04", + "a3_weapons_f_mark_longrangerifles_dmr_05", + "a3_weapons_f_mark_longrangerifles_dmr_06", + "a3_weapons_f_mark_longrangerifles_gm6", + "a3_weapons_f_mark_longrangerifles_gm6_camo", + "a3_weapons_f_mark_longrangerifles_m320", + "a3_weapons_f_mark_longrangerifles_m320_camo", + "a3_weapons_f_mark_machineguns_m200", + "a3_weapons_f_mark_machineguns_mmg_01", + "a3_weapons_f_mark_machineguns_mmg_02", + "a3_weapons_f_mark_machineguns_zafir", + "a3_weapons_f_mark_rifles_khaybar", + "a3_weapons_f_mark_rifles_mk20", + "a3_weapons_f_mark_rifles_mx", + "a3_weapons_f_mark_rifles_sdar", + "a3_weapons_f_mark_rifles_trg20", + "a3_weapons_f_nato", + "a3_weapons_f_pistols_acpc2", + "a3_weapons_f_pistols_p07", + "a3_weapons_f_pistols_pdw2000", + "a3_weapons_f_pistols_pistol_heavy_01", + "a3_weapons_f_pistols_pistol_heavy_02", + "a3_weapons_f_pistols_rook40", + "a3_weapons_f_rifles_khaybar", + "a3_weapons_f_rifles_mk20", + "a3_weapons_f_rifles_mx", + "a3_weapons_f_rifles_sdar", + "a3_weapons_f_rifles_smg_02", + "a3_weapons_f_rifles_trg20", + "a3_weapons_f_rifles_vector", + "a3_weapons_f_uniforms", + "a3_weapons_f_vests", + "a3data", + "map_vr", + // CBA + "extended_eventhandlers", + "cba_ui", + "cba_xeh", + "cba_xeh_a3", + "cba_jr" }; author = ECSTRING(common,ACETeam); - authors[] = {ECSTRING(common,ACETeam)}; - url = "http://ace3mod.com"; - VERSION_CONFIG; - }; -}; - -class CfgMods { - class PREFIX { - dir = "@ace"; - name = "Advanced Combat Environment 3"; - picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca"; - hidePicture = "true"; - hideName = "true"; - actionName = "Website"; - action = "http://ace3mod.com/"; - description = "Issue Tracker: https://github.com/acemod/ACE3/issues"; - }; -}; - -#include "CfgSettings.hpp" -#include "CfgModuleCategories.hpp" -#include "CfgVehicleClasses.hpp" + authors[] = {ECSTRING(common,ACETeam)}; + PBO_URL + VERSION_CONFIG; + }; +}; + +class CfgMods { + class PREFIX { + dir = "@ace"; + name = "Advanced Combat Environment 3"; + picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca"; + hidePicture = "true"; + hideName = "true"; + actionName = "Website"; + action = "http://ace3mod.com/"; + description = "Issue Tracker: https://github.com/acemod/ACE3/issues"; + }; +}; + +#include "CfgSettings.hpp" +#include "CfgModuleCategories.hpp" +#include "CfgVehicleClasses.hpp" diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 1f86448c948..07905e5d984 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -1,16 +1,19 @@ -// COMPONENT should be defined in the script_component.hpp and included BEFORE this hpp - -#define MAINPREFIX z -#define PREFIX ace - -#define MAJOR 3 -#define MINOR 5 -#define PATCHLVL 1 -#define BUILD 0 - -#define VERSION MAJOR.MINOR.PATCHLVL.BUILD -#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD - -// MINIMAL required version for the Mod. Components can specify others.. -#define REQUIRED_VERSION 1.56 -#define REQUIRED_CBA_VERSION {2,3,1} +// COMPONENT should be defined in the script_component.hpp and included BEFORE this hpp + +#define MAINPREFIX z +#define PREFIX ace + +#define MAJOR 3 +#define MINOR 5 +#define PATCHLVL 1 +#define BUILD 0 + +#define VERSION MAJOR.MINOR.PATCHLVL.BUILD +#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD + +#define WEB_URL "http://ace3mod.com/" +#define PBO_URL url = WEB_URL; + +// MINIMAL required version for the Mod. Components can specify others.. +#define REQUIRED_VERSION 1.56 +#define REQUIRED_CBA_VERSION {2,3,1} diff --git a/addons/map/config.cpp b/addons/map/config.cpp index d6da6484355..60f0cde1f63 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Rocko","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index 0987a1a9874..85f9f8e2026 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Dslyecxi", "MikeMatrix"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 5e5f3c4af65..464aa2da67b 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/markers/config.cpp b/addons/markers/config.cpp index 50ece64a018..567636e9c2c 100644 --- a/addons/markers/config.cpp +++ b/addons/markers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 63c96b12b60..9f378212761 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 192b142a0ef..b63599e8f3c 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_medical"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG }; }; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 3f05a6786e6..14012f5579a 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp index 5bedf91f674..9fae3f432f8 100644 --- a/addons/missionmodules/config.cpp +++ b/addons/missionmodules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 7d4113b4a1d..90c8b69e5f8 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror","Grey","VKing"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index 75267bf6e98..e8a64bc902e 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index d7496ab70f2..8ba6420ee0d 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","Tachii"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/mx2a/config.cpp b/addons/mx2a/config.cpp index 0d56e4e3e96..c7ddacce078 100644 --- a/addons/mx2a/config.cpp +++ b/addons/mx2a/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index a1e3653c971..650aee347c0 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = { "commy2", "esteldunedain" }; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 171424001bf..2e715e501a4 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/noidle/config.cpp b/addons/noidle/config.cpp index e90c35897a2..8cad5cb5f51 100644 --- a/addons/noidle/config.cpp +++ b/addons/noidle/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/noradio/config.cpp b/addons/noradio/config.cpp index 73a90b7a8cd..0b47a8fcf66 100644 --- a/addons/noradio/config.cpp +++ b/addons/noradio/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/norearm/config.cpp b/addons/norearm/config.cpp index a779fe160cc..364ee7180c1 100644 --- a/addons/norearm/config.cpp +++ b/addons/norearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index b172bc963e9..e44b5738d95 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -20,7 +20,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Taosenai","KoffeinFlummi","commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index be3e9e043bd..cd57c7756df 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "PabstMirror"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 152c344d88a..b6f1d25aa87 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index c2d17d7c422..d5418775c44 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 675ad064b52..38a962f2088 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { VERSION_CONFIG; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'LH' de Wet"}; - url = "http://ace3mod.com"; + PBO_URL }; }; diff --git a/addons/rangecard/config.cpp b/addons/rangecard/config.cpp index ba02625deb8..ffcb9046694 100644 --- a/addons/rangecard/config.cpp +++ b/addons/rangecard/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Advanced_Ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index 14b39629612..bb7406468b6 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","TaoSensai","commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index cefed5b242a..9e8ae31aa84 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk", "Jonpas"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index 7076914f923..dd2da4a5764 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 7d6585eedb7..4d141e27ceb 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 0deed18d3cc..4d17d17d557 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 7fff403502a..23c78048c1e 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index 39bc0c152cf..11e3bf2fa1c 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal", "Jonpas"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 1ce01c3a729..71cfc116bd1 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = { "bux578", "commy2" }; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/safemode/config.cpp b/addons/safemode/config.cpp index 52f85d10e09..6e95b219d36 100644 --- a/addons/safemode/config.cpp +++ b/addons/safemode/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 053b87f775a..2e23313db14 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index fc055ca7035..48f22cdc46e 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index a44c36293b3..a7fa6772043 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Jonpas"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/smallarms/config.cpp b/addons/smallarms/config.cpp index ba2864c8f0f..279726ef5ba 100644 --- a/addons/smallarms/config.cpp +++ b/addons/smallarms/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"TaoSensai", "KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index e402899a23f..522d4121903 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"F3 Project","Head","SilentSpike","voiper"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index c74fa182ff8..d90a852f1a1 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index c862982522d..3966e7a74e7 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux578"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 9b42afab16d..08edb1a9c61 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index 6b0fa413485..c666c6afbc9 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"BaerMitUmlaut","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/thermals/config.cpp b/addons/thermals/config.cpp index 076de593359..06a2e90594c 100644 --- a/addons/thermals/config.cpp +++ b/addons/thermals/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"[TF]Nkey"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index bb38fecf7fa..d8c7f70ba4b 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Grey", "esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index a94c85408f3..83c012f39a3 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index b0aa8386daa..9aa3eab9424 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"VKing", "Jonpas"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index b54b1ef554d..6f3e71fb68a 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Ghost","Hamburger SV","commy2","bux578"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 5ee673e5dad..22c914d7679 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); - url = "http://ace3mod.com"; + PBO_URL authors[] = {"PabstMirror"}; authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; diff --git a/addons/vehicles/config.cpp b/addons/vehicles/config.cpp index ce7e00c493a..3c405d07917 100644 --- a/addons/vehicles/config.cpp +++ b/addons/vehicles/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 887013ef168..d93e811ca06 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Winter", "Jonpas", "Arkhir"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 78314a60631..ecaf0baceea 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index d8d3c68078c..7be9d32bc58 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 46d25b37074..9f9cb21b071 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/yardage450/config.cpp b/addons/yardage450/config.cpp index 714c16420ab..6dbdd9707bb 100644 --- a/addons/yardage450/config.cpp +++ b/addons/yardage450/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_laser"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp", "Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 58db862e44f..2c1fff347a1 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"SilentSpike"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; // Use additional cfgPatches to contextually remove modules from zeus diff --git a/extras/blank/config.cpp b/extras/blank/config.cpp index 81dd262f9b3..c4ee9dd3441 100644 --- a/extras/blank/config.cpp +++ b/extras/blank/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {""}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_adr_97/config.cpp b/optionals/compat_adr_97/config.cpp index d3d50d35754..a0c1f28cb2c 100644 --- a/optionals/compat_adr_97/config.cpp +++ b/optionals/compat_adr_97/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"A3_Weapons_F_Mod"}; author = ECSTRING(common,ACETeam); authors[] = {"Nic547"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_r3f/config.cpp b/optionals/compat_r3f/config.cpp index 1c12205347c..0e8549c0309 100644 --- a/optionals/compat_r3f/config.cpp +++ b/optionals/compat_r3f/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"R3F_Armes", "R3F_Acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_acc/config.cpp b/optionals/compat_rh_acc/config.cpp index 7bff1dbb186..069af9ebd46 100644 --- a/optionals/compat_rh_acc/config.cpp +++ b/optionals/compat_rh_acc/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_de/config.cpp b/optionals/compat_rh_de/config.cpp index b444be8f2d6..9c5b7137d8e 100644 --- a/optionals/compat_rh_de/config.cpp +++ b/optionals/compat_rh_de/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_de_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_m4/config.cpp b/optionals/compat_rh_m4/config.cpp index 578f01620c8..6d33ba132c0 100644 --- a/optionals/compat_rh_m4/config.cpp +++ b/optionals/compat_rh_m4/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_m4_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_pdw/config.cpp b/optionals/compat_rh_pdw/config.cpp index 11ba26b62a9..23a73237450 100644 --- a/optionals/compat_rh_pdw/config.cpp +++ b/optionals/compat_rh_pdw/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_PDW"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index d253199607c..9a8fbb54a6e 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index a6de7d414b8..9a1858ecef6 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_rksl_pm_ii/config.cpp b/optionals/compat_rksl_pm_ii/config.cpp index 201a306e7bb..46922f1afcb 100644 --- a/optionals/compat_rksl_pm_ii/config.cpp +++ b/optionals/compat_rksl_pm_ii/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RKSL_PMII"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/compat_sma3_iansky/config.cpp b/optionals/compat_sma3_iansky/config.cpp index 80054babce1..241e188d1a8 100644 --- a/optionals/compat_sma3_iansky/config.cpp +++ b/optionals/compat_sma3_iansky/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"iansky_opt"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/noactionmenu/config.cpp b/optionals/noactionmenu/config.cpp index 3a6627712f9..02390a68634 100644 --- a/optionals/noactionmenu/config.cpp +++ b/optionals/noactionmenu/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/server/config.cpp b/optionals/server/config.cpp index 58ac3af1041..97a53c88b65 100644 --- a/optionals/server/config.cpp +++ b/optionals/server/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; diff --git a/optionals/tracers/config.cpp b/optionals/tracers/config.cpp index 08e955e5961..54c0ef769c4 100644 --- a/optionals/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"ACE2 Team"}; - url = "http://ace3mod.com"; + PBO_URL VERSION_CONFIG; }; }; From 1354826d56cfdcbe4d3ce3a8186e32407f1c1dbe Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 1 Jun 2016 14:11:32 +0200 Subject: [PATCH 222/268] Put semi-colon to the correct place --- addons/advanced_ballistics/config.cpp | 2 +- addons/ai/config.cpp | 2 +- addons/aircraft/config.cpp | 2 +- addons/apl/config.cpp | 2 +- addons/atragmx/config.cpp | 2 +- addons/attach/config.cpp | 2 +- addons/backpacks/config.cpp | 2 +- addons/ballistics/config.cpp | 2 +- addons/captives/config.cpp | 2 +- addons/cargo/config.cpp | 2 +- addons/common/config.cpp | 2 +- addons/concertina_wire/config.cpp | 2 +- addons/dagr/config.cpp | 2 +- addons/disarming/config.cpp | 2 +- addons/disposable/config.cpp | 2 +- addons/dragging/config.cpp | 2 +- addons/explosives/config.cpp | 2 +- addons/fastroping/config.cpp | 2 +- addons/fcs/config.cpp | 2 +- addons/finger/config.cpp | 2 +- addons/flashlights/config.cpp | 2 +- addons/flashsuppressors/config.cpp | 2 +- addons/fonts/config.cpp | 2 +- addons/frag/config.cpp | 2 +- addons/gestures/config.cpp | 2 +- addons/gforces/config.cpp | 2 +- addons/goggles/config.cpp | 2 +- addons/grenades/config.cpp | 2 +- addons/hearing/config.cpp | 2 +- addons/hitreactions/config.cpp | 2 +- addons/huntir/config.cpp | 2 +- addons/interact_menu/config.cpp | 2 +- addons/interaction/config.cpp | 2 +- addons/inventory/config.cpp | 2 +- addons/kestrel4500/config.cpp | 2 +- addons/laserpointer/config.cpp | 2 +- addons/logistics_uavbattery/config.cpp | 2 +- addons/logistics_wirecutter/config.cpp | 2 +- addons/magazinerepack/config.cpp | 2 +- addons/main/config.cpp | 2 +- addons/main/script_mod.hpp | 2 +- addons/map/config.cpp | 2 +- addons/map_gestures/config.cpp | 2 +- addons/maptools/config.cpp | 2 +- addons/markers/config.cpp | 2 +- addons/medical/config.cpp | 2 +- addons/medical_menu/config.cpp | 2 +- addons/microdagr/config.cpp | 2 +- addons/missionmodules/config.cpp | 2 +- addons/mk6mortar/config.cpp | 2 +- addons/modules/config.cpp | 2 +- addons/movement/config.cpp | 2 +- addons/mx2a/config.cpp | 2 +- addons/nametags/config.cpp | 2 +- addons/nightvision/config.cpp | 2 +- addons/noidle/config.cpp | 2 +- addons/noradio/config.cpp | 2 +- addons/norearm/config.cpp | 2 +- addons/optics/config.cpp | 2 +- addons/optionsmenu/config.cpp | 2 +- addons/overheating/config.cpp | 2 +- addons/overpressure/config.cpp | 2 +- addons/parachute/config.cpp | 2 +- addons/rangecard/config.cpp | 2 +- addons/realisticnames/config.cpp | 2 +- addons/rearm/config.cpp | 2 +- addons/recoil/config.cpp | 2 +- addons/refuel/config.cpp | 2 +- addons/reload/config.cpp | 2 +- addons/reloadlaunchers/config.cpp | 2 +- addons/repair/config.cpp | 2 +- addons/respawn/config.cpp | 2 +- addons/safemode/config.cpp | 2 +- addons/sandbag/config.cpp | 2 +- addons/scopes/config.cpp | 2 +- addons/sitting/config.cpp | 2 +- addons/smallarms/config.cpp | 2 +- addons/spectator/config.cpp | 2 +- addons/spottingscope/config.cpp | 2 +- addons/switchunits/config.cpp | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/tagging/config.cpp | 2 +- addons/thermals/config.cpp | 2 +- addons/trenches/config.cpp | 2 +- addons/tripod/config.cpp | 2 +- addons/ui/config.cpp | 2 +- addons/vector/config.cpp | 2 +- addons/vehiclelock/config.cpp | 2 +- addons/vehicles/config.cpp | 2 +- addons/viewdistance/config.cpp | 2 +- addons/weaponselect/config.cpp | 2 +- addons/weather/config.cpp | 2 +- addons/winddeflection/config.cpp | 2 +- addons/yardage450/config.cpp | 2 +- addons/zeus/config.cpp | 2 +- extras/blank/config.cpp | 2 +- optionals/compat_adr_97/config.cpp | 2 +- optionals/compat_r3f/config.cpp | 2 +- optionals/compat_rh_acc/config.cpp | 2 +- optionals/compat_rh_de/config.cpp | 2 +- optionals/compat_rh_m4/config.cpp | 2 +- optionals/compat_rh_pdw/config.cpp | 2 +- optionals/compat_rhs_afrf3/config.cpp | 2 +- optionals/compat_rhs_usf3/config.cpp | 2 +- optionals/compat_rksl_pm_ii/config.cpp | 2 +- optionals/compat_sma3_iansky/config.cpp | 2 +- optionals/noactionmenu/config.cpp | 2 +- optionals/server/config.cpp | 2 +- optionals/tracers/config.cpp | 2 +- 109 files changed, 109 insertions(+), 109 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index e214875f5c7..07228c4f475 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics", "ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index 1db145a8940..e1ef138f615 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp index 4e25a1fb10a..ab3550f447f 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/apl/config.cpp b/addons/apl/config.cpp index 8d78ca2de3b..3e64a5e7a9d 100644 --- a/addons/apl/config.cpp +++ b/addons/apl/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; author = "Bohemia Interactive"; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 37e5e63d6c6..6b37cd415fb 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 573bc699ba3..548ad5cc46f 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index 07b456b2230..bb29a430942 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux","commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp index 6f09728adee..5f63f6991b4 100644 --- a/addons/ballistics/config.cpp +++ b/addons/ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index b38b90ab236..75026788cfc 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 02fa224a1a4..4796ef0179e 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 89af49afd83..54c12f31921 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main","ace_modules"}; author = CSTRING(ACETeam); authors[] = {"KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG_COMMON; }; }; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index 1824889d637..b660bc0db86 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index 30b0e033cdd..a29fdc68921 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Rosuto", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index 04690860dc8..89f33f445ba 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index bc8a3eedfda..a9e0fadc4b7 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index cd67eb4c114..768a4aeeaee 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet", "commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 4419c5e2e01..38bbe2c989e 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index 478ac20b33c..56bfb9974c5 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "BaerMitUmlaut"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 1c98a210ef0..7571e541b0d 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 16fe62ff255..564e61bf08c 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Drill"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp index 1a1e84e9b65..797ee5d7116 100644 --- a/addons/flashlights/config.cpp +++ b/addons/flashlights/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"voiper"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp index 688a9c1eb1a..0516744ef6b 100644 --- a/addons/flashsuppressors/config.cpp +++ b/addons/flashsuppressors/config.cpp @@ -16,7 +16,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/fonts/config.cpp b/addons/fonts/config.cpp index 5d7ec5cffcd..de6f7570173 100644 --- a/addons/fonts/config.cpp +++ b/addons/fonts/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"jaynus"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 07f6208c4fb..5475549e642 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Nou"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index f3c1c37f405..beeec12d26e 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index 5a8c7cfc360..37284c2a0c8 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index cc1d5f1a430..8bcc4931573 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 480e6548356..1c62b9f722a 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index ae9d7477b96..0b2d9ab79fb 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp index 5308b36a8f8..dc5aef1a31a 100644 --- a/addons/hitreactions/config.cpp +++ b/addons/hitreactions/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 9257d14cd03..88b4a0b124b 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Norrin", "Rocko", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index fb7383a0384..1b60c9324fe 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"NouberNou", "esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 653980c9d81..a18ba4f09df 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp index 1ad08febbf4..d97eeec34f1 100644 --- a/addons/inventory/config.cpp +++ b/addons/inventory/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Pabst Mirror, commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp index 093fcdaa9a9..a10a58c52e3 100644 --- a/addons/kestrel4500/config.cpp +++ b/addons/kestrel4500/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index c99397c02e1..f110fe990d8 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index ed64ebf85fc..97d47fa1247 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"marc_book"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index 4301b16e294..edba6b868ad 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"gpgpgpgp", "PabstMirror"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 011414814bb..5b88dc3488e 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index d579dd6fca1..4154fadc171 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -569,7 +569,7 @@ class CfgPatches { }; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam)}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 07905e5d984..42bbdc0bde0 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -12,7 +12,7 @@ #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD #define WEB_URL "http://ace3mod.com/" -#define PBO_URL url = WEB_URL; +#define PBO_URL url = WEB_URL // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.56 diff --git a/addons/map/config.cpp b/addons/map/config.cpp index 60f0cde1f63..97a8ea9e59a 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Rocko","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index 85f9f8e2026..ee3ba097a44 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Dslyecxi", "MikeMatrix"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 464aa2da67b..9920fcc6bb7 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/markers/config.cpp b/addons/markers/config.cpp index 567636e9c2c..e35e5b5d2f8 100644 --- a/addons/markers/config.cpp +++ b/addons/markers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 9f378212761..9ee521aefbe 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index b63599e8f3c..9b63d09b0e5 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_medical"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL + PBO_URL; VERSION_CONFIG }; }; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index 14012f5579a..d2771685344 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp index 9fae3f432f8..c0c12861cf4 100644 --- a/addons/missionmodules/config.cpp +++ b/addons/missionmodules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 90c8b69e5f8..15c38add4eb 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror","Grey","VKing"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index e8a64bc902e..e985dc66f47 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 8ba6420ee0d..4c3df52554b 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","Tachii"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/mx2a/config.cpp b/addons/mx2a/config.cpp index c7ddacce078..f8fcd401918 100644 --- a/addons/mx2a/config.cpp +++ b/addons/mx2a/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 650aee347c0..30aa9798982 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = { "commy2", "esteldunedain" }; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 2e715e501a4..eb17737b9d0 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/noidle/config.cpp b/addons/noidle/config.cpp index 8cad5cb5f51..ddad0f3d48d 100644 --- a/addons/noidle/config.cpp +++ b/addons/noidle/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/noradio/config.cpp b/addons/noradio/config.cpp index 0b47a8fcf66..976e77082b0 100644 --- a/addons/noradio/config.cpp +++ b/addons/noradio/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/norearm/config.cpp b/addons/norearm/config.cpp index 364ee7180c1..5819166e069 100644 --- a/addons/norearm/config.cpp +++ b/addons/norearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index e44b5738d95..443fc00bcd9 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -20,7 +20,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Taosenai","KoffeinFlummi","commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index cd57c7756df..c310b34b91f 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "PabstMirror"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index b6f1d25aa87..22cbaad4056 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index d5418775c44..a8bfa8981c9 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 38a962f2088..caf346444e4 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { VERSION_CONFIG; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'LH' de Wet"}; - PBO_URL + PBO_URL; }; }; diff --git a/addons/rangecard/config.cpp b/addons/rangecard/config.cpp index ffcb9046694..c7e4c4835ca 100644 --- a/addons/rangecard/config.cpp +++ b/addons/rangecard/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Advanced_Ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index bb7406468b6..4cfb49c491f 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","TaoSensai","commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index 9e8ae31aa84..4580b0541a6 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk", "Jonpas"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index dd2da4a5764..44cb67e716e 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 4d141e27ceb..9d218a4dbd5 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 4d17d17d557..62f9e8ec46c 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 23c78048c1e..9aa2d5993ab 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index 11e3bf2fa1c..b097e5b3966 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal", "Jonpas"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 71cfc116bd1..d2472a273c4 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = { "bux578", "commy2" }; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/safemode/config.cpp b/addons/safemode/config.cpp index 6e95b219d36..4356bc522a2 100644 --- a/addons/safemode/config.cpp +++ b/addons/safemode/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 2e23313db14..937e18404cd 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 48f22cdc46e..0b079d8139a 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index a7fa6772043..190cf32aecf 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Jonpas"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/smallarms/config.cpp b/addons/smallarms/config.cpp index 279726ef5ba..b4d1aa1347f 100644 --- a/addons/smallarms/config.cpp +++ b/addons/smallarms/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"TaoSensai", "KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index 522d4121903..0079fa63d7c 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"F3 Project","Head","SilentSpike","voiper"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index d90a852f1a1..c6280d9b61d 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index 3966e7a74e7..246a0ba9819 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux578"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 08edb1a9c61..f347b722e4c 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index c666c6afbc9..844620bc047 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"BaerMitUmlaut","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/thermals/config.cpp b/addons/thermals/config.cpp index 06a2e90594c..1e13cc7e2a1 100644 --- a/addons/thermals/config.cpp +++ b/addons/thermals/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"[TF]Nkey"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index d8c7f70ba4b..a2730f44084 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Grey", "esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 83c012f39a3..3411c705347 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index 9aa3eab9424..78b36a5b4f2 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"VKing", "Jonpas"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index 6f3e71fb68a..f3b6d1681fe 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Ghost","Hamburger SV","commy2","bux578"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 22c914d7679..3c8bd3225d4 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); - PBO_URL + PBO_URL; authors[] = {"PabstMirror"}; authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; diff --git a/addons/vehicles/config.cpp b/addons/vehicles/config.cpp index 3c405d07917..e88a822a8a0 100644 --- a/addons/vehicles/config.cpp +++ b/addons/vehicles/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index d93e811ca06..37ba9ce9e98 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Winter", "Jonpas", "Arkhir"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index ecaf0baceea..2cad4a87b87 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 7be9d32bc58..1b8a59de5da 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 9f9cb21b071..0e38d83a5d1 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/yardage450/config.cpp b/addons/yardage450/config.cpp index 6dbdd9707bb..04c2835293f 100644 --- a/addons/yardage450/config.cpp +++ b/addons/yardage450/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_laser"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp", "Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 2c1fff347a1..44925948928 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"SilentSpike"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; // Use additional cfgPatches to contextually remove modules from zeus diff --git a/extras/blank/config.cpp b/extras/blank/config.cpp index c4ee9dd3441..6770afa780b 100644 --- a/extras/blank/config.cpp +++ b/extras/blank/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {""}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_adr_97/config.cpp b/optionals/compat_adr_97/config.cpp index a0c1f28cb2c..9f140ec3c66 100644 --- a/optionals/compat_adr_97/config.cpp +++ b/optionals/compat_adr_97/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"A3_Weapons_F_Mod"}; author = ECSTRING(common,ACETeam); authors[] = {"Nic547"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_r3f/config.cpp b/optionals/compat_r3f/config.cpp index 0e8549c0309..514014abf3a 100644 --- a/optionals/compat_r3f/config.cpp +++ b/optionals/compat_r3f/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"R3F_Armes", "R3F_Acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_acc/config.cpp b/optionals/compat_rh_acc/config.cpp index 069af9ebd46..cbc41663fed 100644 --- a/optionals/compat_rh_acc/config.cpp +++ b/optionals/compat_rh_acc/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_de/config.cpp b/optionals/compat_rh_de/config.cpp index 9c5b7137d8e..c4188b79163 100644 --- a/optionals/compat_rh_de/config.cpp +++ b/optionals/compat_rh_de/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_de_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_m4/config.cpp b/optionals/compat_rh_m4/config.cpp index 6d33ba132c0..c53a22adf31 100644 --- a/optionals/compat_rh_m4/config.cpp +++ b/optionals/compat_rh_m4/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_m4_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_pdw/config.cpp b/optionals/compat_rh_pdw/config.cpp index 23a73237450..4edc2312319 100644 --- a/optionals/compat_rh_pdw/config.cpp +++ b/optionals/compat_rh_pdw/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_PDW"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index 9a8fbb54a6e..f619ad91668 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index 9a1858ecef6..4b1da527a79 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_rksl_pm_ii/config.cpp b/optionals/compat_rksl_pm_ii/config.cpp index 46922f1afcb..f5d9d43e2b7 100644 --- a/optionals/compat_rksl_pm_ii/config.cpp +++ b/optionals/compat_rksl_pm_ii/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RKSL_PMII"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/compat_sma3_iansky/config.cpp b/optionals/compat_sma3_iansky/config.cpp index 241e188d1a8..1ed555e9ad7 100644 --- a/optionals/compat_sma3_iansky/config.cpp +++ b/optionals/compat_sma3_iansky/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"iansky_opt"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/noactionmenu/config.cpp b/optionals/noactionmenu/config.cpp index 02390a68634..77b38a3e626 100644 --- a/optionals/noactionmenu/config.cpp +++ b/optionals/noactionmenu/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/server/config.cpp b/optionals/server/config.cpp index 97a53c88b65..df1ae77b3fe 100644 --- a/optionals/server/config.cpp +++ b/optionals/server/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; diff --git a/optionals/tracers/config.cpp b/optionals/tracers/config.cpp index 54c0ef769c4..0a221be541e 100644 --- a/optionals/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"ACE2 Team"}; - PBO_URL + PBO_URL; VERSION_CONFIG; }; }; From ba27c8f91418a11194f13b33c993bcc811f3e039 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 1 Jun 2016 14:41:33 +0200 Subject: [PATCH 223/268] Fix WEB_URL end of line error (#3854) * Fix WEB_URL end of line error * Change location of quote macro * Fix medical_menu VERSION_CONFIG error --- addons/main/script_mod.hpp | 4 ++-- addons/medical_menu/config.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 42bbdc0bde0..a81104f1243 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -11,8 +11,8 @@ #define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD -#define WEB_URL "http://ace3mod.com/" -#define PBO_URL url = WEB_URL +#define WEB_URL http://ace3mod.com/ +#define PBO_URL url = QUOTE(WEB_URL) // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.56 diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index 9b63d09b0e5..dfd87020a2f 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -8,8 +8,8 @@ class CfgPatches { requiredAddons[] = {"ace_medical"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL; - VERSION_CONFIG + PBO_URL; + VERSION_CONFIG; }; }; From 95573ee711ba65993f60be735dae1e982ae52079 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 1 Jun 2016 23:45:51 +0200 Subject: [PATCH 224/268] Stringtable URL (#3855) * Move url into stringtable to display it properly, Add some missing author and url entries * Fix main * Remove duplicate author --- .editorconfig | 1 - addons/advanced_ballistics/config.cpp | 2 +- addons/ai/config.cpp | 2 +- addons/aircraft/config.cpp | 2 +- addons/apl/config.cpp | 2 +- addons/atragmx/config.cpp | 2 +- addons/attach/config.cpp | 2 +- addons/backpacks/config.cpp | 2 +- addons/ballistics/config.cpp | 2 +- addons/captives/config.cpp | 2 +- addons/cargo/config.cpp | 2 +- addons/common/config.cpp | 2 +- addons/concertina_wire/config.cpp | 2 +- addons/dagr/config.cpp | 2 +- addons/disarming/config.cpp | 2 +- addons/disposable/config.cpp | 2 +- addons/dragging/config.cpp | 2 +- addons/explosives/config.cpp | 2 +- addons/fastroping/config.cpp | 2 +- addons/fcs/config.cpp | 2 +- addons/finger/config.cpp | 2 +- addons/flashlights/config.cpp | 2 +- addons/flashsuppressors/config.cpp | 2 +- addons/fonts/config.cpp | 2 +- addons/frag/config.cpp | 2 +- addons/gestures/config.cpp | 2 +- addons/gforces/config.cpp | 2 +- addons/goggles/config.cpp | 2 +- addons/grenades/config.cpp | 2 +- addons/hearing/config.cpp | 2 +- addons/hitreactions/config.cpp | 2 +- addons/huntir/config.cpp | 2 +- addons/interact_menu/config.cpp | 2 +- addons/interaction/config.cpp | 2 +- addons/inventory/config.cpp | 2 +- addons/javelin/config.cpp | 4 +++- addons/kestrel4500/config.cpp | 2 +- addons/laser/config.cpp | 6 ++++-- addons/laser_selfdesignate/config.cpp | 4 +++- addons/laserpointer/config.cpp | 2 +- addons/logistics_uavbattery/config.cpp | 2 +- addons/logistics_wirecutter/config.cpp | 2 +- addons/magazinerepack/config.cpp | 2 +- addons/main/config.cpp | 5 ++--- addons/main/script_mod.hpp | 3 --- addons/main/stringtable.xml | 13 ++++++++++++- addons/map/config.cpp | 2 +- addons/map_gestures/config.cpp | 2 +- addons/maptools/config.cpp | 2 +- addons/markers/config.cpp | 2 +- addons/medical/config.cpp | 2 +- addons/medical_menu/config.cpp | 2 +- addons/microdagr/config.cpp | 2 +- addons/missileguidance/config.cpp | 4 +++- addons/missionmodules/config.cpp | 2 +- addons/mk6mortar/config.cpp | 2 +- addons/modules/config.cpp | 2 +- addons/movement/config.cpp | 2 +- addons/mx2a/config.cpp | 2 +- addons/nametags/config.cpp | 2 +- addons/nightvision/config.cpp | 2 +- addons/noidle/config.cpp | 2 +- addons/noradio/config.cpp | 2 +- addons/norearm/config.cpp | 2 +- addons/optics/config.cpp | 2 +- addons/optionsmenu/config.cpp | 2 +- addons/overheating/config.cpp | 2 +- addons/overpressure/config.cpp | 2 +- addons/parachute/config.cpp | 2 +- addons/rangecard/config.cpp | 2 +- addons/realisticnames/config.cpp | 2 +- addons/rearm/config.cpp | 2 +- addons/recoil/config.cpp | 2 +- addons/refuel/config.cpp | 2 +- addons/reload/config.cpp | 2 +- addons/reloadlaunchers/config.cpp | 2 +- addons/repair/config.cpp | 2 +- addons/respawn/config.cpp | 2 +- addons/safemode/config.cpp | 2 +- addons/sandbag/config.cpp | 2 +- addons/scopes/config.cpp | 2 +- addons/sitting/config.cpp | 2 +- addons/slideshow/config.cpp | 4 +++- addons/smallarms/config.cpp | 2 +- addons/spectator/config.cpp | 2 +- addons/spottingscope/config.cpp | 2 +- addons/switchunits/config.cpp | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/tagging/config.cpp | 2 +- addons/thermals/config.cpp | 2 +- addons/trenches/config.cpp | 2 +- addons/tripod/config.cpp | 2 +- addons/ui/config.cpp | 2 +- addons/vector/config.cpp | 2 +- addons/vehiclelock/config.cpp | 2 +- addons/vehicles/config.cpp | 2 +- addons/viewdistance/config.cpp | 2 +- addons/weaponselect/config.cpp | 2 +- addons/weather/config.cpp | 2 +- addons/winddeflection/config.cpp | 2 +- addons/yardage450/config.cpp | 2 +- addons/zeus/config.cpp | 2 +- extras/blank/config.cpp | 2 +- optionals/compat_adr_97/config.cpp | 2 +- optionals/compat_r3f/config.cpp | 2 +- optionals/compat_rh_acc/config.cpp | 2 +- optionals/compat_rh_de/config.cpp | 2 +- optionals/compat_rh_m4/config.cpp | 2 +- optionals/compat_rh_pdw/config.cpp | 2 +- optionals/compat_rhs_afrf3/config.cpp | 2 +- optionals/compat_rhs_usf3/config.cpp | 2 +- optionals/compat_rksl_pm_ii/config.cpp | 2 +- optionals/compat_sma3_iansky/config.cpp | 2 +- optionals/noactionmenu/config.cpp | 2 +- optionals/server/config.cpp | 2 +- optionals/tracers/config.cpp | 2 +- 116 files changed, 137 insertions(+), 121 deletions(-) diff --git a/.editorconfig b/.editorconfig index 0deca3d2ab4..5822f71d1d7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,4 +10,3 @@ trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false - diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 07228c4f475..692a9391a0e 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics", "ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/ai/config.cpp b/addons/ai/config.cpp index e1ef138f615..504c8b6e3cc 100644 --- a/addons/ai/config.cpp +++ b/addons/ai/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp index ab3550f447f..f9897493837 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/apl/config.cpp b/addons/apl/config.cpp index 3e64a5e7a9d..3a4743f1ace 100644 --- a/addons/apl/config.cpp +++ b/addons/apl/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_main"}; author = "Bohemia Interactive"; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/atragmx/config.cpp b/addons/atragmx/config.cpp index 6b37cd415fb..db1b85b7612 100644 --- a/addons/atragmx/config.cpp +++ b/addons/atragmx/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index 548ad5cc46f..4c06adc3eb7 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/backpacks/config.cpp b/addons/backpacks/config.cpp index bb29a430942..278e3ac452e 100644 --- a/addons/backpacks/config.cpp +++ b/addons/backpacks/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux","commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp index 5f63f6991b4..59c29f0a7f4 100644 --- a/addons/ballistics/config.cpp +++ b/addons/ballistics/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 75026788cfc..a73b604fb20 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 4796ef0179e..860eff0d998 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 54c12f31921..2cf6dd4ec9c 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main","ace_modules"}; author = CSTRING(ACETeam); authors[] = {"KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG_COMMON; }; }; diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp index b660bc0db86..5333c83bb58 100644 --- a/addons/concertina_wire/config.cpp +++ b/addons/concertina_wire/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/dagr/config.cpp b/addons/dagr/config.cpp index a29fdc68921..1f440744f4d 100644 --- a/addons/dagr/config.cpp +++ b/addons/dagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {"Rosuto", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp index 89f33f445ba..6bf33971060 100644 --- a/addons/disarming/config.cpp +++ b/addons/disarming/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index a9e0fadc4b7..e240206938f 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 768a4aeeaee..a3e87c5824a 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet", "commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 38bbe2c989e..5eb92848c7b 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index 56bfb9974c5..c451a1b0dd2 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "BaerMitUmlaut"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 7571e541b0d..1d7c263f1e7 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","BadGuy (simon84)","commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 564e61bf08c..fa953b42985 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Drill"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/flashlights/config.cpp b/addons/flashlights/config.cpp index 797ee5d7116..08349be0a75 100644 --- a/addons/flashlights/config.cpp +++ b/addons/flashlights/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"voiper"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/flashsuppressors/config.cpp b/addons/flashsuppressors/config.cpp index 0516744ef6b..378858d71cc 100644 --- a/addons/flashsuppressors/config.cpp +++ b/addons/flashsuppressors/config.cpp @@ -16,7 +16,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/fonts/config.cpp b/addons/fonts/config.cpp index de6f7570173..dc6b4c705fa 100644 --- a/addons/fonts/config.cpp +++ b/addons/fonts/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"jaynus"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 5475549e642..1727570003c 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Nou"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index beeec12d26e..660c1eeff5f 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index 37284c2a0c8..58f11020eb9 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 8bcc4931573..6a20daaee71 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'L-H' de Wet"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index 1c62b9f722a..7d98e13a240 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 0b2d9ab79fb..3a52c369d8f 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "A3_Characters_F", "A3_Characters_F_Kart"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2", "Rocko", "Rommel", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp index dc5aef1a31a..d6146a6b29d 100644 --- a/addons/hitreactions/config.cpp +++ b/addons/hitreactions/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 88b4a0b124b..ce4b10bab11 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Norrin", "Rocko", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 1b60c9324fe..f84fea7ef93 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"NouberNou", "esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index a18ba4f09df..5a21e452e3c 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interact_menu"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578", "dixon13"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp index d97eeec34f1..adef4516446 100644 --- a/addons/inventory/config.cpp +++ b/addons/inventory/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Pabst Mirror, commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/javelin/config.cpp b/addons/javelin/config.cpp index 8dfc970902d..b789bfea016 100644 --- a/addons/javelin/config.cpp +++ b/addons/javelin/config.cpp @@ -5,7 +5,9 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { "ace_main", "ace_common", "ace_missileguidance" }; + requiredAddons[] = {"ace_main", "ace_common", "ace_missileguidance"}; + author = ECSTRING(common,ACETeam); + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp index a10a58c52e3..74e2f18f19f 100644 --- a/addons/kestrel4500/config.cpp +++ b/addons/kestrel4500/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_common", "ACE_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index ad368cdc2d4..3ba439f0471 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -5,7 +5,9 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = { "ace_common" }; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; @@ -13,4 +15,4 @@ class CfgPatches { #include "CfgEventhandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscInGameUI.hpp" \ No newline at end of file +#include "RscInGameUI.hpp" diff --git a/addons/laser_selfdesignate/config.cpp b/addons/laser_selfdesignate/config.cpp index 597500caf63..60595e2d0d0 100644 --- a/addons/laser_selfdesignate/config.cpp +++ b/addons/laser_selfdesignate/config.cpp @@ -5,7 +5,9 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_laser"}; + requiredAddons[] = {"ace_laser"}; + author = ECSTRING(common,ACETeam); + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index f110fe990d8..63ac1544713 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index 97d47fa1247..5197a899e3d 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"marc_book"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp index edba6b868ad..910dcdc9bbd 100644 --- a/addons/logistics_wirecutter/config.cpp +++ b/addons/logistics_wirecutter/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"gpgpgpgp", "PabstMirror"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 5b88dc3488e..c660b44ca7d 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 4154fadc171..9969e524479 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -568,8 +568,7 @@ class CfgPatches { "cba_jr" }; author = ECSTRING(common,ACETeam); - authors[] = {ECSTRING(common,ACETeam)}; - PBO_URL; + url = CSTRING(URL); VERSION_CONFIG; }; }; @@ -582,7 +581,7 @@ class CfgMods { hidePicture = "true"; hideName = "true"; actionName = "Website"; - action = "http://ace3mod.com/"; + action = CSTRING(URL); description = "Issue Tracker: https://github.com/acemod/ACE3/issues"; }; }; diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index a81104f1243..1d9a8f2b6be 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -11,9 +11,6 @@ #define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD -#define WEB_URL http://ace3mod.com/ -#define PBO_URL url = QUOTE(WEB_URL) - // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.56 #define REQUIRED_CBA_VERSION {2,3,1} diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 985bfb48366..4648225f9f8 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -12,5 +12,16 @@ Logistica ACE ACE Logistique + + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + http://ace3mod.com/ + - \ No newline at end of file + diff --git a/addons/map/config.cpp b/addons/map/config.cpp index 97a8ea9e59a..78bf2340b76 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","Rocko","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index ee3ba097a44..52f333c7172 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Dslyecxi", "MikeMatrix"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index 9920fcc6bb7..6fedff6302b 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/markers/config.cpp b/addons/markers/config.cpp index e35e5b5d2f8..658a3ab3706 100644 --- a/addons/markers/config.cpp +++ b/addons/markers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 9ee521aefbe..911c9bd125b 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction", "ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index dfd87020a2f..bdc9bf1f25f 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_medical"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp index d2771685344..d8823d0dc0c 100644 --- a/addons/microdagr/config.cpp +++ b/addons/microdagr/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/missileguidance/config.cpp b/addons/missileguidance/config.cpp index 591a4f1c5e3..365bd18327a 100644 --- a/addons/missileguidance/config.cpp +++ b/addons/missileguidance/config.cpp @@ -5,7 +5,9 @@ class CfgPatches { units[] = {"ACE_Comanche_Test"}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_laser"}; + requiredAddons[] = {"ace_laser"}; + author = ECSTRING(common,ACETeam); + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/missionmodules/config.cpp b/addons/missionmodules/config.cpp index c0c12861cf4..2f58f5c42f1 100644 --- a/addons/missionmodules/config.cpp +++ b/addons/missionmodules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 15c38add4eb..c445bd0a324 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"PabstMirror","Grey","VKing"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index e985dc66f47..aeb097fdffa 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_main"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 4c3df52554b..a1d9b25be48 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","Tachii"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/mx2a/config.cpp b/addons/mx2a/config.cpp index f8fcd401918..c59dc43dd39 100644 --- a/addons/mx2a/config.cpp +++ b/addons/mx2a/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 30aa9798982..b02dfa9297b 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = { "commy2", "esteldunedain" }; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index eb17737b9d0..9397740e61a 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "PabstMirror"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/noidle/config.cpp b/addons/noidle/config.cpp index ddad0f3d48d..b0792486f75 100644 --- a/addons/noidle/config.cpp +++ b/addons/noidle/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/noradio/config.cpp b/addons/noradio/config.cpp index 976e77082b0..0781a4a15e7 100644 --- a/addons/noradio/config.cpp +++ b/addons/noradio/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/norearm/config.cpp b/addons/norearm/config.cpp index 5819166e069..2b670e0db1e 100644 --- a/addons/norearm/config.cpp +++ b/addons/norearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index 443fc00bcd9..c63049356cf 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -20,7 +20,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Taosenai","KoffeinFlummi","commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index c310b34b91f..0e564535b91 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal", "PabstMirror"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 22cbaad4056..2c48191810f 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index a8bfa8981c9..1839dc3ee1b 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index caf346444e4..dec722ea96f 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { VERSION_CONFIG; author = ECSTRING(common,ACETeam); authors[] = {"Garth 'LH' de Wet"}; - PBO_URL; + url = ECSTRING(main,URL); }; }; diff --git a/addons/rangecard/config.cpp b/addons/rangecard/config.cpp index c7e4c4835ca..fd39a3a5231 100644 --- a/addons/rangecard/config.cpp +++ b/addons/rangecard/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ACE_Advanced_Ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/realisticnames/config.cpp b/addons/realisticnames/config.cpp index 4cfb49c491f..d85fe9771d4 100644 --- a/addons/realisticnames/config.cpp +++ b/addons/realisticnames/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi","TaoSensai","commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index 4580b0541a6..bd0a4980e20 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk", "Jonpas"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index 44cb67e716e..e6eee4a9afb 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 9d218a4dbd5..2ace24fb925 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"GitHawk"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 62f9e8ec46c..940820ccba4 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/reloadlaunchers/config.cpp b/addons/reloadlaunchers/config.cpp index 9aa2d5993ab..0ff68c0c9c4 100644 --- a/addons/reloadlaunchers/config.cpp +++ b/addons/reloadlaunchers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index b097e5b3966..e23eeeaea07 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2", "Glowbal", "Jonpas"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index d2472a273c4..5305232543d 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = { "bux578", "commy2" }; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/safemode/config.cpp b/addons/safemode/config.cpp index 4356bc522a2..05510a53a5c 100644 --- a/addons/safemode/config.cpp +++ b/addons/safemode/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 937e18404cd..18f09c3970b 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 0b079d8139a..fb1f0274cad 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = { "ace_common" }; author = ECSTRING(common,ACETeam); authors[] = {"KoffeinFlummi", "esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 190cf32aecf..bf38435f22b 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Jonpas"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/slideshow/config.cpp b/addons/slideshow/config.cpp index b196022d9b0..3a2e757e6a8 100644 --- a/addons/slideshow/config.cpp +++ b/addons/slideshow/config.cpp @@ -6,7 +6,9 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[]= {"Jonpas", "DaC"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Jonpas", "DaC"}; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/smallarms/config.cpp b/addons/smallarms/config.cpp index b4d1aa1347f..5b211fa37ed 100644 --- a/addons/smallarms/config.cpp +++ b/addons/smallarms/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"TaoSensai", "KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index 0079fa63d7c..5907e7c3e1b 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"F3 Project","Head","SilentSpike","voiper"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index c6280d9b61d..a92f91ec50a 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2", "p1nga"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index 246a0ba9819..1bdec707290 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"bux578"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index f347b722e4c..11f15ac9341 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/tagging/config.cpp b/addons/tagging/config.cpp index 844620bc047..a4161c18628 100644 --- a/addons/tagging/config.cpp +++ b/addons/tagging/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"BaerMitUmlaut","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/thermals/config.cpp b/addons/thermals/config.cpp index 1e13cc7e2a1..b4ad00f41cf 100644 --- a/addons/thermals/config.cpp +++ b/addons/thermals/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"[TF]Nkey"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index a2730f44084..d6afd2f9d1c 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Grey", "esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 3411c705347..1ee297e0e07 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); authors[] = {"Rocko", "Scubaman3D", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index 78b36a5b4f2..84b7f7001cb 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"VKing", "Jonpas"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/vector/config.cpp b/addons/vector/config.cpp index f3b6d1681fe..66b2a5c7ea7 100644 --- a/addons/vector/config.cpp +++ b/addons/vector/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Ghost","Hamburger SV","commy2","bux578"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 3c8bd3225d4..942c3959f28 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; author = ECSTRING(common,ACETeam); - PBO_URL; + url = ECSTRING(main,URL); authors[] = {"PabstMirror"}; authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; diff --git a/addons/vehicles/config.cpp b/addons/vehicles/config.cpp index e88a822a8a0..9d2cd3caac7 100644 --- a/addons/vehicles/config.cpp +++ b/addons/vehicles/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 37ba9ce9e98..bf3dd29d24d 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Winter", "Jonpas", "Arkhir"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 2cad4a87b87..b6a98e6d88d 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2","KoffeinFlummi","esteldunedain"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 1b8a59de5da..d2d8764ead5 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index 0e38d83a5d1..2faf5364238 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_weather"}; author = ECSTRING(common,ACETeam); authors[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/yardage450/config.cpp b/addons/yardage450/config.cpp index 04c2835293f..18779bd5be3 100644 --- a/addons/yardage450/config.cpp +++ b/addons/yardage450/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_apl", "ace_laser"}; author = ECSTRING(common,ACETeam); authors[] = {"Spooner", "tcp", "Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 44925948928..6b066c8efb5 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"SilentSpike"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; // Use additional cfgPatches to contextually remove modules from zeus diff --git a/extras/blank/config.cpp b/extras/blank/config.cpp index 6770afa780b..f78545d212b 100644 --- a/extras/blank/config.cpp +++ b/extras/blank/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {""}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_adr_97/config.cpp b/optionals/compat_adr_97/config.cpp index 9f140ec3c66..aca323c98c6 100644 --- a/optionals/compat_adr_97/config.cpp +++ b/optionals/compat_adr_97/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"A3_Weapons_F_Mod"}; author = ECSTRING(common,ACETeam); authors[] = {"Nic547"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_r3f/config.cpp b/optionals/compat_r3f/config.cpp index 514014abf3a..c7e42c35adf 100644 --- a/optionals/compat_r3f/config.cpp +++ b/optionals/compat_r3f/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"R3F_Armes", "R3F_Acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_acc/config.cpp b/optionals/compat_rh_acc/config.cpp index cbc41663fed..b66be685937 100644 --- a/optionals/compat_rh_acc/config.cpp +++ b/optionals/compat_rh_acc/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_acc"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_de/config.cpp b/optionals/compat_rh_de/config.cpp index c4188b79163..77dc8281050 100644 --- a/optionals/compat_rh_de/config.cpp +++ b/optionals/compat_rh_de/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_de_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_m4/config.cpp b/optionals/compat_rh_m4/config.cpp index c53a22adf31..4bacb9dedf4 100644 --- a/optionals/compat_rh_m4/config.cpp +++ b/optionals/compat_rh_m4/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_m4_cfg"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rh_pdw/config.cpp b/optionals/compat_rh_pdw/config.cpp index 4edc2312319..e3c5d15a07a 100644 --- a/optionals/compat_rh_pdw/config.cpp +++ b/optionals/compat_rh_pdw/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RH_PDW"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index f619ad91668..bf36181ce84 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index 4b1da527a79..e218f77d2e3 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg", "GitHawk", "BaerMitUmlaut"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_rksl_pm_ii/config.cpp b/optionals/compat_rksl_pm_ii/config.cpp index f5d9d43e2b7..ca0a7189f26 100644 --- a/optionals/compat_rksl_pm_ii/config.cpp +++ b/optionals/compat_rksl_pm_ii/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"RKSL_PMII"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/compat_sma3_iansky/config.cpp b/optionals/compat_sma3_iansky/config.cpp index 1ed555e9ad7..5611c2d4af3 100644 --- a/optionals/compat_sma3_iansky/config.cpp +++ b/optionals/compat_sma3_iansky/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"iansky_opt"}; author = ECSTRING(common,ACETeam); authors[] = {"Ruthberg"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/noactionmenu/config.cpp b/optionals/noactionmenu/config.cpp index 77b38a3e626..77e0457643d 100644 --- a/optionals/noactionmenu/config.cpp +++ b/optionals/noactionmenu/config.cpp @@ -9,7 +9,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"commy2"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/server/config.cpp b/optionals/server/config.cpp index df1ae77b3fe..ab354fa4d8a 100644 --- a/optionals/server/config.cpp +++ b/optionals/server/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[] = {"Glowbal"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; diff --git a/optionals/tracers/config.cpp b/optionals/tracers/config.cpp index 0a221be541e..32f1bfbb2d3 100644 --- a/optionals/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredAddons[] = {"ace_ballistics"}; author = ECSTRING(common,ACETeam); authors[] = {"ACE2 Team"}; - PBO_URL; + url = ECSTRING(main,URL); VERSION_CONFIG; }; }; From b949440eb1279c82e61bd725c0c6fef1a28480d8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 1 Jun 2016 17:27:55 -0500 Subject: [PATCH 225/268] Goggles - Fix script error from CBA_fnc_waitAndExecute --- addons/goggles/XEH_postInit.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 0bce24060fc..2885f8e4a6c 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -31,7 +31,6 @@ GVAR(EffectsActive) = false; SETGLASSES(ace_player,GLASSESDEFAULT); -GVAR(EyesDamageScript) = -1; GVAR(FrameEvent) = [false, [false, 20]]; GVAR(PostProcessEyes_Enabled) = false; GVAR(DustHandler) = -1; @@ -83,7 +82,7 @@ GVAR(OldGlasses) = ""; GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [1, 1, 1, 1], [1, 1, 1, 0]]; GVAR(PostProcessEyes) ppEffectCommit 5; - GVAR(EyesDamageScript) = [{ + [{ params ["_unit"]; GVAR(PostProcessEyes) ppEffectEnable false; From cc83bf64d632d347c98472f827351b1ac6213ea8 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Thu, 2 Jun 2016 10:35:33 +0200 Subject: [PATCH 226/268] Moved all deployables to equipment submenu --- addons/tacticalladder/CfgVehicles.hpp | 16 +++++++++------- addons/tripod/CfgVehicles.hpp | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index e6525d8edd8..564a0346140 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -5,13 +5,15 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_SelfActions { - class ACE_TacticalLadders { - displayName = CSTRING(Deploy); - condition = QUOTE(backpack _player == 'ACE_TacticalLadder_Pack'); - statement = QUOTE([_player] call FUNC(deployTL)); - exceptions[] = {}; - showDisabled = 1; - priority = 4; + class ACE_Equipment { + class ACE_TacticalLadders { + displayName = CSTRING(Deploy); + condition = QUOTE(backpack _player == 'ACE_TacticalLadder_Pack'); + statement = QUOTE([_player] call FUNC(deployTL)); + exceptions[] = {}; + showDisabled = 1; + priority = 4; + }; }; }; }; diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index b30500ab008..b1d804e393b 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -5,13 +5,15 @@ class CfgVehicles { class Man; class CAManBase: Man { class ACE_SelfActions { - class GVAR(place) { - displayName = CSTRING(Placedown); - condition = QUOTE([ARR_2(_player,'ACE_Tripod')] call EFUNC(common,hasItem)); - statement = QUOTE([ARR_2(_player,'ACE_Tripod')] call FUNC(place)); - showDisabled = 0; - priority = 2; - icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); + class ACE_Equipment { + class GVAR(place) { + displayName = CSTRING(Placedown); + condition = QUOTE([ARR_2(_player,'ACE_Tripod')] call EFUNC(common,hasItem)); + statement = QUOTE([ARR_2(_player,'ACE_Tripod')] call FUNC(place)); + showDisabled = 0; + priority = 2; + icon = QPATHTOF(UI\w_sniper_tripod_ca.paa); + }; }; }; }; From 4c995d4c5c6d49d84216465f89ae5f947613cceb Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 2 Jun 2016 14:32:39 +0200 Subject: [PATCH 227/268] Improve selective UI API (#3805) * Improve selective UI API, Disable ammo count when reload component is loaded, Fix stance UI * Upgrade Selective UI framework for controls that share IDCs for gunner and soldier * Separate more soldier and gunner settings sharing same IDCs, Remove vehicle gunner weapon which has no effect anymore * Separate more soldier and gunner IDC sharing elements, Fix typo, Fix API setting not being respected in case where selective type is not the same on load * Rework Selective UI using ACE_UI config, Cleanup, Add ACE_UI to FCS component to mark it (is already disabled due to other necessary settings for FCS to function) * Do location check in function, Rename condition to location, change to number * Use macros in ACE_UI location --- addons/common/RscInfoType.hpp | 4 + addons/fcs/ACE_UI.hpp | 7 + addons/fcs/config.cpp | 1 + addons/reload/ACE_UI.hpp | 7 + addons/reload/config.cpp | 5 +- addons/reload/script_component.hpp | 2 +- addons/ui/ACE_Settings.hpp | 102 ++++++++-- addons/ui/ACE_UI.hpp | 180 ++++++++++++++++++ addons/ui/CfgVehicles.hpp | 78 ++++++-- addons/ui/XEH_clientInit.sqf | 25 ++- addons/ui/XEH_preInit.sqf | 1 + addons/ui/config.cpp | 1 + addons/ui/functions/fnc_moduleInit.sqf | 14 +- .../ui/functions/fnc_setAdvancedElement.sqf | 56 ++++-- .../ui/functions/fnc_setElementVisibility.sqf | 44 +++-- addons/ui/functions/fnc_setElements.sqf | 4 - addons/ui/script_component.hpp | 53 ++---- addons/ui/stringtable.xml | 41 +++- 18 files changed, 496 insertions(+), 129 deletions(-) create mode 100644 addons/fcs/ACE_UI.hpp create mode 100644 addons/reload/ACE_UI.hpp create mode 100644 addons/ui/ACE_UI.hpp diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index e5af2454cbc..32bc0b698f8 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -111,4 +111,8 @@ class RscInGameUI { class RscStaminaBar { onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStaminaBar"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgStaminaBar)),_this select 0)]); }; + + class RscStanceInfo { + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call FUNC(localEvent);); + }; }; diff --git a/addons/fcs/ACE_UI.hpp b/addons/fcs/ACE_UI.hpp new file mode 100644 index 00000000000..ca35779f366 --- /dev/null +++ b/addons/fcs/ACE_UI.hpp @@ -0,0 +1,7 @@ +class ACE_UI { + class gunnerZeroing { + class conditions { + ADDON = "false"; + }; + }; +}; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 1d7c263f1e7..a38cee5d7db 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -14,6 +14,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" +#include "ACE_UI.hpp" #include "CfgAmmo.hpp" #include "CfgMagazines.hpp" diff --git a/addons/reload/ACE_UI.hpp b/addons/reload/ACE_UI.hpp new file mode 100644 index 00000000000..6dae3e5147e --- /dev/null +++ b/addons/reload/ACE_UI.hpp @@ -0,0 +1,7 @@ +class ACE_UI { + class ammoCount { + class conditions { + ADDON = "false"; + }; + }; +}; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 940820ccba4..1e97fa70f1a 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -14,11 +14,8 @@ class CfgPatches { }; #include "CfgVehicles.hpp" - #include "CfgMagazines.hpp" - #include "CfgEventHandlers.hpp" - #include "CfgActions.hpp" - #include "ACE_Settings.hpp" +#include "ACE_UI.hpp" diff --git a/addons/reload/script_component.hpp b/addons/reload/script_component.hpp index 09993faaa4c..eece5acec75 100644 --- a/addons/reload/script_component.hpp +++ b/addons/reload/script_component.hpp @@ -14,4 +14,4 @@ #define DEBUG_SETTINGS DEBUG_ENABLED_RELOAD #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" diff --git a/addons/ui/ACE_Settings.hpp b/addons/ui/ACE_Settings.hpp index 89ddc8d35d8..e6c3e5e4960 100644 --- a/addons/ui/ACE_Settings.hpp +++ b/addons/ui/ACE_Settings.hpp @@ -45,7 +45,7 @@ class ACE_Settings { }; // ADVANCED - // Upper Weapon Info + // Soldier class GVAR(weaponName) { category = CSTRING(Category); displayName = CSTRING(WeaponName); @@ -70,8 +70,6 @@ class ACE_Settings { value = 1; isClientSettable = 1; }; - - // Lower Weapon Info class GVAR(ammoType) { category = CSTRING(Category); displayName = CSTRING(AmmoType); @@ -85,7 +83,7 @@ class ACE_Settings { displayName = CSTRING(AmmoCount); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - value = 0; + value = 1; isClientSettable = 1; }; class GVAR(magCount) { @@ -122,14 +120,12 @@ class ACE_Settings { }; class GVAR(weaponLowerInfoBackground) { category = CSTRING(Category); - displayName = CSTRING(WeaponLowerInfoBackground); //todo + displayName = CSTRING(WeaponLowerInfoBackground); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; value = 1; isClientSettable = 1; }; - - // Stance class GVAR(stance) { category = CSTRING(Category); displayName = CSTRING(Stance); @@ -138,8 +134,6 @@ class ACE_Settings { value = 1; isClientSettable = 1; }; - - // Stamina Bar class GVAR(staminaBar) { category = CSTRING(Category); displayName = CSTRING(StaminaBar); @@ -149,6 +143,88 @@ class ACE_Settings { isClientSettable = 1; }; + // Gunner + class GVAR(gunnerWeaponName) { + category = CSTRING(Category); + displayName = CSTRING(GunnerWeaponName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerWeaponNameBackground) { + category = CSTRING(Category); + displayName = CSTRING(GunnerWeaponNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerFiringMode) { + category = CSTRING(Category); + displayName = CSTRING(GunnerFiringMode); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerAmmoType) { + category = CSTRING(Category); + displayName = CSTRING(GunnerAmmoType); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerAmmoCount) { + category = CSTRING(Category); + displayName = CSTRING(GunnerAmmoCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerMagCount) { + category = CSTRING(Category); + displayName = CSTRING(GunnerMagCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerLaunchableName) { + category = CSTRING(Category); + displayName = CSTRING(gunnerLaunchableName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerLaunchableCount) { + category = CSTRING(Category); + displayName = CSTRING(gunnerLaunchableCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerZeroing) { + category = CSTRING(Category); + displayName = CSTRING(GunnerZeroing); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(gunnerWeaponLowerInfoBackground) { + category = CSTRING(Category); + displayName = CSTRING(GunnerWeaponLowerInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + // Vehicle class GVAR(vehicleName) { category = CSTRING(Category); @@ -206,12 +282,4 @@ class ACE_Settings { value = 1; isClientSettable = 1; }; - class GVAR(vehicleGunnerWeapon) { - category = CSTRING(Category); - displayName = CSTRING(VehicleGunnerWeapon); - description = CSTRING(RequiresSoldierVehicleWeaponInfo); - typeName = "BOOL"; - value = 1; - isClientSettable = 1; - }; }; diff --git a/addons/ui/ACE_UI.hpp b/addons/ui/ACE_UI.hpp new file mode 100644 index 00000000000..008d97db9b2 --- /dev/null +++ b/addons/ui/ACE_UI.hpp @@ -0,0 +1,180 @@ +#define ANYWHERE 0 +#define GROUND_ONLY 1 +#define VEHICLE_ONLY 2 + +class ACE_UI { + class weaponName { + idd = 300; + elements[] = {118}; + location = GROUND_ONLY; + class conditions {}; + }; + class weaponNameBackground { + idd = 300; + elements[] = {1001, 1008}; + location = GROUND_ONLY; + class conditions {}; + }; + class firingMode { + idd = 300; + elements[] = {187, 1203}; + location = GROUND_ONLY; + class conditions {}; + }; + class ammoType { + idd = 300; + elements[] = {155}; + location = GROUND_ONLY; + class conditions {}; + }; + class ammoCount { + idd = 300; + elements[] = {184}; + location = GROUND_ONLY; + class conditions {}; + }; + class magCount { + idd = 300; + elements[] = {185}; + location = GROUND_ONLY; + class conditions {}; + }; + class throwableName { + idd = 300; + elements[] = {152}; + location = GROUND_ONLY; + class conditions {}; + }; + class throwableCount { + idd = 300; + elements[] = {151}; + location = GROUND_ONLY; + class conditions {}; + }; + class zeroing { + idd = 300; + elements[] = {168}; + location = GROUND_ONLY; + class conditions {}; + }; + class weaponLowerInfoBackground { + idd = 300; + elements[] = {1202}; + location = GROUND_ONLY; + class conditions {}; + }; + class staminaBar { + idd = 305; + elements[] = {193}; + location = GROUND_ONLY; + class conditions {}; + }; + class stance { + idd = 303; + elements[] = {188, 1201}; + location = GROUND_ONLY; + class conditions {}; + }; + class gunnerWeaponName { + idd = 300; + elements[] = {118}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerWeaponNameBackground { + idd = 300; + elements[] = {1001, 1008}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerFiringMode { + idd = 300; + elements[] = {187, 1203}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerAmmoType { + idd = 300; + elements[] = {155}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerAmmoCount { + idd = 300; + elements[] = {184}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerMagCount { + idd = 300; + elements[] = {185}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerLaunchableName { + idd = 300; + elements[] = {152}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerLaunchableCount { + idd = 300; + elements[] = {151}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerZeroing { + idd = 300; + elements[] = {168}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class gunnerWeaponLowerInfoBackground { + idd = 300; + elements[] = {1202}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleName { + idd = 300; + elements[] = {120}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleNameBackground { + idd = 300; + elements[] = {1000, 1013}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleFuelBar { + idd = 300; + elements[] = {113, 1202}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleSpeed { + idd = 300; + elements[] = {121, 1004, 1006}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleAltitude { + idd = 300; + elements[] = {122, 1005, 1014}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleDamage { + idd = 300; + elements[] = {111}; + location = VEHICLE_ONLY; + class conditions {}; + }; + class vehicleInfoBackground { + idd = 300; + elements[] = {1200}; + location = VEHICLE_ONLY; + class conditions {}; + }; +}; diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 391b3627eb7..0b1cc9b2a99 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -44,7 +44,7 @@ class CfgVehicles { }; // ADVANCED - // Upper Weapon Info + // Soldier class weaponName { displayName = CSTRING(WeaponName); description = CSTRING(RequiresSoldierVehicleWeaponInfo); @@ -63,8 +63,6 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 1; }; - - // Lower Weapon Info class ammoType { displayName = CSTRING(AmmoType); description = CSTRING(RequiresSoldierVehicleWeaponInfo); @@ -75,7 +73,7 @@ class CfgVehicles { displayName = CSTRING(AmmoCount); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - defaultValue = 0; + defaultValue = 1; }; class magCount { displayName = CSTRING(MagCount); @@ -107,16 +105,12 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 1; }; - - // Stance class stance { displayName = CSTRING(Stance); description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; defaultValue = 1; }; - - // Stamina Bar class staminaBar { displayName = CSTRING(StaminaBar); description = CSTRING(RequiresSoldierVehicleWeaponInfo); @@ -124,6 +118,68 @@ class CfgVehicles { defaultValue = 1; }; + // Gunner + class gunnerWeaponName { + displayName = CSTRING(GunnerWeaponName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerWeaponNameBackground { + displayName = CSTRING(GunnerWeaponNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerFiringMode { + displayName = CSTRING(GunnerFiringMode); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerAmmoType { + displayName = CSTRING(GunnerAmmoType); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerAmmoCount { + displayName = CSTRING(GunnerAmmoCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerMagCount { + displayName = CSTRING(GunnerMagCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerLaunchableName { + displayName = CSTRING(gunnerLaunchableName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerLaunchableCount { + displayName = CSTRING(gunnerLaunchableCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerZeroing { + displayName = CSTRING(GunnerZeroing); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + class gunnerWeaponLowerInfoBackground { + displayName = CSTRING(GunnerWeaponLowerInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + defaultValue = 1; + }; + // Vehicle class vehicleName { displayName = CSTRING(VehicleName); @@ -167,12 +223,6 @@ class CfgVehicles { typeName = "BOOL"; defaultValue = 1; }; - class vehicleGunnerWeapon { - displayName = CSTRING(VehicleGunnerWeapon); - description = CSTRING(RequiresSoldierVehicleWeaponInfo); - typeName = "BOOL"; - defaultValue = 1; - }; }; class ModuleDescription { description = CSTRING(ModuleDescription); diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index d228696fc0c..72a754a28e2 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -13,28 +13,27 @@ if (!hasInterface) exitWith {}; // Defaults must be set in this EH to make sure controls are activated and advanced settings can be modified private _force = [true, false] select (GVAR(allowSelectiveUI)); { - [_x select 0, _x select 1, _x select 2, _force] call FUNC(setAdvancedElement); - } forEach ELEMENTS_ADVANCED; + private _name = configName _x; + [_name, missionNamespace getVariable (format [QGVAR(%1), _name]), false, _force] call FUNC(setAdvancedElement); + } forEach ("true" configClasses (configFile >> "ACE_UI")); + + // Execute local event for when it's safe to modify UI through this API + // infoDisplayChanged can execute multiple times, make sure it only happens once + if (!GVAR(interfaceInitialized)) then { + ["InterfaceInitialized", []] call EFUNC(common,localEvent); + GVAR(interfaceInitialized) = true; + }; }] call EFUNC(common,addEventHandler); // On changing settings ["SettingChanged", { params ["_name"]; - // Selective UI Basic if (_name in ELEMENTS_BASIC) then { [false] call FUNC(setElements); + } else { + [_name select [7], missionNamespace getVariable _name, true] call FUNC(setAdvancedElement); }; - - // Selective UI Advanced - { - _x params ["_idd", "_elements", "_elementName"]; - - if (_name == _elementName) then { - [_idd, _elements, _elementName] call FUNC(setAdvancedElement); - TRACE_2("Setting Changed",_name,_elementName); - }; - } forEach ELEMENTS_ADVANCED; }] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler); diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index 4a5638fc03e..8646227653c 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -5,5 +5,6 @@ ADDON = false; #include "XEH_PREP.hpp" GVAR(elementsSet) = []; +GVAR(interfaceInitialized) = false; ADDON = true; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index 84b7f7001cb..0b680ca1366 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -16,6 +16,7 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" +#include "ACE_UI.hpp" #include "RscChat.hpp" #include "RscVignette.hpp" diff --git a/addons/ui/functions/fnc_moduleInit.sqf b/addons/ui/functions/fnc_moduleInit.sqf index 10f18f94f30..6bfe29392f2 100644 --- a/addons/ui/functions/fnc_moduleInit.sqf +++ b/addons/ui/functions/fnc_moduleInit.sqf @@ -18,12 +18,13 @@ params ["_logic", "_units", "_activated"]; if (!_activated) exitWith {}; +[_logic, QGVAR(allowSelectiveUI), "allowSelectiveUI"] call EFUNC(common,readSettingFromModule); + // Basic if (isArray (missionConfigFile >> "showHUD")) then { // HUD visibility is hardcoded in mission config and showHUD command is overriden ACE_LOGINFO("User Interface Module Failed to Initialize Basic settings - showHUD overriden in mission config!"); } else { - [_logic, QGVAR(allowSelectiveUI), "allowSelectiveUI"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(soldierVehicleWeaponInfo), "soldierVehicleWeaponInfo"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleRadar), "vehicleRadar"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleCompass), "vehicleCompass"] call EFUNC(common,readSettingFromModule); @@ -44,6 +45,16 @@ if (isArray (missionConfigFile >> "showHUD")) then { [_logic, QGVAR(weaponLowerInfoBackground), "weaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(stance), "stance"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(staminaBar), "staminaBar"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerWeaponName), "gunnerWeaponName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerWeaponNameBackground), "gunnerWeaponNameBackground"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerFiringMode), "gunnerFiringMode"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerAmmoType), "gunnerAmmoType"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerAmmoCount), "gunnerAmmoCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerMagCount), "gunnerMagCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerLaunchableName), "gunnerLaunchableName"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerLaunchableCount), "gunnerLaunchableCount"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerZeroing), "gunnerZeroing"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(gunnerWeaponLowerInfoBackground), "gunnerWeaponLowerInfoBackground"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleName), "vehicleName"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleNameBackground), "vehicleNameBackground"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleFuelBar), "vehicleFuelBar"] call EFUNC(common,readSettingFromModule); @@ -51,6 +62,5 @@ if (isArray (missionConfigFile >> "showHUD")) then { [_logic, QGVAR(vehicleAltitude), "vehicleAltitude"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleDamage), "vehicleDamage"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(vehicleInfoBackground), "vehicleInfoBackground"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(vehicleGunnerWeapon), "vehicleGunnerWeapon"] call EFUNC(common,readSettingFromModule); ACE_LOGINFO_1("User Interface Module Initialized. Allow client modifications: %1",GVAR(allowSelectiveUI)); diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index 2ef88d58688..3f087d89748 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -3,33 +3,65 @@ * Sets advanced visible element of the UI using displays and controls. * * Arguments: - * 0: Element IDD - * 1: Element IDCs - * 2: Show/Hide Element OR Element ACE Settings Variable + * 0: Element Name + * 1: Show/Hide Element + * 2: Show Hint * 3: Force change even when disallowed (default: false) * * Return Value: * Successfully Set * * Example: - * [303, [188], true, false] call ace_ui_fnc_setAdvancedElement + * ["ace_ui_ammoCount", true, false] call ace_ui_fnc_setAdvancedElement * * Public: No */ #include "script_component.hpp" -params ["_idd", "_elements", "_show", ["_force", false, [true]] ]; - -if (_elementInfo in GVAR(elementsSet)) exitWith {}; +params ["_element", "_show", ["_showHint", false, [true]], ["_force", false, [true]] ]; if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { - [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured) + [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured); + false }; -// Get show/hide boolean from mission namespace if it's a string -if (typeName _show == "STRING") then { - _show = missionNamespace getVariable _show; +private _config = configFile >> "ACE_UI" >> _element; + +// Exit if main vehicle type condition not fitting +private _location = getNumber (_config >> "location"); // (0-both, 1-ground, 2-vehicle) +private _currentLocation = ACE_player == vehicle ACE_player; +if ((_currentLocation && _location == 2) || (!_currentLocation && _location == 1)) exitWith {false}; + +private _idd = getNumber (_config >> "idd"); +private _elements = getArray (_config >> "elements"); + +// Get setting from config API +{ + private _condition = call compile (getText _x); + if !(_condition) exitWith { + TRACE_2("Condition False",_element,_x); + // Display and print info which component forced the element except for default vehicle check + if (_showHint) then { + [LSTRING(Disabled), 2] call EFUNC(common,displayTextStructured); + }; + _show = false; + }; +} forEach (configProperties [_config >> "conditions"]); + +// Get setting from scripted API +if (!_force) then { + private _index = GVAR(elementsSet) find [_element, _show]; + if (_index == -1) then { + _index = GVAR(elementsSet) find [_element, !_show]; + if (_index != -1) then { + if (_showHint) then { + [LSTRING(Disabled), 2] call EFUNC(common,displayTextStructured); + }; + _show = ((GVAR(elementsSet)) select _index) select 1; + }; + }; }; + _show = [1, 0] select _show; // Disable/Enable elements @@ -40,7 +72,7 @@ private _success = false; // Loop through IGUI displays as they can be present several times for some reason { if (_idd == ctrlIDD _x) then { - TRACE_3("Setting Element Visibility",_show,_idd,_idc); + //TRACE_3("Setting Element Visibility",_show,_idd,_idc); (_x displayCtrl _idc) ctrlSetFade _show; (_x displayCtrl _idc) ctrlCommit 0; diff --git a/addons/ui/functions/fnc_setElementVisibility.sqf b/addons/ui/functions/fnc_setElementVisibility.sqf index b019c4c0811..8fbe4cf2941 100644 --- a/addons/ui/functions/fnc_setElementVisibility.sqf +++ b/addons/ui/functions/fnc_setElementVisibility.sqf @@ -3,16 +3,15 @@ * Setter for toggling advanced element visibility. * * Arguments: - * 0: Set/Unset (default: true) - * 1: Element IDD (default: 0) - * 2: Element IDCs (default: []) - * 3: Show/Hide Element OR Element ACE Settings Variable (default: false) + * 0: Set/Unset + * 1: Element Name + * 2: Show/Hide Element (default: false) * * Return Value: * None * * Example: - * [true, 300, [188], false] call ace_ui_fnc_setElementVisibility + * [true, "ace_ui_ammoCount", false] call ace_ui_fnc_setElementVisibility * * Public: Yes */ @@ -20,30 +19,43 @@ params [ ["_set", true, [true]], - ["_idd", 0, [0]], - ["_elements", [], [[]]], - ["_show", false, [true, ""]] + ["_element", "", [""]], + ["_show", false, [true]] ]; +// Verify element is bound +if (!isClass (configFile >> "ACE_UI" >> _element)) exitWith { + ACE_LOGWARNING_1("Element '%1' does not exist",_element); +}; + private _return = false; if (_set) then { - if ([_idd, _elements] in GVAR(elementsSet)) exitWith { TRACE_3("Element already set",_idd,_elements,GVAR(elementsSet)); }; + // Exit if element has been set from another component, print warning if after interface initialization + if ([_element, _show] in GVAR(elementsSet) || {[_element, !_show] in GVAR(elementsSet)}) exitWith { + if (GVAR(interfaceInitialized)) then { + ACE_LOGWARNING_2("Element '%1' already set in %2",_element,GVAR(elementsSet)); + }; + }; - TRACE_4("Setting element",_idd,_elements,_show,GVAR(elementsSet)); - private _success = [_idd, _elements, _show] call FUNC(setAdvancedElement); + TRACE_3("Setting element",_element,_show,GVAR(elementsSet)); + private _success = [_element, _show, false, true] call FUNC(setAdvancedElement); if (_success) then { - GVAR(elementsSet) pushBack [_idd, _elements]; + GVAR(elementsSet) pushBack [_element, _show]; _return = true; }; } else { - if ([_idd, _elements] in GVAR(elementsSet)) then { - TRACE_4("Setting element",_idd,_elements,_show,GVAR(elementsSet)); - [_idd, _elements, _show] call FUNC(setAdvancedElement); + if ([_element, _show] in GVAR(elementsSet) || {[_element, !_show] in GVAR(elementsSet)}) then { + TRACE_3("Unsetting element",_element,_show,GVAR(elementsSet)); - private _index = GVAR(elementsSet) find [_idd, _elements]; + private _index = GVAR(elementsSet) find [_element, _show]; + if (_index == -1) then { + _index = GVAR(elementsSet) find [_element, !_show]; + }; GVAR(elementsSet) deleteAt _index; + + [_element, _show, false, true] call FUNC(setAdvancedElement); _return = true; }; }; diff --git a/addons/ui/functions/fnc_setElements.sqf b/addons/ui/functions/fnc_setElements.sqf index 64b716ee297..877489aba4e 100644 --- a/addons/ui/functions/fnc_setElements.sqf +++ b/addons/ui/functions/fnc_setElements.sqf @@ -19,10 +19,6 @@ if (isArray (missionConfigFile >> "showHUD")) exitWith {}; params [ ["_force", false, [true]] ]; -if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { - [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured); -}; - ["ui", [ true, GVAR(soldierVehicleWeaponInfo), diff --git a/addons/ui/script_component.hpp b/addons/ui/script_component.hpp index a7410a49b84..d57697867c2 100644 --- a/addons/ui/script_component.hpp +++ b/addons/ui/script_component.hpp @@ -17,51 +17,26 @@ #include "\z\ace\addons\main\script_macros.hpp" -// Elements +// Basic Elements #define ELEMENTS_BASIC [QGVAR(soldierVehicleWeaponInfo), QGVAR(vehicleRadar), QGVAR(vehicleCompass), QGVAR(commandMenu), QGVAR(groupBar)] -// IDD, IDC, Element (must be string to compare to changed setting name) -#define ELEMENTS_ADVANCED [ \ - [300, [118], QGVAR(weaponName)], \ - [300, [1001, 1008], QGVAR(weaponNameBackground)], \ - [300, [187, 1203], QGVAR(firingMode)], \ - [300, [155], QGVAR(ammoType)], \ - [300, [184], QGVAR(ammoCount)], \ - [300, [185], QGVAR(magCount)], \ - [300, [152], QGVAR(throwableName)], \ - [300, [151], QGVAR(throwableCount)], \ - [300, [1202], QGVAR(weaponLowerInfoBackground)], \ - [300, [168], QGVAR(zeroing)], \ - [305, [193], QGVAR(staminaBar)], \ - [303, [188, 1201], QGVAR(stance)], \ - [300, [120], QGVAR(vehicleName)], \ - [300, [1000, 1013], QGVAR(vehicleNameBackground)], \ - [300, [113, 1202], QGVAR(vehicleFuelBar)], \ - [300, [121, 1004, 1006], QGVAR(vehicleSpeed)], \ - [300, [122, 1005, 1014], QGVAR(vehicleAltitude)], \ - [300, [111], QGVAR(vehicleDamage)], \ - [300, [1200], QGVAR(vehicleInfoBackground)], \ - [300, [150], QGVAR(vehicleGunnerWeapon)] \ -] - - /* RscUnitInfo = 300 -------------------- -118 (Weapon Name) -+ 1001 (Weapon Name Background 1/2) -+ 1008 (Weapon Name Background 2/2) +118 (Weapon Name / Gunner Weapon Name) ++ 1001 (Weapon Name Background 1/2 / Gunner Weapon Name Background 1/2) ++ 1008 (Weapon Name Background 2/2 / Gunner Weapon Name Background 2/2) -187 (Firing Mode) -+ 1203 (Firing Mode Background) +187 (Firing Mode / Gunner Firing Mode) ++ 1203 (Firing Mode Background / Gunner Firing Mode Background) -155 (Ammo Type) -184 (Ammo Count) - disabled in config by ace_reload -185 (Magazine Count) -152 (Grenade/Flare Type) -151 (Grenade/Flare Count) -1202 (Lower Weapon Info Background) -168 (Zeroing) +155 (Ammo Type / Gunner Ammo Type) +184 (Ammo Count / Gunner Ammo Count) +185 (Magazine Count / Gunner Magazine Count) +152 (Grenade/Flare Type / Launchable Type) +151 (Grenade/Flare Count / Launchable Count) +1202 (Lower Weapon Info Background / Gunner Lower Weapon Info Background) +168 (Zeroing / Gunner Zeroing) 120 (Vehicle Name) @@ -80,8 +55,6 @@ RscUnitInfo = 300 111 (Vehicle Damage) 1200 (Vehicle Info Background) -150 (Vehicle Gunner Weapon) - RscStanceInfo = 303 -------------------- diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 74cd89e93b4..61dcc18ee78 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -87,6 +87,36 @@ Stamina Bar Panel výdrže + + Gunner Weapon Name + + + Gunner Weapon Name Background + + + Gunner Firing Mode + + + Gunner Ammo Type + + + Gunner Ammo Count + + + Gunner Magazine Count + + + Gunner Launchable Type + + + Gunner Launchable Count + + + Gunner Zeroing + + + Gunner Weapon Lower Info Background + Vehicle Name Název vozidla @@ -115,17 +145,16 @@ Vehicle Info Background Info o vozidle v pozadí - - Vehicle Gunner Weapon - Střelcova zbraň ve vozidle - - Requires Soldier/Vehicle/Weapons Information. + Requires Soldier/Vehicle/Weapon Information. Vyžaduje informace o Vojákovi/Vozidlu/Zbrani Modifying User Interface is disabled. Změna uživatelského rozhraní je zakázána. + + Cannot modify a forced User Interface element. + - \ No newline at end of file + From 68d6c1969bc5eb9fcd53299f6193bc35cb560632 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 09:22:40 -0500 Subject: [PATCH 228/268] Cleanup transistion to CBA's waitAndExec (#3858) --- addons/common/XEH_preInit.sqf | 7 ------ addons/main/script_mod.hpp | 2 +- .../functions/fnc_debugDumpToClipboard.sqf | 22 +++++++++++++------ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 33adaa9712d..0c2922ea642 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -23,13 +23,6 @@ DFUNC(selectWeaponMode) = { GVAR(syncedEvents) = HASH_CREATE; GVAR(showHudHash) = [] call FUNC(hashCreate); -//GVARS for execNextFrame and waitAndExec and waitUntilAndExecute -GVAR(waitAndExecArray) = []; -GVAR(nextFrameNo) = diag_frameno; -GVAR(nextFrameBufferA) = []; -GVAR(nextFrameBufferB) = []; -GVAR(waitUntilAndExecArray) = []; - GVAR(settingsInitFinished) = false; GVAR(runAtSettingsInitialized) = []; diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 1d9a8f2b6be..cda38b0458f 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -13,4 +13,4 @@ // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.56 -#define REQUIRED_CBA_VERSION {2,3,1} +#define REQUIRED_CBA_VERSION {2,4,0} diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf index be771f7a3a7..dd2c187bf75 100644 --- a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf +++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf @@ -17,7 +17,7 @@ private ["_var", "_unit", "_outputText", "_text"]; -#define MIN_ARRAY_SIZE 10 +#define MIN_ARRAY_SIZE 50 _outputText = { diag_log text (_this select 0); @@ -30,12 +30,20 @@ time = %1 ------Performance------ diag_fps = %2 -count ace_common_waitAndExecArray = %3 -count cba_common_perFrameHandlerArray = %4 (max %5) -count diag_activeSQFScripts = %6 -count diag_activeSQSScripts = %7 -count diag_activeMissionFSMs = %8", -time, diag_fps, count ace_common_waitAndExecArray, {!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs]; +count cba_common_waitAndExecArray = %3 +count cba_common_waitUntilAndExecArray = %4 +count cba_common_perFrameHandlerArray = %5 (max %6) +count diag_activeSQFScripts = %7 +count diag_activeSQSScripts = %8 +count diag_activeMissionFSMs = %9", +time, +diag_fps, +count cba_common_waitAndExecArray, +count cba_common_waitUntilAndExecArray, +{!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, +count diag_activeSQFScripts, +count diag_activeSQSScripts, +count diag_activeMissionFSMs]; [_text] call _outputText; From 675214cfb9321c111d9ef3c74a3e215e5ae69ce7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 09:26:43 -0500 Subject: [PATCH 229/268] Allow drivers of vehicles to show microDagr (#3808) --- addons/microdagr/functions/fnc_canShow.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/microdagr/functions/fnc_canShow.sqf b/addons/microdagr/functions/fnc_canShow.sqf index 70e89890317..d339f807941 100644 --- a/addons/microdagr/functions/fnc_canShow.sqf +++ b/addons/microdagr/functions/fnc_canShow.sqf @@ -27,8 +27,10 @@ _returnValue = switch (_showType) do { ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)} }; case (DISPLAY_MODE_DISPLAY): { - //Can't have minimap up while zoomed in - (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)} + //Can't have minimap up while zoomed in on foot, but allow drivers to use while in "Gunner" to handle non-3d vehicles like most tanks + ((cameraView != "GUNNER") || {(vehicle ACE_player != ACE_player) && {driver vehicle ACE_player == ACE_player}}) && + {"ACE_microDAGR" in (items ACE_player)} && + {[ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)} }; default { false }; }; From 637b5e02e9025627cf6f9c9656030e275b45f418 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 09:26:57 -0500 Subject: [PATCH 230/268] Update 3den attributes to use 1.60 scaling (#3857) --- addons/medical/CfgEden.hpp | 6 +++--- addons/repair/CfgEden.hpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp index 508d53d54cc..a9b4594b66c 100644 --- a/addons/medical/CfgEden.hpp +++ b/addons/medical/CfgEden.hpp @@ -16,9 +16,9 @@ class Cfg3DEN { class Value: ctrlToolbox { idc = 100; style = "0x02"; - x = "48 * (pixelW * 1.25 * 4)"; - w = "82 * (pixelW * 1.25 * 4)"; - h = "5 * (pixelH * 1.25 * 4)"; + x = "48 * (pixelW * pixelGrid * 0.25)"; + w = "82 * (pixelW * pixelGrid * 0.25)"; + h = "5 * (pixelH * pixelGrid * 0.25)"; rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)}; diff --git a/addons/repair/CfgEden.hpp b/addons/repair/CfgEden.hpp index d8885fddf95..ca315d68eca 100644 --- a/addons/repair/CfgEden.hpp +++ b/addons/repair/CfgEden.hpp @@ -16,9 +16,9 @@ class Cfg3DEN { class Value: ctrlToolbox { idc = 100; style = "0x02"; - x = "48 * (pixelW * 1.25 * 4)"; - w = "82 * (pixelW * 1.25 * 4)"; - h = "5 * (pixelH * 1.25 * 4)"; + x = "48 * (pixelW * pixelGrid * 0.25)"; + w = "82 * (pixelW * pixelGrid * 0.25)"; + h = "5 * (pixelH * pixelGrid * 0.25)"; rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignEngineerRole_role_none), CSTRING(AssignEngineerRole_role_engineer), CSTRING(AssignEngineerRole_role_specialist)}; From b6aaba7f9061ed777a747445be009956b2a03982 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 09:28:52 -0500 Subject: [PATCH 231/268] Integrate 1.60 marker shape color map interface (#3860) 1.60 adds ability to set color and marker type from the map interface Luckily they use the same values and indexes as ACE, This PR connects the two systems, Selecting a color from the 1.60 map display will set the color in the ace marker display and vice versa --- addons/markers/CfgEventHandlers.hpp | 6 ++++ addons/markers/XEH_PREP.hpp | 1 + .../functions/fnc_mapDisplayInitEH.sqf | 34 +++++++++++++++++++ .../functions/fnc_onLBSelChangedColor.sqf | 12 +++++++ .../functions/fnc_onLBSelChangedShape.sqf | 12 +++++++ 5 files changed, 65 insertions(+) create mode 100644 addons/markers/functions/fnc_mapDisplayInitEH.sqf diff --git a/addons/markers/CfgEventHandlers.hpp b/addons/markers/CfgEventHandlers.hpp index becf3950523..e1f9294767a 100644 --- a/addons/markers/CfgEventHandlers.hpp +++ b/addons/markers/CfgEventHandlers.hpp @@ -16,3 +16,9 @@ class Extended_PostInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDiary { + ADDON = QUOTE(_this call FUNC(mapDisplayInitEH)); + }; +}; diff --git a/addons/markers/XEH_PREP.hpp b/addons/markers/XEH_PREP.hpp index 67344454ecf..c6ad5c6ba2e 100644 --- a/addons/markers/XEH_PREP.hpp +++ b/addons/markers/XEH_PREP.hpp @@ -1,6 +1,7 @@ PREP(getEnabledChannels); PREP(initInsertMarker); +PREP(mapDisplayInitEH); PREP(mapDrawEH); PREP(onLBSelChangedChannel); PREP(onLBSelChangedColor); diff --git a/addons/markers/functions/fnc_mapDisplayInitEH.sqf b/addons/markers/functions/fnc_mapDisplayInitEH.sqf new file mode 100644 index 00000000000..662f6f80c00 --- /dev/null +++ b/addons/markers/functions/fnc_mapDisplayInitEH.sqf @@ -0,0 +1,34 @@ +/* + * Author: PabstMirror + * Handles XEH DisplayLoad for the various map displays (RscDiary) + * + * Arguments: + * 0: Map Display (idd 12,37,52,53) + * + * Return Value: + * None + * + * Example: + * [display] call ace_markers_fnc_mapDisplayInitEH + * + * Public: No + */ +#include "script_component.hpp" + +disableSerialization; + +params ["_display"]; +TRACE_1("params",_display); + +private _bisShapeLB = _display displayctrl 1091; +private _curSelShape = missionNamespace getVariable [QGVAR(curSelMarkerShape), 0]; +TRACE_2("shape",_bisShapeLB,_curSelShape); +_bisShapeLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedShape)}]; +_bisShapeLB lbSetCurSel _curSelShape; + + +private _bisColorLB = _display displayctrl 1090; +private _curSelColor = missionNamespace getVariable [QGVAR(curSelMarkerColor), 0]; +TRACE_2("color",_bisColorLB,_curSelColor); +_bisColorLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedColor)}]; +_bisColorLB lbSetCurSel _curSelColor; diff --git a/addons/markers/functions/fnc_onLBSelChangedColor.sqf b/addons/markers/functions/fnc_onLBSelChangedColor.sqf index 215cd725800..dc186a6c618 100644 --- a/addons/markers/functions/fnc_onLBSelChangedColor.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedColor.sqf @@ -26,3 +26,15 @@ GVAR(curSelMarkerColor) = _index; private _config = (configFile >> "CfgMarkerColors") select _data; GVAR(currentMarkerColorConfigName) = configName _config; + +//Set map display to same color: +private _bisColorLB = switch (false) do { + case (isNull findDisplay 12): {(findDisplay 12) displayCtrl 1090}; + case (isNull findDisplay 52): {(findDisplay 52) displayCtrl 1090}; + case (isNull findDisplay 53): {(findDisplay 53) displayCtrl 1090}; + case (isNull findDisplay 37): {(findDisplay 37) displayCtrl 1090}; + default {controlNull}; +}; +if (_ctrl != _bisColorLB) then { //Don't set what we got a EH from + _bisColorLB lbSetCurSel GVAR(curSelMarkerColor); +}; diff --git a/addons/markers/functions/fnc_onLBSelChangedShape.sqf b/addons/markers/functions/fnc_onLBSelChangedShape.sqf index 41f0f30a0da..6fd9aabd893 100644 --- a/addons/markers/functions/fnc_onLBSelChangedShape.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedShape.sqf @@ -26,3 +26,15 @@ GVAR(curSelMarkerShape) = _index; private _config = (configFile >> "CfgMarkers") select _data; GVAR(currentMarkerConfigName) = configName _config; + +//Set map display to same shape: +private _bisShapeLB = switch (false) do { + case (isNull findDisplay 12): {(findDisplay 12) displayCtrl 1091}; + case (isNull findDisplay 52): {(findDisplay 52) displayCtrl 1091}; + case (isNull findDisplay 53): {(findDisplay 53) displayCtrl 1091}; + case (isNull findDisplay 37): {(findDisplay 37) displayCtrl 1091}; + default {controlNull}; +}; +if (_ctrl != _bisShapeLB) then { //Don't set what we got a EH from + _bisShapeLB lbSetCurSel GVAR(curSelMarkerShape); +}; From db78dd53a8f6d360b8d6bf6d43f35e5827faf0bb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 19:59:18 -0500 Subject: [PATCH 232/268] Cleanup Merge and remoteFnc events --- addons/common/RscInfoType.hpp | 2 +- addons/common/XEH_postInit.sqf | 4 ++-- addons/common/functions/fnc_onAnswerRequest.sqf | 2 +- addons/common/functions/fnc_sendRequest.sqf | 2 +- addons/explosives/XEH_postInit.sqf | 2 +- addons/explosives/functions/fnc_startDefuse.sqf | 2 +- addons/medical/XEH_postInit.sqf | 2 +- addons/repair/functions/fnc_useItem.sqf | 2 +- addons/respawn/functions/fnc_handleKilled.sqf | 2 +- addons/spectator/XEH_postInit.sqf | 2 +- addons/spectator/functions/fnc_respawnTemplate.sqf | 2 +- addons/spectator/functions/fnc_stageSpectator.sqf | 2 +- addons/switchunits/XEH_postInit.sqf | 2 +- addons/switchunits/functions/fnc_switchUnit.sqf | 4 ++-- addons/ui/XEH_clientInit.sqf | 4 ++-- addons/weather/XEH_postInit.sqf | 2 +- addons/weather/XEH_postServerInit.sqf | 2 +- 17 files changed, 20 insertions(+), 20 deletions(-) diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index b2b74e1ade0..b62839f9ca8 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -113,6 +113,6 @@ class RscInGameUI { }; class RscStanceInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call FUNC(localEvent);); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStanceInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Stance')])] call CBA_fnc_localEvent;); }; }; diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 30e770c2c4d..9763a1603cb 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -189,10 +189,10 @@ call FUNC(checkFiles); ////////////////////////////////////////////////// -// Set up SettingsInitialized eventhandler +// Set up ace_settingsInitialized eventhandler ////////////////////////////////////////////////// -["SettingsInitialized", { +["ace_settingsInitialized", { [ GVAR(checkPBOsAction), GVAR(checkPBOsCheckAll), diff --git a/addons/common/functions/fnc_onAnswerRequest.sqf b/addons/common/functions/fnc_onAnswerRequest.sqf index e462a4bbf8e..8c777192566 100644 --- a/addons/common/functions/fnc_onAnswerRequest.sqf +++ b/addons/common/functions/fnc_onAnswerRequest.sqf @@ -20,7 +20,7 @@ if (!isNil "_info") then { _info params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"]; private _replyParams = [_info, _accepted]; - [QGVAR(requestCallback), _caller, _replyParams] call FUNC(objectEvent); + [QGVAR(requestCallback), _replyParams, _caller] call CBA_fnc_targetEvent; _unit setVariable [_id, nil]; }; diff --git a/addons/common/functions/fnc_sendRequest.sqf b/addons/common/functions/fnc_sendRequest.sqf index 6df60cf24d8..a0c505c5750 100644 --- a/addons/common/functions/fnc_sendRequest.sqf +++ b/addons/common/functions/fnc_sendRequest.sqf @@ -20,7 +20,7 @@ params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"]; if (isPlayer _target) then { // Pass request on to target locality for player accept/decline. - [QGVAR(receiveRequest), _target, [_caller, _target, _requestID, _requestMessage, _callBack]] call FUNC(objectEvent); + [QGVAR(receiveRequest), [_caller, _target, _requestID, _requestMessage, _callBack], _target] call CBA_fnc_targetEvent; } else { // accept it, since it's an AI. [_caller, _target, true] call compile _callBack; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 25b929f0521..6900953a31a 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -17,7 +17,7 @@ //Event for setting explosive placement angle/pitch: [QGVAR(place), {_this call FUNC(setPosition)}] call CBA_fnc_addEventHandler; -[QGVAR(startDefuse), FUNC(startDefuse)] call EFUNC(common,addEventHandler); +[QGVAR(startDefuse), FUNC(startDefuse)] call CBA_fnc_addEventHandler; //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) diff --git a/addons/explosives/functions/fnc_startDefuse.sqf b/addons/explosives/functions/fnc_startDefuse.sqf index e9ba668e0e6..8e3f071661d 100644 --- a/addons/explosives/functions/fnc_startDefuse.sqf +++ b/addons/explosives/functions/fnc_startDefuse.sqf @@ -44,7 +44,7 @@ if (STANCE _unit == "Prone") then { if (ACE_player != _unit) then { // If the unit is a player, call the function on the player. if (isPlayer _unit) then { - [QGVAR(startDefuse), _unit, [_unit, _target]] call EFUNC(common,objectEvent); + [QGVAR(startDefuse), [_unit, _target], _unit] call CBA_fnc_targetEvent; } else { _unit playActionNow _actionToPlay; _unit disableAI "MOVE"; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 31707bde53a..0d9d33f22a5 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -264,7 +264,7 @@ GVAR(lastHeartBeatSound) = CBA_missionTime; }, 0, []] call CBA_fnc_addPerFrameHandler; }; -["SettingsInitialized", { +["ace_settingsInitialized", { // Networked litter (need to wait for GVAR(litterCleanUpDelay) to be set) [QGVAR(createLitter), FUNC(handleCreateLitter), GVAR(litterCleanUpDelay)] call EFUNC(common,addSyncedEventHandler); diff --git a/addons/repair/functions/fnc_useItem.sqf b/addons/repair/functions/fnc_useItem.sqf index 4bae3e7918e..eca88d7acad 100644 --- a/addons/repair/functions/fnc_useItem.sqf +++ b/addons/repair/functions/fnc_useItem.sqf @@ -20,7 +20,7 @@ params ["_unit", "_item"]; TRACE_2("params",_unit,_item); if ([_unit, _item] call EFUNC(common,hasItem)) exitWith { - [QGVAR(useItem), _unit, [_unit, _item]] call EFUNC(common,objectEvent); + [QGVAR(useItem), [_unit, _item], _unit] call CBA_fnc_targetEvent; [true, _unit]; }; diff --git a/addons/respawn/functions/fnc_handleKilled.sqf b/addons/respawn/functions/fnc_handleKilled.sqf index aa53c6741a8..6ca816e8a40 100644 --- a/addons/respawn/functions/fnc_handleKilled.sqf +++ b/addons/respawn/functions/fnc_handleKilled.sqf @@ -25,5 +25,5 @@ if (ACE_player == _unit && {GVAR(SavePreDeathGear)}) then { }; if (missionNamespace getVariable [QGVAR(showFriendlyFireMessage), false]) then { - [QGVAR(showFriendlyFireMessageEvent), _this] call EFUNC(common,objectEvent); + [QGVAR(showFriendlyFireMessageEvent), _this] call CBA_fnc_globalEvent; }; diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 8907858d3f4..72c53a2af03 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -4,7 +4,7 @@ // Add interaction menu exception ["isNotSpectating", {!(GETVAR((_this select 0),GVAR(isStaged),false))}] call EFUNC(common,addCanInteractWithCondition); -["SettingsInitialized", { +["ace_settingsInitialized", { GVAR(availableModes) = [[0,1,2], [1,2], [0], [1], [2]] select GVAR(restrictModes); GVAR(availableVisions) = [[-2,-1,0,1], [-2,-1], [-2,0,1], [-2]] select GVAR(restrictVisions); }] call CBA_fnc_addEventHandler; diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf index fde8ef05ad6..0813f37755b 100644 --- a/addons/spectator/functions/fnc_respawnTemplate.sqf +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -23,7 +23,7 @@ private ["_vision","_pos"]; // When all are dead with respawn type "None" the mission should end if ((_respawn == 0) && {{alive _x} count allPlayers <= 0}) exitWith { - ["BIS_fnc_endMission", ["endDeath", false]] call EFUNC(common,globalEvent); + ["BIS_fnc_endMission", ["endDeath", false]] call EFUNC(common,globalEvent); //??? }; // Some environment information can be used for the initial camera attributes diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 425d4a37837..8e6c32f5687 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -27,7 +27,7 @@ params [["_unit",player,[objNull]], ["_set",true,[true]]]; if !(_set || (GETVAR(_unit,GVAR(isStaged),false))) exitWith {}; if !(local _unit) exitWith { - [QGVAR(stageSpectator), _unit, [_unit, _set]] call EFUNC(common,objectEvent); + [QGVAR(stageSpectator), [_unit, _set], _unit] call CBA_fnc_targetEvent; }; // Prevent unit falling into water diff --git a/addons/switchunits/XEH_postInit.sqf b/addons/switchunits/XEH_postInit.sqf index 9dc58e77699..dc143bc6ac4 100644 --- a/addons/switchunits/XEH_postInit.sqf +++ b/addons/switchunits/XEH_postInit.sqf @@ -33,5 +33,5 @@ if (isServer) then { params ["_unit", "_player"]; _unit setVariable [QGVAR(OriginalOwner), owner _unit, true]; _unit setOwner (owner _player); - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; }; diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf index 64cc77c221a..84b766de4db 100644 --- a/addons/switchunits/functions/fnc_switchUnit.sqf +++ b/addons/switchunits/functions/fnc_switchUnit.sqf @@ -40,7 +40,7 @@ if (_leave) exitWith { // should switch locality // This doesn't work anymore, because one's now able to switch to units from a different side //[_unit] joinSilent group player; -[QGVAR(switchLocality), [_unit, player]] call EFUNC(common,serverEvent); +[QGVAR(switchLocality), [_unit, player]] call CBA_fnc_serverEvent; [{ params ["_args", "_pfhId"]; @@ -72,7 +72,7 @@ if (_leave) exitWith { // set owner back to original owner private _oldOwner = _oldUnit getVariable[QGVAR(OriginalOwner), -1]; if (_oldOwner > -1) then { - ["setOwner", [_oldUnit, _oldOwner]] call EFUNC(common,serverEvent); + ["ace_setOwner", [_oldUnit, _oldOwner]] call CBA_fnc_serverEvent; }; [localize LSTRING(SwitchedUnit)] call EFUNC(common,displayTextStructured); diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index ad9e9b14cc9..9746862eaa4 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -20,10 +20,10 @@ if (!hasInterface) exitWith {}; // Execute local event for when it's safe to modify UI through this API // infoDisplayChanged can execute multiple times, make sure it only happens once if (!GVAR(interfaceInitialized)) then { - ["InterfaceInitialized", []] call CBA_fnc_localEvent + [QGVAR(InterfaceInitialized), []] call CBA_fnc_localEvent GVAR(interfaceInitialized) = true; }; - }] call EFUNC(common,addEventHandler); + }] call CBA_fnc_addEventHandler; // On changing settings ["ace_settingChanged", { diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index 341d4f87ed3..1e4496f7ca7 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -59,7 +59,7 @@ simulWeatherSync; ["ace_settingsInitialized",{ - TRACE_1("SettingsInitialized",GVAR(syncRain)); + TRACE_1("ace_settingsInitialized eh",GVAR(syncRain)); //Create a 0 sec delay PFEH to update rain every frame: if (GVAR(syncRain)) then { diff --git a/addons/weather/XEH_postServerInit.sqf b/addons/weather/XEH_postServerInit.sqf index c72dd8db4cd..cd1fca2c4c4 100644 --- a/addons/weather/XEH_postServerInit.sqf +++ b/addons/weather/XEH_postServerInit.sqf @@ -10,7 +10,7 @@ GVAR(rain_current_range) = -1+(random 2); call FUNC(initWind); ["ace_settingsInitialized", { - TRACE_2("SettingsInitialized",GVAR(enableServerController),GVAR(serverUpdateInterval)); + TRACE_2("ace_settingsInitialized eh",GVAR(enableServerController),GVAR(serverUpdateInterval)); if (GVAR(enableServerController)) then { [FUNC(serverController), GVAR(serverUpdateInterval)] call CBA_fnc_addPerFrameHandler; From 240cf4f0b59a3636c1aa02da4301ec5322995b69 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 20:02:16 -0500 Subject: [PATCH 233/268] Fix merge --- addons/common/XEH_postInit.sqf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 9763a1603cb..e9b9bcfe25c 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -140,10 +140,6 @@ if (isServer) then { // Set up remote execution ////////////////////////////////////////////////// -// ACE events -"ACEg" addPublicVariableEventHandler {_this call FUNC(_handleNetEvent)}; -"ACEc" addPublicVariableEventHandler {_this call FUNC(_handleNetEvent)}; - // Synced ACE events // Handle JIP scenario if (!isServer) then { From 59ffff406edfbeb57ba4cbfaa058cd59873e1acf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 20:05:03 -0500 Subject: [PATCH 234/268] Fix missing ; --- addons/ui/XEH_clientInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 9746862eaa4..4ef2e3394e5 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -20,7 +20,7 @@ if (!hasInterface) exitWith {}; // Execute local event for when it's safe to modify UI through this API // infoDisplayChanged can execute multiple times, make sure it only happens once if (!GVAR(interfaceInitialized)) then { - [QGVAR(InterfaceInitialized), []] call CBA_fnc_localEvent + [QGVAR(InterfaceInitialized), []] call CBA_fnc_localEvent; GVAR(interfaceInitialized) = true; }; }] call CBA_fnc_addEventHandler; From 49156376015931d8a580f3ecc5eb5382fcab0cc0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 2 Jun 2016 20:13:09 -0500 Subject: [PATCH 235/268] Few more in common --- addons/common/functions/fnc_checkPBOs.sqf | 2 +- addons/common/functions/fnc_serverLog.sqf | 2 +- addons/common/scripts/checkVersionNumber.sqf | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index 1e6eac78870..1328624a0cf 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -61,7 +61,7 @@ if (!isServer) then { _error = _error + "Newer version; "; }; - //[QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + //[QGVAR(systemChatGlobal), _error] call CBA_fnc_globalEvent; ACE_LOGERROR(_error); diff --git a/addons/common/functions/fnc_serverLog.sqf b/addons/common/functions/fnc_serverLog.sqf index ca4ba69f5db..af7485c4947 100644 --- a/addons/common/functions/fnc_serverLog.sqf +++ b/addons/common/functions/fnc_serverLog.sqf @@ -20,5 +20,5 @@ params [["_msg", "", [""]]]; if (isServer) then { diag_log text _msg; } else { - [QGVAR(serverLog), _this] call FUNC(serverEvent); + [QGVAR(serverLog), _this] call CBA_fnc_serverEvent; }; diff --git a/addons/common/scripts/checkVersionNumber.sqf b/addons/common/scripts/checkVersionNumber.sqf index 7b1fbca2918..402e5d9f56d 100644 --- a/addons/common/scripts/checkVersionNumber.sqf +++ b/addons/common/scripts/checkVersionNumber.sqf @@ -100,7 +100,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + [QGVAR(systemChatGlobal), _error] call CBA_fnc_globalEvent; }; _missingAddonServer = false; @@ -117,7 +117,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + [QGVAR(systemChatGlobal), _error] call CBA_fnc_globalEvent; }; _oldVersionClient = false; @@ -134,7 +134,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + [QGVAR(systemChatGlobal), _error] call CBA_fnc_globalEvent; }; _oldVersionServer = false; @@ -151,7 +151,7 @@ if (!isServer) then { _error = _error call _fnc_cutComma; diag_log text _error; - [QGVAR(systemChatGlobal), _error] call FUNC(globalEvent); + [QGVAR(systemChatGlobal), _error] call CBA_fnc_globalEvent; }; ACE_Version_ClientErrors = [_missingAddon, _missingAddonServer, _oldVersionClient, _oldVersionServer]; From bd251a0c32b0b3b21bf0827703dfa96bf068b428 Mon Sep 17 00:00:00 2001 From: voiper Date: Fri, 3 Jun 2016 03:11:23 -0700 Subject: [PATCH 236/268] Fix thrown blink. --- addons/nightvision/functions/fnc_blending.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index b34584a5d0e..aad964a6651 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -21,6 +21,9 @@ TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectil private "_player"; _player = ACE_player; +//exit if it's a thrown weapon +if (_weapon == "Throw") exitWith {}; + //If our vehicle didn't shoot, or we're not in NVG mode, exit if ((currentVisionMode _player) != 1) exitWith {}; From 11f1518220bc8daf0714fcd87dddfcbaac430b61 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Fri, 3 Jun 2016 17:21:47 +0200 Subject: [PATCH 237/268] Fix spottingscope interaction point, add to misc. box (#3862) --- addons/spottingscope/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index ef5f1e1c3e5..f45173ae314 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -33,7 +33,7 @@ class CfgVehicles { class Box_NATO_Support_F; class ACE_Box_Misc: Box_NATO_Support_F { class TransportItems { - MACRO_ADDITEM(ACE_Item_SpottingScope,2); + MACRO_ADDITEM(ACE_SpottingScope,2); }; }; @@ -116,7 +116,7 @@ class CfgVehicles { EGVAR(dragging,dragDirection) = 0; class ACE_Actions: ACE_Actions{ class ACE_MainActions: ACE_MainActions { - selection = "osaveze"; + selection = "main_turret"; class ACE_Pickup { selection = ""; displayName = CSTRING(PickUp); From fa2cf5515625ba44c51d34243577280c0facc6f4 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 3 Jun 2016 20:22:34 +0200 Subject: [PATCH 238/268] Fix medical related events --- addons/captives/XEH_postInit.sqf | 2 +- addons/captives/config.cpp | 2 +- addons/dragging/XEH_postInit.sqf | 2 +- addons/dragging/config.cpp | 2 +- addons/explosives/XEH_postInit.sqf | 2 +- addons/explosives/config.cpp | 2 +- addons/interact_menu/XEH_clientInit.sqf | 2 +- addons/medical/XEH_postInit.sqf | 6 ++--- addons/medical/config.cpp | 24 +++++++------------ .../functions/fnc_actionPlaceInBodyBag.sqf | 2 +- .../functions/fnc_addHeartRateAdjustment.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 2 +- .../medical/functions/fnc_addToTriageCard.sqf | 2 +- .../functions/fnc_setCardiacArrest.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 2 +- .../medical/functions/fnc_setUnconscious.sqf | 2 +- .../functions/fnc_treatment_success.sqf | 2 +- .../medical/functions/fnc_unconsciousPFH.sqf | 4 ++-- addons/medical_menu/XEH_postInit.sqf | 2 +- addons/medical_menu/config.cpp | 4 ++-- .../medical_menu/functions/fnc_onMenuOpen.sqf | 2 +- addons/rearm/XEH_postInit.sqf | 2 +- addons/rearm/config.cpp | 2 +- addons/refuel/XEH_postInit.sqf | 2 +- addons/refuel/config.cpp | 2 +- addons/sandbag/XEH_postInit.sqf | 2 +- addons/sandbag/config.cpp | 2 +- addons/sitting/XEH_clientInit.sqf | 2 +- addons/sitting/config.cpp | 2 +- addons/tacticalladder/XEH_postInit.sqf | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/trenches/XEH_postInit.sqf | 2 +- addons/trenches/config.cpp | 2 +- addons/tripod/XEH_postInit.sqf | 2 +- addons/tripod/config.cpp | 2 +- 35 files changed, 45 insertions(+), 55 deletions(-) diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 8cbb93d059f..ae3ab5a639b 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -32,7 +32,7 @@ if (isServer) then { [QGVAR(setSurrendered), {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; //Medical Integration Events -["ace_medical_onUnconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 85378a6d4ce..41adbb32289 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -22,7 +22,7 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); SetSurrendered = QGVAR(setSurrendered); SetHandcuffed = QGVAR(setHandcuffed); MoveOutCaptive = QGVAR(moveOutCaptive); diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index d6157edd35e..fedb6fee9c0 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -25,6 +25,6 @@ if (isNil "ACE_maxWeightCarry") then { ["ace_playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 2b6b27b956b..adb46496511 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgMovesBasic.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); playerWeaponChanged = "ace_playerWeaponChanged"; playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 6900953a31a..91887d247d9 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -22,7 +22,7 @@ //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) if (isServer) then { - ["ace_medical_onUnconscious", { + [QEGVAR(medical,unconscious), { params ["_unit", "_isUnconscious"]; if (!_isUnconscious) exitWith {}; TRACE_1("Knocked Out, Doing Deadman", _unit); diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 06487f002bd..09a814dae6d 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -45,7 +45,7 @@ class CfgMineTriggers { }; class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); clientRequestsOrientations = QGVAR(clientRequestOrientations); serverSendsOrientations = QGVAR(serverSendOrientations); }; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 26617c25b94..e703653efbb 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -41,7 +41,7 @@ GVAR(ParsedTextCached) = []; // Listens for the falling unconscious event, just in case the menu needs to be closed -["ace_medical_onUnconscious", { +[QEGVAR(medical,unconscious), { // If no menu is open just quit if (GVAR(openedMenuType) < 0) exitWith {}; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 0d9d33f22a5..82f367ffdd6 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -6,8 +6,6 @@ GVAR(heartBeatSounds_Fast) = ["ACE_heartbeat_fast_1", "ACE_heartbeat_fast_2", "A GVAR(heartBeatSounds_Normal) = ["ACE_heartbeat_norm_1", "ACE_heartbeat_norm_2"]; GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; -["ace_medical_propagateWound", FUNC(onPropagateWound)] call CBA_fnc_addEventHandler; -["ace_medical_woundUpdateRequest", FUNC(onWoundUpdateRequest)] call CBA_fnc_addEventHandler; ["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; //Treatment EventHandlers: @@ -31,9 +29,9 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; ["ace_actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; //Handle Deleting Bodies on Server: -if (isServer) then {["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; +if (isServer) then {[QGVAR(playedInBodyBag), FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; -["ace_medical_onUnconscious", { +[QGVAR(unconscious), { params ["_unit", "_status"]; if (local _unit) then { if (_status) then { diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 533af19e8e2..812e52f6dd1 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -26,9 +26,14 @@ class CfgPatches { #include "UI\triagecard.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; - playerInventoryChanged = "ace_playerInventoryChanged"; - placedInBodyBag = "ace_placedInBodyBag"; + medical_onUnconscious = QGVAR(unconscious); + medical_treatmentSuccess = QGVAR(treatmentSuccess); + medical_onSetDead = QGVAR(killed); + Medical_onEnteredCardiacArrest = QGVAR(enteredCardiacArrest); + Medical_onItemAddedToTriageCard = QGVAR(itemAddedToTriageCard); + medical_onLogEntryAdded = QGVAR(logEntryAdded); + Medical_onHeartRateAdjustmentAdded = QGVAR(addedHeartRateAdjustment); + placedInBodyBag = QGVAR(playedInBodyBag); actionPlaceInBodyBag = "ace_actionPlaceInBodyBag"; treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; treatmentIVLocal = "ace_treatmentIVLocal"; @@ -47,18 +52,5 @@ class ACE_newEvents { addToInjuredCollection = "ace_addToInjuredCollection"; actionCheckPulseLocal = "ace_actionCheckPulseLocal"; actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; - interactMenuClosed = "ace_interactMenuClosed"; - medical_woundUpdateRequest = "ace_medical_woundUpdateRequest"; - medical_propagateWound = "ace_medical_propagateWound"; - useItem = "ace_useItem"; - medical_treatmentSuccess = "ace_medical_treatmentSuccess"; - displayTextStructured = "ace_displayTextStructured"; - medical_onSetDead = "ace_medical_onSetDead"; - Medical_onEnteredCardiacArrest = "ace_medical_onEnteredCardiacArrest"; - hideObjectGlobal = "ace_hideObjectGlobal"; addVitalLoop = "ace_addVitalLoop"; - Medical_onItemAddedToTriageCard = "ace_medical_onItemAddedToTriageCard"; - medical_onLogEntryAdded = "ace_medical_onLogEntryAdded"; - Medical_onHeartRateAdjustmentAdded = "ace_medical_onHeartRateAdjustmentAdded"; - unloadPersonEvent = "ace_unloadPersonEvent"; }; diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index 9d87b6ea500..c8f6de36289 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -47,6 +47,6 @@ private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; _bodyBag setPosASL _position; _bodyBag setDir _direction; -["ace_placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server +[QGVAR(playedInBodyBag), [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server _bodyBag diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf index 2665a1cb7c6..1b214ec99ac 100644 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf @@ -22,4 +22,4 @@ params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], [" _adjustment = _unit getVariable [QGVAR(heartRateAdjustments), []]; _adjustment pushBack [_value, _time, _callBack]; _unit setVariable [QGVAR(heartRateAdjustments), _adjustment ]; -["ace_medical_onHeartRateAdjustmentAdded", [_unit, _value, _time]] call CBA_fnc_localEvent; +[QGVAR(addedHeartRateAdjustment), [_unit, _value, _time]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index d01a99202e3..ab0d993c567 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -43,7 +43,7 @@ if (count _log >= 8) then { _log pushBack [_message, _moment, _type, _arguments]; _unit setVariable [_logVarName, _log, true]; -["ace_medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; +[QGVAR(logEntryAdded), [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; _logs = _unit getVariable [QGVAR(allLogs), []]; if !(_logVarName in _logs) then { diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index 0db54cb6920..cae1dd35cf2 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -41,4 +41,4 @@ if (!_inList) then { _log pushBack [_newItem, 1, CBA_missionTime]; }; _unit setVariable [QGVAR(triageCard), _log, true]; -["ace_medical_onItemAddedToTriageCard", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; +[QGVAR(itemAddedToTriageCard), [_unit, _newItem, _amount]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index fe2a0b81a0e..9522eeaec43 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -21,7 +21,7 @@ if (_unit getVariable [QGVAR(inCardiacArrest),false]) exitWith {}; _unit setVariable [QGVAR(inCardiacArrest), true,true]; _unit setVariable [QGVAR(heartRate), 0]; -["ace_medical_onEnteredCardiacArrest", [_unit]] call CBA_fnc_localEvent; +[QGVAR(enteredCardiacArrest), [_unit]] call CBA_fnc_localEvent; [_unit, true] call FUNC(setUnconscious); _timeInCardiacArrest = 120 + round(random(600)); diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 422850f1b38..6d51ec2bac2 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -51,7 +51,7 @@ if (isPLayer _unit) then { _unit setVariable ["isDeadPlayer", true, true]; }; -["ace_medical_onSetDead", [_unit]] call CBA_fnc_localEvent; +[QGVAR(killed), [_unit]] call CBA_fnc_localEvent; //Delay a frame before killing the unit via scripted damage //to avoid triggering the "Killed" Event twice (and having the wrong killer) diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 5de1aa1a0c1..adee89e4fef 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -122,4 +122,4 @@ _startingTime = CBA_missionTime; // unconscious can't talk [_unit, "isUnconscious"] call EFUNC(common,muteUnit); -["ace_medical_onUnconscious", [_unit, true]] call CBA_fnc_globalEvent; +[QGVAR(unconscious), [_unit, true]] call CBA_fnc_globalEvent; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 0a857c1f18c..04fec2b5bdc 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -95,4 +95,4 @@ if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { [_target] call FUNC(addVitalLoop); }; -["ace_medical_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; +[QGVAR(treatmentSuccess), [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index 34d2ffd321e..0e80d494573 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -39,7 +39,7 @@ if (!alive _unit) exitWith { _unit setUnconscious false; [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - ["ace_medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; + [QGVAR(unconscious), [_unit, false]] call CBA_fnc_globalEvent; TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , QGVAR(unconscious)); @@ -96,7 +96,7 @@ if !(_unit getVariable ["ACE_isUnconscious",false]) exitWith { }; _unit setVariable [QGVAR(vehicleAwakeAnim), nil]; - ["ace_medical_onUnconscious", [_unit, false]] call CBA_fnc_globalEvent; + [QGVAR(unconscious), [_unit, false]] call CBA_fnc_globalEvent; // EXIT PFH [_idPFH] call CBA_fnc_removePerFrameHandler; }; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 746521fabf8..046abfdaad7 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -6,7 +6,7 @@ GVAR(MenuPFHID) = -1; GVAR(lastOpenedOn) = -1; GVAR(pendingReopen) = false; -["ace_medical_treatmentSuccess", { +[QEGVAR(medical,treatmentSuccess), { if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { GVAR(pendingReopen) = false; diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index ec1840c6963..a33dbe9235b 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -19,7 +19,7 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - medical_treatmentSuccess = "ace_medical_treatmentSuccess"; - Medical_onMenuOpen = "ace_medical_onMenuOpen"; + medical_treatmentSuccess = QEGVAR(medical,treatmentSuccess); + Medical_onMenuOpen = QGVAR(opened); displayTextStructured = "ace_displayTextStructured"; }; diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 33e934afe55..ed33b2d3215 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -87,4 +87,4 @@ GVAR(MenuPFHID) = [{ }, 0, [_display]] call CBA_fnc_addPerFrameHandler; -["ace_medical_onMenuOpen", [ACE_player, _target]] call CBA_fnc_localEvent; +[QGVAR(opened), [ACE_player, _target]] call CBA_fnc_localEvent; diff --git a/addons/rearm/XEH_postInit.sqf b/addons/rearm/XEH_postInit.sqf index d49af32eab5..7c89e90ac1e 100644 --- a/addons/rearm/XEH_postInit.sqf +++ b/addons/rearm/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; ["ace_playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call CBA_fnc_addEventHandler; if (isServer) then { diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index d057ba2acf1..0d4ec30baa2 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -22,5 +22,5 @@ class CfgPatches { class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); }; diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index b55575e72c6..866f50dbd84 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 8e3279c3fe6..1517ab7006c 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); setFuel = "ace_setFuel"; setVectorDirAndUp = "ace_setVectorDirAndUp"; displayTextStructured = "ace_displayTextStructured"; diff --git a/addons/sandbag/XEH_postInit.sqf b/addons/sandbag/XEH_postInit.sqf index 74a8e67b74a..e65928c48ea 100644 --- a/addons/sandbag/XEH_postInit.sqf +++ b/addons/sandbag/XEH_postInit.sqf @@ -20,6 +20,6 @@ GVAR(deployDirection) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 0c4033e2811..6ad3e212d8e 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); playerVehicleChanged = "ace_playerVehicleChanged"; playerInventoryChanged = "ace_playerInventoryChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 41ac0d258b8..58a926022bc 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -12,6 +12,6 @@ if (!hasInterface) exitWith {}; ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); // Handle interruptions - ["ace_medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + [QEGVAR(medical,unconscious), {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; [QEGVAR(captives,setHandcuffed), {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 1fd81ad5d1d..26d013179e0 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -21,5 +21,5 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; SetHandcuffed = QEGVAR(captives,setHandcuffed); - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); }; \ No newline at end of file diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 3820188d526..902d73f9abb 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -21,6 +21,6 @@ GVAR(currentAngle) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index ed0f933c9b1..38f47b40eaf 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { class ACE_newEvents { interactMenuOpened = "ace_interactMenuOpened"; - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; }; diff --git a/addons/trenches/XEH_postInit.sqf b/addons/trenches/XEH_postInit.sqf index 6fb3c9b33fb..02de7f02c14 100644 --- a/addons/trenches/XEH_postInit.sqf +++ b/addons/trenches/XEH_postInit.sqf @@ -21,6 +21,6 @@ GVAR(digDirection) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index f173d166281..0486a715097 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); playerVehicleChanged = "ace_playerVehicleChanged"; playerInventoryChanged = "ace_playerInventoryChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/tripod/XEH_postInit.sqf b/addons/tripod/XEH_postInit.sqf index 577f0c50376..57f1fd08b09 100644 --- a/addons/tripod/XEH_postInit.sqf +++ b/addons/tripod/XEH_postInit.sqf @@ -14,6 +14,6 @@ GVAR(height) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -["ace_medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index a4c205d7a98..bd2a0d05056 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_medical_onUnconscious"; + medical_onUnconscious = QEGVAR(medical,unconscious); playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; From 694503c01b8665389391c7ea83d8a20d49e91bcf Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 3 Jun 2016 20:57:21 +0200 Subject: [PATCH 239/268] Fix medical events --- addons/captives/XEH_postInit.sqf | 2 +- addons/captives/config.cpp | 2 +- addons/common/XEH_postInit.sqf | 2 +- addons/dragging/XEH_postInit.sqf | 2 +- addons/dragging/config.cpp | 2 +- addons/explosives/XEH_postInit.sqf | 2 +- addons/explosives/config.cpp | 2 +- addons/interact_menu/XEH_clientInit.sqf | 2 +- addons/medical/XEH_postInit.sqf | 40 +++++++------- addons/medical/XEH_respawn.sqf | 2 +- addons/medical/config.cpp | 53 +++++++++---------- .../fnc_actionCheckBloodPressure.sqf | 4 +- .../functions/fnc_actionCheckPulse.sqf | 4 +- .../functions/fnc_actionPlaceInBodyBag.sqf | 4 +- .../functions/fnc_actionRemoveTourniquet.sqf | 2 +- .../functions/fnc_addHeartRateAdjustment.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 4 +- .../medical/functions/fnc_addToTriageCard.sqf | 4 +- addons/medical/functions/fnc_addVitalLoop.sqf | 2 +- .../functions/fnc_setCardiacArrest.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 4 +- .../functions/fnc_setHitPointDamage.sqf | 2 +- .../medical/functions/fnc_setUnconscious.sqf | 8 +-- .../functions/fnc_treatmentAdvanced_CPR.sqf | 4 +- .../fnc_treatmentAdvanced_bandage.sqf | 4 +- .../fnc_treatmentAdvanced_fullHeal.sqf | 4 +- .../fnc_treatmentAdvanced_medication.sqf | 2 +- .../functions/fnc_treatmentBasic_bandage.sqf | 4 +- .../functions/fnc_treatmentBasic_bloodbag.sqf | 4 +- .../functions/fnc_treatmentBasic_morphine.sqf | 4 +- addons/medical/functions/fnc_treatmentIV.sqf | 4 +- .../functions/fnc_treatmentTourniquet.sqf | 4 +- .../functions/fnc_treatment_success.sqf | 2 +- .../medical/functions/fnc_unconsciousPFH.sqf | 10 ++-- addons/medical_menu/XEH_postInit.sqf | 5 +- addons/medical_menu/config.cpp | 4 +- .../medical_menu/functions/fnc_onMenuOpen.sqf | 2 +- addons/rearm/XEH_postInit.sqf | 2 +- addons/rearm/config.cpp | 2 +- addons/refuel/XEH_postInit.sqf | 2 +- addons/refuel/config.cpp | 2 +- addons/sandbag/XEH_postInit.sqf | 2 +- addons/sandbag/config.cpp | 2 +- addons/sitting/XEH_clientInit.sqf | 2 +- addons/sitting/config.cpp | 2 +- addons/tacticalladder/XEH_postInit.sqf | 2 +- addons/tacticalladder/config.cpp | 2 +- addons/trenches/XEH_postInit.sqf | 2 +- addons/trenches/config.cpp | 2 +- addons/tripod/XEH_postInit.sqf | 2 +- addons/tripod/config.cpp | 2 +- 51 files changed, 116 insertions(+), 122 deletions(-) diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index ae3ab5a639b..9709508fa27 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -32,7 +32,7 @@ if (isServer) then { [QGVAR(setSurrendered), {_this call FUNC(setSurrendered)}] call CBA_fnc_addEventHandler; //Medical Integration Events -[QEGVAR(medical,unconscious), {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call ACE_Captives_fnc_handleOnUnconscious}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index 41adbb32289..eb8066ed82e 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -22,7 +22,7 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; SetSurrendered = QGVAR(setSurrendered); SetHandcuffed = QGVAR(setHandcuffed); MoveOutCaptive = QGVAR(moveOutCaptive); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index e9b9bcfe25c..a223ec1f9ef 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -21,7 +21,7 @@ ["ace_setStatusEffect", {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; ["forceWalk", false, ["ACE_SwitchUnits", "ACE_Attach", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_dragging"]] call FUNC(statusEffect_addType); ["blockSprint", false, []] call FUNC(statusEffect_addType); -["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), QEGVAR(medical,unconscious)]] call FUNC(statusEffect_addType); +["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType); ["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType); ["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType); diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index fedb6fee9c0..c9a1fbea1b0 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -25,6 +25,6 @@ if (isNil "ACE_maxWeightCarry") then { ["ace_playerWeaponChanged", {_this call FUNC(handlePlayerWeaponChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index adb46496511..dfc8a7fbf6a 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgMovesBasic.hpp" class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; playerWeaponChanged = "ace_playerWeaponChanged"; playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 91887d247d9..365e7720239 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -22,7 +22,7 @@ //When getting knocked out in medical, trigger deadman explosives: //Event is global, only run on server (ref: ace_medical_fnc_setUnconscious) if (isServer) then { - [QEGVAR(medical,unconscious), { + ["ace_unconscious", { params ["_unit", "_isUnconscious"]; if (!_isUnconscious) exitWith {}; TRACE_1("Knocked Out, Doing Deadman", _unit); diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 09a814dae6d..379cf1138a3 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -45,7 +45,7 @@ class CfgMineTriggers { }; class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; clientRequestsOrientations = QGVAR(clientRequestOrientations); serverSendsOrientations = QGVAR(serverSendOrientations); }; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index e703653efbb..051e41edba6 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -41,7 +41,7 @@ GVAR(ParsedTextCached) = []; // Listens for the falling unconscious event, just in case the menu needs to be closed -[QEGVAR(medical,unconscious), { +["ace_unconscious", { // If no menu is open just quit if (GVAR(openedMenuType) < 0) exitWith {}; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 82f367ffdd6..404c6746f18 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -9,29 +9,29 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; ["ace_interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call CBA_fnc_addEventHandler; //Treatment EventHandlers: -["ace_actionCheckBloodPressureLocal", DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; -["ace_actionCheckPulseLocal", DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; -["ace_addToInjuredCollection", DFUNC(addToInjuredCollection)] call CBA_fnc_addEventHandler; -["ace_addToMedicalLog", DFUNC(addToLog)] call CBA_fnc_addEventHandler; -["ace_addToTriageCard", DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; -["ace_setDead", DFUNC(setDead)] call CBA_fnc_addEventHandler; -["ace_setHitPointDamage", DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; -["ace_setUnconscious", DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; -["ace_treatmentAdvanced_bandageLocal", DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentAdvanced_CPRLocal", DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentAdvanced_fullHealLocal", DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentAdvanced_medicationLocal", DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentBasic_bandageLocal", DFUNC(treatmentBasic_bandageLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentBasic_bloodbagLocal", DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentBasic_morphineLocal", DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentIVLocal", DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; -["ace_treatmentTourniquetLocal", DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; -["ace_actionPlaceInBodyBag", FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; +[QGVAR(actionCheckBloodPressureLocal), DFUNC(actionCheckBloodPressureLocal)] call CBA_fnc_addEventHandler; +[QGVAR(actionCheckPulseLocal), DFUNC(actionCheckPulseLocal)] call CBA_fnc_addEventHandler; +[QGVAR(addVitalLoop), DFUNC(addVitalLoop)] call CBA_fnc_addEventHandler; +[QGVAR(addToMedicalLog), DFUNC(addToLog)] call CBA_fnc_addEventHandler; +[QGVAR(addToTriageCard), DFUNC(addToTriageCard)] call CBA_fnc_addEventHandler; +[QGVAR(setDead), DFUNC(setDead)] call CBA_fnc_addEventHandler; +[QGVAR(setHitPointDamage), DFUNC(setHitPointDamage)] call CBA_fnc_addEventHandler; +[QGVAR(setUnconscious), DFUNC(setUnconscious)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentAdvanced_bandageLocal), DFUNC(treatmentAdvanced_bandageLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentAdvanced_CPRLocal), DFUNC(treatmentAdvanced_CPRLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentAdvanced_fullHealLocal), DFUNC(treatmentAdvanced_fullHealLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentAdvanced_medicationLocal), DFUNC(treatmentAdvanced_medicationLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentBasic_bandageLocal), DFUNC(treatmentBasic_bandageLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentBasic_bloodbagLocal), DFUNC(treatmentBasic_bloodbagLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentBasic_morphineLocal), DFUNC(treatmentBasic_morphineLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentIVLocal), DFUNC(treatmentIVLocal)] call CBA_fnc_addEventHandler; +[QGVAR(treatmentTourniquetLocal), DFUNC(treatmentTourniquetLocal)] call CBA_fnc_addEventHandler; +[QGVAR(actionPlaceInBodyBag), FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; //Handle Deleting Bodies on Server: -if (isServer) then {[QGVAR(playedInBodyBag), FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; +if (isServer) then {["ace_playedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; -[QGVAR(unconscious), { +["ace_unconscious", { params ["_unit", "_status"]; if (local _unit) then { if (_status) then { diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf index 7d48672972f..1d1c34d6c79 100644 --- a/addons/medical/XEH_respawn.sqf +++ b/addons/medical/XEH_respawn.sqf @@ -7,7 +7,7 @@ params ["_unit"]; // Reset captive status for respawning unit if (!(_unit getVariable ["ACE_isUnconscious", false])) then { - [_unit, "setCaptive", QGVAR(unconscious), false] call EFUNC(common,statusEffect_set); + [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); }; // Remove maximum unconsciousness time handler diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index 812e52f6dd1..bda657960b0 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -26,31 +26,30 @@ class CfgPatches { #include "UI\triagecard.hpp" class ACE_newEvents { - medical_onUnconscious = QGVAR(unconscious); - medical_treatmentSuccess = QGVAR(treatmentSuccess); - medical_onSetDead = QGVAR(killed); - Medical_onEnteredCardiacArrest = QGVAR(enteredCardiacArrest); - Medical_onItemAddedToTriageCard = QGVAR(itemAddedToTriageCard); - medical_onLogEntryAdded = QGVAR(logEntryAdded); - Medical_onHeartRateAdjustmentAdded = QGVAR(addedHeartRateAdjustment); - placedInBodyBag = QGVAR(playedInBodyBag); - actionPlaceInBodyBag = "ace_actionPlaceInBodyBag"; - treatmentTourniquetLocal = "ace_treatmentTourniquetLocal"; - treatmentIVLocal = "ace_treatmentIVLocal"; - treatmentBasic_morphineLocal = "ace_treatmentBasic_morphineLocal"; - treatmentBasic_bloodbagLocal = "ace_treatmentBasic_bloodbagLocal"; - treatmentBasic_bandageLocal = "ace_treatmentBasic_bandageLocal"; - treatmentAdvanced_medicationLocal = "ace_treatmentAdvanced_medicationLocal"; - treatmentAdvanced_fullHealLocal = "ace_treatmentAdvanced_fullHealLocal"; - treatmentAdvanced_CPRLocal = "ace_treatmentAdvanced_CPRLocal"; - treatmentAdvanced_bandageLocal = "ace_treatmentAdvanced_bandageLocal"; - setUnconscious = "ace_setUnconscious"; - setHitPointDamage = "ace_setHitPointDamage"; - setDead = "ace_setDead"; - addToTriageCard = "ace_addToTriageCard"; - addToMedicalLog = "ace_addToMedicalLog"; - addToInjuredCollection = "ace_addToInjuredCollection"; - actionCheckPulseLocal = "ace_actionCheckPulseLocal"; - actionCheckBloodPressureLocal = "ace_actionCheckBloodPressureLocal"; - addVitalLoop = "ace_addVitalLoop"; + medical_onUnconscious = "ace_unconscious"; + medical_treatmentSuccess = "ace_treatmentSuccess"; + medical_onSetDead = "ace_killed"; + Medical_onEnteredCardiacArrest = "ace_enteredCardiacArrest"; + Medical_onItemAddedToTriageCard = "ace_itemAddedToTriageCard"; + medical_onLogEntryAdded = "ace_medicalLogEntryAdded"; + Medical_onHeartRateAdjustmentAdded = "ace_addedHeartRateAdjustment"; + placedInBodyBag = "ace_playedInBodyBag"; + actionPlaceInBodyBag = QGVAR(actionPlaceInBodyBag); + treatmentTourniquetLocal = QGVAR(treatmentTourniquetLocal); + treatmentIVLocal = QGVAR(treatmentIVLocal); + treatmentBasic_morphineLocal = QGVAR(treatmentBasic_morphineLocal); + treatmentBasic_bloodbagLocal = QGVAR(treatmentBasic_bloodbagLocal); + treatmentBasic_bandageLocal = QGVAR(treatmentBasic_bandageLocal); + treatmentAdvanced_medicationLocal = QGVAR(treatmentAdvanced_medicationLocal); + treatmentAdvanced_fullHealLocal = QGVAR(treatmentAdvanced_fullHealLocal); + treatmentAdvanced_CPRLocal = QGVAR(treatmentAdvanced_CPRLocal); + treatmentAdvanced_bandageLocal = QGVAR(treatmentAdvanced_bandageLocal); + setUnconscious = QGVAR(setUnconscious); + setHitPointDamage = QGVAR(setHitPointDamage); + setDead = QGVAR(setDead); + addToTriageCard = QGVAR(addToTriageCard); + addToMedicalLog = QGVAR(addToMedicalLog); + actionCheckPulseLocal = QGVAR(actionCheckPulseLocal); + actionCheckBloodPressureLocal = QGVAR(actionCheckBloodPressureLocal); + addVitalLoop = QGVAR(addVitalLoop); }; diff --git a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf index 2d2b5a9e598..9e66eda263a 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf @@ -16,7 +16,7 @@ params ["_caller", "_target", "_selectionName"]; if (local _target) then { - ["ace_actionCheckBloodPressureLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; + [QGVAR(actionCheckBloodPressureLocal), [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["ace_actionCheckBloodPressureLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; + [QGVAR(actionCheckBloodPressureLocal), [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionCheckPulse.sqf b/addons/medical/functions/fnc_actionCheckPulse.sqf index 2b97c1aa24c..39f196a0a56 100644 --- a/addons/medical/functions/fnc_actionCheckPulse.sqf +++ b/addons/medical/functions/fnc_actionCheckPulse.sqf @@ -16,7 +16,7 @@ params ["_caller","_target", "_selectionName"]; if (local _target) then { - ["ace_actionCheckPulseLocal", [_caller, _target, _selectionName]] call CBA_fnc_localEvent; + [QGVAR(actionCheckPulseLocal), [_caller, _target, _selectionName]] call CBA_fnc_localEvent; } else { - ["ace_actionCheckPulseLocal", [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; + [QGVAR(actionCheckPulseLocal), [_caller, _target, _selectionName], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index c8f6de36289..35d283c9258 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -22,7 +22,7 @@ TRACE_2("params",_caller,_target); if (!local _target) exitWith { TRACE_1("running where local",local _target); - ["ace_actionPlaceInBodyBag", [_caller, _target], [_target]] call CBA_fnc_targetEvent; + [QGVAR(actionPlaceInBodyBag), [_caller, _target], [_target]] call CBA_fnc_targetEvent; objNull }; @@ -47,6 +47,6 @@ private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; _bodyBag setPosASL _position; _bodyBag setDir _direction; -[QGVAR(playedInBodyBag), [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server +["ace_playedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server _bodyBag diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 1eaa0ec32d9..e428e84d99c 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -44,7 +44,7 @@ TRACE_2("meds",_part,_delayedMedications); _x params ["", "", "_medPartNum"]; if (_part == _medPartNum) then { TRACE_1("delayed medication call after tourniquet removeal",_x); - ["ace_treatmentAdvanced_medicationLocal", _x, [_target]] call CBA_fnc_targetEvent; + [QGVAR(treatmentAdvanced_medicationLocal), _x, [_target]] call CBA_fnc_targetEvent; _delayedMedications set [_forEachIndex, -1]; _updatedArray = true; }; diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf index 1b214ec99ac..b2470383a21 100644 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf @@ -22,4 +22,4 @@ params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], [" _adjustment = _unit getVariable [QGVAR(heartRateAdjustments), []]; _adjustment pushBack [_value, _time, _callBack]; _unit setVariable [QGVAR(heartRateAdjustments), _adjustment ]; -[QGVAR(addedHeartRateAdjustment), [_unit, _value, _time]] call CBA_fnc_localEvent; +["ace_addedHeartRateAdjustment", [_unit, _value, _time]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index ab0d993c567..787596faa28 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -20,7 +20,7 @@ private ["_moment", "_logVarName", "_log","_newLog", "_logs"]; params ["_unit", "_type", "_message", "_arguments"]; if (!local _unit) exitWith { - ["ace_addToMedicalLog", _this, _unit] call CBA_fnc_targetEvent; + [QGVAR(addToMedicalLog), _this, _unit] call CBA_fnc_targetEvent; }; date params ["", "", "", "_hour", "_minute"]; @@ -43,7 +43,7 @@ if (count _log >= 8) then { _log pushBack [_message, _moment, _type, _arguments]; _unit setVariable [_logVarName, _log, true]; -[QGVAR(logEntryAdded), [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; +["ace_medicalLogEntryAdded", [_unit, _type, _message, _arguments]] call CBA_fnc_localEvent; _logs = _unit getVariable [QGVAR(allLogs), []]; if !(_logVarName in _logs) then { diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index cae1dd35cf2..940cf554c59 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -18,7 +18,7 @@ private ["_log", "_inList", "_amount"]; params ["_unit", "_newItem"]; if (!local _unit) exitWith { - ["ace_addToTriageCard", _this, _unit] call CBA_fnc_targetEvent; + [QGVAR(addToTriageCard), _this, _unit] call CBA_fnc_targetEvent; }; _log = _unit getVariable [QGVAR(triageCard), []]; @@ -41,4 +41,4 @@ if (!_inList) then { _log pushBack [_newItem, 1, CBA_missionTime]; }; _unit setVariable [QGVAR(triageCard), _log, true]; -[QGVAR(itemAddedToTriageCard), [_unit, _newItem, _amount]] call CBA_fnc_localEvent; +["ace_itemAddedToTriageCard", [_unit, _newItem, _amount]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_addVitalLoop.sqf b/addons/medical/functions/fnc_addVitalLoop.sqf index 5d7d8d1d923..aa3d6608d07 100644 --- a/addons/medical/functions/fnc_addVitalLoop.sqf +++ b/addons/medical/functions/fnc_addVitalLoop.sqf @@ -18,7 +18,7 @@ params ["_unit", ["_force", false]]; if !([_unit] call FUNC(hasMedicalEnabled) || _force) exitWith {}; if !(local _unit) exitWith { - ["ace_addVitalLoop", [_unit, _force], _unit] call CBA_fnc_targetEvent; + [QGVAR(addVitalLoop), [_unit, _force], _unit] call CBA_fnc_targetEvent; }; // Quit if the unit already has a vital loop, or is dead, unless it's forced diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index 9522eeaec43..925ff4cc039 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -21,7 +21,7 @@ if (_unit getVariable [QGVAR(inCardiacArrest),false]) exitWith {}; _unit setVariable [QGVAR(inCardiacArrest), true,true]; _unit setVariable [QGVAR(heartRate), 0]; -[QGVAR(enteredCardiacArrest), [_unit]] call CBA_fnc_localEvent; +["ace_enteredCardiacArrest", [_unit]] call CBA_fnc_localEvent; [_unit, true] call FUNC(setUnconscious); _timeInCardiacArrest = 120 + round(random(600)); diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index 6d51ec2bac2..0e5fd884f49 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -20,7 +20,7 @@ params ["_unit", ["_force", false], ["_delaySetDamage", false]]; if ((!alive _unit) || {_unit getVariable ["ACE_isDead", false]}) exitWith {true}; if (!local _unit) exitwith { - ["ace_setDead", [_unit, _force], _unit] call CBA_fnc_targetEvent; + [QGVAR(setDead), [_unit, _force], _unit] call CBA_fnc_targetEvent; false; }; @@ -51,7 +51,7 @@ if (isPLayer _unit) then { _unit setVariable ["isDeadPlayer", true, true]; }; -[QGVAR(killed), [_unit]] call CBA_fnc_localEvent; +["ace_killed", [_unit]] call CBA_fnc_localEvent; //Delay a frame before killing the unit via scripted damage //to avoid triggering the "Killed" Event twice (and having the wrong killer) diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 6ded061bb4d..b1dfe59d298 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -26,7 +26,7 @@ params ["_unit", "_selection", "_damage", ["_disabled", false]]; // Unit isn't local, give function to machine where it is. if !(local _unit) exitWith { - ["ace_setHitPointDamage", _this, _unit] call CBA_fnc_targetEvent; + [QGVAR(setHitPointDamage), _this, _unit] call CBA_fnc_targetEvent; }; // Check if overall damage adjustment is disabled diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index adee89e4fef..41c02dd5533 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -39,7 +39,7 @@ if !(_set) exitWith { if !(!(isNull _unit) && {(_unit isKindOf "CAManBase") && ([_unit] call EFUNC(common,isAwake))}) exitWith{}; if (!local _unit) exitWith { - ["ace_setUnconscious", [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; + [QGVAR(setUnconscious), [_unit, _set, _minWaitingTime, _force], _unit] call CBA_fnc_targetEvent; }; _unit setVariable ["ACE_isUnconscious", true, true]; @@ -96,12 +96,12 @@ if (GVAR(moveUnitsFromGroupOnUnconscious)) then { }; // Delay Unconscious so the AI dont instant stop shooting on the unit #3121 if (GVAR(delayUnconCaptive) == 0) then { - [_unit, "setCaptive", QGVAR(unconscious), true] call EFUNC(common,statusEffect_set); + [_unit, "setCaptive", "ace_unconscious", true] call EFUNC(common,statusEffect_set); } else { [{ params ["_unit"]; if (_unit getVariable ["ACE_isUnconscious", false]) then { - [_unit, "setCaptive", QGVAR(unconscious), true] call EFUNC(common,statusEffect_set); + [_unit, "setCaptive", "ace_unconscious", true] call EFUNC(common,statusEffect_set); }; },[_unit], GVAR(delayUnconCaptive)] call CBA_fnc_waitAndExecute; }; @@ -122,4 +122,4 @@ _startingTime = CBA_missionTime; // unconscious can't talk [_unit, "isUnconscious"] call EFUNC(common,muteUnit); -[QGVAR(unconscious), [_unit, true]] call CBA_fnc_globalEvent; +["ace_unconscious", [_unit, true]] call CBA_fnc_globalEvent; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index 1c041b05b99..0ce1f7d4d94 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -22,9 +22,9 @@ if (alive _target && {(_target getVariable [QGVAR(inCardiacArrest), false] || _t [_target, "activity_view", LSTRING(Activity_cpr), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); if (local _target) then { - ["ace_treatmentAdvanced_CPRLocal", [_caller, _target]] call CBA_fnc_localEvent; + [QGVAR(treatmentAdvanced_CPRLocal), [_caller, _target]] call CBA_fnc_localEvent; } else { - ["ace_treatmentAdvanced_CPRLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentAdvanced_CPRLocal), [_caller, _target], _target] call CBA_fnc_targetEvent; }; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index c387649705c..67606ddd7e6 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -27,9 +27,9 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitWith { }; if (local _target) then { - ["ace_treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; + [QGVAR(treatmentAdvanced_bandageLocal), [_target, _className, _selectionName, _specificSpot]] call CBA_fnc_localEvent; } else { - ["ace_treatmentAdvanced_bandageLocal", [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentAdvanced_bandageLocal), [_target, _className, _selectionName, _specificSpot], _target] call CBA_fnc_targetEvent; }; /* { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf index a9ef6ee3a40..18bd0468d2a 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf @@ -13,9 +13,9 @@ params ["_caller", "_target", "_selectionName", "_className", "_items"]; if (local _target) then { - ["ace_treatmentAdvanced_fullHealLocal", [_caller, _target]] call CBA_fnc_localEvent; + [QGVAR(treatmentAdvanced_fullHealLocal), [_caller, _target]] call CBA_fnc_localEvent; } else { - ["ace_treatmentAdvanced_fullHealLocal", [_caller, _target], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentAdvanced_fullHealLocal), [_caller, _target], _target] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index 2365eaea5d0..ceb788f5718 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -22,7 +22,7 @@ TRACE_5("params",_caller,_target,_selectionName,_className,_items); private _part = [_selectionName] call FUNC(selectionNameToNumber); -["ace_treatmentAdvanced_medicationLocal", [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; +[QGVAR(treatmentAdvanced_medicationLocal), [_target, _className, _part], [_target]] call CBA_fnc_targetEvent; { if (_x != "") then { diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index d7a87bd3c87..c0411c09e41 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -21,7 +21,7 @@ private ["_hitSelections", "_hitPoints", "_point", "_damage"]; params ["_caller", "_target", "_selection", "_className"]; if (local _target) then { - ["ace_treatmentBasic_bandageLocal", [_target, _selection]] call CBA_fnc_localEvent; + [QGVAR(treatmentBasic_bandageLocal), [_target, _selection]] call CBA_fnc_localEvent; } else { - ["ace_treatmentBasic_bandageLocal", [_target, _selection], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentBasic_bandageLocal), [_target, _selection], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf index 9a65a9deb44..6989ac14b8f 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target", "_treatmentClassname"]; if (local _target) then { - ["ace_treatmentBasic_bloodbagLocal", [_target, _treatmentClassname]] call CBA_fnc_localEvent; + [QGVAR(treatmentBasic_bloodbagLocal), [_target, _treatmentClassname]] call CBA_fnc_localEvent; } else { - ["ace_treatmentBasic_bloodbagLocal", [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentBasic_bloodbagLocal), [_target, _treatmentClassname], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf index 4d424923da1..f704a670425 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf @@ -20,7 +20,7 @@ params ["_caller", "_target"]; if (local _target) then { - ["ace_treatmentBasic_morphineLocal", [_target]] call CBA_fnc_localEvent; + [QGVAR(treatmentBasic_morphineLocal), [_target]] call CBA_fnc_localEvent; } else { - ["ace_treatmentBasic_morphineLocal", [_target], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentBasic_morphineLocal), [_target], _target] call CBA_fnc_targetEvent; }; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index 3f5c4d2493f..456c4153623 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -23,9 +23,9 @@ if (count _items == 0) exitWith {false}; _removeItem = _items select 0; if (local _target) then { - ["ace_treatmentIVLocal", [_target, _className]] call CBA_fnc_localEvent; + [QGVAR(treatmentIVLocal), [_target, _className]] call CBA_fnc_localEvent; } else { - ["ace_treatmentIVLocal", [_target, _className], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentIVLocal), [_target, _className], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index 98b5a224113..6642bf7c80b 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -41,9 +41,9 @@ if ((_tourniquets select _part) > 0) exitWith { _removeItem = _items select 0; if (local _target) then { - ["ace_treatmentTourniquetLocal", [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; + [QGVAR(treatmentTourniquetLocal), [_target, _removeItem, _selectionName]] call CBA_fnc_localEvent; } else { - ["ace_treatmentTourniquetLocal", [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; + [QGVAR(treatmentTourniquetLocal), [_target, _removeItem, _selectionName], _target] call CBA_fnc_targetEvent; }; [_target, _removeItem] call FUNC(addToTriageCard); diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 04fec2b5bdc..98befeab04a 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -95,4 +95,4 @@ if (!(_target getVariable [QGVAR(addedToUnitLoop),false])) then { [_target] call FUNC(addVitalLoop); }; -[QGVAR(treatmentSuccess), [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; +["ace_treatmentSuccess", [_caller, _target, _selectionName, _className]] call CBA_fnc_localEvent; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index 0e80d494573..edf2e871fd2 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -33,15 +33,15 @@ if (!alive _unit) exitWith { if (GVAR(moveUnitsFromGroupOnUnconscious)) then { [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide); }; - [_unit, "setCaptive", QGVAR(unconscious), false] call EFUNC(common,statusEffect_set); + [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); [_unit, false] call EFUNC(common,disableAI); //_unit setUnitPos _originalPos; _unit setUnconscious false; [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); - [QGVAR(unconscious), [_unit, false]] call CBA_fnc_globalEvent; + ["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent; - TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , QGVAR(unconscious)); + TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , "ace_unconscious"); [_idPFH] call CBA_fnc_removePerFrameHandler; }; @@ -96,13 +96,13 @@ if !(_unit getVariable ["ACE_isUnconscious",false]) exitWith { }; _unit setVariable [QGVAR(vehicleAwakeAnim), nil]; - [QGVAR(unconscious), [_unit, false]] call CBA_fnc_globalEvent; + ["ace_unconscious", [_unit, false]] call CBA_fnc_globalEvent; // EXIT PFH [_idPFH] call CBA_fnc_removePerFrameHandler; }; if (!_hasMovedOut) then { // Reset the unit back to the previous captive state. - [_unit, "setCaptive", QGVAR(unconscious), false] call EFUNC(common,statusEffect_set); + [_unit, "setCaptive", "ace_unconscious", false] call EFUNC(common,statusEffect_set); // Swhich the unit back to its original group //Unconscious units shouldn't be put in another group #527: diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 046abfdaad7..e7b7ec40cb3 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -6,8 +6,7 @@ GVAR(MenuPFHID) = -1; GVAR(lastOpenedOn) = -1; GVAR(pendingReopen) = false; -[QEGVAR(medical,treatmentSuccess), { - +["ace_treatmentSuccess", { if (GVAR(openAfterTreatment) && {GVAR(pendingReopen)}) then { GVAR(pendingReopen) = false; [{ @@ -16,7 +15,6 @@ GVAR(pendingReopen) = false; }; }] call CBA_fnc_addEventHandler; - ["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), { private _target = cursorTarget; @@ -37,4 +35,3 @@ GVAR(pendingReopen) = false; false }, [35, [false, false, false]], false, 0] call CBA_fnc_addKeybind; - diff --git a/addons/medical_menu/config.cpp b/addons/medical_menu/config.cpp index a33dbe9235b..67d39667715 100644 --- a/addons/medical_menu/config.cpp +++ b/addons/medical_menu/config.cpp @@ -19,7 +19,5 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - medical_treatmentSuccess = QEGVAR(medical,treatmentSuccess); - Medical_onMenuOpen = QGVAR(opened); - displayTextStructured = "ace_displayTextStructured"; + Medical_onMenuOpen = "ace_medicalMenuOpened"; }; diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index ed33b2d3215..563c8554540 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -87,4 +87,4 @@ GVAR(MenuPFHID) = [{ }, 0, [_display]] call CBA_fnc_addPerFrameHandler; -[QGVAR(opened), [ACE_player, _target]] call CBA_fnc_localEvent; +["ace_medicalMenuOpened", [ACE_player, _target]] call CBA_fnc_localEvent; diff --git a/addons/rearm/XEH_postInit.sqf b/addons/rearm/XEH_postInit.sqf index 7c89e90ac1e..a3038494dad 100644 --- a/addons/rearm/XEH_postInit.sqf +++ b/addons/rearm/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; ["ace_playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call CBA_fnc_addEventHandler; if (isServer) then { diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index 0d4ec30baa2..be579f56fd6 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -22,5 +22,5 @@ class CfgPatches { class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; }; diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 866f50dbd84..8c28464287f 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 1517ab7006c..4a944304e54 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; setFuel = "ace_setFuel"; setVectorDirAndUp = "ace_setVectorDirAndUp"; displayTextStructured = "ace_displayTextStructured"; diff --git a/addons/sandbag/XEH_postInit.sqf b/addons/sandbag/XEH_postInit.sqf index e65928c48ea..0bc5b6d2b18 100644 --- a/addons/sandbag/XEH_postInit.sqf +++ b/addons/sandbag/XEH_postInit.sqf @@ -20,6 +20,6 @@ GVAR(deployDirection) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 6ad3e212d8e..1303b09ad0f 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; playerInventoryChanged = "ace_playerInventoryChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 58a926022bc..3b6b0ba6c8f 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -12,6 +12,6 @@ if (!hasInterface) exitWith {}; ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); // Handle interruptions - [QEGVAR(medical,unconscious), {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; + ["ace_unconscious", {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; [QEGVAR(captives,setHandcuffed), {_this call DFUNC(handleInterrupt)}] call CBA_fnc_addEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 26d013179e0..d48a8f9fb9c 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -21,5 +21,5 @@ class CfgPatches { class ACE_newEvents { SettingsInitialized = "ace_settingsInitialized"; SetHandcuffed = QEGVAR(captives,setHandcuffed); - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; }; \ No newline at end of file diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 902d73f9abb..723c5b1421b 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -21,6 +21,6 @@ GVAR(currentAngle) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 38f47b40eaf..46be014d6a8 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { class ACE_newEvents { interactMenuOpened = "ace_interactMenuOpened"; - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; }; diff --git a/addons/trenches/XEH_postInit.sqf b/addons/trenches/XEH_postInit.sqf index 02de7f02c14..af6038d9925 100644 --- a/addons/trenches/XEH_postInit.sqf +++ b/addons/trenches/XEH_postInit.sqf @@ -21,6 +21,6 @@ GVAR(digDirection) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle waking up dragged unit and falling unconscious while dragging -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; //@todo Captivity? diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index 0486a715097..0e689502a6f 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; playerInventoryChanged = "ace_playerInventoryChanged"; playerChanged = "ace_playerChanged"; diff --git a/addons/tripod/XEH_postInit.sqf b/addons/tripod/XEH_postInit.sqf index 57f1fd08b09..df62d653abe 100644 --- a/addons/tripod/XEH_postInit.sqf +++ b/addons/tripod/XEH_postInit.sqf @@ -14,6 +14,6 @@ GVAR(height) = 0; ["ace_playerVehicleChanged", {[ACE_player, objNull] call FUNC(handlePlayerChanged)}] call CBA_fnc_addEventHandler; // handle falling unconscious -[QEGVAR(medical,unconscious), {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; +["ace_unconscious", {_this call FUNC(handleUnconscious)}] call CBA_fnc_addEventHandler; // @todo captivity? diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index bd2a0d05056..6c18a663bc1 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -18,7 +18,7 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = QEGVAR(medical,unconscious); + medical_onUnconscious = "ace_unconscious"; playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; From bd985d57ffb11598818deb81783087e8cab8c1aa Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 3 Jun 2016 16:02:21 +0100 Subject: [PATCH 240/268] Run event renaming script for new additions --- addons/common/XEH_postInit.sqf | 2 +- addons/common/config.cpp | 1 + addons/laserpointer/XEH_postInit.sqf | 2 +- addons/laserpointer/config.cpp | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index a223ec1f9ef..fc9cf0f7dc9 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -30,7 +30,7 @@ TRACE_2("forceWalk EH",_object,_set); _object forceWalk (_set > 0); }] call CBA_fnc_addEventHandler; -["blockSprint", { //Name reversed from `allowSprint` because we want NOR logic +["ace_blockSprint", { //Name reversed from `allowSprint` because we want NOR logic params ["_object", "_set"]; TRACE_2("blockSprint EH",_object,_set); _object allowSprint (_set == 0); diff --git a/addons/common/config.cpp b/addons/common/config.cpp index d81c3ef1cb1..e0e1ec66007 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -15,6 +15,7 @@ class CfgPatches { // This class will be deprecated in version 3.8.0 class ACE_newEvents { + blockSprint = "ace_blockSprint"; forceWalk = "ace_forceWalk"; PlayerJip = "ace_playerJip"; useItem = "ace_useItem"; diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index c4c83171cb1..9506a91fb51 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -2,7 +2,7 @@ #include "script_component.hpp" // fixes laser when being captured. Needed, because the selectionPosition of the right hand is used -[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; +[QEGVAR(captives,setHandcuffed), {if (_this select 1) then {(_this select 0) action ["ace_gunLightOff", _this select 0]};}] call CBA_fnc_addEventHandler; if (!hasInterface) exitWith {}; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index 8167aa55043..3d41c803a30 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -20,6 +20,7 @@ class CfgPatches { #include "CfgJointRails.hpp" class ACE_newEvents { + GunLightOff = "ace_gunLightOff"; SettingsInitialized = "ace_settingsInitialized"; SetHandcuffed = QEGVAR(captives,setHandcuffed); }; \ No newline at end of file From 5b8fa4d4f18bc8973b72cd19007f4165c895ff95 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 3 Jun 2016 20:07:49 +0100 Subject: [PATCH 241/268] Update common status effect framework Instead of changing the event names to match the new standards and also changing every single call to `FUNC(statusEffect_set)`/`FUNC(statusEffect_get)` I figured it made sense to only change the event names and the internal workings of `FUNC(statusEffect_sendEffects)` to automatically add the appropriate prefix. --- addons/common/XEH_postInit.sqf | 12 ++++++------ addons/common/config.cpp | 11 +++++++---- addons/common/functions/fnc_fixFloating.sqf | 4 ++-- .../common/functions/fnc_statusEffect_addType.sqf | 6 ++---- .../functions/fnc_statusEffect_sendEffects.sqf | 15 +++++---------- 5 files changed, 22 insertions(+), 26 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index fc9cf0f7dc9..56cb75bb102 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -18,29 +18,29 @@ ////////////////////////////////////////////////// //Status Effect EHs: -["ace_setStatusEffect", {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; +[QGVAR(setStatusEffect), {_this call FUNC(statusEffect_set)}] call CBA_fnc_addEventHandler; ["forceWalk", false, ["ACE_SwitchUnits", "ACE_Attach", "ACE_dragging", "ACE_Explosives", "ACE_Ladder", "ACE_Sandbag", "ACE_refuel", "ACE_rearm", "ACE_dragging"]] call FUNC(statusEffect_addType); ["blockSprint", false, []] call FUNC(statusEffect_addType); ["setCaptive", true, [QEGVAR(captives,Handcuffed), QEGVAR(captives,Surrendered), "ace_unconscious"]] call FUNC(statusEffect_addType); ["blockDamage", false, ["fixCollision"]] call FUNC(statusEffect_addType); ["blockEngine", false, ["ACE_Refuel"]] call FUNC(statusEffect_addType); -["ace_forceWalk", { +[QGVAR(forceWalk), { params ["_object", "_set"]; TRACE_2("forceWalk EH",_object,_set); _object forceWalk (_set > 0); }] call CBA_fnc_addEventHandler; -["ace_blockSprint", { //Name reversed from `allowSprint` because we want NOR logic +[QGVAR(blockSprint), { //Name reversed from `allowSprint` because we want NOR logic params ["_object", "_set"]; TRACE_2("blockSprint EH",_object,_set); _object allowSprint (_set == 0); }] call CBA_fnc_addEventHandler; -["setCaptive", { +[QGVAR(setCaptive), { params ["_object", "_set"]; TRACE_2("setCaptive EH",_object,_set); _object setCaptive (_set > 0); }] call CBA_fnc_addEventHandler; -["blockDamage", { //Name reversed from `allowDamage` because we want NOR logic +[QGVAR(blockDamage), { //Name reversed from `allowDamage` because we want NOR logic params ["_object", "_set"]; if ((_object isKindOf "CAManBase") && {(["ace_medical"] call FUNC(isModLoaded))}) then { TRACE_2("blockDamage EH (using medical)",_object,_set); @@ -50,7 +50,7 @@ _object allowDamage (_set == 0); }; }] call CBA_fnc_addEventHandler; -["blockEngine", { +[QGVAR(blockEngine), { params ["_vehicle", "_set"]; _vehicle setVariable [QGVAR(blockEngine), _set > 0, true]; _vehicle engineOn false; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index e0e1ec66007..8803c751ba3 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -15,9 +15,12 @@ class CfgPatches { // This class will be deprecated in version 3.8.0 class ACE_newEvents { - blockSprint = "ace_blockSprint"; - forceWalk = "ace_forceWalk"; - PlayerJip = "ace_playerJip"; + forceWalk = QGVAR(forceWalk); + blockSprint = QGVAR(blockSprint); + setCaptive = QGVAR(setCaptive); + blockDamage = QGVAR(blockDamage); + blockEngine = QGVAR(blockEngine); + useItem = "ace_useItem"; displayTextPicture = "ace_displayTextPicture"; displayTextStructured = "ace_displayTextStructured"; @@ -53,7 +56,7 @@ class ACE_newEvents { fixPosition = "ace_fixPosition"; fixFloating = "ace_fixFloating"; fixCollision = "ace_fixCollision"; - setStatusEffect = "ace_setStatusEffect"; + setStatusEffect = QGVAR(setStatusEffect); SettingChanged = "ace_settingChanged"; HeadbugFixUsed = "ace_headbugFixUsed"; blockDamage = "ace_blockDamage"; diff --git a/addons/common/functions/fnc_fixFloating.sqf b/addons/common/functions/fnc_fixFloating.sqf index 752b5108bb4..5a00aa3863e 100644 --- a/addons/common/functions/fnc_fixFloating.sqf +++ b/addons/common/functions/fnc_fixFloating.sqf @@ -21,7 +21,7 @@ if (!local _object) exitWith {}; if (_object isKindOf "CAManBase") exitWith {}; //We need to manually set allowDamage to true for setHitIndex to function -["ace_blockDamage", [_object, 0]] call CBA_fnc_localEvent; +[QGVAR(blockDamage), [_object, 0]] call CBA_fnc_localEvent; // save and restore hitpoints, see below why private _hitPointDamages = getAllHitPointsDamage _object; @@ -41,4 +41,4 @@ _object setDamage damage _object; //manually re-enable allowDamage to previous setting (ref statusEffect_funcs) private _effectVarName = format [QGVAR(effect_%1), "blockDamage"]; private _effectNumber = _object getVariable [_effectVarName, 0]; -["ace_blockDamage", [_object, _effectNumber]] call CBA_fnc_localEvent; +[QGVAR(blockDamage), [_object, _effectNumber]] call CBA_fnc_localEvent; diff --git a/addons/common/functions/fnc_statusEffect_addType.sqf b/addons/common/functions/fnc_statusEffect_addType.sqf index afd7ff7be7b..b5d6c1e8795 100644 --- a/addons/common/functions/fnc_statusEffect_addType.sqf +++ b/addons/common/functions/fnc_statusEffect_addType.sqf @@ -3,7 +3,7 @@ * Adds a status effect that will be handled. * * Arguments: - * 0: Status Effect Name, this should match a corisponding event name + * 0: Status Effect Name, this should match a corresponding event name * 1: Send event globaly * 2: Common Effect Reaons to pre-seed durring init * @@ -30,8 +30,6 @@ GVAR(statusEffect_isGlobal) pushBack _isGlobal; //We add reasons at any time, but more efficenet to add all common ones at one time during init if (isServer && {!(_commonReasonsArray isEqualTo [])}) then { //Switch case to lower: - { - _commonReasonsArray set [_forEachIndex, toLower _x]; - } forEach _commonReasonsArray; + _commonReasonsArray = _commonReasonsArray apply { toLower _x }; missionNamespace setVariable [(format [QGVAR(statusEffects_%1), _name]), _commonReasonsArray, true]; }; diff --git a/addons/common/functions/fnc_statusEffect_sendEffects.sqf b/addons/common/functions/fnc_statusEffect_sendEffects.sqf index 078c6a03384..f82ab10427b 100644 --- a/addons/common/functions/fnc_statusEffect_sendEffects.sqf +++ b/addons/common/functions/fnc_statusEffect_sendEffects.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Object - * 1: Effect name (or "" or send all) + * 1: Effect name (or "" to send all) * * Return Value: * Nothing @@ -30,18 +30,13 @@ if (isNull _object) exitWith {}; //We only do anything if the effect has been defined at some point in the game for this unit TRACE_2("checking if event is nil",_x,_effectNumber); if (_effectNumber != -1) then { + private _eventName = format [QGVAR(%1), _x]; if (GVAR(statusEffect_isGlobal) select _forEachIndex) then { TRACE_2("Sending Global Event", _object, _effectNumber); - [_x, [_object, _effectNumber]] call CBA_fnc_globalEvent; + [_eventName, [_object, _effectNumber]] call CBA_fnc_globalEvent; } else { - if (local _object) then { - //If local, send directly to bypass network delay of targetEvent call - TRACE_2("Sending Target Local Event", _object, _effectNumber); - [_x, [_object, _effectNumber]] call CBA_fnc_localEvent; - } else { - TRACE_2("Sending Target Non-Local Event", _object, _effectNumber); - [_x, [_object, _effectNumber], [_object]] call CBA_fnc_targetEvent; - }; + TRACE_2("Sending Target Event", _object, _effectNumber); + [_eventName, [_object, _effectNumber], _object] call CBA_fnc_targetEvent; }; }; }; From 9e4fd777456b220d8706dbb4ebccba4366135843 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 3 Jun 2016 20:38:16 +0100 Subject: [PATCH 242/268] Update common event names to meet new standard --- addons/advanced_ballistics/config.cpp | 3 +-- addons/captives/config.cpp | 2 -- addons/cargo/config.cpp | 1 - addons/cargo/functions/fnc_loadItem.sqf | 2 +- addons/common/XEH_postInit.sqf | 22 ++++++++-------- addons/common/config.cpp | 26 ++++++++++--------- .../fnc__handleRequestAllSyncedEvents.sqf | 2 +- .../fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_headBugFix.sqf | 4 +-- addons/common/functions/fnc_hideUnit.sqf | 2 +- .../functions/fnc_requestSyncedEvent.sqf | 4 +-- addons/common/functions/fnc_syncedEvent.sqf | 2 +- addons/common/functions/fnc_unhideUnit.sqf | 2 +- addons/disposable/config.cpp | 3 +-- addons/dragging/config.cpp | 3 --- addons/finger/config.cpp | 4 --- addons/frag/config.cpp | 3 +-- addons/gforces/config.cpp | 4 --- addons/goggles/config.cpp | 3 --- addons/hearing/XEH_postInit.sqf | 4 +-- addons/hearing/config.cpp | 12 --------- addons/interact_menu/config.cpp | 1 - addons/laserpointer/config.cpp | 3 +-- addons/map/config.cpp | 4 --- addons/map_gestures/config.cpp | 4 --- addons/medical/XEH_postInit.sqf | 4 +-- addons/medical/config.cpp | 2 +- .../functions/fnc_actionPlaceInBodyBag.sqf | 2 +- .../functions/fnc_serverRemoveBody.sqf | 2 +- addons/mk6mortar/XEH_postInit.sqf | 4 +-- addons/mk6mortar/config.cpp | 1 - addons/modules/XEH_postInit.sqf | 2 +- addons/modules/config.cpp | 4 --- addons/movement/config.cpp | 5 ---- addons/nametags/config.cpp | 4 --- addons/nightvision/config.cpp | 6 +---- addons/noradio/XEH_postInit.sqf | 2 +- addons/optionsmenu/config.cpp | 4 --- addons/overheating/config.cpp | 1 - addons/parachute/config.cpp | 4 +-- addons/rearm/config.cpp | 1 - addons/respawn/config.cpp | 2 -- addons/sandbag/config.cpp | 4 --- addons/sandbag/functions/fnc_deploy.sqf | 2 +- addons/scopes/config.cpp | 2 -- addons/sitting/config.cpp | 3 +-- addons/tacticalladder/config.cpp | 2 -- addons/trenches/config.cpp | 4 --- addons/trenches/functions/fnc_placeTrench.sqf | 2 +- addons/tripod/config.cpp | 2 -- addons/ui/config.cpp | 4 --- addons/vehiclelock/config.cpp | 1 - addons/viewdistance/config.cpp | 4 --- addons/weaponselect/config.cpp | 1 - .../fnc_displayGrenadeTypeAndNumber.sqf | 2 +- addons/weather/config.cpp | 4 --- addons/winddeflection/config.cpp | 1 - 57 files changed, 56 insertions(+), 154 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 84557517d20..961a4a1b07d 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -23,7 +23,6 @@ class ACE_Extensions { }; class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file +}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index eb8066ed82e..c2faedb7c0a 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -21,12 +21,10 @@ class CfgPatches { #include "CfgEden.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; medical_onUnconscious = "ace_unconscious"; SetSurrendered = QGVAR(setSurrendered); SetHandcuffed = QGVAR(setHandcuffed); MoveOutCaptive = QGVAR(moveOutCaptive); MoveInCaptive = QGVAR(moveInCaptive); - playerChanged = "ace_playerChanged"; CaptiveStatusChanged = "ace_captiveStatusChanged"; }; diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 48642639cc8..450b2b5e25e 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -26,6 +26,5 @@ class ACE_newEvents { AddCargoByClass = "ace_addCargoByClass"; ServerUnloadCargo = QGVAR(serverUnload); UnloadCargo = "ace_unloadCargo"; - hideObjectGlobal = "ace_hideObjectGlobal"; cargoAddedByClass = "ace_cargoAddedByClass"; }; diff --git a/addons/cargo/functions/fnc_loadItem.sqf b/addons/cargo/functions/fnc_loadItem.sqf index 36261e05b7b..6e9bf4cc9de 100644 --- a/addons/cargo/functions/fnc_loadItem.sqf +++ b/addons/cargo/functions/fnc_loadItem.sqf @@ -35,7 +35,7 @@ _vehicle setVariable [QGVAR(space), _space - _itemSize, true]; if (_item isEqualType objNull) then { detach _item; _item attachTo [_vehicle,[0,0,-100]]; - ["ace_hideObjectGlobal", [_item, true]] call CBA_fnc_serverEvent; + [QEGVAR(common,hideObjectGlobal), [_item, true]] call CBA_fnc_serverEvent; }; true diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 56cb75bb102..1408357086c 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -89,7 +89,7 @@ if (isServer) then { // Event to log Fix Headbug output -["HeadbugFixUsed", { +[QGVAR(headbugFixUsed), { params ["_profileName", "_animation"]; ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation); }] call CBA_fnc_addEventHandler; @@ -129,8 +129,8 @@ if (isServer) then { [QGVAR(systemChatGlobal), {systemChat _this}] call CBA_fnc_addEventHandler; if (isServer) then { - ["ace_hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler; - ["ace_enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler; + [QGVAR(hideObjectGlobal), {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler; + [QGVAR(enableSimulationGlobal), {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler; ["ace_setOwner", {(_this select 0) setOwner (_this select 1)}] call CBA_fnc_addEventHandler; [QGVAR(serverLog), FUNC(serverLog)] call CBA_fnc_addEventHandler; }; @@ -143,16 +143,16 @@ if (isServer) then { // Synced ACE events // Handle JIP scenario if (!isServer) then { - ["PlayerJip", { + ["ace_playerJIP", { ACE_LOGINFO("JIP event synchronization initialized"); - ["ace_SEH_all", [player]] call CBA_fnc_serverEvent; + [QGVAR(SEH_all), [player]] call CBA_fnc_serverEvent; }] call CBA_fnc_addEventHandler; } else { - ["ace_SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; + [QGVAR(SEH_all), FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -["ace_SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; -["ace_SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; +[QGVAR(SEH), FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +[QGVAR(SEH_s), FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; @@ -221,7 +221,7 @@ call FUNC(checkFiles); [] call FUNC(readSettingsFromParamsArray); }; // Event so that ACE_Modules have their settings loaded: - ["ace_initSettingsFromModules", []] call CBA_fnc_localEvent; + [QGVAR(initSettingsFromModules), []] call CBA_fnc_localEvent; if (isServer) then { // Publish all settings data after all configs and modules are read @@ -284,7 +284,7 @@ enableCamShake true; ////////////////////////////////////////////////// // Set the name for the current player -["playerChanged", { +["ace_playerChanged", { params ["_newPlayer","_oldPlayer"]; if (alive _newPlayer) then { @@ -475,7 +475,7 @@ if (didJip) then { // We are jipping! Get ready and wait, and throw the event [{ if(!isNull player && GVAR(settingsInitFinished)) then { - ["ace_playerJip", [player]] call CBA_fnc_localEvent; + ["ace_playerJIP", [player]] call CBA_fnc_localEvent; [_this select 1] call CBA_fnc_removePerFrameHandler; }; }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 8803c751ba3..a4d7789e1a6 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -21,9 +21,7 @@ class ACE_newEvents { blockDamage = QGVAR(blockDamage); blockEngine = QGVAR(blockEngine); - useItem = "ace_useItem"; - displayTextPicture = "ace_displayTextPicture"; - displayTextStructured = "ace_displayTextStructured"; + PlayerJip = "ace_playerJIP"; activeCameraChanged = "ace_activeCameraChanged"; visibleMapChanged = "ace_visibleMapChanged"; cameraViewChanged = "ace_cameraViewChanged"; @@ -34,12 +32,19 @@ class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; SettingsInitialized = "ace_settingsInitialized"; - InitSettingsFromModules = "ace_initSettingsFromModules"; - SEH_s = "ace_SEH_s"; - SEH = "ace_SEH"; - SEH_all = "ace_SEH_all"; - enableSimulationGlobal = "ace_enableSimulationGlobal"; - hideObjectGlobal = "ace_hideObjectGlobal"; + + SEH_s = QGVAR(SEH_s); + SEH = QGVAR(SEH); + SEH_all = QGVAR(SEH_all); + setStatusEffect = QGVAR(setStatusEffect); + HeadbugFixUsed = QGVAR(headbugFixUsed); + InitSettingsFromModules = QGVAR(initSettingsFromModules); + enableSimulationGlobal = QGVAR(enableSimulationGlobal); + hideObjectGlobal = QGVAR(hideObjectGlobal); + + useItem = "ace_useItem"; + displayTextPicture = "ace_displayTextPicture"; + displayTextStructured = "ace_displayTextStructured"; setVanillaHitPointDamage = "ace_setVanillaHitPointDamage"; setVectorDirAndUp = "ace_setVectorDirAndUp"; switchMove = "ace_switchMove"; @@ -56,10 +61,7 @@ class ACE_newEvents { fixPosition = "ace_fixPosition"; fixFloating = "ace_fixFloating"; fixCollision = "ace_fixCollision"; - setStatusEffect = QGVAR(setStatusEffect); SettingChanged = "ace_settingChanged"; - HeadbugFixUsed = "ace_headbugFixUsed"; - blockDamage = "ace_blockDamage"; firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; firedPlayerVehicle = "ace_firedPlayerVehicle"; diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 5c95d7c030b..4a599f2d7e5 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - ["ace_SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; + [QGVAR(SEH_s), [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index ed55997baac..40d60aedef2 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - ["ace_SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; + [QGVAR(SEH_s), [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_headBugFix.sqf b/addons/common/functions/fnc_headBugFix.sqf index b5a1fc0d39a..07a1652b1b9 100644 --- a/addons/common/functions/fnc_headBugFix.sqf +++ b/addons/common/functions/fnc_headBugFix.sqf @@ -17,8 +17,8 @@ private _unit = ACE_player; private _anim = animationState _unit; -["ace_headbugFixUsed", [profileName, _anim]] call CBA_fnc_serverEvent; -["ace_headbugFixUsed", [profileName, _anim]] call CBA_fnc_localEvent; +[QGVAR(headbugFixUsed), [profileName, _anim]] call CBA_fnc_serverEvent; +[QGVAR(headbugFixUsed), [profileName, _anim]] call CBA_fnc_localEvent; if (_unit != vehicle _unit || {!([_unit, objNull, ["isNotSitting"]] call FUNC(canInteractWith))}) exitWith {false}; diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index 58b5dc2e2c9..e0adb201c3b 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -28,5 +28,5 @@ if !(_reason in _setHiddenReasons) then { }; if !(isObjectHidden _unit) then { - ["ace_hideObjectGlobal", [_unit, true]] call CBA_fnc_serverEvent; + [QGVAR(hideObjectGlobal), [_unit, true]] call CBA_fnc_serverEvent; }; diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index 55270307644..08423ad40dc 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: eventName - * + * * Return Value: * Boolean of success * @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -["ace_SEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; +[QGVAR(SEH_s), [_eventName, ACE_player]] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 08734463bea..c36c519f6db 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -["ace_SEH", _eventData] call CBA_fnc_globalEvent; +[QGVAR(SEH), _eventData] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_unhideUnit.sqf b/addons/common/functions/fnc_unhideUnit.sqf index f2e8608ec5f..cb988cde1b3 100644 --- a/addons/common/functions/fnc_unhideUnit.sqf +++ b/addons/common/functions/fnc_unhideUnit.sqf @@ -28,5 +28,5 @@ if (_reason in _setHiddenReasons) then { }; if (_setHiddenReasons isEqualTo []) then { - ["ace_hideObjectGlobal", [_unit,false]] call CBA_fnc_serverEvent; + [QGVAR(hideObjectGlobal), [_unit,false]] call CBA_fnc_serverEvent; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index f73bd843a67..1f87c85c28f 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -19,7 +19,6 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - playerInventoryChanged = "ace_playerInventoryChanged"; firedNonPlayer = "ace_firedNonPlayer"; firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file +}; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index dfc8a7fbf6a..48d72c51061 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -19,9 +19,6 @@ class CfgPatches { class ACE_newEvents { medical_onUnconscious = "ace_unconscious"; - playerWeaponChanged = "ace_playerWeaponChanged"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerChanged = "ace_playerChanged"; setDir = "ace_setDir"; fixFloating = "ace_fixFloating"; fixPosition = "ace_fixPosition"; diff --git a/addons/finger/config.cpp b/addons/finger/config.cpp index 9621006dfd9..12e48da03ea 100644 --- a/addons/finger/config.cpp +++ b/addons/finger/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 6df989e1a87..84fe7249b4f 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -16,11 +16,10 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "ACE_Settings.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; firedPlayerVehicle = "ace_firedPlayerVehicle"; firedNonPlayer = "ace_firedNonPlayer"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file +}; diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index db3a9a58fd4..58f11020eb9 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index f3e837177a2..d3d1f6189f3 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -271,10 +271,7 @@ class CfgCloudlets { }; class ACE_newEvents { - playerInventoryChanged = "ace_playerInventoryChanged"; firedPlayer = "ace_firedPlayer"; - activeCameraChanged = "ace_activeCameraChanged"; - cameraViewChanged = "ace_cameraViewChanged"; GlassesChanged = "ace_glassesChanged"; GlassesCracked = "ace_glassesCracked"; }; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index 5f92b239bbe..cdf2e6d74bf 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -28,8 +28,8 @@ GVAR(volumeAttenuation) = 1; [FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler; // Update veh attunation when player veh changes - ["ace_playerVehicleChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; - ["ace_playerTurretChanged", {_this call FUNC(updatePlayerVehAttenuation);}] call CBA_fnc_addEventHandler; + ["ace_playerVehicleChanged", FUNC(updatePlayerVehAttenuation)] call CBA_fnc_addEventHandler; + ["ace_playerTurretChanged", FUNC(updatePlayerVehAttenuation)] call CBA_fnc_addEventHandler; // Reset deafness on respawn (or remote control player switch) ["ace_playerChanged", { diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index ac8ff8f4b26..455bc20dd17 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -14,20 +14,8 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" - #include "CfgVehicles.hpp" - #include "CfgSounds.hpp" - #include "CfgWeapons.hpp" - #include "CfgAmmo.hpp" - #include "ACE_Settings.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; - playerInventoryChanged = "ace_playerInventoryChanged"; - playerTurretChanged = "ace_playerTurretChanged"; - playerVehicleChanged = "ace_playerVehicleChanged"; -}; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 4ab562956c0..3ad5316b38e 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -27,7 +27,6 @@ class ACE_Extensions { class ACE_newEvents { SettingChanged = "ace_settingChanged"; - playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; clearConditionCaches = QGVAR(clearConditionCaches); interactMenuClosed = "ace_interactMenuClosed"; diff --git a/addons/laserpointer/config.cpp b/addons/laserpointer/config.cpp index 3d41c803a30..c727bc64075 100644 --- a/addons/laserpointer/config.cpp +++ b/addons/laserpointer/config.cpp @@ -21,6 +21,5 @@ class CfgPatches { class ACE_newEvents { GunLightOff = "ace_gunLightOff"; - SettingsInitialized = "ace_settingsInitialized"; SetHandcuffed = QEGVAR(captives,setHandcuffed); -}; \ No newline at end of file +}; diff --git a/addons/map/config.cpp b/addons/map/config.cpp index f7c4101218e..17e9aae0abf 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -164,7 +164,3 @@ class RscDisplayServerGetReady: RscDisplayGetReady { }; }; }; - -class ACE_newEvents { - visibleMapChanged = "ace_visibleMapChanged"; -}; diff --git a/addons/map_gestures/config.cpp b/addons/map_gestures/config.cpp index 8c25ee34a7c..52f333c7172 100644 --- a/addons/map_gestures/config.cpp +++ b/addons/map_gestures/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 404c6746f18..194292de270 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -29,7 +29,7 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; [QGVAR(actionPlaceInBodyBag), FUNC(actionPlaceInBodyBag)] call CBA_fnc_addEventHandler; //Handle Deleting Bodies on Server: -if (isServer) then {["ace_playedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; +if (isServer) then {["ace_placedInBodyBag", FUNC(serverRemoveBody)] call CBA_fnc_addEventHandler;}; ["ace_unconscious", { params ["_unit", "_status"]; @@ -295,7 +295,7 @@ GVAR(lastHeartBeatSound) = CBA_missionTime; ["ace_playerInventoryChanged", FUNC(itemCheck)] call CBA_fnc_addEventHandler; if (hasInterface) then { - ["PlayerJip", { + ["ace_playerJIP", { ACE_LOGINFO("JIP Medical init for player."); [player] call FUNC(init); }] call CBA_fnc_addEventHandler; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index bda657960b0..27aacb04e78 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -33,7 +33,7 @@ class ACE_newEvents { Medical_onItemAddedToTriageCard = "ace_itemAddedToTriageCard"; medical_onLogEntryAdded = "ace_medicalLogEntryAdded"; Medical_onHeartRateAdjustmentAdded = "ace_addedHeartRateAdjustment"; - placedInBodyBag = "ace_playedInBodyBag"; + placedInBodyBag = "ace_placedInBodyBag"; actionPlaceInBodyBag = QGVAR(actionPlaceInBodyBag); treatmentTourniquetLocal = QGVAR(treatmentTourniquetLocal); treatmentIVLocal = QGVAR(treatmentIVLocal); diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index 35d283c9258..1ae1dfdc6dc 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -47,6 +47,6 @@ private _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, ""]; _bodyBag setPosASL _position; _bodyBag setDir _direction; -["ace_playedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server +["ace_placedInBodyBag", [_target, _bodyBag]] call CBA_fnc_globalEvent; //hide and delete body on server _bodyBag diff --git a/addons/medical/functions/fnc_serverRemoveBody.sqf b/addons/medical/functions/fnc_serverRemoveBody.sqf index c37d14cde86..42e755f0030 100644 --- a/addons/medical/functions/fnc_serverRemoveBody.sqf +++ b/addons/medical/functions/fnc_serverRemoveBody.sqf @@ -21,7 +21,7 @@ params ["_target"]; TRACE_2("",_target,isPlayer _target); //Hide the body globaly -["ace_hideObjectGlobal", [_target, true]] call CBA_fnc_serverEvent; +[QEGVAR(common,hideObjectGlobal), [_target, true]] call CBA_fnc_serverEvent; if (isNil QGVAR(bodiesToDelete)) then {GVAR(bodiesToDelete) = [];}; GVAR(bodiesToDelete) pushBack _target; diff --git a/addons/mk6mortar/XEH_postInit.sqf b/addons/mk6mortar/XEH_postInit.sqf index c5bcf134ac1..594b0cc2313 100644 --- a/addons/mk6mortar/XEH_postInit.sqf +++ b/addons/mk6mortar/XEH_postInit.sqf @@ -19,5 +19,5 @@ if (!hasInterface) exitWith {}; -["ace_playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call CBA_fnc_addEventHandler; -["ace_infoDisplayChanged", {_this call FUNC(turretDisplayLoaded);}] call CBA_fnc_addEventHandler; +["ace_playerVehicleChanged", FUNC(handlePlayerVehicleChanged)] call CBA_fnc_addEventHandler; +["ace_infoDisplayChanged", FUNC(turretDisplayLoaded)] call CBA_fnc_addEventHandler; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index 509bea599c4..e13d26588bd 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -36,6 +36,5 @@ class RscStructuredText; class ACE_newEvents { infoDisplayChanged = "ace_infoDisplayChanged"; - playerVehicleChanged = "ace_playerVehicleChanged"; initMortar = "ace_initMortar"; }; diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index 8eabe08f0df..293b9468972 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" -["ace_initSettingsFromModules", { +[QEGVAR(common,initSettingsFromModules), { // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index c35dd623ba9..543bbe2551a 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -27,7 +27,3 @@ class CfgVehicles { }; #include "CfgEventHandlers.hpp" - -class ACE_newEvents { - InitSettingsFromModules = "ace_initSettingsFromModules"; -}; diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 49dbd452773..a1d9b25be48 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -19,8 +19,3 @@ class CfgPatches { #include "CfgMoves.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - playerInventoryChanged = "ace_playerInventoryChanged"; - playerChanged = "ace_playerChanged"; -}; \ No newline at end of file diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 5fa6cde85ab..b02dfa9297b 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -18,7 +18,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 5d2be0963e9..0bb7c9227b1 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -19,10 +19,6 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { - playerVisionModeChanged = "ace_playerVisionModeChanged"; firedPlayerVehicle = "ace_firedPlayerVehicle"; firedPlayer = "ace_firedPlayer"; - playerTurretChanged = "ace_playerTurretChanged"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerInventoryChanged = "ace_playerInventoryChanged"; -}; \ No newline at end of file +}; diff --git a/addons/noradio/XEH_postInit.sqf b/addons/noradio/XEH_postInit.sqf index 8396a00b8e6..1606c674a90 100644 --- a/addons/noradio/XEH_postInit.sqf +++ b/addons/noradio/XEH_postInit.sqf @@ -11,7 +11,7 @@ if (isServer) then { if (!hasInterface) exitWith {}; // mutes/unmutes units when the player changes -["playerChanged", { +["ace_playerChanged", { params ["_newPlayer", "_oldPlayer"]; // mute the new player diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index 34be3b876d9..0e564535b91 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -40,7 +40,3 @@ class CfgCommands { "http://ace3mod.com/version.html" }; }; - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; \ No newline at end of file diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 11837b7db74..863e3e01d30 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -52,7 +52,6 @@ class CfgGesturesMale { }; }; class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; initiateSwapBarrelAssisted = QGVAR(initiateSwapBarrelAssisted); showWeaponTemperature = QGVAR(showWeaponTemperature); firedPlayerNonLocal = "ace_firedPlayerNonLocal"; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index a80edfcc99b..5eb109ae94e 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -19,7 +19,5 @@ class CfgPatches { #include "RscTitles.hpp" class ACE_newEvents { - playerVehicleChanged = "ace_playerVehicleChanged"; - playerInventoryChanged = "ace_playerInventoryChanged"; infoDisplayChanged = "ace_infoDisplayChanged"; -}; \ No newline at end of file +}; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index be579f56fd6..76ec880db71 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -21,6 +21,5 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - playerVehicleChanged = "ace_playerVehicleChanged"; medical_onUnconscious = "ace_unconscious"; }; diff --git a/addons/respawn/config.cpp b/addons/respawn/config.cpp index 7133a361d7f..3a887b48b2c 100644 --- a/addons/respawn/config.cpp +++ b/addons/respawn/config.cpp @@ -20,8 +20,6 @@ class CfgPatches { #include "ACE_Settings.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; - playerChanged = "ace_playerChanged"; rallypointMoved = "ace_rallypointMoved"; killedByFriendly = "ace_killedByFriendly"; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 1303b09ad0f..55e88aef6c8 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -19,9 +19,5 @@ class CfgPatches { class ACE_newEvents { medical_onUnconscious = "ace_unconscious"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerInventoryChanged = "ace_playerInventoryChanged"; - playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; - enableSimulationGlobal = "ace_enableSimulationGlobal"; }; diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index ca81929a78b..0cbe0c50123 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -27,7 +27,7 @@ _sandBag = createVehicle ["ACE_SandbagObject_NoGeo", [0, 0, 0], [], 0, "NONE"]; GVAR(sandBag) = _sandBag; // prevent collisions with sandbag -["ace_enableSimulationGlobal", [_sandBag, false]] call CBA_fnc_serverEvent; +[QEGVAR(common,enableSimulationGlobal), [_sandBag, false]] call CBA_fnc_serverEvent; GVAR(deployDirection) = 0; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 07b820f1769..8a2e7202830 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -24,8 +24,6 @@ class CfgPatches { #include "RscTitles.hpp" class ACE_newEvents { - cameraViewChanged = "ace_cameraViewChanged"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; - playerInventoryChanged = "ace_playerInventoryChanged"; }; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index d48a8f9fb9c..88db8f5262b 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -19,7 +19,6 @@ class CfgPatches { #include "CfgVehicles.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; SetHandcuffed = QEGVAR(captives,setHandcuffed); medical_onUnconscious = "ace_unconscious"; -}; \ No newline at end of file +}; diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index 46be014d6a8..b2e34052492 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -19,6 +19,4 @@ class CfgPatches { class ACE_newEvents { interactMenuOpened = "ace_interactMenuOpened"; medical_onUnconscious = "ace_unconscious"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerChanged = "ace_playerChanged"; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index 0e689502a6f..b1ca0fc0bb5 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -19,9 +19,5 @@ class CfgPatches { class ACE_newEvents { medical_onUnconscious = "ace_unconscious"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerInventoryChanged = "ace_playerInventoryChanged"; - playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; - enableSimulationGlobal = "ace_enableSimulationGlobal"; }; diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index 9a51e43b67a..f7a643d882e 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -36,7 +36,7 @@ _trench = createVehicle [_noGeoModel, [0, 0, 0], [], 0, "NONE"]; GVAR(trench) = _trench; // prevent collisions with trench -["ace_enableSimulationGlobal", [_trench, false]] call CBA_fnc_serverEvent; +[QEGVAR(common,enableSimulationGlobal), [_trench, false]] call CBA_fnc_serverEvent; GVAR(digDirection) = 0; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 6c18a663bc1..7e4e556070e 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -19,7 +19,5 @@ class CfgPatches { class ACE_newEvents { medical_onUnconscious = "ace_unconscious"; - playerVehicleChanged = "ace_playerVehicleChanged"; - playerChanged = "ace_playerChanged"; interactMenuOpened = "ace_interactMenuOpened"; }; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index 339bc52e5cd..0b680ca1366 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -20,7 +20,3 @@ class CfgPatches { #include "RscChat.hpp" #include "RscVignette.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; diff --git a/addons/vehiclelock/config.cpp b/addons/vehiclelock/config.cpp index 1180cd8aab3..cb67bca1c3e 100644 --- a/addons/vehiclelock/config.cpp +++ b/addons/vehiclelock/config.cpp @@ -21,7 +21,6 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; VehicleLock_SetVehicleLock = QGVAR(setVehicleLock); VehicleLock_SetupCustomKey = QGVAR(setupCustomKey); }; diff --git a/addons/viewdistance/config.cpp b/addons/viewdistance/config.cpp index 92dacefcf1c..bf3dd29d24d 100644 --- a/addons/viewdistance/config.cpp +++ b/addons/viewdistance/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "ACE_Settings.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 94c51a118ce..2bc7e843f82 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -18,5 +18,4 @@ class CfgPatches { class ACE_newEvents { firedPlayer = "ace_firedPlayer"; - displayTextPicture = "ace_displayTextPicture"; }; diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 5a6697cabc0..288531df2c6 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -26,4 +26,4 @@ private _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNa private _text = [format ["%1 x%2", _name, _numberofGrenades], _color] call EFUNC(common,stringToColoredText); private _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); -["ace_displayTextPicture", [_text, _picture]] call CBA_fnc_localEvent; +[_text, _picture] call EFUNC(common,displayTextPicture); diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index b0eff243cb5..2444064f41f 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -18,7 +18,3 @@ class CfgPatches { #include "RscTitles.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; -}; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index f400f2eb120..f49a9e11bfa 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -26,7 +26,6 @@ class CfgAddons { #include "ACE_Settings.hpp" class ACE_newEvents { - SettingsInitialized = "ace_settingsInitialized"; firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; firedPlayerVehicle = "ace_firedPlayerVehicle"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; From b64b7e431e4f499e3bec929132967deb37d26675 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Fri, 3 Jun 2016 23:11:40 -0300 Subject: [PATCH 243/268] Translated remaining strings --- addons/explosives/stringtable.xml | 1 + addons/fastroping/stringtable.xml | 1 + addons/gforces/stringtable.xml | 2 ++ addons/overheating/stringtable.xml | 9 ++++++ addons/repair/stringtable.xml | 1 + addons/trenches/stringtable.xml | 3 ++ addons/ui/stringtable.xml | 44 +++++++++++++++++++++++++++++- 7 files changed, 60 insertions(+), 1 deletion(-) diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 206f92e9777..65d19364dea 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -46,6 +46,7 @@ Detonuj wszystkie Detona Tutti Tout mettre à feu + Detonar Tudo Explosive code: %1 diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 7f08df7ed84..6d64fc24f54 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -79,6 +79,7 @@ Equipa el helicoptero seleccionado con un Sistema de Inserción Extracción Fast Rope Equipaggia l'elicottero selezionato con il Fast Rope Insertion Extraction System Vybavit vybraný vrtulník systémem Fast Rope Insertion Extraction (FRIES) + Equipa um helicóptero selecionado com um sistema de Fast Rope Insertion Extraction System LET UNITS FAST ROPE diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml index f5d5f1b12d2..921515f5603 100644 --- a/addons/gforces/stringtable.xml +++ b/addons/gforces/stringtable.xml @@ -6,12 +6,14 @@ Gforces Effekte Efectos Gforces G Force efekty + Efeitos de ForçaG Only Aircraft Nur Luftfahrzeug Sólo Aeronave Pouze letadla + Somente Aeronave \ No newline at end of file diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index cafcf5f1050..07fdedd681c 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -264,9 +264,11 @@ Check spare barrels temperatures + Verifica temperatura de canos reservas Checking spare barrels temperatures... + Verificando temperatura de canos reservas Temperature @@ -282,26 +284,33 @@ Cool Spare Barrel/s + Cano/s reserva/s frio/s Warm Spare Barrel/s + Cano/s reserva/s morno/s Hot Spare Barrel/s + Cano/s reserva/s quente/s Very Hot Spare Barrel/s + Cano/s reserva/s muito quente/s Extremely Hot Spare Barrel/s + Cano/s reserva/s extremamente quente/s Overheating Enabled Überhitzen Aktiviert Activada Sobrecalentamiento + Superaquecimento ativado Master enable for the overheating/jamming module + Chave mestra para o módulo de superaquecimento/emperramento \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index f92a370b839..48a647290fb 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1322,6 +1322,7 @@ Motor muss ausgeschaltet zu reparieren sein El motor necesita desactivado para la reparación Pro opravu je zapotřebí vypnout motor + O motor deve estar desligado para manutenção \ No newline at end of file diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index e9a64ae12b8..77b845c2db6 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -124,14 +124,17 @@ Continue Digging Trench Wzów kopanie wnęki + Continuar cavando trincheira Remove Trench Usuń wnękę + Remover trincheira Removing Trench Usuwanie wnęki + Removendo tricnheira \ No newline at end of file diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 61dcc18ee78..a3d5cbbd251 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -4,157 +4,199 @@ User Interface Uživatelské rozhraní + Interface do usuário User Interface Uživatelské rozhraní + Interface do usuário This module allows toggling visible user interface parts. + Este módulo permite ligar ou desligar partes da interface do usuário Allow Selective UI Povolit selektivní UI + Permitir IU Selecionável Allow client to modify their UI. Povolit klientovi měnit jeho UI + Permite o cliente modificar sua IU. Soldier/Vehicle/Weapon Information Informace o Vojákovi/Vozidlu/Zbrani + Informação de Soldado/Veículo/Armamento Vehicle Radar Radar vozidla + Radar de Veículo Vehicle Compass Kompas vozidla + Bússola de Veículo Command Menu Menu rozkazů + Menu de Comando Group Bar Panel skupiny + Barra de Grupo Weapon Name Název zbraně + Nome do Armamento Weapon Name Background Název zbraně v pozadí + Fundo do Nome do Armamento Firing Mode Režim palby + Modo de Disparo Ammo Type Typ munice + Tipo de Munição Ammo Count Počet munice + Quantidade de Munição Magazine Count Počet zásobníků + Quantidade de Carregadores Throwable Type Typ granátů apod. + Tipo de Arremessável Throwable Count Počet granátů apod. + Quantidade de Arremessável Zeroing Náměr + Zerar a mira Weapon Lower Info Background + Informações na parte de baixo do fundo do Armamento Stance Postoj + Postura Stamina Bar Panel výdrže + Barra de Energia Gunner Weapon Name + Nome da arma do fuzileiro Gunner Weapon Name Background + Fundo do nome da arma do fuzileiro Gunner Firing Mode + Modo de disparo do fuzileiro Gunner Ammo Type + Tipo de Munição do fuzileiro Gunner Ammo Count + Quantidade de Munição do fuzileiro Gunner Magazine Count + Quantidade de Carregadores do fuzileiro Gunner Launchable Type + Tipo de Arremessável do fuzileiro Gunner Launchable Count + Quantidade de Arremessável do fuzileiro Gunner Zeroing + Zerar a mira do fuzileiro Gunner Weapon Lower Info Background + Informações na parte de baixo do fundo do Armamento do fuzileiro Vehicle Name Název vozidla + Nome do Veículo Vehicle Name Background Název vozidla v pozadí + Fundo do Nome do Veículo Vehicle Fuel Bar Ukazatel paliva + Barra de Combustível do Veículo Vehicle Speed Rychlost vozidla + Velocidade do Veículo Vehicle Altitude Výška vozidla + Altitude do Veículo Vehicle Damage Poškození vozidla + Dano do Veículo Vehicle Info Background Info o vozidle v pozadí + Fundo das informações do veículo Requires Soldier/Vehicle/Weapon Information. Vyžaduje informace o Vojákovi/Vozidlu/Zbrani + Requer informações de Soldado/Veículo/Armamento Modifying User Interface is disabled. Změna uživatelského rozhraní je zakázána. + A modificação da interface do usuário está desabilitada. Cannot modify a forced User Interface element. + Não é possível modificar um elemento forçado da interface do usuário. - + \ No newline at end of file From 1b6bbff139c101f947b8499efccf6392110364af Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 4 Jun 2016 09:46:50 +0100 Subject: [PATCH 244/268] Revert event names for synced events framework Keeping these names as short as possible for network traffic purposes. --- addons/common/XEH_postInit.sqf | 8 ++++---- addons/common/config.cpp | 3 --- .../functions/fnc__handleRequestAllSyncedEvents.sqf | 2 +- addons/common/functions/fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_requestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 1408357086c..4b12a18bec2 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -145,14 +145,14 @@ if (isServer) then { if (!isServer) then { ["ace_playerJIP", { ACE_LOGINFO("JIP event synchronization initialized"); - [QGVAR(SEH_all), [player]] call CBA_fnc_serverEvent; + ["SEH_all", [player]] call CBA_fnc_serverEvent; }] call CBA_fnc_addEventHandler; } else { - [QGVAR(SEH_all), FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; + ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -[QGVAR(SEH), FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; -[QGVAR(SEH_s), FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; +["SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +["SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index a4d7789e1a6..b92cd59fcbe 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -33,9 +33,6 @@ class ACE_newEvents { playerChanged = "ace_playerChanged"; SettingsInitialized = "ace_settingsInitialized"; - SEH_s = QGVAR(SEH_s); - SEH = QGVAR(SEH); - SEH_all = QGVAR(SEH_all); setStatusEffect = QGVAR(setStatusEffect); HeadbugFixUsed = QGVAR(headbugFixUsed); InitSettingsFromModules = QGVAR(initSettingsFromModules); diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 4a599f2d7e5..ce57658e6f2 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - [QGVAR(SEH_s), [_x, _eventLog], _client] call CBA_fnc_targetEvent; + ["SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 40d60aedef2..35aac9d52e8 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - [QGVAR(SEH_s), [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; + ["SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index 08423ad40dc..0749b374ca2 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -[QGVAR(SEH_s), [_eventName, ACE_player]] call CBA_fnc_serverEvent; +["SEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index c36c519f6db..3964d23afc0 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -[QGVAR(SEH), _eventData] call CBA_fnc_globalEvent; +["SEH", _eventData] call CBA_fnc_globalEvent; From 90ebf9638b6b53003fa32b8f3c2c76e0af96f72b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 4 Jun 2016 11:12:56 +0100 Subject: [PATCH 245/268] Update common event names to meet new standard --- addons/advanced_ballistics/config.cpp | 5 -- addons/captives/config.cpp | 1 - .../functions/fnc_handleOnUnconscious.sqf | 2 +- addons/cargo/XEH_postInit.sqf | 4 +- addons/cargo/config.cpp | 1 - addons/cargo/functions/fnc_startLoadIn.sqf | 2 +- addons/cargo/functions/fnc_startUnload.sqf | 2 +- addons/cargo/functions/fnc_unloadItem.sqf | 2 +- addons/common/RscInfoType.hpp | 2 +- addons/common/XEH_postInit.sqf | 40 ++++++------- addons/common/config.cpp | 59 ++++++++++--------- addons/common/functions/fnc_claim.sqf | 4 +- addons/common/functions/fnc_doAnimation.sqf | 14 ++--- addons/common/functions/fnc_muteUnit.sqf | 2 +- .../functions/fnc_muteUnitHandleInitPost.sqf | 2 +- .../functions/fnc_muteUnitHandleRespawn.sqf | 2 +- .../functions/fnc_unloadPersonLocal.sqf | 2 +- addons/common/functions/fnc_unmuteUnit.sqf | 2 +- addons/disposable/config.cpp | 5 -- addons/dragging/config.cpp | 8 --- addons/dragging/functions/fnc_carryObject.sqf | 2 +- addons/dragging/functions/fnc_dragObject.sqf | 2 +- addons/dragging/functions/fnc_dropObject.sqf | 8 +-- .../functions/fnc_dropObject_carry.sqf | 8 +-- .../functions/fnc_handleScrollWheel.sqf | 2 +- addons/explosives/config.cpp | 1 - addons/fcs/config.cpp | 6 -- addons/frag/config.cpp | 8 --- addons/goggles/config.cpp | 1 - addons/grenades/config.cpp | 3 - addons/huntir/config.cpp | 5 -- addons/interact_menu/config.cpp | 1 - addons/interaction/config.cpp | 4 -- .../functions/fnc_doBecomeLeader.sqf | 2 +- addons/interaction/functions/fnc_joinTeam.sqf | 2 +- .../functions/fnc_passMagazine.sqf | 4 +- addons/interaction/functions/fnc_push.sqf | 2 +- addons/logistics_uavbattery/config.cpp | 4 -- .../functions/fnc_refuelUAV.sqf | 2 +- .../fnc_actionCheckBloodPressureLocal.sqf | 2 +- .../functions/fnc_actionCheckPulseLocal.sqf | 2 +- .../functions/fnc_actionCheckResponse.sqf | 2 +- .../medical/functions/fnc_actionDiagnose.sqf | 2 +- .../medical/functions/fnc_actionLoadUnit.sqf | 2 +- .../functions/fnc_actionRemoveTourniquet.sqf | 2 +- .../fnc_displayPatientInformation.sqf | 2 +- addons/medical/functions/fnc_treatment.sqf | 2 +- .../functions/fnc_treatmentTourniquet.sqf | 4 +- .../medical_menu/functions/fnc_onMenuOpen.sqf | 2 +- addons/mk6mortar/config.cpp | 1 - addons/nightvision/config.cpp | 5 -- addons/optics/config.cpp | 5 -- addons/overheating/config.cpp | 3 - .../fnc_sendSpareBarrelsTemperaturesHint.sqf | 2 +- addons/overpressure/config.cpp | 2 - addons/parachute/config.cpp | 4 -- addons/rearm/config.cpp | 4 -- .../rearm/functions/fnc_rearmSuccessLocal.sqf | 8 +-- addons/recoil/config.cpp | 4 -- addons/refuel/config.cpp | 7 --- addons/refuel/functions/fnc_checkFuel.sqf | 4 +- .../functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_refuel.sqf | 2 +- addons/repair/XEH_postInit.sqf | 2 - addons/repair/config.cpp | 4 -- addons/repair/functions/fnc_doRemoveTrack.sqf | 2 +- addons/repair/functions/fnc_doRemoveWheel.sqf | 2 +- addons/repair/functions/fnc_repair.sqf | 6 +- addons/repair/functions/fnc_spawnObject.sqf | 4 +- addons/repair/functions/fnc_useItem.sqf | 2 +- addons/sandbag/config.cpp | 1 - addons/scopes/config.cpp | 9 --- addons/sitting/config.cpp | 1 - .../functions/fnc_respawnTemplate.sqf | 5 -- addons/switchunits/config.cpp | 4 -- addons/tacticalladder/config.cpp | 1 - addons/trenches/config.cpp | 1 - addons/tripod/config.cpp | 1 - addons/weaponselect/config.cpp | 4 -- addons/winddeflection/config.cpp | 7 --- 80 files changed, 117 insertions(+), 242 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 961a4a1b07d..692a9391a0e 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -21,8 +21,3 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_advanced_ballistics"}; }; - -class ACE_newEvents { - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/captives/config.cpp b/addons/captives/config.cpp index c2faedb7c0a..883fbebe329 100644 --- a/addons/captives/config.cpp +++ b/addons/captives/config.cpp @@ -21,7 +21,6 @@ class CfgPatches { #include "CfgEden.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; SetSurrendered = QGVAR(setSurrendered); SetHandcuffed = QGVAR(setHandcuffed); MoveOutCaptive = QGVAR(moveOutCaptive); diff --git a/addons/captives/functions/fnc_handleOnUnconscious.sqf b/addons/captives/functions/fnc_handleOnUnconscious.sqf index ca6362d3daa..456161d9de2 100644 --- a/addons/captives/functions/fnc_handleOnUnconscious.sqf +++ b/addons/captives/functions/fnc_handleOnUnconscious.sqf @@ -1,6 +1,6 @@ /* * Author: commy2, PabstMirror - * Handles the "medical_onUnconscious" event + * Handles the "ace_unconscious" event * * Arguments: * 0: Unit diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 2fe1e2c5167..eeee3870187 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -13,7 +13,7 @@ private _itemName = getText (configFile >> "CfgVehicles" >> typeOf _item >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["ace_displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; + [[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured); if (_loaded) then { // Invoke listenable event @@ -34,7 +34,7 @@ private _itemName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); private _vehicleName = getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName"); - ["ace_displayTextStructured", [[_hint, _itemName, _vehicleName], 3.0]] call CBA_fnc_localEvent; + [[_hint, _itemName, _vehicleName], 3.0] call EFUNC(common,displayTextStructured); if (_unloaded) then { // Invoke listenable event diff --git a/addons/cargo/config.cpp b/addons/cargo/config.cpp index 450b2b5e25e..1980fe207d0 100644 --- a/addons/cargo/config.cpp +++ b/addons/cargo/config.cpp @@ -21,7 +21,6 @@ class CfgPatches { class ACE_newEvents { LoadCargo = "ace_loadCargo"; cargoUnloaded = "ace_cargoUnloaded"; - displayTextStructured = "ace_displayTextStructured"; cargoLoaded = "ace_cargoLoaded"; AddCargoByClass = "ace_addCargoByClass"; ServerUnloadCargo = QGVAR(serverUnload); diff --git a/addons/cargo/functions/fnc_startLoadIn.sqf b/addons/cargo/functions/fnc_startLoadIn.sqf index ceea80da9a9..86ab85b7015 100644 --- a/addons/cargo/functions/fnc_startLoadIn.sqf +++ b/addons/cargo/functions/fnc_startLoadIn.sqf @@ -48,7 +48,7 @@ if ([_object, _vehicle] call FUNC(canLoadItemIn)) then { } else { private _displayName = getText (configFile >> "CfgVehicles" >> typeOf _object >> "displayName"); - ["ace_displayTextStructured", [[LSTRING(LoadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; + [[LSTRING(LoadingFailed), _displayName], 3.0] call EFUNC(common,displayTextStructured); }; _return diff --git a/addons/cargo/functions/fnc_startUnload.sqf b/addons/cargo/functions/fnc_startUnload.sqf index 3179855b609..da493e5f960 100644 --- a/addons/cargo/functions/fnc_startUnload.sqf +++ b/addons/cargo/functions/fnc_startUnload.sqf @@ -47,5 +47,5 @@ if ([_item, GVAR(interactionVehicle), ACE_player] call FUNC(canUnloadItem)) then private _itemClass = if (_item isEqualType "") then {_item} else {typeOf _item}; private _displayName = getText (configFile >> "CfgVehicles" >> _itemClass >> "displayName"); - ["ace_displayTextStructured", [[LSTRING(UnloadingFailed), _displayName], 3.0]] call CBA_fnc_localEvent; + [[LSTRING(UnloadingFailed), _displayName], 3.0] call EFUNC(common,displayTextStructured); }; diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 204a8479cac..35c90756140 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -29,7 +29,7 @@ if ((count _emptyPosAGL) != 3) exitWith { TRACE_4("Could not find unload pos",_vehicle,getPosASL _vehicle,isTouchingGround _vehicle,speed _vehicle); if ((!isNull _unloader) && {_unloader == ACE_player}) then { //display text saying there are no safe places to exit the vehicle - ["ace_displayTextStructured", [localize ELSTRING(common,NoRoomToUnload)]] call CBA_fnc_localEvent; + [localize ELSTRING(common,NoRoomToUnload)] call EFUNC(common,displayTextStructured); }; false }; diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index b62839f9ca8..97d4b325e91 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -1,7 +1,7 @@ class RscInGameUI { class RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_2('ace_infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call CBA_fnc_localEvent;); }; class RscUnitInfoNoHUD { diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 4b12a18bec2..1029d9b2a0f 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -75,7 +75,7 @@ if (isServer) then { }; // Listens for global "SettingChanged" events, to update the force status locally -["SettingChanged", { +["ace_settingChanged", { params ["_name", "_value", "_force"]; if (_force) then { @@ -94,33 +94,33 @@ if (isServer) then { ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation); }] call CBA_fnc_addEventHandler; -["ace_fixCollision", FUNC(fixCollision)] call CBA_fnc_addEventHandler; -["ace_fixFloating", FUNC(fixFloating)] call CBA_fnc_addEventHandler; -["ace_fixPosition", FUNC(fixPosition)] call CBA_fnc_addEventHandler; +[QGVAR(fixCollision), FUNC(fixCollision)] call CBA_fnc_addEventHandler; +[QGVAR(fixFloating), FUNC(fixFloating)] call CBA_fnc_addEventHandler; +[QGVAR(fixPosition), FUNC(fixPosition)] call CBA_fnc_addEventHandler; ["ace_loadPersonEvent", FUNC(loadPersonLocal)] call CBA_fnc_addEventHandler; ["ace_unloadPersonEvent", FUNC(unloadPersonLocal)] call CBA_fnc_addEventHandler; -["lockVehicle", { +[QGVAR(lockVehicle), { _this setVariable [QGVAR(lockStatus), locked _this]; _this lock 2; }] call CBA_fnc_addEventHandler; -["unlockVehicle", { +[QGVAR(unlockVehicle), { _this lock (_this getVariable [QGVAR(lockStatus), locked _this]); }] call CBA_fnc_addEventHandler; -["ace_setDir", {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_setFuel", {(_this select 0) setFuel (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_engineOn", {(_this select 0) engineOn (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_setSpeaker", {(_this select 0) setSpeaker (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_selectLeader", {(_this select 0) selectLeader (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_setVelocity", {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_playMove", {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_playMoveNow", {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_switchMove", {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; -["ace_setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setDir), {(_this select 0) setDir (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setFuel), {(_this select 0) setFuel (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(engineOn), {(_this select 0) engineOn (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setSpeaker), {(_this select 0) setSpeaker (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(selectLeader), {(_this select 0) selectLeader (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setVelocity), {(_this select 0) setVelocity (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(playMove), {(_this select 0) playMove (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(playMoveNow), {(_this select 0) playMoveNow (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(switchMove), {(_this select 0) switchMove (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setVectorDirAndUp), {(_this select 0) setVectorDirAndUp (_this select 1)}] call CBA_fnc_addEventHandler; +[QGVAR(setVanillaHitPointDamage), {(_this select 0) setHitPointDamage (_this select 1)}] call CBA_fnc_addEventHandler; // Request framework [QGVAR(requestCallback), FUNC(requestCallback)] call CBA_fnc_addEventHandler; @@ -426,10 +426,10 @@ GVAR(OldIsCamera) = false; // Eventhandlers for player controlled machines ////////////////////////////////////////////////// -["ace_displayTextStructured", {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler; -["ace_displayTextPicture", {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler; +[QGVAR(displayTextStructured), {_this call FUNC(displayTextStructured)}] call CBA_fnc_addEventHandler; +[QGVAR(displayTextPicture), {_this call FUNC(displayTextPicture)}] call CBA_fnc_addEventHandler; -["medical_onUnconscious", { +["ace_unconscious", { params ["_unit", "_isUnconscious"]; if (local _unit && {!_isUnconscious}) then { diff --git a/addons/common/config.cpp b/addons/common/config.cpp index b92cd59fcbe..f1bb9308d69 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -15,12 +15,14 @@ class CfgPatches { // This class will be deprecated in version 3.8.0 class ACE_newEvents { + // Status effect events forceWalk = QGVAR(forceWalk); blockSprint = QGVAR(blockSprint); setCaptive = QGVAR(setCaptive); blockDamage = QGVAR(blockDamage); blockEngine = QGVAR(blockEngine); + // Public listenable events PlayerJip = "ace_playerJIP"; activeCameraChanged = "ace_activeCameraChanged"; visibleMapChanged = "ace_visibleMapChanged"; @@ -32,32 +34,6 @@ class ACE_newEvents { playerVehicleChanged = "ace_playerVehicleChanged"; playerChanged = "ace_playerChanged"; SettingsInitialized = "ace_settingsInitialized"; - - setStatusEffect = QGVAR(setStatusEffect); - HeadbugFixUsed = QGVAR(headbugFixUsed); - InitSettingsFromModules = QGVAR(initSettingsFromModules); - enableSimulationGlobal = QGVAR(enableSimulationGlobal); - hideObjectGlobal = QGVAR(hideObjectGlobal); - - useItem = "ace_useItem"; - displayTextPicture = "ace_displayTextPicture"; - displayTextStructured = "ace_displayTextStructured"; - setVanillaHitPointDamage = "ace_setVanillaHitPointDamage"; - setVectorDirAndUp = "ace_setVectorDirAndUp"; - switchMove = "ace_switchMove"; - playMoveNow = "ace_playMoveNow"; - playMove = "ace_playMove"; - setVelocity = "ace_setVelocity"; - selectLeader = "ace_selectLeader"; - setSpeaker = "ace_setSpeaker"; - engineOn = "ace_engineOn"; - setFuel = "ace_setFuel"; - setDir = "ace_setDir"; - unloadPersonEvent = "ace_unloadPersonEvent"; - loadPersonEvent = "ace_loadPersonEvent"; - fixPosition = "ace_fixPosition"; - fixFloating = "ace_fixFloating"; - fixCollision = "ace_fixCollision"; SettingChanged = "ace_settingChanged"; firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; @@ -65,8 +41,35 @@ class ACE_newEvents { firedNonPlayer = "ace_firedNonPlayer"; firedPlayerNonLocal = "ace_firedPlayerNonLocal"; firedPlayer = "ace_firedPlayer"; - unlockVehicle = "ace_unlockVehicle"; - lockVehicle = "ace_lockVehicle"; + unloadPersonEvent = "ace_unloadPersonEvent"; + loadPersonEvent = "ace_loadPersonEvent"; + useItem = "ace_useItem"; + infoDisplayChanged = "ace_infoDisplayChanged"; + + // Internal callable events + setStatusEffect = QGVAR(setStatusEffect); + HeadbugFixUsed = QGVAR(headbugFixUsed); + InitSettingsFromModules = QGVAR(initSettingsFromModules); + enableSimulationGlobal = QGVAR(enableSimulationGlobal); + hideObjectGlobal = QGVAR(hideObjectGlobal); + fixPosition = QGVAR(fixPosition); + fixFloating = QGVAR(fixFloating); + fixCollision = QGVAR(fixCollision); + unlockVehicle = QGVAR(unlockVehicle); + lockVehicle = QGVAR(lockVehicle); + displayTextPicture = QGVAR(displayTextPicture); + displayTextStructured = QGVAR(displayTextStructured); + setVanillaHitPointDamage = QGVAR(setVanillaHitPointDamage); + setVectorDirAndUp = QGVAR(setVectorDirAndUp); + switchMove = QGVAR(switchMove); + playMoveNow = QGVAR(playMoveNow); + playMove = QGVAR(playMove); + setVelocity = QGVAR(setVelocity); + selectLeader = QGVAR(selectLeader); + setSpeaker = QGVAR(setSpeaker); + engineOn = QGVAR(engineOn); + setFuel = QGVAR(setFuel); + setDir = QGVAR(setDir); }; #include "CfgEventHandlers.hpp" diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index 2699e423bd7..214de6052ba 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -28,9 +28,9 @@ _target setVariable [QGVAR(owner), _unit, true]; // lock target object if (_lockTarget) then { if (!isNull _unit) then { - ["ace_lockVehicle", _target, _target] call CBA_fnc_targetEvent; + [QGVAR(lockVehicle), _target, _target] call CBA_fnc_targetEvent; } else { - ["ace_unlockVehicle", _target, _target] call CBA_fnc_targetEvent; + [QGVAR(unlockVehicle), _target, _target] call CBA_fnc_targetEvent; }; }; diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index 9460debb78c..720518d0033 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -41,34 +41,34 @@ TRACE_2("",local _unit,vehicle _unit); switch (_priority) do { case 0: { if (_unit == vehicle _unit) then { - ["ace_playMove", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + [QGVAR(playMove), [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["ace_playMove", [_unit, _animation]] call CBA_fnc_globalEvent; + [QGVAR(playMove), [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 1: { if (_unit == vehicle _unit) then { - ["ace_playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + [QGVAR(playMoveNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["ace_playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; + [QGVAR(playMoveNow), [_unit, _animation]] call CBA_fnc_globalEvent; }; }; case 2: { // try playMoveNow first if (_unit == vehicle _unit) then { - ["ace_playMoveNow", [_unit, _animation], _unit] call CBA_fnc_targetEvent; + [QGVAR(playMoveNow), [_unit, _animation], _unit] call CBA_fnc_targetEvent; } else { // Execute on all machines. PlayMove and PlayMoveNow are bugged: They have no global effects when executed on remote machines inside vehicles. - ["ace_playMoveNow", [_unit, _animation]] call CBA_fnc_globalEvent; + [QGVAR(playMoveNow), [_unit, _animation]] call CBA_fnc_globalEvent; }; // if animation doesn't respond, do switchMove if (animationState _unit != _animation) then { TRACE_1("did not respond to playMoveNow",animationState _unit); // Execute on all machines. SwitchMove has local effects. - ["ace_switchMove", [_unit, _animation]] call CBA_fnc_globalEvent; + [QGVAR(switchMove), [_unit, _animation]] call CBA_fnc_globalEvent; }; }; default {}; diff --git a/addons/common/functions/fnc_muteUnit.sqf b/addons/common/functions/fnc_muteUnit.sqf index d34b6055956..11c18aedd7e 100644 --- a/addons/common/functions/fnc_muteUnit.sqf +++ b/addons/common/functions/fnc_muteUnit.sqf @@ -29,6 +29,6 @@ private _speaker = speaker _unit; if (_speaker == "ACE_NoVoice") exitWith {}; -["ace_setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_globalEvent; +[QGVAR(setSpeaker), [_unit, "ACE_NoVoice"]] call CBA_fnc_globalEvent; _unit setVariable ["ACE_OriginalSpeaker", _speaker, true]; diff --git a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf index f71e3e83623..53e8d4d5b73 100644 --- a/addons/common/functions/fnc_muteUnitHandleInitPost.sqf +++ b/addons/common/functions/fnc_muteUnitHandleInitPost.sqf @@ -16,5 +16,5 @@ params ["_unit"]; // setSpeaker gets overwritten after init on remote units; if unit is muted, setSpeaker again if (count (_unit getVariable [QGVAR(muteUnitReasons), []]) > 0) then { - ["ace_setSpeaker", [_unit, "ACE_NoVoice"]] call CBA_fnc_localEvent; + [QGVAR(setSpeaker), [_unit, "ACE_NoVoice"]] call CBA_fnc_localEvent; }; diff --git a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf index cfb64e8c690..ceb0614116e 100644 --- a/addons/common/functions/fnc_muteUnitHandleRespawn.sqf +++ b/addons/common/functions/fnc_muteUnitHandleRespawn.sqf @@ -18,4 +18,4 @@ params ["_unit"]; _unit setVariable [QGVAR(muteUnitReasons), _unit getVariable [QGVAR(muteUnitReasons), []], true]; // fix mp issues with respawning and the speaker -["ace_setSpeaker", [_unit, speaker _unit]] call CBA_fnc_globalEvent; +[QGVAR(setSpeaker), [_unit, speaker _unit]] call CBA_fnc_globalEvent; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index bf467332eb7..517e0aa2ad9 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -27,7 +27,7 @@ if (count _emptyPos != 3) exitwith { ACE_LOGWARNING_4("Could not find unload pos %1-ASL: %2 isTouchingGround: %3 Speed: %4",_vehicle, getPosASL _vehicle, isTouchingGround _vehicle, speed _vehicle); if ((!isNull _unloader) && {[_unloader] call FUNC(isPlayer)}) then { //display text saying there are no safe places to exit the vehicle - ["ace_displayTextStructured", [localize LSTRING(NoRoomToUnload)], [_unloader]] call CBA_fnc_targetEvent; + [QGVAR(displayTextStructured), [localize LSTRING(NoRoomToUnload)], [_unloader]] call CBA_fnc_targetEvent; }; false }; diff --git a/addons/common/functions/fnc_unmuteUnit.sqf b/addons/common/functions/fnc_unmuteUnit.sqf index 0474975a16e..b6d673cfd50 100644 --- a/addons/common/functions/fnc_unmuteUnit.sqf +++ b/addons/common/functions/fnc_unmuteUnit.sqf @@ -32,4 +32,4 @@ private _speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; if (_speaker == "") exitWith {}; -["ace_setSpeaker", [_unit, _speaker], _unit] call CBA_fnc_targetEvent; +[QGVAR(setSpeaker), [_unit, _speaker], _unit] call CBA_fnc_targetEvent; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index 1f87c85c28f..e240206938f 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -17,8 +17,3 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - firedNonPlayer = "ace_firedNonPlayer"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/dragging/config.cpp b/addons/dragging/config.cpp index 48d72c51061..a3e87c5824a 100644 --- a/addons/dragging/config.cpp +++ b/addons/dragging/config.cpp @@ -16,11 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "CfgMovesBasic.hpp" - -class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; - setDir = "ace_setDir"; - fixFloating = "ace_fixFloating"; - fixPosition = "ace_fixPosition"; - fixCollision = "ace_fixCollision"; -}; diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf index f6a0b9ac460..9fb198e02c1 100644 --- a/addons/dragging/functions/fnc_carryObject.sqf +++ b/addons/dragging/functions/fnc_carryObject.sqf @@ -44,7 +44,7 @@ if (_target isKindOf "CAManBase") then { _target attachTo [_unit, _position]; }; -["ace_setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; +[QEGVAR(common,setDir), [_target, _direction], _target] call CBA_fnc_targetEvent; _unit setVariable [QGVAR(isCarrying), true, true]; _unit setVariable [QGVAR(carriedObject), _target, true]; diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf index 7a76684217f..4672aa89c46 100644 --- a/addons/dragging/functions/fnc_dragObject.sqf +++ b/addons/dragging/functions/fnc_dragObject.sqf @@ -33,7 +33,7 @@ _position = _position vectorAdd [0, 0, _offset]; // attach object TRACE_3("attaching",_position,_offset,_direction); _target attachTo [_unit, _position]; -["ace_setDir", [_target, _direction], _target] call CBA_fnc_targetEvent; +[QEGVAR(common,setDir), [_target, _direction], _target] call CBA_fnc_targetEvent; if (_target isKindOf "CAManBase") then { [_target, "AinjPpneMrunSnonWnonDb_still", 0, true] call EFUNC(common,doAnimation); diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index e32734ebb43..c70bf90c38c 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -30,8 +30,8 @@ if !(_unit getVariable ["ACE_isUnconscious", false]) then { }; // prevent collision damage -["ace_fixCollision", _unit] call CBA_fnc_localEvent; -["ace_fixCollision", _target, _target] call CBA_fnc_targetEvent; +[QEGVAR(common,fixCollision), _unit] call CBA_fnc_localEvent; +[QEGVAR(common,fixCollision), _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -62,8 +62,8 @@ _unit setVariable [QGVAR(draggedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["ace_fixPosition", _target, _target] call CBA_fnc_targetEvent; - ["ace_fixFloating", _target, _target] call CBA_fnc_targetEvent; + [QEGVAR(common,fixPosition), _target, _target] call CBA_fnc_targetEvent; + [QEGVAR(common,fixFloating), _target, _target] call CBA_fnc_targetEvent; }; if (_unit getVariable ["ACE_isUnconscious", false]) then { diff --git a/addons/dragging/functions/fnc_dropObject_carry.sqf b/addons/dragging/functions/fnc_dropObject_carry.sqf index 49cf4dbcad7..c3521bbed00 100644 --- a/addons/dragging/functions/fnc_dropObject_carry.sqf +++ b/addons/dragging/functions/fnc_dropObject_carry.sqf @@ -25,8 +25,8 @@ TRACE_2("params",_unit,_target); private _inBuilding = [_unit] call FUNC(isObjectOnObject); // prevent collision damage -["ace_fixCollision", _unit] call CBA_fnc_localEvent; -["ace_fixCollision", _target, _target] call CBA_fnc_targetEvent; +[QEGVAR(common,fixCollision), _unit] call CBA_fnc_localEvent; +[QEGVAR(common,fixCollision), _target, _target] call CBA_fnc_targetEvent; // release object detach _target; @@ -67,8 +67,8 @@ _unit setVariable [QGVAR(carriedObject), objNull, true]; [objNull, _target, true] call EFUNC(common,claim); if !(_target isKindOf "CAManBase") then { - ["ace_fixPosition", _target, _target] call CBA_fnc_targetEvent; - ["ace_fixFloating", _target, _target] call CBA_fnc_targetEvent; + [QEGVAR(common,fixPosition), _target, _target] call CBA_fnc_targetEvent; + [QEGVAR(common,fixFloating), _target, _target] call CBA_fnc_targetEvent; }; // recreate UAV crew diff --git a/addons/dragging/functions/fnc_handleScrollWheel.sqf b/addons/dragging/functions/fnc_handleScrollWheel.sqf index 505ad441bf3..e3a30ea9e04 100644 --- a/addons/dragging/functions/fnc_handleScrollWheel.sqf +++ b/addons/dragging/functions/fnc_handleScrollWheel.sqf @@ -42,6 +42,6 @@ _carriedItem attachTo [_unit]; //reset the carry direction private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0]; -["ace_setDir", [_carriedItem, _direction], _carriedItem] call CBA_fnc_targetEvent; +[QEGVAR(common,setDir), [_carriedItem, _direction], _carriedItem] call CBA_fnc_targetEvent; true diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 379cf1138a3..83033cbddc1 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -45,7 +45,6 @@ class CfgMineTriggers { }; class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; clientRequestsOrientations = QGVAR(clientRequestOrientations); serverSendsOrientations = QGVAR(serverSendOrientations); }; diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp index 5c75614d2e4..a38cee5d7db 100644 --- a/addons/fcs/config.cpp +++ b/addons/fcs/config.cpp @@ -26,9 +26,3 @@ class CfgPatches { class ACE_Extensions { extensions[] += {"ace_fcs"}; }; - -class ACE_newEvents { - infoDisplayChanged = "ace_infoDisplayChanged"; - firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; - firedPlayerVehicle = "ace_firedPlayerVehicle"; -}; \ No newline at end of file diff --git a/addons/frag/config.cpp b/addons/frag/config.cpp index 84fe7249b4f..5526e5c1bcb 100644 --- a/addons/frag/config.cpp +++ b/addons/frag/config.cpp @@ -15,11 +15,3 @@ class CfgPatches { #include "CfgEventhandlers.hpp" #include "CfgAmmo.hpp" #include "ACE_Settings.hpp" -class ACE_newEvents { - firedNonPlayerVehicle = "ace_firedNonPlayerVehicle"; - firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; - firedPlayerVehicle = "ace_firedPlayerVehicle"; - firedNonPlayer = "ace_firedNonPlayer"; - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index d3d1f6189f3..062300d4d59 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -271,7 +271,6 @@ class CfgCloudlets { }; class ACE_newEvents { - firedPlayer = "ace_firedPlayer"; GlassesChanged = "ace_glassesChanged"; GlassesCracked = "ace_glassesCracked"; }; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index fc9a232dcaa..0d5ab09d0bd 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -22,8 +22,5 @@ class CfgPatches { #include "Effects.hpp" class ACE_newEvents { - firedNonPlayer = "ace_firedNonPlayer"; - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; flashbangExplosion = "ace_flashbangExploded"; }; diff --git a/addons/huntir/config.cpp b/addons/huntir/config.cpp index 22db819425f..ce4b10bab11 100644 --- a/addons/huntir/config.cpp +++ b/addons/huntir/config.cpp @@ -21,8 +21,3 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "Dialog.hpp" #include "RscTitles.hpp" - -class ACE_newEvents { - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 3ad5316b38e..e8731df93c8 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -26,7 +26,6 @@ class ACE_Extensions { }; class ACE_newEvents { - SettingChanged = "ace_settingChanged"; interactMenuOpened = "ace_interactMenuOpened"; clearConditionCaches = QGVAR(clearConditionCaches); interactMenuClosed = "ace_interactMenuClosed"; diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index 6f8454d1a43..b9845700590 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -24,10 +24,6 @@ class ACE_newEvents { pardon = QGVAR(pardon); tapShoulder = QGVAR(tapShoulder); sendAway = QGVAR(sendAway); - setVelocity = "ace_setVelocity"; - displayTextStructured = "ace_displayTextStructured"; - CBA_teamColorChanged = "ace_CBA_teamColorChanged"; - selectLeader = "ace_selectLeader"; lampTurnOff = QGVAR(lampTurnOff); lampTurnOn = QGVAR(lampTurnOn); }; diff --git a/addons/interaction/functions/fnc_doBecomeLeader.sqf b/addons/interaction/functions/fnc_doBecomeLeader.sqf index a5a2ede5b28..8c8663b03bc 100644 --- a/addons/interaction/functions/fnc_doBecomeLeader.sqf +++ b/addons/interaction/functions/fnc_doBecomeLeader.sqf @@ -17,4 +17,4 @@ params ["_unit"]; -["ace_selectLeader", [group _unit, _unit], units group _unit] call CBA_fnc_targetEvent; +[QEGVAR(common,selectLeader), [group _unit, _unit], units group _unit] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 70a2ba2b350..dfbb2b90700 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -31,5 +31,5 @@ if (_unit == ACE_player) then { _message = format [localize LSTRING(JoinedTeam), _team]; }; - ["ace_displayTextStructured", _message] call CBA_fnc_localEvent; + [_message] call EFUNC(common,displayTextStructured); }; diff --git a/addons/interaction/functions/fnc_passMagazine.sqf b/addons/interaction/functions/fnc_passMagazine.sqf index 2ea062ae79e..5016215c396 100644 --- a/addons/interaction/functions/fnc_passMagazine.sqf +++ b/addons/interaction/functions/fnc_passMagazine.sqf @@ -6,7 +6,7 @@ * 0: Unit that passes the magazine * 1: Unit to pass the magazine to * 2: Weapon classname - * + * * Return Value: * None * @@ -51,4 +51,4 @@ _target addMagazine [_magToPassClassName, _magToPassAmmoCount]; _playerName = [_player] call EFUNC(common,getName); _magToPassDisplayName = getText (configFile >> "CfgMagazines" >> _magToPassClassName >> "displayName"); -["ace_displayTextStructured", [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target], [_target]] call CBA_fnc_targetEvent; \ No newline at end of file +[QEGVAR(common,displayTextStructured), [[LSTRING(PassMagazineHint), _playerName, _magToPassDisplayName], 1.5, _target], [_target]] call CBA_fnc_targetEvent; diff --git a/addons/interaction/functions/fnc_push.sqf b/addons/interaction/functions/fnc_push.sqf index b22ec366f20..97534e2c68d 100644 --- a/addons/interaction/functions/fnc_push.sqf +++ b/addons/interaction/functions/fnc_push.sqf @@ -22,4 +22,4 @@ private _newVelocity = vectorDir _unit; _newVelocity set [2, 0.25]; _newVelocity = _newVelocity vectorMultiply 2; -["ace_setVelocity", [_boat, _newVelocity], [_boat]] call CBA_fnc_targetEvent; +[QEGVAR(common,setVelocity), [_boat, _newVelocity], [_boat]] call CBA_fnc_targetEvent; diff --git a/addons/logistics_uavbattery/config.cpp b/addons/logistics_uavbattery/config.cpp index fcd5e0f979a..5197a899e3d 100644 --- a/addons/logistics_uavbattery/config.cpp +++ b/addons/logistics_uavbattery/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgSounds.hpp" - -class ACE_newEvents { - setFuel = "ace_setFuel"; -}; \ No newline at end of file diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf index d26ada52677..65c0932bb74 100644 --- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf +++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf @@ -24,7 +24,7 @@ _onFinish = { (_this select 0) params ["_caller", "_target"]; _caller removeItem "ACE_UAVBattery"; playSound3D [QUOTE(PATHTO_R(sounds\exchange_battery.ogg)), objNull, false, getPosASL _caller, 1, 1, 10]; - ["ace_setFuel", [_target, 1], [_target]] call CBA_fnc_targetEvent; //setFuel is local + [QEGVAR(common,setFuel), [_target, 1], [_target]] call CBA_fnc_targetEvent; //setFuel is local }; _onFailure = { diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 44c5a1fc0b4..23ab4bba829 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -57,7 +57,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = ""; }; -["ace_displayTextStructured", [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; +[QEGVAR(common,displayTextStructured), [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index 0e58344528e..ce052079b34 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -49,7 +49,7 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( _logOutPut = LSTRING(Check_Pulse_None); }; -["ace_displayTextStructured", [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; +[QEGVAR(common,displayTextStructured), [[_heartRateOutput, [_unit] call EFUNC(common,getName), round(_heartRate)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; if (_logOutPut != "") then { [_unit,"activity", LSTRING(Check_Pulse_Log),[[_caller] call EFUNC(common,getName),_logOutPut]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index c8a6128a084..c530e533c8a 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -19,7 +19,7 @@ params ["_caller", "_target"]; _output = [LSTRING(Check_Response_Unresponsive), LSTRING(Check_Response_Responsive)] select ([_target] call EFUNC(common,isAwake)); -["ace_displayTextStructured", [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; +[QEGVAR(common,displayTextStructured), [[_output, [_target] call EFUNC(common,getName)], 2, _caller], [_caller]] call CBA_fnc_targetEvent; [_target,"activity",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); [_target,"quick_view",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index fdba12cd219..65d43b5dd4c 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -43,4 +43,4 @@ if (alive _target) then { }; }; -["ace_displayTextStructured", [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; +[QEGVAR(common,displayTextStructured), [_genericMessages, 3.0, _caller], [_caller]] call CBA_fnc_targetEvent; diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 61d1ab32a65..35ebfefebcb 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -18,7 +18,7 @@ private "_vehicle"; params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitWith { - ["ace_displayTextStructured", [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; if ([_target] call FUNC(isBeingCarried)) then { [_caller, _target] call EFUNC(dragging,dropObject_carry); diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index e428e84d99c..386b386f73d 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -26,7 +26,7 @@ _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; // Check if there is a tourniquet on this bodypart if ((_tourniquets select _part) == 0) exitWith { _output = LSTRING(noTourniquetOnBodyPart); - ["ace_displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; // Removing the tourniquet diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index dc13e944ddb..9a79e1de536 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -42,7 +42,7 @@ if (_show) then { if (ACE_player distance _target > MAX_DISTANCE) exitwith { ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; [_idPFH] call CBA_fnc_removePerFrameHandler; - ["ace_displayTextStructured", [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player], [ACE_player]] call CBA_fnc_targetEvent; }; disableSerialization; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index bafc73174dc..b7336499356 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -239,7 +239,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["ace_displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index 6642bf7c80b..3c9cbb2206d 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -28,14 +28,14 @@ if (count _items == 0) exitWith {false}; _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part == 0 || _part == 1) exitWith { - // ["ace_displayTextStructured", ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; + // [QEGVAR(common,displayTextStructured), ["You cannot apply a CAT on this body part!"], [_caller]] call CBA_fnc_targetEvent; false; }; _tourniquets = _target getVariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; if ((_tourniquets select _part) > 0) exitWith { _output = "There is already a tourniquet on this body part!"; // TODO localization - ["ace_displayTextStructured", [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [_output, 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; false; }; diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 563c8554540..004fe9f49f2 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -81,7 +81,7 @@ GVAR(MenuPFHID) = [{ closeDialog 314412; //If we failed because of distance check, show UI message: if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then { - ["ace_displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call CBA_fnc_localEvent; + [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2] call EFUNC(common,displayTextStructured); }; }; diff --git a/addons/mk6mortar/config.cpp b/addons/mk6mortar/config.cpp index e13d26588bd..929f28b4d5d 100644 --- a/addons/mk6mortar/config.cpp +++ b/addons/mk6mortar/config.cpp @@ -35,6 +35,5 @@ class RscStructuredText; #include "RscRangeTable.hpp" class ACE_newEvents { - infoDisplayChanged = "ace_infoDisplayChanged"; initMortar = "ace_initMortar"; }; diff --git a/addons/nightvision/config.cpp b/addons/nightvision/config.cpp index 0bb7c9227b1..9397740e61a 100644 --- a/addons/nightvision/config.cpp +++ b/addons/nightvision/config.cpp @@ -17,8 +17,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - firedPlayerVehicle = "ace_firedPlayerVehicle"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/optics/config.cpp b/addons/optics/config.cpp index 8499b13427b..c63049356cf 100644 --- a/addons/optics/config.cpp +++ b/addons/optics/config.cpp @@ -34,8 +34,3 @@ class CfgPatches { #include "CfgJointRails.hpp" #include "CfgPreloadTextures.hpp" - -class ACE_newEvents { - infoDisplayChanged = "ace_infoDisplayChanged"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index 863e3e01d30..576ee1e190e 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -54,10 +54,7 @@ class CfgGesturesMale { class ACE_newEvents { initiateSwapBarrelAssisted = QGVAR(initiateSwapBarrelAssisted); showWeaponTemperature = QGVAR(showWeaponTemperature); - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; spareBarrelsLoadCoolest = QGVAR(spareBarrelsLoadCoolest); spareBarrelsSendTemperatureHint = QGVAR(spareBarrelsSendTemperatureHint); - displayTextStructured = "ace_displayTextStructured"; weaponJammed = "ace_weaponJammed"; }; diff --git a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf index 77ef2199bf6..f377d0ba120 100644 --- a/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf +++ b/addons/overheating/functions/fnc_sendSpareBarrelsTemperaturesHint.sqf @@ -73,4 +73,4 @@ if (_countExtremelyHot > 0) then { }; TRACE_1("_output",_output); -["ace_displayTextStructured", [_output, _size, _player], [_player]] call CBA_fnc_targetEvent; +[QEGVAR(common,displayTextStructured), [_output, _size, _player], [_player]] call CBA_fnc_targetEvent; diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 3ddab78d41c..f4b5fdf9514 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -17,7 +17,5 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - firedPlayerVehicle = "ace_firedPlayerVehicle"; - firedPlayer = "ace_firedPlayer"; overpressure = "ace_overpressure"; }; diff --git a/addons/parachute/config.cpp b/addons/parachute/config.cpp index 5eb109ae94e..dec722ea96f 100644 --- a/addons/parachute/config.cpp +++ b/addons/parachute/config.cpp @@ -17,7 +17,3 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "RscTitles.hpp" - -class ACE_newEvents { - infoDisplayChanged = "ace_infoDisplayChanged"; -}; diff --git a/addons/rearm/config.cpp b/addons/rearm/config.cpp index 76ec880db71..bd0a4980e20 100644 --- a/addons/rearm/config.cpp +++ b/addons/rearm/config.cpp @@ -19,7 +19,3 @@ class CfgPatches { #include "CfgAmmo.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; -}; diff --git a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf index f2a826fa3b3..44761d3d17d 100644 --- a/addons/rearm/functions/fnc_rearmSuccessLocal.sqf +++ b/addons/rearm/functions/fnc_rearmSuccessLocal.sqf @@ -40,7 +40,7 @@ if (_maxMagazines == 1) then { if (GVAR(level) == 1) then { // Fill magazine completely _target setMagazineTurretAmmo [_magazineClass, _rounds, _turretPath]; - ["ace_displayTextStructured", + [QEGVAR(common,displayTextStructured), [ [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -50,7 +50,7 @@ if (_maxMagazines == 1) then { } else { // Fill only at most _numRounds _target setMagazineTurretAmmo [_magazineClass, ((_target magazineTurretAmmo [_magazineClass, _turretPath]) + _numRounds) min _rounds, _turretPath]; - ["ace_displayTextStructured", + [QEGVAR(common,displayTextStructured), [ [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -77,7 +77,7 @@ if (_maxMagazines == 1) then { } else { _target setMagazineTurretAmmo [_magazineClass, _currentRounds + _numRounds, _turretPath]; }; - ["ace_displayTextStructured", + [QEGVAR(common,displayTextStructured), [ [LSTRING(Hint_RearmedTriple), _numRounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), @@ -91,7 +91,7 @@ if (_maxMagazines == 1) then { _target addMagazineTurret [_magazineClass, _turretPath]; _target setMagazineTurretAmmo [_magazineClass, _currentRounds, _turretPath]; }; - ["ace_displayTextStructured", + [QEGVAR(common,displayTextStructured), [ [LSTRING(Hint_RearmedTriple), _rounds, getText(configFile >> "CfgMagazines" >> _magazineClass >> "displayName"), diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp index 5daaf1292e2..e6eee4a9afb 100644 --- a/addons/recoil/config.cpp +++ b/addons/recoil/config.cpp @@ -22,7 +22,3 @@ class CfgCameraShake { // What does this do, really? It seems like the engine no longer respects it. defaultCaliberCoefWeaponFire = 0; }; - -class ACE_newEvents { - firedPlayer = "ace_firedPlayer"; -}; \ No newline at end of file diff --git a/addons/refuel/config.cpp b/addons/refuel/config.cpp index 4a944304e54..2ace24fb925 100644 --- a/addons/refuel/config.cpp +++ b/addons/refuel/config.cpp @@ -16,10 +16,3 @@ class CfgPatches { #include "ACE_Settings.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" - -class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; - setFuel = "ace_setFuel"; - setVectorDirAndUp = "ace_setVectorDirAndUp"; - displayTextStructured = "ace_displayTextStructured"; -}; diff --git a/addons/refuel/functions/fnc_checkFuel.sqf b/addons/refuel/functions/fnc_checkFuel.sqf index ce815a3f1d0..49d62b1e448 100644 --- a/addons/refuel/functions/fnc_checkFuel.sqf +++ b/addons/refuel/functions/fnc_checkFuel.sqf @@ -27,9 +27,9 @@ private _fuel = [_target] call FUNC(getFuel); params ["_args"]; _args params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_fuel", 0, [0]]]; if (_fuel > 0 ) then { - ["ace_displayTextStructured", [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit], _unit] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit], _unit] call CBA_fnc_targetEvent; } else { - ["ace_displayTextStructured", [LSTRING(Hint_Empty), 2, _unit], _unit] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [LSTRING(Hint_Empty), 2, _unit], _unit] call CBA_fnc_targetEvent; }; true }, diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index c46156a26e8..250da51e211 100644 --- a/addons/refuel/functions/fnc_connectNozzleAction.sqf +++ b/addons/refuel/functions/fnc_connectNozzleAction.sqf @@ -119,7 +119,7 @@ _endPosTestOffset set [2, (_startingOffset select 2)]; }; }; }; - ["ace_setVectorDirAndUp", [_nozzle, _dirAndUp], _nozzle] call CBA_fnc_targetEvent; + [QEGVAR(common,setVectorDirAndUp), [_nozzle, _dirAndUp], _nozzle] call CBA_fnc_targetEvent; _nozzle setVariable [QGVAR(sink), _target, true]; _nozzle setVariable [QGVAR(isConnected), true, true]; _target setVariable [QGVAR(nozzle), _nozzle, true]; diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index bdd49d01d0e..2f7131bd9ff 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -79,7 +79,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> }; _unit setVariable [QGVAR(tempFuel), _fuelInSink]; - ["ace_setFuel", [_sink, _fuelInSink], _sink] call CBA_fnc_targetEvent; + [QEGVAR(common,setFuel), [_sink, _fuelInSink], _sink] call CBA_fnc_targetEvent; [_source, _fuelInSource] call FUNC(setFuel); } else { _unit setVariable [QGVAR(tempFuel), fuel _sink]; diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 0adb9156669..2f0bbe7869c 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -5,5 +5,3 @@ // wheels [QGVAR(setWheelHitPointDamage), {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler; - -[QGVAR(useItem), EFUNC(common,useItem)] call CBA_fnc_addEventHandler; diff --git a/addons/repair/config.cpp b/addons/repair/config.cpp index 247e597528f..56465ba1f50 100644 --- a/addons/repair/config.cpp +++ b/addons/repair/config.cpp @@ -24,9 +24,5 @@ class ACE_newEvents { setWheelHitPointDamage = QGVAR(setWheelHitPointDamage); setVehicleHitPointDamage = QGVAR(setVehicleHitPointDamage); setVehicleDamage = QGVAR(setVehicleDamage); - fixPosition = "ace_fixPosition"; - displayTextStructured = "ace_displayTextStructured"; - engineOn = "ace_engineOn"; - fixCollision = "ace_fixCollision"; AddCargoByClass = "ace_addCargoByClass"; }; diff --git a/addons/repair/functions/fnc_doRemoveTrack.sqf b/addons/repair/functions/fnc_doRemoveTrack.sqf index 8c3554adc1d..ca6ac58ffd0 100644 --- a/addons/repair/functions/fnc_doRemoveTrack.sqf +++ b/addons/repair/functions/fnc_doRemoveTrack.sqf @@ -27,7 +27,7 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["ace_fixCollision", _unit] call CBA_fnc_localEvent; +[QEGVAR(common,fixCollision), _unit] call CBA_fnc_localEvent; // spawn track private _newTrack = ["ACE_Track", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); diff --git a/addons/repair/functions/fnc_doRemoveWheel.sqf b/addons/repair/functions/fnc_doRemoveWheel.sqf index 1d2fedeb778..dafe603a188 100644 --- a/addons/repair/functions/fnc_doRemoveWheel.sqf +++ b/addons/repair/functions/fnc_doRemoveWheel.sqf @@ -27,7 +27,7 @@ private _hitPointDamage = _vehicle getHitPointDamage _hitPoint; if (_hitPointDamage >= 1) exitWith {}; // don't die by spawning / moving the wheel -["ace_fixCollision", _unit] call CBA_fnc_localEvent; +[QEGVAR(common,fixCollision), _unit] call CBA_fnc_localEvent; // spawn wheel private _newWheel = ["ACE_Wheel", getPosASL _unit, _hitPointDamage] call FUNC(spawnObject); diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index f79510aea76..55770572414 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -38,10 +38,10 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitWith {false}; if ((isEngineOn _target) && {GVAR(autoShutOffEngineWhenStartingRepair)}) then { - ["ace_engineOn", [_target, false], _target] call CBA_fnc_targetEvent; + [QEGVAR(common,engineOn), [_target, false], _target] call CBA_fnc_targetEvent; }; if ((isEngineOn _target) && {!GVAR(autoShutOffEngineWhenStartingRepair)}) exitWith { - ["ace_displayTextStructured", [LSTRING(shutOffEngineWarning), 1.5, _caller]] call CBA_fnc_localEvent; + [LSTRING(shutOffEngineWarning), 1.5, _caller] call EFUNC(common,displayTextStructured); false }; @@ -235,7 +235,7 @@ if (_target != _caller) then { }; if (_displayText != "") then { - ["ace_displayTextStructured", [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; + [QEGVAR(common,displayTextStructured), [[_displayText, [_caller] call EFUNC(common,getName), [_target] call EFUNC(common,getName)], 1.5, _caller], [_caller]] call CBA_fnc_targetEvent; }; true; diff --git a/addons/repair/functions/fnc_spawnObject.sqf b/addons/repair/functions/fnc_spawnObject.sqf index 3b5c9caa9b9..e927a196511 100644 --- a/addons/repair/functions/fnc_spawnObject.sqf +++ b/addons/repair/functions/fnc_spawnObject.sqf @@ -28,7 +28,7 @@ _newObject setPosASL _position; _newObject setDamage _damage; -["ace_fixCollision", _newObject] call CBA_fnc_localEvent; -["ace_fixPosition", _newObject] call CBA_fnc_localEvent; +[QEGVAR(common,fixCollision), _newObject] call CBA_fnc_localEvent; +[QEGVAR(common,fixPosition), _newObject] call CBA_fnc_localEvent; _newObject diff --git a/addons/repair/functions/fnc_useItem.sqf b/addons/repair/functions/fnc_useItem.sqf index eca88d7acad..b4fe9484d5e 100644 --- a/addons/repair/functions/fnc_useItem.sqf +++ b/addons/repair/functions/fnc_useItem.sqf @@ -20,7 +20,7 @@ params ["_unit", "_item"]; TRACE_2("params",_unit,_item); if ([_unit, _item] call EFUNC(common,hasItem)) exitWith { - [QGVAR(useItem), [_unit, _item], _unit] call CBA_fnc_targetEvent; + ["ace_useItem", [_unit, _item], _unit] call CBA_fnc_targetEvent; [true, _unit]; }; diff --git a/addons/sandbag/config.cpp b/addons/sandbag/config.cpp index 55e88aef6c8..cb8884ac7eb 100644 --- a/addons/sandbag/config.cpp +++ b/addons/sandbag/config.cpp @@ -18,6 +18,5 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; interactMenuOpened = "ace_interactMenuOpened"; }; diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 8a2e7202830..c9ff1feb201 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -14,16 +14,7 @@ class CfgPatches { }; #include "CfgEventHandlers.hpp" - #include "CfgSounds.hpp" - #include "CfgVehicles.hpp" - #include "CfgWeapons.hpp" - #include "RscTitles.hpp" - -class ACE_newEvents { - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 88db8f5262b..e6a730c4928 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -20,5 +20,4 @@ class CfgPatches { class ACE_newEvents { SetHandcuffed = QEGVAR(captives,setHandcuffed); - medical_onUnconscious = "ace_unconscious"; }; diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf index 0813f37755b..dc83bf74587 100644 --- a/addons/spectator/functions/fnc_respawnTemplate.sqf +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -21,11 +21,6 @@ params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",0,[0]], ["_respawnDelay",0,[0]]]; private ["_vision","_pos"]; -// When all are dead with respawn type "None" the mission should end -if ((_respawn == 0) && {{alive _x} count allPlayers <= 0}) exitWith { - ["BIS_fnc_endMission", ["endDeath", false]] call EFUNC(common,globalEvent); //??? -}; - // Some environment information can be used for the initial camera attributes if (isNull _killer) then {_killer = _unit}; _vision = [-2,-1] select (sunOrMoon < 1); diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp index fa32aef100a..1bdec707290 100644 --- a/addons/switchunits/config.cpp +++ b/addons/switchunits/config.cpp @@ -16,7 +16,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - SettingChanged = "ace_settingChanged"; -}; \ No newline at end of file diff --git a/addons/tacticalladder/config.cpp b/addons/tacticalladder/config.cpp index b2e34052492..53ce7384f65 100644 --- a/addons/tacticalladder/config.cpp +++ b/addons/tacticalladder/config.cpp @@ -18,5 +18,4 @@ class CfgPatches { class ACE_newEvents { interactMenuOpened = "ace_interactMenuOpened"; - medical_onUnconscious = "ace_unconscious"; }; diff --git a/addons/trenches/config.cpp b/addons/trenches/config.cpp index b1ca0fc0bb5..f090a3ecf4b 100644 --- a/addons/trenches/config.cpp +++ b/addons/trenches/config.cpp @@ -18,6 +18,5 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; interactMenuOpened = "ace_interactMenuOpened"; }; diff --git a/addons/tripod/config.cpp b/addons/tripod/config.cpp index 7e4e556070e..3891a59d571 100644 --- a/addons/tripod/config.cpp +++ b/addons/tripod/config.cpp @@ -18,6 +18,5 @@ class CfgPatches { #include "CfgWeapons.hpp" class ACE_newEvents { - medical_onUnconscious = "ace_unconscious"; interactMenuOpened = "ace_interactMenuOpened"; }; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 2bc7e843f82..b6a98e6d88d 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -15,7 +15,3 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - firedPlayer = "ace_firedPlayer"; -}; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index f49a9e11bfa..2faf5364238 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -24,10 +24,3 @@ class CfgAddons { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" - -class ACE_newEvents { - firedPlayerVehicleNonLocal = "ace_firedPlayerVehicleNonLocal"; - firedPlayerVehicle = "ace_firedPlayerVehicle"; - firedPlayerNonLocal = "ace_firedPlayerNonLocal"; - firedPlayer = "ace_firedPlayer"; -}; From 03a56b1f7d3d526797dfe4bf1b9f0c0417977fed Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 4 Jun 2016 19:57:49 +0200 Subject: [PATCH 246/268] Fix goKneeling changing animation inside vehicle (1.60) --- addons/common/functions/fnc_goKneeling.sqf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_goKneeling.sqf b/addons/common/functions/fnc_goKneeling.sqf index 4ee502f929a..9e7aed708ad 100644 --- a/addons/common/functions/fnc_goKneeling.sqf +++ b/addons/common/functions/fnc_goKneeling.sqf @@ -1,6 +1,6 @@ /* * Author: commy2 - * Move unit to kneeling position. + * Move unit to kneeling position (only if not yet prone). * * Arguments: * 0: Unit @@ -14,7 +14,8 @@ params ["_unit"]; -if (stance _unit == "PRONE") exitWith {}; +// Animation changes even inside vehicle post-1.60 +if (stance _unit == "PRONE" || {vehicle ACE_player != ACE_player}) exitWith {}; [ _unit, From 8ff4a2ecafbf21777f217ff839e59f28fd6d9c4a Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 4 Jun 2016 20:40:55 +0200 Subject: [PATCH 247/268] Add size parameter to displayTextPicture, Improve parameter checking in displayText functions, Cleanup magazine repack (privates, deprecated macros, style) --- .../functions/fnc_displayTextPicture.sqf | 15 ++++-- .../functions/fnc_displayTextStructured.sqf | 9 ++-- .../functions/fnc_getMagazineChildren.sqf | 20 ++++--- .../functions/fnc_magazineRepackFinish.sqf | 51 +++++++++--------- .../functions/fnc_magazineRepackProgress.sqf | 13 ++--- .../functions/fnc_simulateRepackEvents.sqf | 53 ++++++++----------- .../functions/fnc_startRepackingMagazine.sqf | 30 +++++------ 7 files changed, 90 insertions(+), 101 deletions(-) diff --git a/addons/common/functions/fnc_displayTextPicture.sqf b/addons/common/functions/fnc_displayTextPicture.sqf index a0bcb47e115..9ddbf96164d 100644 --- a/addons/common/functions/fnc_displayTextPicture.sqf +++ b/addons/common/functions/fnc_displayTextPicture.sqf @@ -5,17 +5,22 @@ * Arguments: * 0: Text * 1: Image - * 2: Image color (default: [0, 0, 0, 0]) - * 3: Target Unit. Will only display if target is the player controlled object (default: ACE_player) + * 2: Image color (default: [1, 1, 1]) + * 3: Target Unit. Will only display if target is the player controlled object (default: ACE_player) + * 4: Size (default: 2) * * Return Value: * None * + * Example: + * ["text", "image", [1, 1, 1], ACE_player, 2] call ace_common_fnc_displayTextPicture + * ["text", "image", nil, nil, 3] call ace_common_fnc_displayTextPicture + * * Public: Yes */ #include "script_component.hpp" -params ["_text", "_image", ["_imageColor", [1,1,1]], ["_target", ACE_player]]; +params [["_text", ""], ["_image", "", [""]], ["_imageColor", [1,1,1], [[]]], ["_target", ACE_player, [objNull]], ["_size", 2, [0]]]; if (_target != ACE_player) exitWith {}; @@ -39,6 +44,6 @@ if (typeName _text != "TEXT") then { _text = parseText format ["%1", _text]; }; -_text = composeText [parseText format ["", _image, _imageColor call BIS_fnc_colorRGBtoHTML], lineBreak, _text]; +_text = composeText [parseText format ["", _image, _imageColor call BIS_fnc_colorRGBtoHTML], lineBreak, _text]; -[_text, 2] call FUNC(displayTextStructured); +[_text, _size] call FUNC(displayTextStructured); diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index 9fff7bb0563..e952fce9a4f 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -4,17 +4,20 @@ * * Arguments: * 0: Text - * 1: Size of the textbox (default: 1.5) - * 2: Target Unit. Will only display if target is the player controlled object (default: ACE_player) + * 1: Size of the textbox (default: 1.5) + * 2: Target Unit. Will only display if target is the player controlled object (default: ACE_player) * * Return Value: * None * + * Example: + * + * * Public: Yes */ #include "script_component.hpp" -params ["_text", ["_size", 1.5], ["_target", ACE_player]]; +params [["_text", ""], ["_size", 1.5, [0]], ["_target", ACE_player, [objNull]]]; if (_target != ACE_player) exitWith {}; diff --git a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf index fc875c8d2b2..88cd0ff2751 100644 --- a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf +++ b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf @@ -1,6 +1,6 @@ /* - * Author: PabstMirror,commy2, esteldunedain, Ruthberg - * Gets magazine children for interaciton menu + * Author: PabstMirror, commy2, esteldunedain, Ruthberg + * Gets magazine children for interaciton menu. * * Argument: * 0: Target @@ -16,13 +16,11 @@ */ #include "script_component.hpp" -private ["_unitMagazines", "_unitMagCounts", "_index", "_actions", "_displayName", "_picture", "_action"]; - params ["_target", "_player"]; // get all mags and ammo count -_unitMagazines = []; -_unitMagCounts = []; +private _unitMagazines = []; +private _unitMagCounts = []; { private "_xFullMagazineCount"; _x params ["_xClassname", "_xCount", "_xLoaded", "_xType"]; @@ -31,7 +29,7 @@ _unitMagCounts = []; //for every partial magazine, that is either in inventory or can be moved there if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {_player canAdd _xClassname}}) then { - _index = _unitMagazines find _xClassname; + private _index = _unitMagazines find _xClassname; if (_index == -1) then { _unitMagazines pushBack _xClassname; _unitMagCounts pushBack [_xCount]; @@ -42,13 +40,13 @@ _unitMagCounts = []; } forEach (magazinesAmmoFull _player); //Create the action children for all appropriate magazines -_actions = []; +private _actions = []; { if ((count (_unitMagCounts select _forEachIndex)) >= 2) then {// Ignore invalid magazines types (need 2+ partial mags to do anything) - _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); - _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture"); + private _displayName = getText (configFile >> "CfgMagazines" >> _x >> "displayName"); + private _picture = getText (configFile >> "CfgMagazines" >> _x >> "picture"); - _action = [_x, _displayName, _picture, {_this call FUNC(startRepackingMagazine)}, {true}, {}, _x] call EFUNC(interact_menu,createAction); + private _action = [_x, _displayName, _picture, {_this call FUNC(startRepackingMagazine)}, {true}, {}, _x] call EFUNC(interact_menu,createAction); _actions pushBack [_action, [], _player]; }; } forEach _unitMagazines; diff --git a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf index f0fbcf49c15..36544b0084a 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackFinish.sqf @@ -19,39 +19,36 @@ */ #include "script_component.hpp" -private ["_structuredOutputText", "_picture", "_fullMags", "_partialMags", "_fullMagazineCount"]; - params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; _args params ["_magazineClassname", "_lastAmmoCount"]; -_fullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _magazineClassname >> "count"); +private _fullMagazineCount = getNumber (configFile >> "CfgMagazines" >> _magazineClassname >> "count"); -//Don't show anything if player can't interact: +// Don't show anything if player can't interact if (!([ACE_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; -_structuredOutputText = if (_errorCode == 0) then { - format ["%1
", (localize LSTRING(RepackComplete))]; +// Count mags +private _fullMags = 0; +private _partialMags = 0; +{ + _x params ["_classname", "_count"]; + + if (_classname == _magazineClassname && {_count > 0}) then { + if (_count == _fullMagazineCount) then { + _fullMags = _fullMags + 1; + } else { + _partialMags = _partialMags + 1; + }; + }; +} forEach (magazinesAmmoFull ACE_player); + +private _repackedMagsText = format [localize LSTRING(RepackedMagazinesCount), _fullMags, _partialMags]; + +private _structuredOutputText = if (_errorCode == 0) then { + format ["%1
%2", localize LSTRING(RepackComplete), _repackedMagsText]; } else { - format ["%1
", (localize LSTRING(RepackInterrupted))]; + format ["%1
%2", localize LSTRING(RepackInterrupted), _repackedMagsText]; }; -_picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture"); -_structuredOutputText = _structuredOutputText + format ["
", _picture]; - -//EFUNC(common,displayTextStructured) doesn't have room for this, and I don't think it's nessacary, can fix in the future if wanted: - -// _fullMags = 0; -// _partialMags = 0; -// { - // EXPLODE_2_PVT(_x,_xClassname,_xCount); - // if ((_xClassname == _magazineClassname) && {_xCount > 0}) then { - // if (_xCount == _fullMagazineCount) then { - // _fullMags = _fullMags + 1; - // } else { - // _partialMags = _partialMags + 1; - // }; - // }; -// } forEach (magazinesAmmoFull ACE_player); -// _structuredOutputText = _structuredOutputText + format [("" + (localize LSTRING(RepackedMagazinesCount)) + ""), _fullMags, _partialMags]; - -[parseText _structuredOutputText, 2] call EFUNC(common,displayTextStructured); +private _picture = getText (configFile >> "CfgMagazines" >> _magazineClassname >> "picture"); +[_structuredOutputText, _picture, nil, nil, 2.5] call EFUNC(common,displayTextPicture); diff --git a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf index c1bf5ebdab5..3808df4cdc7 100644 --- a/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf +++ b/addons/magazinerepack/functions/fnc_magazineRepackProgress.sqf @@ -18,19 +18,16 @@ */ #include "script_component.hpp" -private ["_currentAmmoCount", "_addedMagazines", "_missingAmmo", "_index", "_updateMagazinesOnPlayerFnc"]; - params ["_ars", "_elapsedTime", "_totalTime"]; _args params ["_magazineClassname", "_lastAmmoCount", "_simEvents"]; if !((_simEvents select 0) params ["_nextEventTime", "_nextEventIsBullet", "_nextEventMags"]) exitWith { ERROR("No Event"); false }; - if (_nextEventTime > _elapsedTime) exitWith { true };//waiting on next event //Verify we aren't missing any ammo -_currentAmmoCount = []; +private _currentAmmoCount = []; { _x params ["_xClassname", "_xCount"]; if (_xClassname == _magazineClassname) then { @@ -39,11 +36,11 @@ _currentAmmoCount = []; } forEach (magazinesAmmo ACE_player); //only inventory mags //Go through mags we currently have and check off the ones we should have -_addedMagazines = +_currentAmmoCount; -_missingAmmo = false; +private _addedMagazines = +_currentAmmoCount; +private _missingAmmo = false; { if (_x > 0) then { - _index = _addedMagazines find _x; + private _index = _addedMagazines find _x; if (_index != -1) then { _addedMagazines deleteAt _index; } else { @@ -54,7 +51,7 @@ _missingAmmo = false; if (_missingAmmo) exitWith { false }; //something removed ammo that was being repacked (could be other players or scripts) -_updateMagazinesOnPlayerFnc = { +private _updateMagazinesOnPlayerFnc = { ACE_player removeMagazines _magazineClassname; //remove inventory magazines { if (_x > 0) then { diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf index 230bdefb4f1..09c04de26e0 100644 --- a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf +++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf @@ -19,47 +19,26 @@ */ #include "script_component.hpp" -private ["_fnc_newMag", "_time", "_events", "_fnc_swapAmmo", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded", "_swapProgress"]; - params ["_fullMagazineCount", "_arrayOfAmmoCounts", "_isBelt"]; // Sort Ascending - Don't modify original _arrayOfAmmoCounts = +_arrayOfAmmoCounts; _arrayOfAmmoCounts sort true; -_fnc_newMag = { +private _fnc_newMag = { _time = _time + GVAR(TimePerMagazine); _events pushBack [_time, false, +_arrayOfAmmoCounts]; }; -_fnc_swapAmmo = if (_isBelt) then { - { - _time = _time + GVAR(TimePerBeltLink); - _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - _ammoSwaped)]; - _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + _ammoSwaped)]; - _events pushBack [_time, true, +_arrayOfAmmoCounts]; - } -} else { - { - for "_swapProgress" from 0 to (_ammoSwaped - 1) do { - _time = _time + GVAR(TimePerAmmo); - _arrayOfAmmoCounts set [_lowIndex, ((_arrayOfAmmoCounts select _lowIndex) - 1)]; - _arrayOfAmmoCounts set [_highIndex, ((_arrayOfAmmoCounts select _highIndex) + 1)]; - _events pushBack [_time, true, +_arrayOfAmmoCounts]; - }; - } -}; - -_lowIndex = 0; -_highIndex = (count _arrayOfAmmoCounts) - 1; -_ammoToTransfer = 0; -_ammoAvailable = 0; - -_time = 0; -_events = []; +private _lowIndex = 0; +private _highIndex = (count _arrayOfAmmoCounts) - 1; +private _ammoToTransfer = 0; +private _ammoAvailable = 0; +private _time = 0; +private _events = []; while {_lowIndex < _highIndex} do { - _ammoNeeded = _fullMagazineCount - (_arrayOfAmmoCounts select _highIndex); + private _ammoNeeded = _fullMagazineCount - (_arrayOfAmmoCounts select _highIndex); _ammoAvailable = _arrayOfAmmoCounts select _lowIndex; if (_ammoAvailable == 0) then { @@ -70,8 +49,20 @@ while {_lowIndex < _highIndex} do { _highIndex = _highIndex - 1; call _fnc_newMag; } else { - _ammoSwaped = _ammoAvailable min _ammoNeeded; - call _fnc_swapAmmo; + private _ammoSwaped = _ammoAvailable min _ammoNeeded; + if (_isBelt) then { + _time = _time + GVAR(TimePerBeltLink); + _arrayOfAmmoCounts set [_lowIndex, (_arrayOfAmmoCounts select _lowIndex) - _ammoSwaped]; + _arrayOfAmmoCounts set [_highIndex, (_arrayOfAmmoCounts select _highIndex) + _ammoSwaped]; + _events pushBack [_time, true, +_arrayOfAmmoCounts]; + } else { + for "_swapProgress" from 0 to (_ammoSwaped - 1) do { + _time = _time + GVAR(TimePerAmmo); + _arrayOfAmmoCounts set [_lowIndex, (_arrayOfAmmoCounts select _lowIndex) - 1]; + _arrayOfAmmoCounts set [_highIndex, (_arrayOfAmmoCounts select _highIndex) + 1]; + _events pushBack [_time, true, +_arrayOfAmmoCounts]; + }; + }; }; }; }; diff --git a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf index 859bbdfdfa7..32ce65d188d 100644 --- a/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf +++ b/addons/magazinerepack/functions/fnc_startRepackingMagazine.sqf @@ -13,39 +13,37 @@ * Nothing * * Example: - * ["30Rnd_65x39_caseless_mag"] call ace_magazinerepack_fnc_startRepackingMagazine + * [player, player, "30Rnd_65x39_caseless_mag"] call ace_magazinerepack_fnc_startRepackingMagazine * * Public: No */ #include "script_component.hpp" -private ["_magazineCfg", "_fullMagazineCount", "_isBelt", "_startingAmmoCounts", "_simEvents", "_totalTime"]; - params ["_target", "_player", "_magazineClassname"]; if (isNil "_magazineClassname" || {_magazineClassname == ""}) exitWith {ERROR("Bad Mag Classname");}; -_magazineCfg = configFile >> "CfgMagazines" >> _magazineClassname; +private _magazineCfg = configFile >> "CfgMagazines" >> _magazineClassname; // Calculate actual ammo to transfer during repack -_fullMagazineCount = getNumber (_magazineCfg >> "count"); +private _fullMagazineCount = getNumber (_magazineCfg >> "count"); //Is linked belt magazine: -_isBelt = (isNumber (_magazineCfg >> "ACE_isBelt")) && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1}; +private _isBelt = isNumber (_magazineCfg >> "ACE_isBelt") && {(getNumber (_magazineCfg >> "ACE_isBelt")) == 1}; //Check canInteractWith: -if (!([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith {}; +if !([_player, objNull, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {}; [_player] call EFUNC(common,goKneeling); -_startingAmmoCounts = []; +private _startingAmmoCounts = []; { - EXPLODE_4_PVT(_x,_xClassname,_xCount,_xLoaded,_xType); - if ((_xClassname == _magazineClassname) && {(_xCount != _fullMagazineCount) && {_xCount > 0}}) then { + _x params ["_xClassname", "_xCount", "_xLoaded", "_xType"]; + if (_xClassname == _magazineClassname && {_xCount != _fullMagazineCount && {_xCount > 0}}) then { if (_xLoaded) then { //Try to Remove from weapon and add to inventory, otherwise ignore if (_player canAdd _magazineClassname) then { switch (_xType) do { - case (1): {_player removePrimaryWeaponItem _magazineClassname;}; - case (2): {_player removeHandgunItem _magazineClassname;}; - case (4): {_player removeSecondaryWeaponItem _magazineClassname;}; + case (1): {_player removePrimaryWeaponItem _magazineClassname}; + case (2): {_player removeHandgunItem _magazineClassname}; + case (4): {_player removeSecondaryWeaponItem _magazineClassname}; default {ERROR("Loaded Location Invalid");}; }; _player addMagazine [_magazineClassname, _xCount]; @@ -57,10 +55,10 @@ _startingAmmoCounts = []; }; } forEach (magazinesAmmoFull _player); -if ((count _startingAmmoCounts) < 2) exitWith {ERROR("Not Enough Mags to Repack");}; +if (count _startingAmmoCounts < 2) exitWith {ERROR("Not Enough Mags to Repack");}; -_simEvents = [_fullMagazineCount, _startingAmmoCounts, _isBelt] call FUNC(simulateRepackEvents); -_totalTime = (_simEvents select ((count _simEvents) - 1) select 0); +private _simEvents = [_fullMagazineCount, _startingAmmoCounts, _isBelt] call FUNC(simulateRepackEvents); +private _totalTime = _simEvents select (count _simEvents - 1) select 0; [ _totalTime, From 5a20f1286b2c0259fab6e8196f0b3ca37075e330 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 4 Jun 2016 21:05:26 +0200 Subject: [PATCH 248/268] Change internal event framework names to contain prefix and be as short as possible --- addons/common/XEH_postInit.sqf | 8 ++++---- addons/common/config.cpp | 5 +++++ .../functions/fnc__handleRequestAllSyncedEvents.sqf | 2 +- addons/common/functions/fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_requestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_syncedEvent.sqf | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 1029d9b2a0f..93589bb7f57 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -145,14 +145,14 @@ if (isServer) then { if (!isServer) then { ["ace_playerJIP", { ACE_LOGINFO("JIP event synchronization initialized"); - ["SEH_all", [player]] call CBA_fnc_serverEvent; + ["ACEa", [player]] call CBA_fnc_serverEvent; }] call CBA_fnc_addEventHandler; } else { - ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; + ["ACEa", FUNC(_handleRequestAllSyncedEvents)] call CBA_fnc_addEventHandler; }; -["SEH", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; -["SEH_s", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; +["ACEe", FUNC(_handleSyncedEvent)] call CBA_fnc_addEventHandler; +["ACEs", FUNC(_handleRequestSyncedEvent)] call CBA_fnc_addEventHandler; if (isServer) then { [FUNC(syncedEventPFH), 0.5, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index f1bb9308d69..0fb99494234 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -70,6 +70,11 @@ class ACE_newEvents { engineOn = QGVAR(engineOn); setFuel = QGVAR(setFuel); setDir = QGVAR(setDir); + + // Events framework + SEH_s = ACEs; + SEH = ACEe; + SEH_all = ACEa; }; #include "CfgEventHandlers.hpp" diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index ce57658e6f2..24f6c635fc9 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -18,7 +18,7 @@ params ["_client"]; private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); _eventEntry params ["", "_eventLog"]; - ["SEH_s", [_x, _eventLog], _client] call CBA_fnc_targetEvent; + ["ACEs", [_x, _eventLog], _client] call CBA_fnc_targetEvent; false } count (GVAR(syncedEvents) select 0); diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 35aac9d52e8..ec48777a1cb 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -30,7 +30,7 @@ if (isServer) then { private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry params ["", "_eventLog"]; - ["SEH_s", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; + ["ACEs", [_eventName, _eventLog], _client] call CBA_fnc_targetEvent; } else { params ["_eventName", "_eventLog"]; diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf index 0749b374ca2..16ffd5b3421 100644 --- a/addons/common/functions/fnc_requestSyncedEvent.sqf +++ b/addons/common/functions/fnc_requestSyncedEvent.sqf @@ -17,4 +17,4 @@ params ["_eventName"]; // Only JIP machines on initialization send this off, requesting sync on events with the serverCommand if (isServer) exitWith {false}; -["SEH_s", [_eventName, ACE_player]] call CBA_fnc_serverEvent; +["ACEs", [_eventName, ACE_player]] call CBA_fnc_serverEvent; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 3964d23afc0..43bc6ce7846 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -23,4 +23,4 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { private _eventData = [_name, _args, _ttl]; -["SEH", _eventData] call CBA_fnc_globalEvent; +["ACEe", _eventData] call CBA_fnc_globalEvent; From a10b6ee8e20fbaa39e02fe769c73c5b4624c0f95 Mon Sep 17 00:00:00 2001 From: voiper Date: Fri, 3 Jun 2016 03:11:23 -0700 Subject: [PATCH 249/268] Fix thrown blink. --- addons/nightvision/functions/fnc_blending.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index b34584a5d0e..aad964a6651 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -21,6 +21,9 @@ TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectil private "_player"; _player = ACE_player; +//exit if it's a thrown weapon +if (_weapon == "Throw") exitWith {}; + //If our vehicle didn't shoot, or we're not in NVG mode, exit if ((currentVisionMode _player) != 1) exitWith {}; From 3124270254cd6c97b4d90f8c9d24828d20735734 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 4 Jun 2016 21:07:24 +0200 Subject: [PATCH 250/268] Quote the unquoted --- addons/common/config.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 0fb99494234..0210634ee8c 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -72,9 +72,9 @@ class ACE_newEvents { setDir = QGVAR(setDir); // Events framework - SEH_s = ACEs; - SEH = ACEe; - SEH_all = ACEa; + SEH_s = "ACEs"; + SEH = "ACEe"; + SEH_all = "ACEa"; }; #include "CfgEventHandlers.hpp" From b541b0b4f039c401750af326ef4a5c37dd8925d8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 4 Jun 2016 21:20:10 +0200 Subject: [PATCH 251/268] Fix selective UI script error when changing certain other settings --- addons/ui/XEH_clientInit.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 72a754a28e2..23940d2fb28 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -32,7 +32,9 @@ if (!hasInterface) exitWith {}; if (_name in ELEMENTS_BASIC) then { [false] call FUNC(setElements); } else { - [_name select [7], missionNamespace getVariable _name, true] call FUNC(setAdvancedElement); + if (isClass (configFile >> "ACE_UI" >> _name)) then { + [_name select [7], missionNamespace getVariable _name, true] call FUNC(setAdvancedElement); + }; }; }] call EFUNC(common,addEventHandler); From 354e84e058a412b78d612d3407b7344122b5dee1 Mon Sep 17 00:00:00 2001 From: voiper Date: Sat, 4 Jun 2016 12:26:38 -0700 Subject: [PATCH 252/268] Cleanup. --- addons/nightvision/functions/fnc_blending.sqf | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index aad964a6651..a8335d3c194 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -21,11 +21,8 @@ TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectil private "_player"; _player = ACE_player; -//exit if it's a thrown weapon -if (_weapon == "Throw") exitWith {}; - -//If our vehicle didn't shoot, or we're not in NVG mode, exit -if ((currentVisionMode _player) != 1) exitWith {}; +//If we're not in NVG mode, or it's a grenade, exit +if (((currentVisionMode _player) != 1) || {_weapon == "Throw"}) exitWith {}; private["_darkness", "_nvgBrightnessCoef", "_silencer", "_visibleFire", "_visibleFireCoef", "_visibleFireTime", "_visibleFireTimeCoef"]; From 0424f5db73235959e35bc5f6ce286b86d81ea3dd Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 4 Jun 2016 23:57:19 +0200 Subject: [PATCH 253/268] cleanup fnc_blending --- addons/nightvision/functions/fnc_blending.sqf | 36 +++++++------------ 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/addons/nightvision/functions/fnc_blending.sqf b/addons/nightvision/functions/fnc_blending.sqf index a8335d3c194..2616cb83f52 100644 --- a/addons/nightvision/functions/fnc_blending.sqf +++ b/addons/nightvision/functions/fnc_blending.sqf @@ -18,44 +18,33 @@ //IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"]; TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret); -private "_player"; -_player = ACE_player; +private _player = ACE_player; //If we're not in NVG mode, or it's a grenade, exit -if (((currentVisionMode _player) != 1) || {_weapon == "Throw"}) exitWith {}; +if (currentVisionMode _player != 1 || {toLower _weapon in ["throw", "put"]}) exitWith {}; -private["_darkness", "_nvgBrightnessCoef", "_silencer", "_visibleFire", "_visibleFireCoef", "_visibleFireTime", "_visibleFireTimeCoef"]; +private _silencer = _player weaponAccessories _weapon select 0; -_silencer = switch (_weapon) do { - case (primaryWeapon _player): {(primaryWeaponItems _player) select 0}; - case (secondaryWeapon _player): {(secondaryWeaponItems _player) select 0}; - case (handgunWeapon _player): {(handgunItems _player) select 0}; - default {""}; -}; +private _visibleFireCoef = 1; +private _visibleFireTimeCoef = 1; -_visibleFireCoef = 1; -_visibleFireTimeCoef = 1; if (_silencer != "") then { _visibleFireCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFire"); _visibleFireTimeCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFireTime"); }; -_visibleFire = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFire"); -_visibleFireTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFireTime"); - -_nvgBrightnessCoef = 1 + (_player getVariable [QGVAR(NVGBrightness), 0]) / 4; - -_fnc_isTracer = { - private ["_indexShot", "_lastRoundsTracer", "_tracersEvery"]; +private _visibleFire = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFire"); +private _visibleFireTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFireTime"); +private _fnc_isTracer = { if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "nvgOnly") > 0) exitWith {false}; - _indexShot = (_player ammo _weapon) + 1; + private _indexShot = (_player ammo _weapon) + 1; - _lastRoundsTracer = getNumber (configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer"); + private _lastRoundsTracer = getNumber (configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer"); if (_indexShot <= _lastRoundsTracer) exitWith {true}; - _tracersEvery = getNumber (configFile >> "CfgMagazines" >> _magazine >> "tracersEvery"); + private _tracersEvery = getNumber (configFile >> "CfgMagazines" >> _magazine >> "tracersEvery"); if (_tracersEvery == 0) exitWith {false}; (_indexShot - _lastRoundsTracer) % _tracersEvery == 0 @@ -66,7 +55,8 @@ if (call _fnc_isTracer) then { _visibleFireTime = _visibleFireTime + 2; }; -_darkness = 1 - (call EFUNC(common,ambientBrightness)); +private _darkness = 1 - (call EFUNC(common,ambientBrightness)); +private _nvgBrightnessCoef = 1 + (_player getVariable [QGVAR(NVGBrightness), 0]) / 4; _visibleFire = _darkness * _visibleFireCoef * _visibleFire * _nvgBrightnessCoef / 10 min 1; _visibleFireTime = _darkness * _visibleFireTimeCoef * _visibleFireTime * _nvgBrightnessCoef / 10 min 0.5; From 2cc1252f81d3b841dd001ca0bf30c01a15e38d7b Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 31 May 2016 20:00:45 +0200 Subject: [PATCH 254/268] Remove unused CfgInventoryGlobalVariable in movement and improve debugging --- .../movement/CfgInventoryGlobalVariable.hpp | 3 -- addons/movement/XEH_postInit.sqf | 3 +- addons/movement/config.cpp | 1 - addons/movement/functions/fnc_canClimb.sqf | 31 ++++++++++++++----- 4 files changed, 24 insertions(+), 14 deletions(-) delete mode 100644 addons/movement/CfgInventoryGlobalVariable.hpp diff --git a/addons/movement/CfgInventoryGlobalVariable.hpp b/addons/movement/CfgInventoryGlobalVariable.hpp deleted file mode 100644 index cf255952541..00000000000 --- a/addons/movement/CfgInventoryGlobalVariable.hpp +++ /dev/null @@ -1,3 +0,0 @@ -class CfgInventoryGlobalVariable { - maxSoldierLoad = 1200; -}; diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index d9179a912a3..7e64503fc6f 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -6,8 +6,7 @@ if (!hasInterface) exitWith {}; ["playerChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); ["playerInventoryChanged", FUNC(handleVirtualMass)] call FUNC(addEventHandler); -["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), -{ +["ACE3 Movement", QGVAR(climb), localize LSTRING(Climb), { // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific diff --git a/addons/movement/config.cpp b/addons/movement/config.cpp index 8ea42fbf0c9..d47040a0533 100644 --- a/addons/movement/config.cpp +++ b/addons/movement/config.cpp @@ -14,7 +14,6 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgFatigue.hpp" -//#include "CfgInventoryGlobalVariable.hpp" #include "CfgMoves.hpp" #include "CfgVehicles.hpp" #include "ACE_Settings.hpp" diff --git a/addons/movement/functions/fnc_canClimb.sqf b/addons/movement/functions/fnc_canClimb.sqf index ec4202dbd5b..260f76105b7 100644 --- a/addons/movement/functions/fnc_canClimb.sqf +++ b/addons/movement/functions/fnc_canClimb.sqf @@ -40,14 +40,29 @@ private _checkPos4end = _checkPos4beg vectorAdd (_dir vectorMultiply 1.3); private _checkPos5beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 1.5]; private _checkPos5end = _checkPos5beg vectorAdd (_dir vectorMultiply 1.3); -/* -drawLine3D [ASLToATL _checkPos0beg, ASLToATL _checkPos0end, [0,1,0,1]]; -drawLine3D [ASLToATL _checkPos1beg, ASLToATL _checkPos1end, [1,0,0,1]]; -drawLine3D [ASLToATL _checkPos2beg, ASLToATL _checkPos2end, [1,0.5,0.5,1]]; -drawLine3D [ASLToATL _checkPos3beg, ASLToATL _checkPos3end, [1,0.5,0.5,1]]; -drawLine3D [ASLToATL _checkPos4beg, ASLToATL _checkPos4end, [1,0.5,0.5,1]]; -drawLine3D [ASLToATL _checkPos5beg, ASLToATL _checkPos5end, [1,0.5,0.5,1]]; -*/ +#ifdef DEBUG_MODE_FULL + [{ + params ["_args", "_idPFH"]; + + if (diag_tickTime > (_args select 0) + 5) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + + drawLine3D [ASLToATL (_args select 1), ASLToATL (_args select 2), [0,1,0,1]]; + drawLine3D [ASLToATL (_args select 3), ASLToATL (_args select 4), [1,0,0,1]]; + drawLine3D [ASLToATL (_args select 5), ASLToATL (_args select 6), [1,0.5,0.5,1]]; + drawLine3D [ASLToATL (_args select 7), ASLToATL (_args select 8), [1,0.5,0.5,1]]; + drawLine3D [ASLToATL (_args select 9), ASLToATL (_args select 10), [1,0.5,0.5,1]]; + drawLine3D [ASLToATL (_args select 11), ASLToATL (_args select 12), [1,0.5,0.5,1]]; + }, 0, [ diag_tickTime, + _checkPos0beg, _checkPos0end, + _checkPos1beg, _checkPos1end, + _checkPos2beg, _checkPos2end, + _checkPos3beg, _checkPos3end, + _checkPos4beg, _checkPos4end, + _checkPos5beg, _checkPos5end + ]] call CBA_fnc_addPerFrameHandler; +#endif lineIntersects [_checkPos0beg, _checkPos0end] && {!(lineIntersects [_checkPos1beg, _checkPos1end])} From 021a123fc6d05d768a8c2e428a7bc95710a12078 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 5 Jun 2016 14:02:55 +0200 Subject: [PATCH 255/268] Fix selective UI in FFV slots, Properly fix config name check --- addons/ui/XEH_clientInit.sqf | 2 +- addons/ui/functions/fnc_setAdvancedElement.sqf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 23940d2fb28..cfbc31ffa0e 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -32,7 +32,7 @@ if (!hasInterface) exitWith {}; if (_name in ELEMENTS_BASIC) then { [false] call FUNC(setElements); } else { - if (isClass (configFile >> "ACE_UI" >> _name)) then { + if (isClass (configFile >> "ACE_UI" >> _name select [7])) then { [_name select [7], missionNamespace getVariable _name, true] call FUNC(setAdvancedElement); }; }; diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index 3f087d89748..956dc3db5be 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -29,8 +29,8 @@ private _config = configFile >> "ACE_UI" >> _element; // Exit if main vehicle type condition not fitting private _location = getNumber (_config >> "location"); // (0-both, 1-ground, 2-vehicle) -private _currentLocation = ACE_player == vehicle ACE_player; -if ((_currentLocation && _location == 2) || (!_currentLocation && _location == 1)) exitWith {false}; +private _canUseWeapon = ACE_player call CBA_fnc_canUseWeapon; +if ((_canUseWeapon && _location == 2) || (!_canUseWeapon && _location == 1)) exitWith {false}; private _idd = getNumber (_config >> "idd"); private _elements = getArray (_config >> "elements"); From be260e896b3433ab2c1a94fc131882ec4d858ec2 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 6 Jun 2016 17:22:17 +0200 Subject: [PATCH 256/268] animated reticle for spotting scope --- addons/spottingscope/CfgEventHandlers.hpp | 4 +- addons/spottingscope/CfgVehicles.hpp | 4 +- addons/spottingscope/RscInGameUI.hpp | 68 ++++++++++++++++++ addons/spottingscope/XEH_PREP.hpp | 1 + addons/spottingscope/config.cpp | 2 + addons/spottingscope/data/PSO_ring.paa | Bin 43940 -> 0 bytes addons/spottingscope/data/scopering.paa | Bin 49553 -> 0 bytes .../functions/fnc_animateReticle.sqf | 65 +++++++++++++++++ .../rsc/spotting_scope_body_co.paa | Bin 0 -> 140807 bytes .../rsc/spotting_scope_reticle_co.paa | Bin 0 -> 61673 bytes addons/spottingscope/script_component.hpp | 12 ++++ 11 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 addons/spottingscope/RscInGameUI.hpp delete mode 100644 addons/spottingscope/data/PSO_ring.paa delete mode 100644 addons/spottingscope/data/scopering.paa create mode 100644 addons/spottingscope/functions/fnc_animateReticle.sqf create mode 100644 addons/spottingscope/rsc/spotting_scope_body_co.paa create mode 100644 addons/spottingscope/rsc/spotting_scope_reticle_co.paa diff --git a/addons/spottingscope/CfgEventHandlers.hpp b/addons/spottingscope/CfgEventHandlers.hpp index 13d369b0975..b34b3ac0995 100644 --- a/addons/spottingscope/CfgEventHandlers.hpp +++ b/addons/spottingscope/CfgEventHandlers.hpp @@ -7,13 +7,13 @@ class Extended_PreStart_EventHandlers { class Extended_PreInit_EventHandlers { class ADDON { - init = QUOTE( call COMPILE_FILE(XEH_preInit) ); + init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; class Extended_PostInit_EventHandlers { class ADDON { - init = QUOTE( call COMPILE_FILE(XEH_postInit) ); + init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index f45173ae314..f5747660db0 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -68,6 +68,8 @@ class CfgVehicles { getOutAction = "GetOutLow"; class Turrets: Turrets { class MainTurret: MainTurret { + turretInfoType = QGVAR(RscUnitInfo_SpottingScope); + minTurn = -45; maxTurn = 45; initTurn = 0; @@ -78,7 +80,7 @@ class CfgVehicles { weapons[] = {}; magazines[] = {}; gunnerOpticsColor[] = {1,1,1,1}; - gunnerOpticsmodel = QPATHTOF(data\m144_optic.p3d); + gunnerOpticsmodel = "\A3\Weapons_F\empty"; //QPATHTOF(data\m144_optic.p3d); gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"}; gunnerOutOpticsShowCursor = 0; gunnerOpticsShowCursor = 0; diff --git a/addons/spottingscope/RscInGameUI.hpp b/addons/spottingscope/RscInGameUI.hpp new file mode 100644 index 00000000000..6d5dad7b1f3 --- /dev/null +++ b/addons/spottingscope/RscInGameUI.hpp @@ -0,0 +1,68 @@ + +class RscOpticsValue; +class RscMapControl; +class RscText; + +class RscInGameUI { + class RscUnitInfo; + class GVAR(RscUnitInfo_SpottingScope): RscUnitInfo { + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uinamespace setVariable [ARR_2(QUOTE(QUOTE(dlgSpottingScope)),_this select 0)]); + controls[] = {"CA_FOVMode","ScriptedReticleHelper","Body","Reticle","trippleHeadLeft","trippleHeadRight"}; // don't change this order + + class CA_FOVMode: RscOpticsValue { // idea by Taosenai. Apparently this can be used via isNil check to determine wheter the scope or the kolimator is used + idc = 154; + style = 2; + colorText[] = {0,0,0,0}; + x = 0; + y = 0; + w = 0; + h = 0; + }; + + class ScriptedReticleHelper: RscMapControl { + onDraw = QUOTE(ctrlParent (_this select 0) call FUNC(animateReticle)); + idc = -1; + w = 0; + h = 0; + }; + + class Reticle: RscText { + idc = IDC_RETICLE; + style = 48; + size = 0; + sizeEx = 1; + text = QPATHTOF(rsc\spotting_scope_body_co.paa); + colorText[] = {1,1,1,1}; + colorBackground[] = {0,0,0,0}; + x = POS_X; + y = POS_Y; + w = POS_W; + h = POS_H; + }; + + class Body: Reticle { + idc = IDC_BODY; + text = QPATHTOF(rsc\spotting_scope_reticle_co.paa); + x = POS_X; + y = POS_Y; + w = POS_W; + h = POS_H; + }; + + //These are just black side panels to cover the areas that the optics p3d doesn't cover + //It will ONLY effect tripple head users as (safezoneX == safeZoneXAbs) for everyone else + class trippleHeadLeft: RscText { + idc = IDC_BLACK_LEFT; + x = "safeZoneXAbs"; + Y = "safezoneY"; + W = "(safezoneX - safeZoneXAbs) * ((getResolution select 4)/(16/3))"; + H = "safeZoneH"; + colorBackground[] = {0,0,0,1}; + }; + + class trippleHeadRight: trippleHeadLeft { + idc = IDC_BLACK_RIGHT; + x = "safeZoneXAbs + safeZoneWAbs - (safezoneX - safeZoneXABS) * ((getResolution select 4)/(16/3))"; + }; + }; +}; diff --git a/addons/spottingscope/XEH_PREP.hpp b/addons/spottingscope/XEH_PREP.hpp index ebb99df96b8..98398723604 100644 --- a/addons/spottingscope/XEH_PREP.hpp +++ b/addons/spottingscope/XEH_PREP.hpp @@ -1,3 +1,4 @@ PREP(pickup); PREP(place); +PREP(animateReticle); diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index a92f91ec50a..f69e2d6fff2 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -17,3 +17,5 @@ class CfgPatches { #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" #include "CfgMoves.hpp" + +#include "RscInGameUI.hpp" diff --git a/addons/spottingscope/data/PSO_ring.paa b/addons/spottingscope/data/PSO_ring.paa deleted file mode 100644 index e1502aa5e202cb691b0193c61e019923841fe0da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43940 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 z 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 diff --git a/addons/spottingscope/data/scopering.paa b/addons/spottingscope/data/scopering.paa deleted file mode 100644 index ecf236b025d62563dde0ad6d53c1684f375a7c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49553 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

OiL4kh}-+(aUz!C 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 Mc`Ir^J9zj157p(Iu>b%7 diff --git a/addons/spottingscope/functions/fnc_animateReticle.sqf b/addons/spottingscope/functions/fnc_animateReticle.sqf new file mode 100644 index 00000000000..913a0bbd020 --- /dev/null +++ b/addons/spottingscope/functions/fnc_animateReticle.sqf @@ -0,0 +1,65 @@ +/* + * Author: commy2 + * Animate scripted reticle of spotting scope. + * + * Arguments: + * 0: Reticles RSC info display + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +disableSerialization; + +params ["_display"]; systemChat str _display; + +// check if optics are used +// hide all controls otherwise +private _isUsingOptic = ctrlShown (_display displayCtrl 154); + +(_display displayCtrl IDC_BLACK_LEFT) ctrlShow _isUsingOptic; +(_display displayCtrl IDC_BLACK_RIGHT) ctrlShow _isUsingOptic; + +// animate reticle +private _ctrlReticle = _display displayCtrl IDC_RETICLE; +private _ctrlBody = _display displayCtrl IDC_BODY; + +_ctrlReticle ctrlShow _isUsingOptic; +_ctrlBody ctrlShow _isUsingOptic; + + + +/* + +private _unit = call CBA_fnc_currentUnit; + +if (currentWeapon _unit != primaryWeapon _unit || {_scope != primaryWeaponItems _unit select 2}) exitWith { + _control ctrlShow false; + + [_this select 1] call CBA_fnc_removePerFrameHandler +}; + +if (cameraView != "GUNNER") exitWith { + _control ctrlShow false; +}; + +private ["_size", "_sizeX", "_sizeY"]; + +_size = ([0.5,0.5] distance worldToScreen positionCameraToWorld [0,1,1]) * (getResolution select 5); + +_sizeX = _size/4; +_sizeY = _sizeX*safezoneW/safezoneH; + +_control ctrlSetPosition [ + safezoneX+0.5*safezoneW-0.5*_sizeX, + safezoneY+0.5*safezoneH-0.5*_sizeY, + _sizeX, + _sizeY +]; +_control ctrlCommit 0; +_control ctrlShow true; + + diff --git a/addons/spottingscope/rsc/spotting_scope_body_co.paa b/addons/spottingscope/rsc/spotting_scope_body_co.paa new file mode 100644 index 0000000000000000000000000000000000000000..71e1984c6e5d4d2dadd226bf390b3c7b8ce739b3 GIT binary patch literal 140807 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 z�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

L(&;xb~>is}kw&G&`l>`jT+!Uh_(J5K-0V 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 literal 0 HcmV?d00001 diff --git a/addons/spottingscope/rsc/spotting_scope_reticle_co.paa b/addons/spottingscope/rsc/spotting_scope_reticle_co.paa new file mode 100644 index 0000000000000000000000000000000000000000..a2d299d937916c66d55776afc97d0572217d5753 GIT binary patch literal 61673 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%0Ax!Gpd+PPbP0Pkq=TXZ=E$)8VZ ztUv~YH(@eMO(ph7xkWHA@8LJ7HcD@OZVMQOV0!cWD0;0qWH?yGO9sQfut9r^>4pPn zIpNhes`z{|B)ppQlWLxP22ay(J$^}dqrA7gH*8>TV8nL+Y%{h!_xGFh?Jto||2Nn$ zL@-<{X3gE0NuGZ_oRu@WO2nM_1||p-cH*}#@M<8yU+aRDF*fq--p%@U6zH&27{a;= ze5>1*AeW~%<)%zEokXv!Stw==2Wy<|n~U&r*x+4ix?!lld?fdb>o&M-OarR_JWuDtIox3bJk9J22TaGo_l+kF*Ic>vkB8n4fVL zIcaJYm1%A=Xs-A2iOFLi2rw-_o_Z18pSgv3 zUh*NCf%Qga@hx-rGWgjG%5d66$WEt97s?iP2H<@uAW^>5lfs)s!)AAQR;E z8%(I*fx_+4vw1ufOfRuH8LJJuO)RmwnGv(wa;xFJxcqAH-knzs!QI%Ara=5rSx!M& z4hO@V62=x7H8r;tOx~Is(BXFhfW1E++I;#p0(53*K|Gpb+`@2x8EX@UF!~KO_{n8% zp*W;>K>_FWCTL(oJG~YX)^d*tN!JQAR~!Bjc#JUAGso1FU!IW{&U`eJdl2cJcVpah zA-4*@+5&$H6_1uEB)HKjQ3$k#TNAk4=FtaVl8H+&+##ZM8_L>DsH&CFsx55jx8Bt8 z0xD~1AFUqoGBrP(^&TNHcq5cmp%+W7Xn(#~)wYpb+8@qJ8I4cP4bBv$X7-~f&0p`= z7b0_6_|==7U=2UeyC6xYh|?Iw{ZCm`skiYR1XLS6m>rQ4?LuTba40=zZ56RC4eio z{02s=;J?WHvhnL<_%BlK0)Se+Lg_)pzeM3zEq$x_SMjgP|0`F&OVoV<`$gsdtD65u zzky#H@>CvG^j~%{`TppcT}nBHEZs0BTPaJx!ar*H3b6-O{+CGls-rfBOP_aTK@nlyVn% zu3q_gh116%T;Dx}v0w_m?UgG23Cb0CkaKcy_`4GKgEA5SvtsdI+Bj3?|0@^YgqF#{ z;g8UBG88_|V%(onc23@$c~#^84Fn8%39Ab}@HNY$->}cy^$oUn>l+yVT-Z^pjF0GV zjFcI!l!-jgDNNBSWy0V1QZv3z9Kko1N2e)eO<(eH`g9{~!MKfS_x7C*<2U6L{n8=D zaZD?o4B7Y~7^MgsLN9WEnGye>+~1<>l=kHQ=u?q0hOoBZy)^1S{Mzt*q@wK`gy)y= zn~jqsxoU9MWWM+&-q$K;7vuAuk~hDp_VkOzQ_aip9saKI*%xpmQYu=mJf~c0>2}{a zIk8(gdHT9J806ee@IQ3uv}v#~*$nJ;K+2PEn>Nipmn!Yn{(^JLmEFtE(m$2N*4NzH z*(|o*6&c?*0?)XTca`~n-S)opJi?V69R3hz$KO}>ft$k@oi;qRMh5Baw) zr|{_rf7&bYb%7W4QGAik@Zj+GP4q|FA_s@RuhL!$jQUo?lgy1A9R9w_{K&K9;P7`j zo=16JPWWHx&%WT>jei7-ba43ha==IK?egK{a`*RL-34r|5r8tWBg~Y!x#df=syzw`6z|}C}oWQT!jAPh=1r?N55SIQpT%} zPlmun!$akN31AluFB!a7j=oUwui{^||E?TlRP=9~Khh(H*+j$O z&Ml+7!mz{oh+F8~`{$O|N%b=$@(kyT&p-K?GT%5Td}>zVbMY{lgdtArJ4nhOw&^Ua zmC92!38a1|tJK#@?dc<7hv)WpZdn>{L16O1(#4Cr!E~F{=FRf2JwqwsO1?-f7!VhhJ^o=G7dvJIQ)A##v}I@ga57z|Em6x zo=Y?QvqviJC#*){haV$T%3a-GvGySHt7`vBxp%wh`zo{l2OhJRq5T`7|CH-%BVXdX z68ZgHepc!K+r|GJk+iIWrHdB3_nsrhmPlsIqKMg{G>DD=OVrrC)x?a9n$b(@(Tv2@ zrT?n_&Ycf?FImRU%~1O5y#&8r@X}ZBAK}@}48{2ovoV5?@_R{nbx`R~3xz8lDjc2y z_yPklBiY{A|HhdBcgtoZj*mP)Sg9|!r)MMObNX8X_}!M6-OnZUaoxQfTn4oHb0%)ef%|1MuJ@9=yS;s}q~3E*d)@nku0t7LPi356>9!a#+ItDU z&DZq-iOV5I3H`;IaY%oc)r|Y5`OgSO{79|>^$6LGbatQS*l`!0Ce}x?i;@|Qs_sF5 zJw+NMWSTIR oM9O4X*)X6n2dltvc~~q;RD@>=BoDmhX`_jpPb(TVO&;C<1IHu*@Bjb+ literal 0 HcmV?d00001 diff --git a/addons/spottingscope/script_component.hpp b/addons/spottingscope/script_component.hpp index 48f14b7398a..bb1484a2ad1 100644 --- a/addons/spottingscope/script_component.hpp +++ b/addons/spottingscope/script_component.hpp @@ -15,3 +15,15 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define IDC_RETICLE 10000 +#define IDC_BODY 10001 +#define IDC_BLACK_LEFT 10002 +#define IDC_BLACK_RIGHT 10003 + +#define SIZEX 0.75/(getResolution select 5) + +#define POS_X QUOTE(safezoneX + 0.5 * safezoneW - 0.5 * SIZEX) +#define POS_Y QUOTE(safezoneY + 0.5 * safezoneH - 0.5 * SIZEX * 4/3) +#define POS_W QUOTE(SIZEX) +#define POS_H QUOTE(SIZEX * 4/3) From cd43c17f80bc1bcb7de4d5915272abb3c62b2e65 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 6 Jun 2016 19:22:24 +0200 Subject: [PATCH 257/268] animate the scope --- addons/spottingscope/CfgVehicles.hpp | 3 +- addons/spottingscope/RscInGameUI.hpp | 9 ++-- .../functions/fnc_animateReticle.sqf | 41 +++++-------------- addons/spottingscope/script_component.hpp | 17 +++++--- 4 files changed, 28 insertions(+), 42 deletions(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index f5747660db0..d9c54bf7163 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -66,9 +66,10 @@ class CfgVehicles { transportSoldier = 0; getInAction = "GetInLow"; getOutAction = "GetOutLow"; + opticsDisablePeripherialVision = 1; class Turrets: Turrets { class MainTurret: MainTurret { - turretInfoType = QGVAR(RscUnitInfo_SpottingScope); + turretInfoType = QGVAR(RscUnitInfo); minTurn = -45; maxTurn = 45; diff --git a/addons/spottingscope/RscInGameUI.hpp b/addons/spottingscope/RscInGameUI.hpp index 6d5dad7b1f3..3c1a131a994 100644 --- a/addons/spottingscope/RscInGameUI.hpp +++ b/addons/spottingscope/RscInGameUI.hpp @@ -5,9 +5,8 @@ class RscText; class RscInGameUI { class RscUnitInfo; - class GVAR(RscUnitInfo_SpottingScope): RscUnitInfo { - onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uinamespace setVariable [ARR_2(QUOTE(QUOTE(dlgSpottingScope)),_this select 0)]); - controls[] = {"CA_FOVMode","ScriptedReticleHelper","Body","Reticle","trippleHeadLeft","trippleHeadRight"}; // don't change this order + class GVAR(RscUnitInfo): RscUnitInfo { + controls[] = {"CA_FOVMode","ScriptedReticleHelper","Reticle","Body","trippleHeadLeft","trippleHeadRight"}; // don't change this order class CA_FOVMode: RscOpticsValue { // idea by Taosenai. Apparently this can be used via isNil check to determine wheter the scope or the kolimator is used idc = 154; @@ -31,7 +30,7 @@ class RscInGameUI { style = 48; size = 0; sizeEx = 1; - text = QPATHTOF(rsc\spotting_scope_body_co.paa); + text = QPATHTOF(rsc\spotting_scope_reticle_co.paa); colorText[] = {1,1,1,1}; colorBackground[] = {0,0,0,0}; x = POS_X; @@ -42,7 +41,7 @@ class RscInGameUI { class Body: Reticle { idc = IDC_BODY; - text = QPATHTOF(rsc\spotting_scope_reticle_co.paa); + text = QPATHTOF(rsc\spotting_scope_body_co.paa); x = POS_X; y = POS_Y; w = POS_W; diff --git a/addons/spottingscope/functions/fnc_animateReticle.sqf b/addons/spottingscope/functions/fnc_animateReticle.sqf index 913a0bbd020..927ff8a01e0 100644 --- a/addons/spottingscope/functions/fnc_animateReticle.sqf +++ b/addons/spottingscope/functions/fnc_animateReticle.sqf @@ -14,7 +14,9 @@ disableSerialization; -params ["_display"]; systemChat str _display; +params ["_display"]; + +//uinamespace setVariable [QGVAR(dlgSpottingScope), _display]; // check if optics are used // hide all controls otherwise @@ -30,36 +32,13 @@ private _ctrlBody = _display displayCtrl IDC_BODY; _ctrlReticle ctrlShow _isUsingOptic; _ctrlBody ctrlShow _isUsingOptic; +private _zoom = ([] call EFUNC(common,getZoom)) * MAGIC_SCOPE_NUMBER; - -/* - -private _unit = call CBA_fnc_currentUnit; - -if (currentWeapon _unit != primaryWeapon _unit || {_scope != primaryWeaponItems _unit select 2}) exitWith { - _control ctrlShow false; - - [_this select 1] call CBA_fnc_removePerFrameHandler -}; - -if (cameraView != "GUNNER") exitWith { - _control ctrlShow false; -}; - -private ["_size", "_sizeX", "_sizeY"]; - -_size = ([0.5,0.5] distance worldToScreen positionCameraToWorld [0,1,1]) * (getResolution select 5); - -_sizeX = _size/4; -_sizeY = _sizeX*safezoneW/safezoneH; - -_control ctrlSetPosition [ - safezoneX+0.5*safezoneW-0.5*_sizeX, - safezoneY+0.5*safezoneH-0.5*_sizeY, - _sizeX, - _sizeY +_ctrlReticle ctrlSetPosition [ + POS_X_BASE(_zoom), + POS_Y_BASE(_zoom), + POS_W_BASE(_zoom), + POS_H_BASE(_zoom) ]; -_control ctrlCommit 0; -_control ctrlShow true; - +_ctrlReticle ctrlCommit 0; diff --git a/addons/spottingscope/script_component.hpp b/addons/spottingscope/script_component.hpp index bb1484a2ad1..4149364d92a 100644 --- a/addons/spottingscope/script_component.hpp +++ b/addons/spottingscope/script_component.hpp @@ -21,9 +21,16 @@ #define IDC_BLACK_LEFT 10002 #define IDC_BLACK_RIGHT 10003 -#define SIZEX 0.75/(getResolution select 5) +#define MAGIC_SCOPE_NUMBER 0.0775 -#define POS_X QUOTE(safezoneX + 0.5 * safezoneW - 0.5 * SIZEX) -#define POS_Y QUOTE(safezoneY + 0.5 * safezoneH - 0.5 * SIZEX * 4/3) -#define POS_W QUOTE(SIZEX) -#define POS_H QUOTE(SIZEX * 4/3) +#define POS_X_BASE(size) safezoneX + 0.5 * safezoneW - 0.5 * (size) * (getResolution select 5) +#define POS_Y_BASE(size) safezoneY + 0.5 * safezoneH - 0.5 * (size) * (getResolution select 5) * 4/3 +#define POS_W_BASE(size) (size) * (getResolution select 5) +#define POS_H_BASE(size) (size) * (getResolution select 5) * 4/3 + +#define SIZEX 3.5 + +#define POS_X QUOTE(POS_X_BASE(SIZEX)) +#define POS_Y QUOTE(POS_Y_BASE(SIZEX)) +#define POS_W QUOTE(POS_W_BASE(SIZEX)) +#define POS_H QUOTE(POS_H_BASE(SIZEX)) From 36d0b78811244dedcbdf43916eb5c66bee70f914 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 6 Jun 2016 21:36:29 +0200 Subject: [PATCH 258/268] coeficient handling interface sizes was inverted --- addons/spottingscope/script_component.hpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/spottingscope/script_component.hpp b/addons/spottingscope/script_component.hpp index 4149364d92a..0a730e13d66 100644 --- a/addons/spottingscope/script_component.hpp +++ b/addons/spottingscope/script_component.hpp @@ -21,14 +21,15 @@ #define IDC_BLACK_LEFT 10002 #define IDC_BLACK_RIGHT 10003 -#define MAGIC_SCOPE_NUMBER 0.0775 +#define MAGIC_SCOPE_NUMBER 0.0235 +//#define MAGIC_SCOPE_NUMBER (uiNamespace getVariable ['magic', 1]) -#define POS_X_BASE(size) safezoneX + 0.5 * safezoneW - 0.5 * (size) * (getResolution select 5) -#define POS_Y_BASE(size) safezoneY + 0.5 * safezoneH - 0.5 * (size) * (getResolution select 5) * 4/3 -#define POS_W_BASE(size) (size) * (getResolution select 5) -#define POS_H_BASE(size) (size) * (getResolution select 5) * 4/3 +#define POS_X_BASE(size) safezoneX + 0.5 * safezoneW - 0.5 * (size) / (getResolution select 5) +#define POS_Y_BASE(size) safezoneY + 0.5 * safezoneH - 0.5 * (size) / (getResolution select 5) * 4/3 +#define POS_W_BASE(size) (size) / (getResolution select 5) +#define POS_H_BASE(size) (size) / (getResolution select 5) * 4/3 -#define SIZEX 3.5 +#define SIZEX 1.05 #define POS_X QUOTE(POS_X_BASE(SIZEX)) #define POS_Y QUOTE(POS_Y_BASE(SIZEX)) From 6a5c9cfca758ce55e5e387bfe17a83d4faf46a97 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 6 Jun 2016 23:14:19 +0200 Subject: [PATCH 259/268] black periphery --- addons/spottingscope/CfgVehicles.hpp | 119 +++++++++--------- addons/spottingscope/RscInGameUI.hpp | 7 +- .../functions/fnc_animateReticle.sqf | 16 +-- 3 files changed, 75 insertions(+), 67 deletions(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index d9c54bf7163..2d04c0c73e1 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -1,5 +1,5 @@ -class CBA_Extended_EventHandlers; +class CBA_Extended_EventHandlers_base; class CfgVehicles { class Man; @@ -18,43 +18,48 @@ class CfgVehicles { }; }; - class Item_Base_F; - class ACE_Item_SpottingScope: Item_Base_F { - author[] = {"Rocko", "Scubaman3D"}; - scope = 2; - scopeCurator = 2; - displayName = CSTRING(DisplayName); - vehicleClass = "Items"; - class TransportItems { - MACRO_ADDITEM(ACE_SpottingScope,1); - }; - }; - - class Box_NATO_Support_F; - class ACE_Box_Misc: Box_NATO_Support_F { - class TransportItems { - MACRO_ADDITEM(ACE_SpottingScope,2); - }; - }; - class LandVehicle; class StaticWeapon: LandVehicle { class Turrets; class ACE_Actions { - class ACE_MainActions {}; + class ACE_MainActions; }; }; + class StaticATWeapon: StaticWeapon { class Turrets: Turrets { class MainTurret; }; - class ACE_Actions: ACE_Actions{ + + class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions {}; }; }; + class ACE_SpottingScopeObject: StaticATWeapon { + EGVAR(dragging,canDrag) = 1; + EGVAR(dragging,dragPosition)[] = {0,1,0}; + EGVAR(dragging,dragDirection) = 0; + + class ACE_Actions: ACE_Actions{ + class ACE_MainActions: ACE_MainActions { + selection = "main_turret"; + class ACE_Pickup { + selection = ""; + displayName = CSTRING(PickUp); + distance = 5; + condition = QUOTE((alive _target) && (count (crew _target) == 0)); + statement = QUOTE([ARR_2(_target,_player)] call FUNC(pickup)); + showDisabled = 0; + exceptions[] = {}; + priority = 5; + icon = QPATHTOF(UI\w_spottingscope_ca.paa); + }; + }; + }; + class EventHandlers { - class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; }; scope = 1; @@ -66,11 +71,9 @@ class CfgVehicles { transportSoldier = 0; getInAction = "GetInLow"; getOutAction = "GetOutLow"; - opticsDisablePeripherialVision = 1; + class Turrets: Turrets { class MainTurret: MainTurret { - turretInfoType = QGVAR(RscUnitInfo); - minTurn = -45; maxTurn = 45; initTurn = 0; @@ -78,18 +81,6 @@ class CfgVehicles { maxElev = 40; initElev = 0; - weapons[] = {}; - magazines[] = {}; - gunnerOpticsColor[] = {1,1,1,1}; - gunnerOpticsmodel = "\A3\Weapons_F\empty"; //QPATHTOF(data\m144_optic.p3d); - gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"}; - gunnerOutOpticsShowCursor = 0; - gunnerOpticsShowCursor = 0; - gunnerAction = "ACE_SpottingScope"; - gunnerGetInAction = "GetInLow"; - gunnerGetOutAction = "GetOutLow"; - gunnerForceOptics = 0; - ejectDeadGunner = 0; class ViewGunner { initAngleX = 5; minAngleX = -30; @@ -101,6 +92,7 @@ class CfgVehicles { minFov = 0.25; maxFov = 1.25; }; + class ViewOptics { initAngleX = 0; minAngleX = -30; @@ -112,26 +104,41 @@ class CfgVehicles { maxFov = 0.05; initFov= 0.05; }; + + weapons[] = {}; + magazines[] = {}; + gunnerOpticsColor[] = {1,1,1,1}; + gunnerOpticsModel = "\A3\Weapons_F\empty"; //QPATHTOF(data\m144_optic.p3d); + gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"}; + gunnerOutOpticsShowCursor = 0; + gunnerOpticsShowCursor = 0; + gunnerAction = "ACE_SpottingScope"; + gunnerGetInAction = "GetInLow"; + gunnerGetOutAction = "GetOutLow"; + gunnerForceOptics = 0; + ejectDeadGunner = 0; + turretInfoType = QGVAR(RscUnitInfo); + opticsDisablePeripherialVision = 1; }; }; - EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition)[] = {0,1,0}; - EGVAR(dragging,dragDirection) = 0; - class ACE_Actions: ACE_Actions{ - class ACE_MainActions: ACE_MainActions { - selection = "main_turret"; - class ACE_Pickup { - selection = ""; - displayName = CSTRING(PickUp); - distance = 5; - condition = QUOTE((alive _target) && (count (crew _target) == 0)); - statement = QUOTE([ARR_2(_target,_player)] call FUNC(pickup)); - showDisabled = 0; - exceptions[] = {}; - priority = 5; - icon = QPATHTOF(UI\w_spottingscope_ca.paa); - }; - }; + }; + + class Item_Base_F; + class ACE_Item_SpottingScope: Item_Base_F { + author[] = {"Rocko", "Scubaman3D"}; + scope = 2; + scopeCurator = 2; + displayName = CSTRING(DisplayName); + vehicleClass = "Items"; + class TransportItems { + MACRO_ADDITEM(ACE_SpottingScope,1); + }; + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_SpottingScope,2); }; }; }; diff --git a/addons/spottingscope/RscInGameUI.hpp b/addons/spottingscope/RscInGameUI.hpp index 3c1a131a994..68568fdbf83 100644 --- a/addons/spottingscope/RscInGameUI.hpp +++ b/addons/spottingscope/RscInGameUI.hpp @@ -6,7 +6,8 @@ class RscText; class RscInGameUI { class RscUnitInfo; class GVAR(RscUnitInfo): RscUnitInfo { - controls[] = {"CA_FOVMode","ScriptedReticleHelper","Reticle","Body","trippleHeadLeft","trippleHeadRight"}; // don't change this order + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscUnitInfo"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); {((_this select 0) displayCtrl _x) ctrlShow false} forEach [ARR_4(IDC_RETICLE,IDC_BODY,IDC_BLACK_LEFT,IDC_BLACK_RIGHT)]); + controls[] = {"CA_FOVMode","ScriptedReticleHelper","trippleHeadLeft","trippleHeadRight","Reticle","Body"}; // don't change this order class CA_FOVMode: RscOpticsValue { // idea by Taosenai. Apparently this can be used via isNil check to determine wheter the scope or the kolimator is used idc = 154; @@ -54,14 +55,14 @@ class RscInGameUI { idc = IDC_BLACK_LEFT; x = "safeZoneXAbs"; Y = "safezoneY"; - W = "(safezoneX - safeZoneXAbs) * ((getResolution select 4)/(16/3))"; + W = "(-safeZoneX - safeZoneXAbs) * ((getResolution select 4)/(16/3))"; H = "safeZoneH"; colorBackground[] = {0,0,0,1}; }; class trippleHeadRight: trippleHeadLeft { idc = IDC_BLACK_RIGHT; - x = "safeZoneXAbs + safeZoneWAbs - (safezoneX - safeZoneXABS) * ((getResolution select 4)/(16/3))"; + x = "safeZoneXAbs + safeZoneWAbs - (-safeZoneX - safeZoneXABS) * ((getResolution select 4)/(16/3))"; }; }; }; diff --git a/addons/spottingscope/functions/fnc_animateReticle.sqf b/addons/spottingscope/functions/fnc_animateReticle.sqf index 927ff8a01e0..16dba2165c4 100644 --- a/addons/spottingscope/functions/fnc_animateReticle.sqf +++ b/addons/spottingscope/functions/fnc_animateReticle.sqf @@ -15,23 +15,23 @@ disableSerialization; params ["_display"]; - //uinamespace setVariable [QGVAR(dlgSpottingScope), _display]; +private _ctrlReticle = _display displayCtrl IDC_RETICLE; +private _ctrlBody = _display displayCtrl IDC_BODY; +private _ctrlBlackLeft = _display displayCtrl IDC_BLACK_LEFT; +private _ctrlBlackRight = _display displayCtrl IDC_BLACK_RIGHT; + // check if optics are used // hide all controls otherwise private _isUsingOptic = ctrlShown (_display displayCtrl 154); -(_display displayCtrl IDC_BLACK_LEFT) ctrlShow _isUsingOptic; -(_display displayCtrl IDC_BLACK_RIGHT) ctrlShow _isUsingOptic; - -// animate reticle -private _ctrlReticle = _display displayCtrl IDC_RETICLE; -private _ctrlBody = _display displayCtrl IDC_BODY; - _ctrlReticle ctrlShow _isUsingOptic; _ctrlBody ctrlShow _isUsingOptic; +_ctrlBlackLeft ctrlShow _isUsingOptic; +_ctrlBlackRight ctrlShow _isUsingOptic; +// animate reticle private _zoom = ([] call EFUNC(common,getZoom)) * MAGIC_SCOPE_NUMBER; _ctrlReticle ctrlSetPosition [ From 12ab4e9fa6f1a980c7d78a9a2797d04920ab4db8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 6 Jun 2016 23:33:00 +0200 Subject: [PATCH 260/268] match controls at boarder --- addons/spottingscope/RscInGameUI.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/spottingscope/RscInGameUI.hpp b/addons/spottingscope/RscInGameUI.hpp index 68568fdbf83..54f3ebafa26 100644 --- a/addons/spottingscope/RscInGameUI.hpp +++ b/addons/spottingscope/RscInGameUI.hpp @@ -55,14 +55,14 @@ class RscInGameUI { idc = IDC_BLACK_LEFT; x = "safeZoneXAbs"; Y = "safezoneY"; - W = "(-safeZoneX - safeZoneXAbs) * ((getResolution select 4)/(16/3))"; - H = "safeZoneH"; + w = QUOTE(POS_X_BASE(SIZEX) - safeZoneXAbs); + h = "safeZoneH"; colorBackground[] = {0,0,0,1}; }; class trippleHeadRight: trippleHeadLeft { idc = IDC_BLACK_RIGHT; - x = "safeZoneXAbs + safeZoneWAbs - (-safeZoneX - safeZoneXABS) * ((getResolution select 4)/(16/3))"; + x = QUOTE(safeZoneXAbs + safeZoneWAbs - (POS_X_BASE(SIZEX) - safeZoneXABS)); }; }; }; From f5a96ac2fc6149243591e3bb44258fa0d54bfb52 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 7 Jun 2016 00:17:04 +0200 Subject: [PATCH 261/268] add editor stuff for spotting scope --- addons/spottingscope/CfgVehicles.hpp | 29 +++++++++++++++++++ addons/spottingscope/config.cpp | 3 +- .../functions/fnc_animateReticle.sqf | 2 +- addons/spottingscope/stringtable.xml | 12 ++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 2d04c0c73e1..c2271569776 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -62,6 +62,7 @@ class CfgVehicles { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers_base {}; }; + author = ECSTRING(common,ACETeam); scope = 1; side = 1; typicalCargo[] = {"Soldier"}; @@ -71,6 +72,7 @@ class CfgVehicles { transportSoldier = 0; getInAction = "GetInLow"; getOutAction = "GetOutLow"; + editorSubcategory = "EdSubcat_Turrets"; class Turrets: Turrets { class MainTurret: MainTurret { @@ -123,6 +125,33 @@ class CfgVehicles { }; }; + class ACE_B_SpottingScope: ACE_SpottingScopeObject { + author = ECSTRING(common,ACETeam); + _generalMacro = "ACE_B_SpottingScope"; + scope = 2; + side = 1; + faction = "BLU_F"; + crew = "B_spotter_F"; + }; + + class ACE_O_SpottingScope: ACE_SpottingScopeObject { + author = ECSTRING(common,ACETeam); + _generalMacro = "ACE_O_SpottingScope"; + scope = 2; + side = 0; + faction = "OPF_F"; + crew = "O_spotter_F"; + }; + + class ACE_I_SpottingScope: ACE_SpottingScopeObject { + author = ECSTRING(common,ACETeam); + _generalMacro = "ACE_I_SpottingScope"; + scope = 2; + side = 2; + faction = "IND_F"; + crew = "I_spotter_F"; + }; + class Item_Base_F; class ACE_Item_SpottingScope: Item_Base_F { author[] = {"Rocko", "Scubaman3D"}; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index f69e2d6fff2..38493826905 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -2,7 +2,8 @@ class CfgPatches { class ADDON { - units[] = {"ACE_Item_SpottingScope"}; + name = CSTRING(component); + units[] = {"ACE_B_SpottingScope", "ACE_O_SpottingScope", "ACE_I_SpottingScope", "ACE_Item_SpottingScope"}; weapons[] = {"ACE_SpottingScope"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_interaction"}; diff --git a/addons/spottingscope/functions/fnc_animateReticle.sqf b/addons/spottingscope/functions/fnc_animateReticle.sqf index 16dba2165c4..109d81a2b98 100644 --- a/addons/spottingscope/functions/fnc_animateReticle.sqf +++ b/addons/spottingscope/functions/fnc_animateReticle.sqf @@ -15,7 +15,7 @@ disableSerialization; params ["_display"]; -//uinamespace setVariable [QGVAR(dlgSpottingScope), _display]; +uinamespace setVariable [QGVAR(dlgSpottingScope), _display]; private _ctrlReticle = _display displayCtrl IDC_RETICLE; private _ctrlBody = _display displayCtrl IDC_BODY; diff --git a/addons/spottingscope/stringtable.xml b/addons/spottingscope/stringtable.xml index 3a0b89b857f..3df7c05ec50 100644 --- a/addons/spottingscope/stringtable.xml +++ b/addons/spottingscope/stringtable.xml @@ -1,6 +1,18 @@  + + Advanced Combat Environment 3 - Spotting Scope + Advanced Combat Environment 3 - Teleskop + Advanced Combat Environment 3 - Зрительная труба + Advanced Combat Environment 3 - Teleskop + Advanced Combat Environment 3 - Telescopio + Advanced Combat Environment 3 - Téléscope de visée + Advanced Combat Environment 3 - Zaměřovací dalekohled + Advanced Combat Environment 3 - Spotting Scope + Advanced Combat Environment 3 - Megfigyelő távcső + Advanced Combat Environment 3 - Luneta de observador + Spotting Scope Teleskop From 3ee10a8c2fd391ba736fd22be9a591bba3cbe399 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 7 Jun 2016 00:28:09 +0200 Subject: [PATCH 262/268] add gunner proxy to FIRE GEO LOD and add it to a component --- .../spottingscope/data/ace_spottingscope.p3d | Bin 4043914 -> 4032102 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/spottingscope/data/ace_spottingscope.p3d b/addons/spottingscope/data/ace_spottingscope.p3d index fc6bc45354b1cb7c218544be7430fe9cc17ceafe..98cfab6a542fc0d590127029b79c16029e97c3e1 100644 GIT binary patch delta 4572 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 eKWM{;1Q}>xOHB&?eHmk;j4kw$Ii< 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 From 5135d3bedde63f788dcc97c635afc8935c674546 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 7 Jun 2016 00:36:41 +0200 Subject: [PATCH 263/268] delete duplicate files --- addons/spottingscope/data/sniper_peri.rvmat | 78 ----------------- addons/spottingscope/data/sniper_peri_co.paa | Bin 246791 -> 0 bytes .../spottingscope/data/sniper_peri_nohq.paa | Bin 49695 -> 0 bytes .../spottingscope/data/sniper_peri_smdi.paa | Bin 225091 -> 0 bytes addons/spottingscope/data/spot_scope.rvmat | 78 ----------------- addons/spottingscope/data/spot_scope_co.paa | Bin 96767 -> 0 bytes addons/spottingscope/data/spot_scope_nohq.paa | Bin 128338 -> 0 bytes addons/spottingscope/data/spot_scope_smdi.paa | Bin 47602 -> 0 bytes .../data/spot_scope_tripod.rvmat | 79 ------------------ addons/spottingscope/data/spottingscope.p3d | Bin 1585552 -> 0 bytes 10 files changed, 235 deletions(-) delete mode 100644 addons/spottingscope/data/sniper_peri.rvmat delete mode 100644 addons/spottingscope/data/sniper_peri_co.paa delete mode 100644 addons/spottingscope/data/sniper_peri_nohq.paa delete mode 100644 addons/spottingscope/data/sniper_peri_smdi.paa delete mode 100644 addons/spottingscope/data/spot_scope.rvmat delete mode 100644 addons/spottingscope/data/spot_scope_co.paa delete mode 100644 addons/spottingscope/data/spot_scope_nohq.paa delete mode 100644 addons/spottingscope/data/spot_scope_smdi.paa delete mode 100644 addons/spottingscope/data/spot_scope_tripod.rvmat delete mode 100644 addons/spottingscope/data/spottingscope.p3d diff --git a/addons/spottingscope/data/sniper_peri.rvmat b/addons/spottingscope/data/sniper_peri.rvmat deleted file mode 100644 index 35069be2678..00000000000 --- a/addons/spottingscope/data/sniper_peri.rvmat +++ /dev/null @@ -1,78 +0,0 @@ -ambient[] = {1.0, 1.0, 1.0, 1.0}; -diffuse[] = {1.0, 1.0, 1.0, 1.0}; -forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0}; -emmisive[] = {0.0, 0.0, 0.0, 1.0}; -specular[] = {0.0, 0.0, 0.0, 0.0}; -specularPower = 0.0; -PixelShaderID = "Super"; -VertexShaderID = "Super"; -class Stage1 { - texture = "z\ace\addons\spottingscope\data\sniper_peri_nohq.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage2 { - texture = "z\ace\addons\apl\data\metal4_weapons_vehicles_int_512_dt.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {6.0, 0.0, 0.0}; - up[] = {0.0, 6.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage3 { - texture = "#(argb,8,8,3)color(0,0,0,0)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,0}; - pos[] = {0,0,0}; - }; -}; -class Stage4 { - texture = "#(argb,8,8,3)color(0,1,1,1)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage5 { - texture = "z\ace\addons\spottingscope\data\sniper_peri_smdi.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage6 { - texture = "#(ai,32,128,1)fresnel(1.58,0.01)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage7 { - texture = "a3\data_f\env_land_co.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; diff --git a/addons/spottingscope/data/sniper_peri_co.paa b/addons/spottingscope/data/sniper_peri_co.paa deleted file mode 100644 index 6466dc6d82e578200dcbb62764b8c7d115a52456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246791 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%0D;qQ%Y2TT0>bv8 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 diff --git a/addons/spottingscope/data/sniper_peri_nohq.paa b/addons/spottingscope/data/sniper_peri_nohq.paa deleted file mode 100644 index cc84eab64dda1623a8f1486524255d092c0b6ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49695 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

ZN_KH)rER04S#!|5*d|1MAkd)inq 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�s}Hhxv&ha4lSy!B|wLR9RIz;hogEvG}urtayo7B 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 G{QeK$ga#x4 diff --git a/addons/spottingscope/data/spot_scope.rvmat b/addons/spottingscope/data/spot_scope.rvmat deleted file mode 100644 index 294d3a75b29..00000000000 --- a/addons/spottingscope/data/spot_scope.rvmat +++ /dev/null @@ -1,78 +0,0 @@ -ambient[] = {1.0, 1.0, 1.0, 1.0}; -diffuse[] = {1.0, 1.0, 1.0, 1.0}; -forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0}; -emmisive[] = {0.0, 0.0, 0.0, 1.0}; -specular[] = {0.0, 0.0, 0.0, 0.0}; -specularPower = 0.0; -PixelShaderID = "Super"; -VertexShaderID = "Super"; -class Stage1 { - texture = "z\ace\addons\spottingscope\data\spot_scope_nohq.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage2 { - texture = "z\ace\addons\apl\data\plastic_512_dt.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {6.0, 0.0, 0.0}; - up[] = {0.0, 6.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage3 { - texture = "#(argb,8,8,3)color(0,0,0,0)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,0}; - pos[] = {0,0,0}; - }; -}; -class Stage4 { - texture = "#(argb,8,8,3)color(0,1,1,1)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage5 { - texture = "z\ace\addons\spottingscope\data\spot_scope_smdi.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage6 { - texture = "#(ai,32,128,1)fresnel(1.58,0.01)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage7 { - texture = "a3\data_f\env_land_co.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; diff --git a/addons/spottingscope/data/spot_scope_co.paa b/addons/spottingscope/data/spot_scope_co.paa deleted file mode 100644 index c0168053a3d6604f26ecd5b21da84c3b389ad34d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96767 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

Ehb>Q}sF~`)+p^^n3hI3S6zwp1BYl?(U`!t`$_Z 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 diff --git a/addons/spottingscope/data/spot_scope_nohq.paa b/addons/spottingscope/data/spot_scope_nohq.paa deleted file mode 100644 index 674ad1d0ec8fcd2000bd47bd376b4d81a6125b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128338 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

Rr|5g!!bu0kTP73g*R5C!5H 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 diff --git a/addons/spottingscope/data/spot_scope_smdi.paa b/addons/spottingscope/data/spot_scope_smdi.paa deleted file mode 100644 index b6e2d763fe289e9799f5f27bc346154963e05ddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47602 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 diff --git a/addons/spottingscope/data/spot_scope_tripod.rvmat b/addons/spottingscope/data/spot_scope_tripod.rvmat deleted file mode 100644 index 0403471e5a1..00000000000 --- a/addons/spottingscope/data/spot_scope_tripod.rvmat +++ /dev/null @@ -1,79 +0,0 @@ -ambient[] = {1.0, 1.0, 1.0, 1.0}; -diffuse[] = {1.0, 1.0, 1.0, 1.0}; -forcedDiffuse[] = {0.0, 0.0, 0.0, 0.0}; -emmisive[] = {0.0, 0.0, 0.0, 1.0}; -specular[] = {0.0, 0.0, 0.0, 0.0}; -specularPower = 0.0; -PixelShaderID = "Super"; -VertexShaderID = "Super"; -class Stage1 { - texture = "z\ace\addons\spottingscope\data\spot_scope_nohq.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage2 { - texture = "z\ace\addons\apl\data\metal4_weapons_vehicles_int_512_dt.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {6.0, 0.0, 0.0}; - up[] = {0.0, 6.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage3 { - texture = "#(argb,8,8,3)color(0,0,0,0)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1,0,0}; - up[] = {0,1,0}; - dir[] = {0,0,0}; - pos[] = {0,0,0}; - }; -}; -class Stage4 { - texture = "#(argb,8,8,3)color(0,1,1,1)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; -class Stage5 { - texture = "z\ace\addons\spottingscope\data\spot_scope_smdi.paa"; - uvSource="tex"; - class uvTransform { - aside[]={1,0,0}; - up[]={0,1,0}; - dir[]={0,0,0}; - pos[]={0,0,0}; - }; -}; -class Stage6 { - texture = "#(ai,32,128,1)fresnel(1.58,0.01)"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; - -class Stage7 { - texture = "a3\data_f\env_land_co.paa"; - uvSource = "tex"; - class uvTransform { - aside[] = {1.0, 0.0, 0.0}; - up[] = {0.0, 1.0, 0.0}; - dir[] = {0.0, 0.0, 0.0}; - pos[] = {0.0, 0.0, 0.0}; - }; -}; diff --git a/addons/spottingscope/data/spottingscope.p3d b/addons/spottingscope/data/spottingscope.p3d deleted file mode 100644 index fba9d66b913cf18b1cfef9b7e191808ce19c91d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1585552 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 z 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

SwvO`r{trt}CLS^u)V_KDq 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%0DEeciRwMn3-T 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�-id#Ogk!99bxk>iL( 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 Date: Tue, 7 Jun 2016 00:51:06 +0200 Subject: [PATCH 264/268] Move Defuse action to main action --- addons/explosives/CfgVehicles.hpp | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 68d0ac14272..dcfb01c4891 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -44,31 +44,24 @@ class CfgVehicles { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; }; - author = "ACE"; + author = ECSTRING(common,Author); _generalMacro = "ACE_DefuseObject"; displayName = "ACE Defuse Helper"; - mapSize = 0.2; - icon = "iconObject_1x2"; model = "\A3\Weapons_f\dummyweapon.p3d"; scope = 1; - vehicleClass = "Cargo"; + class ACE_Actions { - class ACE_MainActions { - selection = ""; + class ACE_Defuse { distance = 1; - condition = "true"; - class ACE_Defuse { - displayName = CSTRING(Defuse); - condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse)); - statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse);); - exceptions[] = {"isNotSwimming"}; - showDisabled = 0; - icon = QPATHTOF(UI\Defuse_ca.paa); - priority = 0.8; - }; + displayName = CSTRING(Defuse); + condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse)); + statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse);); + exceptions[] = {"isNotSwimming"}; + icon = QPATHTOF(UI\Defuse_ca.paa); }; }; }; + class ACE_Explosives_Place: Items_base_F { class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; From 89db8bef5a3121a63e879d799fe4d259b4aedc78 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 7 Jun 2016 02:22:53 +0200 Subject: [PATCH 265/268] Fix wind info keybind string --- addons/weather/XEH_postInit.sqf | 5 +++-- addons/weather/stringtable.xml | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf index f085217c567..f8a5b49267c 100644 --- a/addons/weather/XEH_postInit.sqf +++ b/addons/weather/XEH_postInit.sqf @@ -29,7 +29,7 @@ GVAR(ACE_rain) = rain; }; GVAR(WindInfo) = false; -["ACE3 Common", QGVAR(WindInfoKey), localize LSTRING(WindInfoKey), +["ACE3 Common", QGVAR(WindInfoKey), localize LSTRING(WindInfoKeyToggle), { // Conditions: canInteract if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; @@ -39,7 +39,8 @@ GVAR(WindInfo) = false; }, {false}, [37, [true, false, false]], false, 0] call CBA_fnc_addKeybind; // (SHIFT + K) -["ACE3 Common", QGVAR(WindInfoKey_hold), localize LSTRING(WindInfoKey_hold), + +["ACE3 Common", QGVAR(WindInfoKey_hold), localize LSTRING(WindInfoKeyHold), { // Conditions: canInteract if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 571fa9c25aa..908e73ea3d2 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -1,7 +1,7 @@  - + Show Wind Info Pokaż inf. o wietrze Показать информацию о ветре @@ -13,7 +13,7 @@ Zobrazit údaje o větru Mostrar informação do vento - + Show Wind Info (Toggle) Pokaż inf. o wietrze (przełącz) Показать информацию о ветре (перекл.) @@ -194,4 +194,4 @@ Definisce l'intervallo (in secondi) tra aggiornamenti del meteo - \ No newline at end of file + From f14a1b990be6b2deff858fb3bf3bd8a117fe7e15 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 7 Jun 2016 07:38:01 +0200 Subject: [PATCH 266/268] simplify optics config --- addons/spottingscope/RscInGameUI.hpp | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/addons/spottingscope/RscInGameUI.hpp b/addons/spottingscope/RscInGameUI.hpp index 54f3ebafa26..bf4f086dd7b 100644 --- a/addons/spottingscope/RscInGameUI.hpp +++ b/addons/spottingscope/RscInGameUI.hpp @@ -2,6 +2,7 @@ class RscOpticsValue; class RscMapControl; class RscText; +class RscPicture; class RscInGameUI { class RscUnitInfo; @@ -11,10 +12,6 @@ class RscInGameUI { class CA_FOVMode: RscOpticsValue { // idea by Taosenai. Apparently this can be used via isNil check to determine wheter the scope or the kolimator is used idc = 154; - style = 2; - colorText[] = {0,0,0,0}; - x = 0; - y = 0; w = 0; h = 0; }; @@ -26,14 +23,9 @@ class RscInGameUI { h = 0; }; - class Reticle: RscText { + class Reticle: RscPicture { idc = IDC_RETICLE; - style = 48; - size = 0; - sizeEx = 1; text = QPATHTOF(rsc\spotting_scope_reticle_co.paa); - colorText[] = {1,1,1,1}; - colorBackground[] = {0,0,0,0}; x = POS_X; y = POS_Y; w = POS_W; @@ -43,10 +35,6 @@ class RscInGameUI { class Body: Reticle { idc = IDC_BODY; text = QPATHTOF(rsc\spotting_scope_body_co.paa); - x = POS_X; - y = POS_Y; - w = POS_W; - h = POS_H; }; //These are just black side panels to cover the areas that the optics p3d doesn't cover From 5d0e257cd8739668168d7488bbab93b37062a604 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 7 Jun 2016 19:36:03 +0200 Subject: [PATCH 267/268] center interaction point, add gunner shadows --- addons/spottingscope/CfgVehicles.hpp | 2 +- .../spottingscope/data/ace_spottingscope.p3d | Bin 4032102 -> 4040306 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index c2271569776..6ea85629367 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -43,7 +43,7 @@ class CfgVehicles { class ACE_Actions: ACE_Actions{ class ACE_MainActions: ACE_MainActions { - selection = "main_turret"; + selection = "main_gun"; class ACE_Pickup { selection = ""; displayName = CSTRING(PickUp); diff --git a/addons/spottingscope/data/ace_spottingscope.p3d b/addons/spottingscope/data/ace_spottingscope.p3d index 98cfab6a542fc0d590127029b79c16029e97c3e1..0afe9952cfba14efb304cb825c197ad409531a5e 100644 GIT binary patch delta 803 zcmaKqT}V@57{|{!oBQx83=6C%L=lQnf>PLEM;RO_hZ7ZWVF%pszzZLCVizh=1wX10KoB9+ zpcZwg$8I#B5qq!~`>-EjM9_pNVo-5lIsRb6x?qr`>Iz9JVoxUG-3h{{V2sLF<4)#V zjd%Q_!>1HCP4(9m-yBRg^QVOkrW4;RGwrR$+K1d*$-TLF#C27kp6A+ML7lTUKRfw0 zalWf0cseZ+wPHB>X`qtOe-C} zGU91J<5~1?bwj3&mo}GZd1vPACbk&T-Wce2n_9}<;?z-I4vBuBuyzUS51DRX_a%uR zI*{x3zL>N3D3or{-MnO>$t${r!i&BST=|8)lP5=ndrB5lu79R3PQOzlTc69f2|Lsh zGu^tN-cyPnGd-$h7U=GHtBcmYIGohBuGy@rEJ@eQk~G44*R{HGfjmriHZ?c9zp0%$ zyN$en^OMY!N;g+A_tDm6Ca4FRxP6%0a}nkGYMzeC^z?X(lQ>a3aqN!gU-j`oKKdnt zpyT0d)QI&mf`)^o>h;SCt&HiW>jA9I@US*$_qR&G@bhQf+CrgNcULR{DRqEEsmZT(Y mE$^tVR}ZU=%Br=6X{F#s Date: Thu, 9 Jun 2016 14:59:26 +0200 Subject: [PATCH 268/268] Add Extract Dependencies script (#2640) * Add Extract Dependencies Python script, Add tools\temp to .gitignore * Change backtick to single quote * Remove unnecessary import * Remove all whitespace * Add support for multi-line dependencies, Add header comment, Improve * Fix final message * Update output to Jekyll IF statements for inclusion on pages * Space * Correct comments for Jekyll usage --- .gitignore | 1 + tools/extract_dependencies.py | 82 +++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tools/extract_dependencies.py diff --git a/.gitignore b/.gitignore index f312ddb55e9..4bc9845ffed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ release/* +tools/temp *.cache *.pbo texHeaders.bin diff --git a/tools/extract_dependencies.py b/tools/extract_dependencies.py new file mode 100644 index 00000000000..53c9e3f9b42 --- /dev/null +++ b/tools/extract_dependencies.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 + +# Author: Jonpas +# Extracts dependencies to a file (defined in globals) for use with Jekyll include statement. +# Place generated file to "_includes/" folder on gh-pages branch and use the following line to add dependencies to a feature page: +# {% include dependencies_list.md component="" %} + +import os +import sys +import re + +######## GLOBALS ######### +FILE_EXTRACTED = "temp\\dependencies_list.md" +########################## + +def get_dependencies(line): + dependencies = re.findall(r'"(.*?)"', line) + return dependencies + + +def main(): + print(""" + #################################### + # Extract ACE3 Module Dependencies # + # (for Jekyll include) # + #################################### + """) + + scriptpath = os.path.realpath(__file__) + projectpath = os.path.dirname(os.path.dirname(scriptpath)) + addonspath = os.path.join(projectpath, "addons") + + # Prepare directory and file + if not os.path.exists("temp"): + os.makedirs("temp") + + open(FILE_EXTRACTED, "w").close() + + # Iterate through folders in the addons directory + for folder in next(os.walk(addonspath))[1]: + # Open config.cpp file and extract dependencies + data = [] + with open(os.path.join(addonspath, folder, "config.cpp")) as file: + match = False + for line in file: + # One-line + if not match and re.match(r"\s+requiredAddons\[\]\ = {.+?};", line): + data += get_dependencies(line) + break + # Multi-line + else: + if re.match(r"\s+requiredAddons\[\]\ = {", line): + # First line + match = True + data += get_dependencies(line) + continue + elif match and re.match(r"\s+};", line): + # Final line + data += get_dependencies(line) + match = False + break + elif match: + # All lines between + data += get_dependencies(line) + continue + + data = "`, `".join(data) + data = "`{}`".format(data) + print("{}: {}".format(folder,data)) + + with open(FILE_EXTRACTED, "a") as file: + file.writelines([ + "{% if include.component == \"" + folder + "\" %}\n", + "{}\n".format(data), + "{% endif %}\n", + ]) + + print("\nCopy 'temp\dependencies_list.md' to '_includes/' folder on 'gh-pages' branch.") + + +if __name__ == "__main__": + main()