From dfca7b2f4426ecf049fb6eeac60a44d1ab9a8dfa Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 15 Jul 2015 05:51:13 +0200 Subject: [PATCH 001/337] 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 601bbd5f60..9b6ac48f4f 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 0000000000..09bdb47634 --- /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 0000000000..423993f757 --- /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 0000000000..f918360518 --- /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 f11027038f..b3c2b3acb7 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 0000000000..6b091d73bc --- /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 0000000000..118fad96e6 --- /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 0000000000..fec845d49a --- /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 0000000000..7e1c3ec9ed --- /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 e7ea4b32eb..fa10420277 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 0000000000..02d9c2ecbf --- /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 0000000000..b33c28292d --- /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/337] 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 118fad96e6..1da39c2118 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 fec845d49a..d6b0883d4d 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 b33c28292d..daabe80453 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/337] 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 6488a23e4e..73d92b95cb 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 e110970ae3..f8ca85511b 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/337] 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 73d92b95cb..708e37d85b 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/337] Add selective UI --- addons/ui/ACE_Settings.hpp | 161 +++++++++++++++++- addons/ui/CfgVehicles.hpp | 160 ++++++++++++++--- addons/ui/XEH_clientInit.sqf | 84 ++++----- 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 | 103 ++++++++--- 11 files changed, 613 insertions(+), 125 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 09bdb47634..53e1496b38 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(ammoCount) { // Disabled in config by ace_reload + class GVAR(weaponNameBackground) { value = 1; typeName = "BOOL"; + isClientSettable = 1; + displayName = CSTRING(WeaponNameBackground); + category = CSTRING(Category); + }; + 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 f918360518..69f28f955e 100644 --- a/addons/ui/CfgVehicles.hpp +++ b/addons/ui/CfgVehicles.hpp @@ -1,52 +1,38 @@ 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 weaponName { - displayName = CSTRING(WeaponName); - description = CSTRING(WeaponNameDesc); + class vehicleRadar { + displayName = CSTRING(VehicleRadar); 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); + class vehicleCompass { + displayName = CSTRING(VehicleCompass); typeName = "BOOL"; defaultValue = 1; }; - class grenadeName { - displayName = CSTRING(GrenadeName); - description = CSTRING(GrenadeNameDesc); + class commandMenu { + displayName = CSTRING(CommandMenu); typeName = "BOOL"; defaultValue = 1; }; - class grenadeCount { - displayName = CSTRING(GrenadeCount); - description = CSTRING(GrenadeCountDesc); - typeName = "BOOL"; - defaultValue = 1; - }; - class zeroing { - displayName = CSTRING(Zeroing); + class groupBar { + displayName = CSTRING(GroupBar); typeName = "BOOL"; defaultValue = 1; }; @@ -55,4 +41,124 @@ class CfgVehicles { 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); + typeName = "BOOL"; + defaultValue = 1; + }; + 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); + typeName = "BOOL"; + defaultValue = 1; + }; + class grenadeFlareType { + displayName = CSTRING(GrenadeFlareType); + typeName = "BOOL"; + defaultValue = 1; + }; + class grenadeFlareCount { + displayName = CSTRING(GrenadeFlareCount); + typeName = "BOOL"; + defaultValue = 1; + }; + class zeroing { + displayName = CSTRING(Zeroing); + 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_Advanced); + }; + }; }; diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index d6b0883d4d..d778fb2746 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); + + + ["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); - - -/* -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) -*/ diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index 7e1c3ec9ed..8a86e3ec32 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 02d9c2ecbf..f4a57831c8 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 0000000000..ab5666af69 --- /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 0000000000..c87a79ffae --- /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 0000000000..3952d8e337 --- /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 0000000000..656228f742 --- /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 a0fa713f9f..2a9e582306 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 daabe80453..e320d3ce39 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -1,50 +1,101 @@ - + - - Weapon Info + + User Interface - - Entire weapon info interface (weapon name, firing mode, magazine info, ammo count, magazine count, grenade count) except zeroing. + + + 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 + + + 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 - - - Requires enabled Weapon Info - - - Grenade Count - - - Requires enabled Weapon Info + + Grenade/Flare Count Zeroing - - User Interface + + Weapon Lower Info Background - - This module allows hiding of specific user interface parts. + + Stance + + + + Vehicle Name + + + Vehicle Name Background + + + Vehicle Fuel Bar + + + Vehicle Speed + + + Vehicle Altitude + + + Vehicle Damage + + + Vehicle Info Background + + + Vehicle Gunner Weapon - \ No newline at end of file + From 80ea079827961a9804dd54d1972c9f45272aec90 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 12 Jan 2016 19:32:26 +0100 Subject: [PATCH 006/337] reset interaction menu time variables on save game load --- addons/interact_menu/XEH_preInit.sqf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 73b543250e..86e77387ec 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -67,6 +67,13 @@ GVAR(expanded) = false; GVAR(startHoverTime) = ACE_diagTime; GVAR(expandedTime) = ACE_diagTime; + +// reset on mission load +addMissionEventHandler ["Loaded", { + GVAR(startHoverTime) = 0; + GVAR(expandedTime) = 0; +}]; + GVAR(iconCtrls) = []; GVAR(iconCount) = 0; From 133c6beafa0cd8c936377ab351e5544f0033cb59 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 25 Feb 2016 22:50:58 +0100 Subject: [PATCH 007/337] Improve GitHub files --- .github/CONTRIBUTING.md | 8 +++----- .github/ISSUE_TEMPLATE.md | 23 ++++++++++------------- .github/PULL_REQUEST_TEMPLATE.md | 14 ++++---------- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 33ae67cc0e..8eb5664cf5 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -6,11 +6,9 @@ If you have found an issue with ACE3 please make sure that ACE3 really is the ca Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash. -
-
Please note:
-

It's not a valid to simply remove @ace from the mod list to confirm that ACE3 is the culprit.

-

If the error happens when using a third-party mod contact the author of the appropriate mod and report the issue there.

-
+**Please note:** +- It's not a valid to simply remove @ace from the mod list to confirm that ACE3 is the culprit. +- If the error happens when using a third-party mod contact the author of the appropriate mod and report the issue there. ## Reporting the issue diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 92ba3070ce..e864049f93 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,25 +1,22 @@ -**Arma 3 Version:** `x.xx` -*(indicate if stable, rc or dev*) - -**ACE3 Version:** `3.x.x` -*(indicate if stable or dev, if dev indicate the commit the version is based on)* +**Arma 3 Version:** `x.xx` (stable / rc / dev) +**ACE3 Version:** `3.x.x` (stable / dev + commit hash) **Mods:** -* `@CBA_A3` -* `@ace` -* ... +- * `@CBA_A3` +- `@ace` +- ... **Placed Modules:** -* *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.* +- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules. **Description:** -* *Add a detailed description of the error. This makes it easier for us to fix the issue.* +- Add a detailed description of the error. This makes it easier for us to fix the issue. **Steps to reproduce:** -* *Add the steps needed to reproduce the issue.* +- Add the steps needed to reproduce the issue. **Where did the issue occur?** -* *A possible answer might be "Dedicated Server", "Local Multiplayer", "Editor", or "Singleplayer"* +- Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal **RPT log file:** -* *Add a link (pastebin.com) to the client and/or server RPT file. An instruction to find your RPT files can be [found here](https://community.bistudio.com/wiki/Crash_Files#Arma_3)* +- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3). diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 982d6137ef..f96a900cb7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,10 +1,4 @@ -### When merged this pull request will: - -1. *Describe what this pull request will do* -2. *Each change in a seperate line* - ---- -*Delete this line and everything below* - -- [Make sure to respect the file structure](http://ace3mod.com/wiki/development/modularity-and-pbo-structure.html) -- [Make sure to respect the coding guidelines](http://ace3mod.com/wiki/development/coding-guidelines.html) +**When merged this pull request will:** +- Describe what this pull request will do +- Each change in a separate line +- Respect the [Development Guidelines](http://ace3mod.com/wiki/development/) From d9179d6907f02f9bb5433f3e9029eafaf1f4a687 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 25 Feb 2016 23:03:40 +0100 Subject: [PATCH 008/337] Improve further --- .github/ISSUE_TEMPLATE.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index e864049f93..c6f709da29 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -2,12 +2,8 @@ **ACE3 Version:** `3.x.x` (stable / dev + commit hash) **Mods:** -- * `@CBA_A3` -- `@ace` -- ... - -**Placed Modules:** -- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules. +- `@CBA_A3` +- `@ace` **Description:** - Add a detailed description of the error. This makes it easier for us to fix the issue. @@ -18,5 +14,12 @@ **Where did the issue occur?** - Dedicated / Self-Hosted Multiplayer / Singleplayer / Editor (Singleplayer) / Editor (Multiplayer) / Virtual Arsenal +**Placed Modules:** +- Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules. + +**ACE Debug:** +- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the ACE Debug + **RPT log file:** - Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3). +- If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file. From e425483054498fd6a6206747ae854937d7986ad2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 25 Feb 2016 23:04:16 +0100 Subject: [PATCH 009/337] Remove redundant line --- .github/ISSUE_TEMPLATE.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index c6f709da29..097b824779 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -17,9 +17,6 @@ **Placed Modules:** - Add the list of modules you have placed on the map. Use 'None' if the error occurs without any modules. -**ACE Debug:** -- Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the ACE Debug - **RPT log file:** - Add a link ([gist](https://gist.github.com) or [pastebin](http://pastebin.com)) to the client and/or server RPT file. An instruction to find your RPT files can be found [here](https://community.bistudio.com/wiki/Crash_Files#Arma_3). - If possible at the time the bug is encountered, go to ACE Options and select "Debug To Clipboard", this will print extensive debug information to the RPT file. From e9505523451810d3edd100d5d473a2f4e2cd8bfa Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 27 Feb 2016 00:29:30 -0300 Subject: [PATCH 010/337] 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 0000000000..ad381ff30e --- /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 c7d9c6790a..4911fcb7f6 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 f59c4d7911..c7a83eec6e 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 312b8bb0c5..26366b9896 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 0bb2da22ca..b19b96272d 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 c57e55913d..673edcf77f 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 0000000000..955c41441e --- /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 9c62e77f21..8bd63e4874 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 0000000000..852cb1c580 --- /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 89d5975024..1643fe55b4 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 011/337] 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 4911fcb7f6..61b619a79b 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 b19b96272d..f29a1c624c 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 57a9fee566..1e2490ea52 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 428b828c27ed37dc17859ccad7c7d5ad59ab25da Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 27 Feb 2016 20:44:38 +0100 Subject: [PATCH 012/337] Increase version 3.5.0 --- README.md | 4 ++-- addons/main/script_mod.hpp | 4 ++-- docs/README_DE.md | 4 ++-- docs/README_PL.md | 4 ++-- mod.cpp | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cda0cc7f79..f91634f6d4 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@

- ACE3 Version + ACE3 Version - + ACE3 Download diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 0c3a2816bc..0c6ec9acb4 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -4,8 +4,8 @@ #define PREFIX ace #define MAJOR 3 -#define MINOR 4 -#define PATCHLVL 3 +#define MINOR 5 +#define PATCHLVL 0 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/docs/README_DE.md b/docs/README_DE.md index 62e847b889..c30d260611 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -4,9 +4,9 @@

- ACE3 Version + ACE3 Version - + ACE3 Download diff --git a/docs/README_PL.md b/docs/README_PL.md index 736e914219..1fd43eaa4d 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -3,9 +3,9 @@

- ACE3 Wersja + ACE3 Wersja - + ACE3 Pobierz diff --git a/mod.cpp b/mod.cpp index 3713ca7c2d..b146f500b0 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.4.3"; +name = "Advanced Combat Environment 3.5.0"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.4.3"; +description = "ACE3 - Version 3.5.0"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 905586bddc86a061a27dba61894147a71f8cba09 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 27 Feb 2016 21:04:04 +0100 Subject: [PATCH 013/337] Make unused medical strings be used --- addons/medical/ACE_Settings.hpp | 3 ++- addons/medical/stringtable.xml | 10 +++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 30dcedfe5a..429cb995a1 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -245,7 +245,8 @@ class ACE_Settings { class GVAR(delayUnconCaptive) { category = CSTRING(Category_Medical); - displayName = CSTRING(delayUnconCaptive); + displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName); + description = CSTRING(MedicalSettings_delayUnconCaptive_Description); typeName = "SCALAR"; value = 3; }; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 94cad2f790..f8a521352d 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -4111,12 +4111,6 @@ Legt fest, ob das Objekt ein Sanitätsfahrzeug ist. Es un vehí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 - 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. @@ -4124,6 +4118,8 @@ Delay cease fire of AI for 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 - \ No newline at end of file + From 0e606224c7649a2404cc311606edf21a4473198f Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 27 Feb 2016 22:28:12 +0100 Subject: [PATCH 014/337] Convert fastroping animations to Arma 3, fix bone errors --- addons/fastroping/anim/freefallLoop.rtm | Bin 149674 -> 139950 bytes addons/fastroping/anim/freefallStart.rtm | Bin 50771 -> 47242 bytes addons/fastroping/anim/slidingLoop.rtm | Bin 110773 -> 106840 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/fastroping/anim/freefallLoop.rtm b/addons/fastroping/anim/freefallLoop.rtm index 1046bdd4c0ce0a2df9b29b32bca10acb616cf7e1..7e049c9eb97004c42ca89f96db046e99686aebcb 100644 GIT binary patch delta 1138 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 E15D}tPXGV_ diff --git a/addons/fastroping/anim/freefallStart.rtm b/addons/fastroping/anim/freefallStart.rtm index 58aeccc0d9b4156cf81a4fdcad83fbff7dbde790..fbbe8a3421c7a3a3c496cda121af85931efccfc1 100644 GIT binary patch delta 365 zcmW;7F^E9{0D$4=UeqPS6@z3THyCa(7;bn2uPeh1(kX*FMgZPDo;)3j{I(&3914XQWkp+l}7?FaNfr16+u HCN1#@ut$hc delta 3970 zcmZ8kd0bOh7QXM@_p*?nf)G%^IS3Jfpg?%U5D2bysbKAlPODHv2reXOBe=9Wh}Nan znc7xsTeVgNt1ZtBP^fvai=Cxvr;ghG>WGe2>rAzaN|-JZ=DhcWw)0Q!z2}{KmhXP& z+?x$|*mE1{rZ|2jA!Oy@!H?3~vbio-Wr@3jR4rKKDyg2gkhte9EU8)Oo=xVLE-7&@ z>RDGP6L*<9EWz)xqI(H$RTMqssd;lsdc~dx`#i)|>Me1TvISl*sa{Yur^Z#{>6uiJ zTGukyZ0`beG@JBJD}J6nu!>fex#Xyn5uK6;arca~Rqxem8oi%A>e@>x7I5*3SOq9r!47|UXDj8tB-rh{m@Pq8p10v!j zRj#til3MozoV<7fvcTK3R`K=r;EnrLyn7VYj8Uv?t5yyHzbR)SM>nrZ6?xQQkvtF? zg0huPun6lH0_-a;oqijOgz3K4^8nv>2qj(#jT9g2xp4I%~Co<7!7 znSkD6vxwn+gFE;=zs))IXsgtuYK`wJ(#Ney)?os91x#+z!em3gNCxK}Or}7x?d2@| z#>as5GzZp14x*l6z?{c#g_IVW4VG#?2LseM(-btn(Ks{sF2BsFJ-SQkm#YL32p4Is zHC-T8)0okMo76BPQw1_QwVjN?ReC+K2xOG~5&^!PO%E_*gbQqyJ&pC`S=bzbtQyQ7lSm&Tp>{XPsVAV%A`lf|LcwHV!72;JQkb%XHNwb79?Sv82u0U5x zqm65Wuk#z7?JYZ{zN)RM14WvH!N&rk6elAGl^qOJB21MS*pz7+6#fx^GPkpahYimM z-{X%t8N~gNihFmQNaL)ltvyHcuD(7PuDR>?dbeJ9UI^;w=2h}PsU@M6NfgT{2wwa^kp1iCDe+fHVIE|kuKh&;aA z_*>9KFu53kUSd#`rtjvCfTmoZTWpvOeGvL5`45A~wG;CbTXjSH?IV-7rENte4R7Dt~J@eLve1_hz>Bg>~^rrlxHi!T3HU-cH z4v`Kzkp4oi&O~-;S5nA;{FQA}{7u=4PFz0fM5nX8Izdv`H7q1Pe@ojuf2N@5oEnXc z&44h0OaK!iQ7lgi*Dw=cDMD{We9mE;Fm%7%H88}SzpHJH|NRVQ;3n-ZtDBz?{3@XFWjeWNSY+l@qb8#FdOkTehLxjY=A&MwPPvI zJI`9MNlit#wZ)tdDQ5DJ&tL{t_mk-T-uFX-8}#kY4Q<=~OPUp97Yal=qjTR6kLqfi z(c-D(*hGjFNQ}*cMHh|ii1abobWS_c*ciF-fEi=6qKgbHc6}}nW5&@K7-`W%5+2^@ z&d-8<^jn>ewmt7ZaZItlda6iEtv{aEPI68alZRg3IYJ=qb`QCNWuvyC4rYXhq&Otz z3M68)HKXw;GuIBLP^Z3h<8DMaRq_H+rtQW(oj_ut(-3(`ZTb=)#R>e)mG<1`l zMVMvgRrSC(kfmIR+*6p{web-s?}!>k^#MR_$NkrntHC7*?Ms#!sprDv$$d0-1L*h1hE5GIb5k2gQR)S@3@g@U zcd_NEkxaRLD>vPgU_&-VFc!RazNRj;P|aJgQ*qI_`;ijPVOzr#+wW^En>kA^ZxQ(? z?1-bjUTZOiSjJLIm&Rq^!j;;yNDgYaSU2t{;w;T{d5qz}Js|(qbIzCA7W;p%LhG1? z(C*dW$@7cXcZ?m1_+G=J_yVbN1M$789A*}=6foC8=fO4B2ZH+r=mhem4Er^OJ^C{o zPV#tEics$6oE_{{Fqu(m+QI${jM(VzcZ?<wW2s9f*Dc3!~y3fo{$*hV9+#>Sh@8tr^w<#5FWue)7V%p z3kKo!61tq`L~JW&2?d2BzKE8ZISq{M&>7|g63EohBYEcI z#r|n(ag3`JX`(8S!}|vuytG%Eqo(xs3dAzp=4d|5HfCCoR*ZaS zLR33WG9`wE`4?Cgisb4%!?94fg5nAvdodA=!E(8?q$<# zJnmr6$^qc4hCd4tgWpkrY*{bT!Rs7XjubX7 zPU`{u;cxE-XNFC5obZ)PepRn*qezDg15qH0;SjceG8vCP^cd~)%|Ey+n!ZaMlYPsj z{NswvuuUS3Z5rNVP5X6L@TRfVvF`W|X^X0H;w8Lt$i@s0*)P8|_CvpRvJp)3T_Bek z_R}~Cr4vvv9+7m6qt8L1TkEEVQMW(7-=+WFQT)#Pl3z9E*^1nO$ZRq$0}^oiL4mvs zomeg{nDQ&Pe){1>4aptWc2zp3>c?!u+ZV`E0iQXfZY(u~-n!B80$c7dwRT81RGq)Q zF49OF34E1cq?#_BefrU#q#x8zOLmJif*7{m-f{V}P9d|Qnfj?u$=kda&oY}lmjU^h z!7};gMP{5qpbXf7r`);l$@y=mo1+giev`W4+1dm`d zFTmQY#Q!Fvus%caLafu%?9CCjFE76NPicZ`qfUH~{deg-*$?Q=zL8%$LL2qk*Edu5 zNOh|I@WV>@KK5z*q3A!~jZZI=j;UYTn?;(0J@Ut2JsiknL~#WX0%v1gt4S8OX)~b2oi}znAcXxz3mF0 zR4RCLRCDqNj-oMt92nPtrbLjM3^ZCGrh#Q0aApB>4oJ-dj|xDr7}(2!!2op6fUFYy ze+e$D!S5RIr52bPK#2wDT0poBtagIoZcy3_Vh4a|1HKV3Itr|IkntXb9pKw1V3`0< zCV|`q{BGcw1{JeF{R0FR!1f}ruK>e3kZpmD9nilA3IgEl0EB)4mk8?rfP@e@JO=N= z;Q2qGIt5n|5V`=aYhb>)XUQm&!WbousHqr5J+ZVeo)#z2xFi}#p$m^`M>@^Sq&L}g zS5L?CsZd0XWmGND{ioDvq%|*Sd=))0(YaUDT1T@Q=~XjbX{B%5sbHn@9=h2_*9NI= mh!(z~=VR16PTe2q>yK3bnMRy+eu{Q|rMVs|ouR?+cisXz3o1YW delta 4814 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 nS~C#-ZZNp}Z_Gd;fHu;k<#;B|he Date: Sat, 27 Feb 2016 18:06:02 -0600 Subject: [PATCH 015/337] Hide categories that have no user settable options --- .../functions/fnc_onCategorySelectChanged.sqf | 2 +- .../optionsmenu/functions/fnc_onSettingsMenuOpen.sqf | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf index 3129e32bef..123a156731 100644 --- a/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf +++ b/addons/optionsmenu/functions/fnc_onCategorySelectChanged.sqf @@ -22,6 +22,6 @@ disableSerialization; _settingsMenu = uiNamespace getVariable 'ACE_settingsMenu'; _ctrlComboBox = (_settingsMenu displayCtrl 14); -GVAR(currentCategorySelection) = lbCurSel _ctrlComboBox; +GVAR(currentCategorySelection) = _ctrlComboBox lbValue (lbCurSel _ctrlComboBox); [true] call FUNC(settingsMenuUpdateList); diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf index 104d8195cf..bef61b73e7 100644 --- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf +++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf @@ -21,6 +21,7 @@ private ["_setting", "_menu"]; // Filter only user setable setting GVAR(clientSideOptions) = []; GVAR(clientSideColors) = []; +private _clientSettableCategories = [""]; { // If the setting is user setable and not forced @@ -37,6 +38,7 @@ GVAR(clientSideColors) = []; if ((_x select 1) == "COLOR") then { GVAR(clientSideColors) pushBack _setting; }; + _clientSettableCategories pushBackUnique (_x select 8); //Add to list of user-settable categories }; } forEach EGVAR(common,settings); @@ -55,10 +57,13 @@ if (GVAR(serverConfigGeneration) == 0) then { lbClear (_menu displayCtrl 14); { - if (_x == "") then { - _x = localize LSTRING(category_all); + if (_x in _clientSettableCategories) then { //only show category if it has user-settable options + if (_x == "") then { + _x = localize LSTRING(category_all); + }; + private _Index = (_menu displayCtrl 14) lbAdd _x; + (_menu displayCtrl 14) lbSetValue [_Index, _forEachIndex]; }; - (_menu displayCtrl 14) lbAdd _x; } forEach GVAR(categories); (_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies From 03b8e2b590662547374a948efdde947fa4362c2a Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 28 Feb 2016 06:12:40 +0100 Subject: [PATCH 016/337] fix reloadMutex nil, fix#3450 --- addons/common/CfgEventHandlers.hpp | 2 +- .../{XEH_mainDislayLoad.sqf => XEH_missionDislayLoad.sqf} | 2 -- addons/common/functions/fnc_handleScrollWheel.sqf | 5 ----- addons/gestures/CfgEventHandlers.hpp | 2 +- .../{XEH_mainDislayLoad.sqf => XEH_missionDislayLoad.sqf} | 3 --- addons/gestures/XEH_postInit.sqf | 3 +++ 6 files changed, 5 insertions(+), 12 deletions(-) rename addons/common/{XEH_mainDislayLoad.sqf => XEH_missionDislayLoad.sqf} (74%) rename addons/gestures/{XEH_mainDislayLoad.sqf => XEH_missionDislayLoad.sqf} (93%) diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index bdfeccd4fa..a9641448c1 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -21,7 +21,7 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayMission { - ADDON = QUOTE(_this call COMPILE_FILE(XEH_mainDislayLoad)); + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDislayLoad)); }; }; diff --git a/addons/common/XEH_mainDislayLoad.sqf b/addons/common/XEH_missionDislayLoad.sqf similarity index 74% rename from addons/common/XEH_mainDislayLoad.sqf rename to addons/common/XEH_missionDislayLoad.sqf index 57ace32f94..a07c301288 100644 --- a/addons/common/XEH_mainDislayLoad.sqf +++ b/addons/common/XEH_missionDislayLoad.sqf @@ -1,6 +1,4 @@ #include "script_component.hpp" -GVAR(ScrollWheelFrame) = diag_frameno; - call COMPILE_FILE(init_handleScrollWheel); call COMPILE_FILE(init_handleModifierKey); diff --git a/addons/common/functions/fnc_handleScrollWheel.sqf b/addons/common/functions/fnc_handleScrollWheel.sqf index c0b88f9ed7..037b7b640b 100644 --- a/addons/common/functions/fnc_handleScrollWheel.sqf +++ b/addons/common/functions/fnc_handleScrollWheel.sqf @@ -12,11 +12,6 @@ */ #include "script_component.hpp" -// prevents a bug that causes the MouseZChanged to trigger N-times, where N is the number of times you consecutively pressed "Restart" instead of "Preview" in the editor -if (GVAR(ScrollWheelFrame) == diag_frameno) exitWith {}; - -GVAR(ScrollWheelFrame) = diag_frameno; - { [_this select 1] call _x; false diff --git a/addons/gestures/CfgEventHandlers.hpp b/addons/gestures/CfgEventHandlers.hpp index e2b5ef729b..738195ad50 100644 --- a/addons/gestures/CfgEventHandlers.hpp +++ b/addons/gestures/CfgEventHandlers.hpp @@ -19,6 +19,6 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayMission { - ADDON = QUOTE(_this call COMPILE_FILE(XEH_mainDislayLoad)); + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDislayLoad)); }; }; diff --git a/addons/gestures/XEH_mainDislayLoad.sqf b/addons/gestures/XEH_missionDislayLoad.sqf similarity index 93% rename from addons/gestures/XEH_mainDislayLoad.sqf rename to addons/gestures/XEH_missionDislayLoad.sqf index 4b5c2ca63b..17ddf32557 100644 --- a/addons/gestures/XEH_mainDislayLoad.sqf +++ b/addons/gestures/XEH_missionDislayLoad.sqf @@ -4,9 +4,6 @@ disableSerialization; params ["_display"]; -// reload mutex, you can't play signal while reloading -GVAR(ReloadMutex) = true; - _display displayAddEventHandler ["KeyDown", { if ((_this select 1) in actionKeys "ReloadMagazine") then { if (isNull ACE_player || {!alive ACE_player}) exitWith {false}; diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index d9cfc74e04..3b4a92164e 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -2,4 +2,7 @@ if (!hasInterface) exitWith {}; +// reload mutex, you can't play signal while reloading +GVAR(ReloadMutex) = true; + #include "key.sqf" From 69f810f32ba7ed97c155eb41ffb7550ddc90de4e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 28 Feb 2016 07:25:11 +0100 Subject: [PATCH 017/337] add missing pee --- addons/common/CfgEventHandlers.hpp | 2 +- .../{XEH_missionDislayLoad.sqf => XEH_missionDisplayLoad.sqf} | 0 addons/gestures/CfgEventHandlers.hpp | 2 +- .../{XEH_missionDislayLoad.sqf => XEH_missionDisplayLoad.sqf} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename addons/common/{XEH_missionDislayLoad.sqf => XEH_missionDisplayLoad.sqf} (100%) rename addons/gestures/{XEH_missionDislayLoad.sqf => XEH_missionDisplayLoad.sqf} (100%) diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index a9641448c1..2c4f3922bc 100644 --- a/addons/common/CfgEventHandlers.hpp +++ b/addons/common/CfgEventHandlers.hpp @@ -21,7 +21,7 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayMission { - ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDislayLoad)); + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); }; }; diff --git a/addons/common/XEH_missionDislayLoad.sqf b/addons/common/XEH_missionDisplayLoad.sqf similarity index 100% rename from addons/common/XEH_missionDislayLoad.sqf rename to addons/common/XEH_missionDisplayLoad.sqf diff --git a/addons/gestures/CfgEventHandlers.hpp b/addons/gestures/CfgEventHandlers.hpp index 738195ad50..83a4cf763c 100644 --- a/addons/gestures/CfgEventHandlers.hpp +++ b/addons/gestures/CfgEventHandlers.hpp @@ -19,6 +19,6 @@ class Extended_PostInit_EventHandlers { class Extended_DisplayLoad_EventHandlers { class RscDisplayMission { - ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDislayLoad)); + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); }; }; diff --git a/addons/gestures/XEH_missionDislayLoad.sqf b/addons/gestures/XEH_missionDisplayLoad.sqf similarity index 100% rename from addons/gestures/XEH_missionDislayLoad.sqf rename to addons/gestures/XEH_missionDisplayLoad.sqf From c61e7b51041e9676d89aeec9ed4925c920bc9416 Mon Sep 17 00:00:00 2001 From: BlackWindowS Date: Sun, 28 Feb 2016 14:48:04 +0100 Subject: [PATCH 018/337] Tweaked & added translations Translation of almost every STR to French --- addons/advanced_ballistics/stringtable.xml | 16 ++-- addons/aircraft/stringtable.xml | 6 +- addons/attach/stringtable.xml | 10 +-- addons/captives/stringtable.xml | 10 +-- addons/cargo/stringtable.xml | 20 ++--- addons/common/stringtable.xml | 4 +- addons/dagr/stringtable.xml | 4 +- addons/dragging/stringtable.xml | 4 +- addons/explosives/stringtable.xml | 8 +- addons/finger/stringtable.xml | 10 +-- addons/flashlights/stringtable.xml | 8 +- addons/frag/stringtable.xml | 8 +- addons/gestures/stringtable.xml | 10 +-- addons/headless/stringtable.xml | 12 +-- addons/hearing/stringtable.xml | 12 ++- addons/interact_menu/stringtable.xml | 3 + addons/interaction/stringtable.xml | 8 ++ addons/inventory/stringtable.xml | 7 ++ addons/main/stringtable.xml | 3 +- addons/map/stringtable.xml | 3 + addons/map_gestures/stringtable.xml | 23 ++++++ addons/medical/stringtable.xml | 43 ++++++++--- addons/medical_menu/stringtable.xml | 22 ++++-- addons/microdagr/stringtable.xml | 4 +- addons/missileguidance/stringtable.xml | 4 +- addons/mk6mortar/stringtable.xml | 21 ++++++ addons/nightvision/stringtable.xml | 4 + addons/optionsmenu/stringtable.xml | 10 ++- addons/overheating/stringtable.xml | 11 +++ addons/parachute/stringtable.xml | 4 +- addons/rearm/stringtable.xml | 29 ++++++++ addons/refuel/stringtable.xml | 31 ++++++++ addons/repair/stringtable.xml | 87 ++++++++++++++++++++++ addons/respawn/stringtable.xml | 1 + addons/scopes/stringtable.xml | 6 +- addons/sitting/stringtable.xml | 2 +- addons/slideshow/stringtable.xml | 4 +- addons/spectator/stringtable.xml | 71 ++++++++++++++++-- addons/switchunits/stringtable.xml | 3 +- addons/tacticalladder/stringtable.xml | 4 +- addons/tagging/stringtable.xml | 15 +++- addons/trenches/stringtable.xml | 14 +++- addons/viewdistance/stringtable.xml | 3 +- addons/yardage450/stringtable.xml | 7 +- addons/zeus/stringtable.xml | 13 ++++ 45 files changed, 487 insertions(+), 115 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 50e8e1ff05..718057a5b4 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -92,7 +92,7 @@ Für Gruppenmitglieder aktiviert Povoleno pro členy skupiny Ativada para membros do grupo - Activer pour les membres groupés + Activer pour les membres du groupe Csoporttagoknak engedélyezve Включена для группы Abilita per Membri del Gruppo @@ -104,7 +104,7 @@ Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder Aktivuje pokročilou balistiku pro nelokální členy skupiny Ativa balística avançada para membros de grupo não locais - Active la balistique avancée pour les membres groupés non locaux + Active la balistique avancée pour les membres du groupe non locaux Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak Включает продвинутую баллистику для нелокальных членов группы Abilita Balistica Avanzata per Membri non locali del Gruppo @@ -128,7 +128,7 @@ Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) Aktivuje pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles FPS během velké přestřelky v multiplayeru) Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) - Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs) + Active la balistique avancée pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs) Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере) Abilita Balistica Avanzata per tutti i giocatori non locali (abilitare questo parametro potrebbe degradare le prestazioni durante scontri intensi in multiplayer) @@ -140,7 +140,7 @@ Für Gruppenmitglieder immer aktiviert Vždy povoleno pro členy skupiny Sempre ativada para membros do grupo - Toujours activer pour les membres groupés + Toujours activer pour les membres du groupe Mindig engedélyezve csoporttagoknak Всегда включена для членов группы Sempre abilitato per Membri del Gruppo @@ -272,7 +272,7 @@ Legt das Intervall zwischen den Berechnungsschritten fest Určuje interval mezi každým výpočtem Define o intervalo entre cada cálculo - Défini un intervalle de calcul entre deux simulations + Définit un intervalle de calcul entre deux simulations Meghatározza a számítási lépések közötti időintervallumot Определяет временной интервал между вычислениями Definisce l'intervallo tra ogni step di calcolo @@ -296,7 +296,7 @@ Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis - Défini le rayon autour du joueur (en mètres) d'application de la balistique avancée + Définit le rayon autour du joueur (en mètres) d'application de la balistique avancée Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам Definisce il raggio attorno al giocatore (in metri) per cui la Balistica Avanzata è applicata ai proiettili @@ -307,11 +307,11 @@ Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. - Ce module active la simulation de balistique avancée - ie les projectiles sont influencé par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelles ils sont tirés. + Ce module active la simulation de balistique avancée - ie les projectiles sont influencés par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelle ils sont tirés. Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел. Este módulo permite la simulación balística avanzada - es decir, la trayectoria de los proyectiles está influenciada por variables como la temperatura del aire, la presión atmosférica, la humedad, la gravedad, el tipo de municiones y el arma desde el que fue disparada. Questo modulo abilita la simulazione della Balistica Avanzata - cioè la traiettoria dei proiettili è influenzata da variabili come la temperatura dell'aria, pressione atmosferica, umidità, gravità, il tipo di munizione e l'arma da cui è sparata - \ No newline at end of file + diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index 9c168d11ff..5480cb9740 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -7,7 +7,7 @@ Ráfaga Seria Dávka - Contremesure + Contre mesures Очередь Sorozat Rajada @@ -29,7 +29,7 @@ Open Cargo Door Laderampe öffnen Abrir compuerta de carga - Ourvir la rampe + Ouvrir la rampe Otwórz drzwi ładowni Otevřít nákladní prostor Rakodórámpa nyitása @@ -50,4 +50,4 @@ Fechar porta de carga - \ No newline at end of file + diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 4035b389a2..462e3d725c 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -90,7 +90,7 @@ Leuchtstab befestigt Barra de luz acoplada Przyczepiono światło chemiczne - Chemlight attachée + Cyalume attachée Chemické světlo připnuto Chemlight Fixada Chemlight attaccata @@ -102,7 +102,7 @@ Leuchtstab entfernt Barra de luz quitada Odczepiono światło chemiczne - Chemlight détachée + Cyalume détachée Chemické světlo odepnuto Chemlight Separada Chemlight staccata @@ -138,7 +138,7 @@ Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist. Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne. El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. - La balise IR permet de signaler votre position grace à un clignotement visible par des JVN. + La balise IR permet de signaler votre position grâce à un clignotement visible par des JVN. IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru. O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna. La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni. @@ -206,4 +206,4 @@ %1<br/>отсоединен(-а) - \ No newline at end of file + diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 52ed203fed..4044723c4a 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -201,7 +201,7 @@ Synchronizovat s jednotkou, která má být v poutech. Sincronizza un'unità per metterle le manette. Sincroniza una unidad para hacer que esté esposada. - Synchronise une unité pour la rendre captive. + Synchronisez une unité pour la rendre captive. Captives Settings @@ -234,7 +234,7 @@ Může spoutat spolubojovníky Kann Kameraden fesseln Pode algemar o próprio lado - Peut menotter sa propre faction + Peut capturer sa propre faction Saját oldal megbilincselhető Связать союзника Puoi ammanettare unità alleate @@ -295,7 +295,7 @@ Requiere que los Jugadores se rindan antes de arrestarlos Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután I giocatori devono arrendersi prima che possano essere arrestati - Requiert la reddition des joueurs avant qu'ils ne puissent être arrêtés + Requiert la capitulation des joueurs avant qu'ils ne puissent être arrêtés Surrendering only @@ -317,7 +317,7 @@ Rendición o desarme Vzdávání nebo beze zbraně Resa o senza armi - Reddition ou désarmement + Capitulation ou desarmé - \ No newline at end of file + diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index b4210a7755..57daacd207 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -65,7 +65,7 @@ Povolit náklad Habilitar carga Abilita Cargo - Activer mise en cargaison + Activer la cargaison Enable the load in cargo module @@ -76,7 +76,7 @@ Habilitar la carga en el módulo de carga Umožňuje naložit předměty do nákladového prostoru vozidla Abilita il modulo di caricamento in cargo - Active + Activer le chargement dans le module de cargaison. Cargo Settings @@ -87,7 +87,7 @@ Nastavení nákladu Ajustes de carga Impostazioni Cargo - Options de cargaison + Réglages de cargaison Configure the cargo module settings @@ -98,7 +98,7 @@ Configure los ajustes del módulo de carga Konfigurace nákladního modulu Configura le impostazioni del modulo cargo - Configure les options du module de cargaison + Configurer les réglages du module de cargaison %1<br/>loaded into<br/>%2 @@ -133,7 +133,7 @@ Погрузка Caricando Cargando - Chargement cargaison + Chargement de la cargaison Unloading Cargo @@ -144,7 +144,7 @@ Выгрузка Scaricando Descargando - Déchargement cargaison + Déchargement de la cargaison %1<br/>could not be loaded @@ -155,7 +155,7 @@ %1<br/>не может быть погружен %1<br/>non può essere caricato %1<br/>no pudo ser cargado - %1<br/>ne peut être chargé + %1<br /> n'a pas pu être chargé %1<br/>could not be unloaded @@ -166,7 +166,7 @@ %1<br/>не может быть выгружен %1<br/>non può essere scaricato %1<br/>no pudo ser descargado - %1<br/>ne peut être déchargé + %1<br /> n'a pas pu être déchargé Make Object Loadable @@ -182,7 +182,7 @@ Ustawia zsynchronizowany obiekt jako możliwy do załadowania poprzez system cargo 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. + Rend l'objet synchronisé comme chargeable par le système de cargaison. Object's Size @@ -193,4 +193,4 @@ Taille de l'objet - \ No newline at end of file + diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 7e9cba9802..32a979653f 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -512,7 +512,7 @@ Was soll mit Leuten geschehen, die nicht die richtigen PBO-Dateien geladen haben? Co udělat s lidmi, co nemají správné addony? O que fazer com pessoas que não tem os PBOs corretos? - Que faire avec les personnes n'ayant pas les bon PBO ? + Que faire avec les personnes n'ayant pas les bons PBO ? Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? Что делать с игроками с неправильными аддонами? Cosa fare con giocatori che non hanno i PBO corretti? @@ -596,7 +596,7 @@ Welche Addons werden dennoch erlaubt? Jaké addony jsou povoleny? Quais addons são permitidos de qualquer maneira? - Quels addons sont tolérés + Quels addons sont tolérés ? Milyen bővítmények vannak feltétlenül engedélyezve? Какие аддоны дополнительно разрешены? Quali addon sono permessi in ogni caso? diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index f744359bcb..01b43391ab 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -32,7 +32,7 @@ Mostrar DAGR Přepnout DAGR Apri DAGR - Afficher le DAGR + Activer/Desactiver le DAGR Defense Advanced GPS Receiver @@ -46,4 +46,4 @@ Defense Advanced GPS Receiver - \ No newline at end of file + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index 5027863807..b0334f3ca2 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -58,7 +58,7 @@ Zvýšit/Snížit Alza/Abbassa Subir/Bajar - Lever/abaisser + Lever/Baisser - \ No newline at end of file + diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index c63c990a16..ad89649cbd 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -45,7 +45,7 @@ Odpálit VŠE Detonuj wszystkie Detona Tutti - Mise à feu (tous) + Tout mettre à feu Explosive code: %1 @@ -315,7 +315,7 @@ "Zünden"-Menü Menú de detonación Menu detonacji - Menu de mise à feux + Menu de mise à feu Menu detonace Menù di detonazione Robbantási menü @@ -646,7 +646,7 @@ Mina M6 SLAM (atak od dołu) Mina M6 SLAM (Ataque Inferior) - Mine M6 SLAM (Par le bas) + Mine M6 SLAM (par le bas) M6 SLAM Mine (Side Attack) @@ -660,7 +660,7 @@ Mina M6 SLAM (atak od boku) Mina M6 SLAM (Ataque Lateral) - Mine M6 SLAM (De flanc) + Mine M6 SLAM (de flanc) Large IED (Urban, Pressure Plate) diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 66576f8e6f..3f68d337f2 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -5,7 +5,7 @@ Show pointing indicator to self Zeigersymbol einem selbst anzeigen Индикатор пальца для показывающего - Afficher un indicateur de pointage pour soit même + Afficher un indicateur de pointage pour soi-même Pokaż indykator wskazywania palcem dla siebie Saját mutatási indikátor megjelenítése Mostrar indicador para si mesmo @@ -53,7 +53,7 @@ Action "point a finger at" Aktion: "Zeige Finger auf" Действие "показать пальцем на" - Action 'Pointer le doigt vers" + Action 'Pointer du doigt" Akcja "wskaż palcem" Cselekvés "ujj rámutatása" Ação "Apontar um dedo para" @@ -76,7 +76,7 @@ Pointing Settings Zeigen Einstellungen - Option "Montrer du doigt" + Options "Montrer du doigt" Ustawienia wskazywania palcem Ujj beállításai Preferências de apontamento @@ -88,7 +88,7 @@ Pointing Enabled Zeigen aktiviert - Activer "Montrer du doigt" + "Montrer du doigt" activé Aktywuj wskazywanie Mutatás engedélyezése Apontamento ativado @@ -122,4 +122,4 @@ Distanza massima tra giocatori per mostrare l'indicatore di puntamento [default: 4 metri] - \ No newline at end of file + diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index 3eb413f61c..dad3158b38 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -21,7 +21,7 @@ Svítilna s červeným filtrem. Pro nahlédnutí do mapy. Linterna con filtro rojo. Para su uso en el mapa. Torcia con filtro rosso. Da usare in mappa. - Lampe torche avec un filtre rouge. Pour utilisation sur carte. + Lampe de poche avec un filtre rouge. Pour éclairer une carte. Maglite XL50 @@ -43,7 +43,7 @@ Bílá mini svítilna. Pro nahlédnutí do mapy. Mini linterna blanca. Para su uso en el mapa. Mini-torcia bianca. Da usare in mappa. - Mini lampe torche. Pour utilisation sur carte. + Lampe de poche (blanche). Pour éclairer une carte. KSF-1 @@ -65,7 +65,7 @@ Svítilna s červeným filtrem. Pro nahlédnutí do mapy. Linterna con filtro rojo. Para su uso en el mapa. Torcia con filtro rosso. Da usare in mappa. - Lampe torche avec un filtre rouge. Pour utilisation sur carte. + Lampe de poche avec un filtre rouge. Pour éclairer une carte. - \ No newline at end of file + diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 40b25f4aa6..4191a405d3 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -67,6 +67,7 @@ Simulazione Riflessi Esplosioni Druckwellensimulation Activar simulación de reflexiones + Simulation de la réflection des explosions. 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. + Activer la simulation de la réfléction des explosions ACE. Maximum Projectiles Tracked @@ -94,7 +96,7 @@ Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) - Cette option controle le nombre maximum de projectile et d'éclat résultant de la fragmentation que le système suivra à un moment T. Si plus de projectiles sont générés, ils ne seront pas pris en compte. Baisser cette option si vous ne voulez pas de baisse de FPS en cas d'un nombre important de projectiles (>200 éclats en même temps) + Cette option contrôle le nombre maximum de projectiles et d'éclats résultant de la fragmentation que le système suivra à un moment T. Si plus de projectiles sont générés, ils ne seront pas pris en compte. Baisser cette option si vous ne voulez pas de baisse de FPS en cas d'un nombre important de projectiles (>200 éclats en même temps) Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов) Questo parametro controlla il numero massimo di proiettili che la frammentazione e il sistema di spalling tracciano in ogni momento. Se più proiettili sono sparati, non verranno tracciati. Abbassa questo parametro se non vuoi cali di FPS in scenari con molti proiettili (>200 proiettili in aria contemporaneamente) @@ -106,7 +108,7 @@ Maks. liczba pocisków na klatkę Maximální počet projektilů za jeden snímek Projéteis máximos por quadro - Nombre maximal de projectile par image + Nombre maximal de projectiles par image Maximum repesz/képkocka Макс. количество снарядов за кадр Numero massimo di proiettili per Frame @@ -118,7 +120,7 @@ El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. - Le nombre d'éclat à calculer dans chaque images. Ceci permet de diffuser l'impact sur les FPS dans de multiples images, le limitant d'autant plus. + Le nombre d'éclats à calculer dans chaque image. Ceci permet de diffuser l'impact sur les FPS dans de multiples images, limitant la perte de FPS. A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. Il numero di calcoli per tracciamento di spalling ad ogni frame. Questo aiuta a distribuire l'impatto del tracciamento dello spalling su più frame, limitando ancora di più l'impatto. diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 442f10482d..1f008ddae9 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -237,7 +237,7 @@ Pokaż gesty w menu interakcji Mostra Gesti su Menù Interazione Mostrar gestos en el menú de interacción - Afficher les signaux dans le menu d'interaction + Afficher les gestes au menu d'interaction. Show gestures on the self interaction menu, or just use keybinds, or disable completely @@ -246,7 +246,7 @@ Pokaż listę gestów w menu własnej interakcji, użyj tylko skrótów na klawiaturze lub wyłącz całkowicie 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 + Afficher les gestes dans le menu d'interaction personnel, ou seulement utiliser les touches, ou desactiver complètement. Just Keybinds @@ -255,7 +255,7 @@ Tylko skróty klaw. Solo Hotkey Solo mediante teclas - Juste par raccourcis + Seulement les touches Keybinds + Interaction Menu @@ -264,7 +264,7 @@ Skróty klaw. + menu interakcji Hotkey + Menù Interazione Teclas y Menú de Interacción - Raccourcis et menu d'interaction + Touches + menu d'interaction - \ No newline at end of file + diff --git a/addons/headless/stringtable.xml b/addons/headless/stringtable.xml index 6ef7452611..293915b3c7 100644 --- a/addons/headless/stringtable.xml +++ b/addons/headless/stringtable.xml @@ -15,7 +15,7 @@ Moduł ten pozwala ustawić automatyczne przenoszenie AI do Headless Clientów. (Domyślnie: Nie) 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) + Ce module permet de rendre automatic le transfert des IA au client Headless. (Défaut : Non) Enables transferring of AI to Headless Clients. @@ -23,7 +23,7 @@ Aktywuje przenoszenie AI do Headless Clientów Abilita trasferimento di IA a Headless Client Habilita la transferencia de IA al Headless Client. - Autorise le transfert d'IA vers les Headless Clients. + Active le transfert d'IA au Headless Client. Delay @@ -39,7 +39,7 @@ Minimalne opóźnienie w sekundach pomiędzy transferami. (Domyślnie: 15) 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) + Délai minimum entre les transferts en secondes. (Défaut : 15) Log @@ -47,7 +47,7 @@ Dziennik Log Registro - Journal + Registre (logs) Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No) @@ -55,7 +55,7 @@ Zapisuj statystyki transferów oraz status Headless Clienta do RPT. (Domyślnie: Nie) 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) + Enregistrer les stats et les (dé)connections du Headless Client dans le .RPT. (Défaut : Non) - \ No newline at end of file + diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index aa6f114f0e..1777c08e4f 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -20,7 +20,7 @@ Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu. Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní. Беруши позволяют носителю находиться возле громкого вооружения без потери слуха. - Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus. + Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigüs. Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. @@ -114,7 +114,7 @@ Deaktiviert Ohrklingeln wenn der Spieler Hörschäden davonträgt. 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 + Enlève les acouphènes quand le joueur prend des dommages auditifs. Hearing @@ -149,7 +149,7 @@ Ativar surdez em combate? Уменьшает возможность игрока слышать звуки при повреждении органов слуха Riduci l'abilità uditiva quando il giocatore riceve danno uditivo - Reduit les capacités auditives lorsque le joueur subit des traumatismes sonores + Réduire l'audition lorsque le joueur prend des dommages auditifs. Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection @@ -172,6 +172,7 @@ Efecto Zeus RC Vliv na Zeus RC Effetto Zeus RC + Effets Zeus RC Allow zeus remote controlled units to be able to take hearing damage. @@ -182,6 +183,7 @@ Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos. Aktivovat efekt ztráty sluchu pro vzdáleně ovládané jednotky. Consenti alle unità controllate in remoto da Zeus di ricevere danni all'udito. + Autoriser le Zeus contrôlé à distance de prendre des dommages auditifs. Add earplugs to units @@ -192,6 +194,7 @@ Přidat špunty jednotce Aggiungi Tappi per Orecchie alle unità Agregar tapones de oida a la unidad + Ajouter des bouchons anti-bruits aux unités. Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts. @@ -202,6 +205,7 @@ Přidat `ACE_EarPlugs` všem jednotkám které mají zbraň. Můžete vypnout, pokud používáte vlastní výbavu. Aggiungi l'oggetto 'ACE_EarPlugs' a tutte le unità che hanno armi rumorose. Può essere disabilitato se vengono usati loadout personalizzati. Agregar el item `ACE_EarPlugs` a todas las unidades equipadas con armas muy ruidosas. Desactivar si quieren utilizarse equipamientos personalizados. + Ajouter l'item "ACE_EarPlugs" à toutes les unités qui ont des armes lourdes. Peut être desactivé si des équipements personnels sont utilisés. - \ No newline at end of file + diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 6ea279c110..aac120ddbc 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -310,6 +310,7 @@ Menu interakce Menú de interacción Menù Interazioni + Menu d'interaction Interaction Animation Speed @@ -320,6 +321,7 @@ Rychlost animace interakce Velocità Animazioni Interazioni Velocidad de animación del menú de interacción + Vitesse des animations du menu d'interaction Makes menu animations faster and decreases the time needed to hover to show sub actions @@ -330,6 +332,7 @@ Zrychlí animaci menu a sníží tak čas potřebný pro plné zobrazení podmenu Rende le animazioni Menù più veloci e diminuisce il tempo richiesto per mostrare sotto-azioni Hace la animación del menú más rápida, reduciendo el tiempo necesario para abrir sub-acciones. + Rendre le menu d'interaction plus rapide et reduire le temps nécessaire de survol d'une action pour afficher les sous-actions. \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index fcbeebb972..b847a66aa6 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -355,6 +355,7 @@ Esci Aussteigen! Sal del vehículo! + Sortez ! Team Management @@ -709,12 +710,14 @@ Aktivieren Włącz Encender + Allumer Turn off Deaktivieren Wyłącz Apagar + Eteindre Pass magazine @@ -725,6 +728,7 @@ Podat zásobník Passa caricatore Pasar cargador + Donner un chargeur Primary magazine @@ -735,6 +739,7 @@ Zásobník do primární zbraně Caricatore Primario Cargador primario + Chargeur d'arme principale Pistol magazine @@ -745,6 +750,7 @@ Zásobník do pistole Caricatore Pistola Cargador de pistola + Chargeur d'arme secondaire %1 passed you a %2 magazine. @@ -755,6 +761,7 @@ %1 ti podal %2 zásobník. %1 ti ha passato un caricatore %2 . %1 te pasó un cargador %2. + %1 vous a passé un chargeur %2. Show "pass magazine" interaction @@ -765,6 +772,7 @@ Zobrazit "interakci "podat zásobník" Mostra interazione "passa caricatore" Mostrar "Pasar cargador" en el menú de interacción + Montrer l'interaction "donner un chargeur". diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 60cc8723c2..6384c11641 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -32,6 +32,7 @@ Plecaki Zaini Mochilas + Sacs à dos Headgear @@ -40,6 +41,7 @@ Hełmy Copricapi Cascos + Equipement de tête Glasses @@ -48,6 +50,7 @@ Gogle Occhiali Gafas + Lunettes Uniforms @@ -56,6 +59,7 @@ Uniformy Uniformi Uniformes + Uniformes Vests @@ -64,6 +68,7 @@ Kamizelki Vests Chalecos + Gilets Grenades @@ -72,6 +77,7 @@ Granaty Granate Granadas + Grenades Medical @@ -80,6 +86,7 @@ Medyczne Medico Médico + Médical \ No newline at end of file diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index b1baef93a9..985bfb4836 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -10,6 +10,7 @@ ACE Logistika ACE Logística Logistica ACE + ACE Logistique \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 2fb0283cd3..73bf0cc774 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -45,6 +45,7 @@ Resplandor de linterna en el mapa? Nasvícení mapy pomocí baterky? Luce della torcia in mappa? + Lumière de la lampe de carte Add external glow to players who use flashlight on map? @@ -360,6 +361,7 @@ Zvolit kanál po startu Imposta Canale all'Avvio Setear canal al comenzar + Définir le canal de départ Change the starting marker channel at mission start @@ -370,6 +372,7 @@ Nastavit kanál po startu mise Cambia il canale marker iniziale all'avvio di missione Cambiar el canal de marcadores inicial al comenzar la misión + Changer le marqueur du canal de départ au départ de la mission \ No newline at end of file diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 141a95bc50..e89d6c07a3 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -10,6 +10,7 @@ Gesti Mappa Kartenzeichen Gestos en mapa + Gestes de carte Enabled @@ -20,6 +21,7 @@ Abilita Aktiviert Activado + Activer Map Gesture Max Range @@ -30,6 +32,7 @@ Distanza Massima Gesti Mappa Maximale Reichweite der Kartenzeichen Máx. dist. para gestos en mapa + Distance max. des gestes de carte Max range between players to show the map gesture indicator [default: 7 meters] @@ -40,6 +43,7 @@ Distanza massima tra giocatori per mostrare i gesti in mappa [default: 7 metri] Maximale Reichweite zwischen Spielern um Kartenzeichen anzuzeigen (Standard: 7 Meter) Máxima distancia a la cual pueden verse el indicador de gestos [defecto: 7 m] + Distance max. entre les joueurs pour montrer le pointage sur carte. (Défaut : 7m) Lead Default Color @@ -50,6 +54,7 @@ Colore Default Caposquadra Gruppenführer-Standardfarbe Color por defecto para el lider + Couleur principale de commandement. Fallback Color value for group leaders when there is no group setting. [Module: leave blank to not force on clients] @@ -59,6 +64,7 @@ Colore di riserva dei capisquadra quando non c'è nessuna impostazione gruppo. [Modulo: lascia vuoto per non forzare su clients] Ersatz-Farbwert für Gruppenführer wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen] Color por defecto para líderes cuando no está configurado [Módulo: dejar en blanco para no forzar] + Couleur par défaut pour les chefs de groupe quand il n'y a pas de réglage pour le groupe. (Module : laisser vide pour ne pas forcer chez les clients) Default Color @@ -69,6 +75,7 @@ Colore Default Standardfarbe Color por defecto + Couleur par défaut Fallback Color value when there is no group setting. [Module: leave blank to not force on clients] @@ -78,6 +85,7 @@ Colore di riserva quando non ci sono impostazioni gruppo. [Modulo: lascia vuto per non forzare sui clients] Ersatz-Farbwert wenn keine Gruppeneinstellung vorhanden ist. [Modul: leer lassen um Anwendung bei Clients nicht zu erzwingen] Color por defecto cuando no está configurado [Módulo: dejar en blanco para no forzar] + Couleur par défaut quand il n'y a pas de réglage pour le groupe. (Module : laisser vide pour ne pas forcer chez les clients) Lead Color @@ -88,6 +96,7 @@ Colore Caposquadra Gruppenführer-Farbe Color para el líder + Couleur de commandement Color value for group leaders of groups synced with this module. @@ -97,6 +106,7 @@ Colore dei Caposquadra per gruppi sincronizzati con questo modulo. Farbwert für Gruppenführer, die mit diesem Modul synchronisiert werden. Color para los líderes de los grupos sincronizados al módulo. + Couleur pour les chefs de groupe des groupes synchronisés avec le module. Color @@ -107,6 +117,7 @@ Colore Farbe Color + Couleur Color value for group members of groups synced with this module. @@ -116,6 +127,7 @@ Colore per membri di gruppi sincronizzati con questo modulo. Farbwert für Gruppenmitglieder, die mit diesem Modul synchronisiert werden. Color para los miembros de los grupos sincronizados al módulo. + Couleur pour les membres du groupe synchronisé avec ce module. Map Gestures - Group Settings @@ -126,6 +138,7 @@ Gesti Mappa - Impostazioni Gruppi Kartenzeichen - Gruppeneinstellungen Gestos en mapas - Configuración de grupos + Gestes de carte - réglages de groupe Update Interval @@ -136,6 +149,7 @@ Intervallo Aggiornamento Update-Intervall Período de actualización + Intervalle de mise à jour Time between data updates. @@ -146,6 +160,7 @@ Intervallo tra aggiornamenti dati. Zeit zwischen Datenupdates. Tiempo entre actualizaciones sucesivas. + Temps entre les actualisations de données Group color configurations @@ -156,6 +171,7 @@ Configurazioni colori dei gruppi Konfiguration der Gruppenfarbe Configuración de color de grupo + Configuration des couleurs de groupe Group color configuration containing arrays of color pairs ([leadColor, color]). @@ -165,6 +181,7 @@ Configurazioni colori gruppi contenenti array di coppie di colori ([leadColor, color]). Konfiguration der Gruppenfarbe mit zugeordneten Farbpaaren der Aufstellung ([leadColor, color]). Configuración de color de grupo conteniendo una lista de pares de colores ([colorLider, colo]). + Configuration des couleurs de groupe contenant des tableaux de paires de couleurs ([couleurDeCommandement, couleur]). Hash of Group ID mapped to the Group color configuration index. @@ -174,6 +191,7 @@ Hash degli ID Gruppi mappati nell'indice configurazioni colori gruppi. Hashwert der Gruppen-ID, die dem Konfigurations-Index der Gruppenfarbe zugeordnet werden. ID de Grupo mapeado al índice de la configuración de color de grupo. + Hash de l'identifiant du groupe mappé à l'index de la configuration de la couleur du groupe. GroupID Color configuration mapping @@ -183,6 +201,7 @@ Mappatura configurazioni colori GroupID Gruppen-ID-Farbe Konfigurationszuordnung Mapeado de ID de Grupo + Configuration du mappage de l'identifiant de la couleur du groupe. Enables the Map Gestures. @@ -193,6 +212,7 @@ Abilita i Gesti Mappa Aktiviert die Kartenzeichen. Activar Gestos en Mapa + Activer les gestes de carte Name Text Color @@ -203,6 +223,7 @@ Colore Testo Nome Farbe der Namenstexte. Color de los nombres + Couleur du texte du nom Color of the name tag text besides the map gestures mark. @@ -212,6 +233,7 @@ Colore del testo dei nametag oltre a quello dei Gesti Mappa Farbe der Namenstexte neben der Kartenzeichen-Markierung. Color de los nombres dibujados al lado del marcados de gestos. + Couleur des tags de nom à côté de marqueur de pointage sur carte. Map Gestures @@ -222,6 +244,7 @@ Gesti Mappa Kartenzeichen Gestos en mapa + Gestes de carte diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index f8a521352d..53806a73ac 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -54,6 +54,7 @@ Adenosin injizieren Inyectar Adenosina Wstrzyknij adenozynę + Injecter de l'adénosine Inject Atropine @@ -252,6 +253,7 @@ Adenosin injizieren... Inyectando Adenosina... Wstrzykiwanie adenozyny... + Injection d'adénosine... Injecting Atropine... @@ -440,7 +442,7 @@ Жгут Škrtidlo Staza - Tourniquet + Garrot Érszorító Laccio emostatico Torniquete @@ -452,7 +454,7 @@ Снять жгут Sundat škrtidlo Zdejmij stazę - Enlever le Tourniquet + Enlever le garrot Érszorító leszedése Rimuovi laccio emostatico Remover Torniquete @@ -762,7 +764,7 @@ Tourniquet [CAT] Жгут Torniquete [CAT] - Tourniquet [CAT] + Garrot [CAT] Staza [typ. CAT] Škrtidlo [CAT] Érszorító [CAT] @@ -834,7 +836,7 @@ Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen Для тампонирования ран среднего и большого размера и остановки кровотечения. Se utiliza para vendar heridas medianas o grandes y detener el sangrado - Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies + Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragie. Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer Usato su ferite medie o larghe per fermare emorragie. @@ -845,7 +847,7 @@ A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. - Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques + Bandage servant à recouvrir les blessures pour arrêter les hémoragies et faciliter la guérison. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques. Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén. Un bendaggio usato per coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. @@ -894,7 +896,7 @@ Tourniquet [CAT] Жгут Torniquete (CAT) - Tourniquet (CAT) + Garrot (CAT) Staza (typ. CAT) Škrtidlo (CAT) Érszorító (CAT) @@ -966,18 +968,21 @@ Adenosin-Autoinjektor Asenosina auto-inyectable Autostrzykawka z adenozyną + Auto-injécteur d'adénosine 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. + Utilisé pour contrer les effets de l'adrénaline 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. + Un composé utilisé pour contrer les effets de l'adrénaline Atropine autoinjector @@ -1127,7 +1132,7 @@ Blood IV, for restoring a patients blood (keep cold) Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) - Cullot sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. + Cullot sanguin O-, utilisé seulement lors de perte sanguine majeure afin de remplacer le volume sanguin perdu. Habituelment utilisé lors du transport ou dans un etablisement de soins. Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych. Vér-infúzió, intravénás bejuttatásra egy páciensnek (hidegen tárolandó) Sangue usato per ripristinare pazienti in cui si è verificata una perdita di sangue (conservare al fresco) @@ -1141,7 +1146,7 @@ Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdida. Uso habitual durante el transporte de heridos. Sangue 0 negativo usato per ripristinare sangue in pazienti in cui si è verificata una perdita di sangue. - Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC + Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC. O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. @@ -2104,6 +2109,7 @@ %1 realizou RCP %1 провел сердечно-легочную реанимацию %1 realicó RCP + %1 à fait une RPC %1 used %2 @@ -2160,6 +2166,7 @@ %1 использовал аптечку %1 ha usato Kit Pronto Soccorso Personale %1 usó Kit de Primeros Auxilios + %1 à utilisé un PAK Heavily wounded @@ -2277,6 +2284,7 @@ Curar hitpoints totalmente enfaixados Heal fully bandaged hitpoints Cura hitpoints completamente bendati + Soigner les plaies entièrement bandées. Heilt vollständig bandagierte Trefferpunkte @@ -2788,7 +2796,7 @@ Tourniquet entfernen... Zdejmowanie stazy... Quitando torniquete... - Retire le tourniquet... + Retire le garrot... Removendo torniquete... Érszorító eltávolítása... Sundavám škrtidlo... @@ -3059,7 +3067,7 @@ KI kann bewusstlos werden Umožňuje AI upadnout do bezvědomí Permite IA ficar inconsciente - Autoriser les IA à tomber inconsciente + Autoriser les IA à tomber inconscients Engedélyezi az AI eszméletének elvesztését Permetti alle IA di diventare incoscienti @@ -3095,7 +3103,7 @@ Verhindere direkten Tod Zabránit okamžité smrti Previnir morte instantânea - Empêcher la morte instantanée + Empêcher la mort instantanée Azonnali halál kiiktatása Previeni morte istantanea @@ -3200,6 +3208,7 @@ Standard Sanitätseinstellungen [ACE] Podstawowe ustawienia medyczne Ajustes médicos básicos [ACE] + Réglages du système médical basic [ACE] Advanced Medical Settings [ACE] @@ -3314,12 +3323,14 @@ Erlaube Epiniphrin Permitir Epinefrina Ograniczenia adrenaliny + Autoriser l'adrénaline 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) + Qui peut utiliser l'adrénaline pour les soins complets ? (Médical basique seulement) Allow PAK @@ -3410,12 +3421,14 @@ Orte für Epiniphrin Ubicaciones epinefrina Ograniczenia adrenaliny + Position des adrénalines 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) + Où peuvent être utilisées les adrénalines ? (Médical basique) Locations PAK @@ -3618,6 +3631,7 @@ Curar hitpoints Léčit hitponty Cura Hitpoints + Soigner les dommages Heal fully bandaged hitpoints @@ -3628,6 +3642,7 @@ Curar totalmente hitpoints enfaixados Heal fully bandaged hitpoints Cura Hitpoints completamente bendati + Soigner les plaies entièrement bandées. Pain suppression @@ -3658,6 +3673,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 + Configure les réglages de traitement dans ACE médical basique Configure the treatment settings from ACE Advanced Medical @@ -4076,6 +4092,7 @@ La distancia hasta %1 se ha agrandado demasiado para el tratamiento %1 je příliš daleko, léčba není možná Distanza da %1 è diventata troppo alta per permettere trattamento + %1 est trop loin pour être soigné This person (%1) is awake and cannot be loaded @@ -4086,6 +4103,7 @@ Esta pessoa (%1) está acordada e não pode ser carregada Tato osoba (%1) je vzhůru a nemůže být naložena Questa persona (%1) è sveglia e non può essere caricata. + Cette personne (%1) est consciente et ne peut être chargées. There is no tourniquet on this body part! @@ -4096,6 +4114,7 @@ Não existe nenhum torniquete nesta parte do corpo! Žádné škrtidlo na této části těla! Non c'è nessun laccio emostatico su questa parte del corpo! + Il n'y a pas de garrot sur ce membre ! Medical training @@ -4103,6 +4122,7 @@ Addestramento Medico Sanitätsausbildung Entrenamiento médico + Entraînement médical Whether or not the object will be a medical vehicle. @@ -4110,6 +4130,7 @@ 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? + Définit si le véhicule est un véhicule médical ou non. Delay cease fire of AI while player is unconscious for medical reasons. diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 322897fa6b..f825882be6 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -10,6 +10,7 @@ Menú médico Zdravotnikcá nabídka Menù Medico + Menu médical Allow Medical Menu @@ -20,6 +21,7 @@ Permitir menú médico Povolit zdravotnickou nabídku Consenti Menù Medico + Autoriser le menu médical Allow clients to use the medical menu @@ -30,6 +32,7 @@ Permitir a los clientes utilizar el menú médico Povolit klientům používat zdravotnickou nabídku Consenti ai clients di usare il Menù Medico + Autoriser les clients à utiliser le menu médical Use Medical menu @@ -40,6 +43,7 @@ Utiliza el menú médico Použít zdravotnickou nabídku Usa Menù Medico + Utiliser le menu médical If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu @@ -50,6 +54,7 @@ Si está permitido por el servidor, active la opción de utilizar el menú médico a través del menú de las teclas Pokud je povoleno serverem, umožní použít zdravotnickou nabídku skrze kláv. zkratku a interakční menu Se consentito dal server, abilita l'opzione di usare il Menù Medico attraverso hotkeys e menù interazione + Si autorisé par le serveur, active l'option d'utiliser le menu médical à travers les raccourcis clavier et le menu d'interaction. Re-open Medical menu @@ -60,6 +65,7 @@ Reabrir menú médico Znovu otevřít zdravotnickou nabídku Ri-apri Menù Medico + Ré-ouvrir le menu médical Re-open the medical menu after succesful treatment @@ -70,6 +76,7 @@ Reabre el menú médico despues de un tratamiento con éxito Znovu otevřít zdravotnickou nabídku po úspěšné léčbě Ri-Apri il Menù Medico dopo un trattamento riuscito + Ré-ouvrir le menu médical après un traitement réussi Open Medical Menu @@ -80,6 +87,7 @@ Abrir menú médico Otevřít zdravotnickou nabídku Apri Menù Medico + Ouvir le menu médical Medical Menu Settings @@ -90,6 +98,7 @@ Ajustes del mení médico Nastavení zdravotnické nabídky Impostazioni Menù Medico + Réglages du menu médical Configure the usage of the Medical Menu @@ -100,6 +109,7 @@ Configurar el uso del menú médico Konfigurace využití zdravotnické nabídky Configura l'uso del Menù Medico + Configurer l'utilisation du menu médical EXAMINE & TREATMENT @@ -414,7 +424,7 @@ Mittel среднего размера Mediana - moyenne + Moyenne średnim Médio Střední @@ -436,7 +446,7 @@ Er hat %2 offene Wunden (%1) %2 открытые раны %1 Hay %2 Heridas Abiertas %1 - Il y a %2 %1 Blessure Ouverte + Il y a %2 %1 Blessure(s) Ouverte(s) Widzisz otwarte rany w ilości %2 o %1 rozmiarze Existem %2 ferimentos abertos %1 Jsou zde %2 %1 otevřené rány @@ -469,7 +479,7 @@ Er hat %2 verbundene Wunden (%1) %2 перевязанные раны %1 Hay %2 Heridas %1 Vendadas - Il y a %2 %1 Blessure Bandée + Il y a %2 %1 Blessure(s) Bandée(s) Widzisz %2 zabandażowanych ran o %1 rozmiarze Existem %2 ferimentos %1 tratados Jsou zde %2 %1 ovázané rány @@ -546,7 +556,7 @@ Blutung Кровотечение Sangrando - Seignement + Saignement Krwawienie zewnętrzne Sangrando Krvácí @@ -557,7 +567,7 @@ hat Schmerzen Испытывает боль Con Dolor - A De La Douleur + Souffre W bólu Com dor v bolestech @@ -579,7 +589,7 @@ Tourniquet [CAT] Жгут Torniquete [CAT] - Garot [CAT] + Garrot [CAT] Opaska uciskowa [CAT] Torniquete [CAT] Škrtidlo [CAT] diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index c7be9bf0bf..c20ea7aede 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -332,7 +332,7 @@ Wie viel Daten auf einem MicroDAGR zu sehen sind Kolik informací je načteno do MicroDAGR? Quanta informação é preenchida no mapa do MicroDAGR - Combien d'information apparaisse sur la carte du MicroDAGR + Combien d'informations apparaissent sur la carte du MicroDAGR Mennyi térképadatot tartalmaz a MicroDAGR Сколько данных должно отображаться на карте MicroDAGR Quanti dati sono trasferiti nella mappa del MicroDAGR @@ -380,7 +380,7 @@ Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen. Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě. Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa. - Contrôle le nombre d'information disponible sur la carte du MicroDAGR. + Contrôle le nombre d'informations disponibles sur la carte du MicroDAGR. Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. Контролирует, сколько данных должно отображаться на карте устройств MicroDAGR. Ограничивает объем отображаемых данных на миникарте. Controlla quanti dati sono presenti negli oggetti MicroDAGR. Meno dati costringono la vista mappa a mostrare meno informazioni nella minimappa. diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 4b7df47b16..ff14fea9f7 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -20,7 +20,7 @@ Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. - Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. + Le guidage avancé de missile, ou AMG en anglais, apporte de multiples améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 9989193232..5daa29a0f6 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 + Utiliser la gestion des munitions 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. + Enlever les chargeurs de mortier, requiert des obus individuels qui doivent être chargés par le tireur ou le servant. N'affect pas les mortiers IA. Remove Round Entferne Patrone Extraer ronda Wyładuj pocisk + Enlever l'obus Load Mortar Lade Mörser Cargar mortero Załaduj moździerz + Charger le mortier Unloading Round Mörser entladen Descargando ronda Rozładowywanie moździerza + Déchargement de l'obus Preparing Round Patrone vorbereiten Preparando ronda Przygotowywanie pocisku + Praparation de l'obus Load HE Lade Sprengpatrone Cargar HE Załaduj pocisk wybuchowy + Charger HE Load Smoke Lade Nebelpatrone Cargar Humo Załaduj pocisk dymny + Charger Fumigène Load Illumination Lade Leuchtpatrone Cargar Iluminación Załaduj pocisk oświetlający + Charger Eclairante Load Guided HE Lade gelenkte Sprengpatrone Cagar HE Guiada Załaduj kierowany pocisk wybuchowy + Charger HE guidé Load Laser Guided HE Lade lasergelenkte Sprengpatrone Cargar HE Guiada por Laser Załaduj laserowo napr. pocisk wybuchowy + Charger HE guidé au laser 82mm HE Round 82mm Sprengpatrone Ronda 82mm HE Pocisk wybuchowy kal. 82mm + Obus de 82mm HE 82mm Smoke Round 82mm Nebelpatrone Ronda 82mm Humo Pocisk dymny kal. 82mm + Obus de 82mm fumigène 82mm Illumination Round 82mm Leuchtpatrone Ronda 82mm Iluminación Pocisk oświetlający kal. 82mm + Obus de 82mm éclairant 82mm Guided HE Round 82mm gelenkte Sprengpatrone Ronda 82mm Guiada Kierowany pocisk wybuchowy kal. 82mm + Obus de 82mm HE guidé 82mm Laser Guided HE Round 82mm lasergelenkte Sprengpatrone Ronda 82mm Guiada por Laser Laserowo napr. pocisk wybuchowy kal. 82mm + Obus de 82mm HE guidé au laser Used in Mk6 mortar Wird im Mk6 Mörser verwendet Usada en el mortero Mk6 Używany w moździerzu Mk6 + Utilisé dans le mortier Mk6 [ACE] 82mm HE Rounds Box [ACE] 82mm Sprengpatronenkiste [ACE] Caja de municiones 82mm HE [ACE] Skrzynka amunicji wybuchowej 82mm + [ACE] Obus de 82mm HE [ACE] 82mm Smoke Rounds Box [ACE] 82mm Nebelpatronenkiste [ACE] Caja de municiones 82mm Humo [ACE] Skrzynka amunicji dymnej 82mm + [ACE] Obus de 82mm fumigène [ACE] 82mm Illumination Rounds Box [ACE] 82mm Leuchtpatronenkiste [ACE] Caja de municiones 82mm Iluminacion [ACE] Skrzynka amunicji oświetlającej 82mm + [ACE] Obus de 82mm éclairants [ACE] 82mm Default Loadout Box [ACE] 82mm Standardkiste [ACE] Caja de municiones 82mm por defecto [ACE] Skrzynka amunicji standardowej 82mm + [ACE] Obus de 82mm par défaut \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index 21f97ed168..708860d134 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -142,6 +142,7 @@ Noktowizja Visione Notturna Visión Nocturna + Vision nocturne Settings for night vision. @@ -152,6 +153,7 @@ Ustawienia noktowizorów Impostazioni per visione notturna. Parámetros para visión nocturna + Réglage pour la vision nocturne Disable NVGs in scope @@ -162,6 +164,7 @@ Wył. NVG przy celowaniu Disabilita NVG nei mirini Desactivar NVG en miras + Desactiver les JVN dans les viseurs. Blocks the usage of night vision goggles whilst aiming down the sight. @@ -172,6 +175,7 @@ Uniemożliwia korzystanie z gogli noktowizyjnych przy celowaniu. Blocca l'uso di visori notturni mentre miri con ottiche. Desactiva el uso de gafas visión nocturna cuando se utilizan miras normales. + Bloque l'usage des JVN pendant la visée. \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 21fff4033d..b051e3f219 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -260,7 +260,7 @@ Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. - Quand autoriser, vous pouvez accéder au modification et à l'exporation en solo. Cliquer sur exporter placera la configuration dans le presse papier + Quand autorisé, vous pouvez accéder aux modifications et à l'exporation en solo. Cliquer sur exporter placera la configuration dans le presse-papier Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. Когда разршен, у вас появляется доступ к модификации настроек и экспорту их в одинночном режиме. Нажатие на кнопку Экспорт поместит форматированные настройки в буфер обмена. Quando consentito, hai accesso alle modifiche delle impostazioni ed esportazione in SP. Cliccando Esporta piazzera il config formattato sul tuo Blocco Note. @@ -356,7 +356,7 @@ Debug do schránky Debug in die Zwischenablage Depuração para área de transferência - Debug vers le presse papier + Debug vers le presse-papier Debug a vágólapra Отладка в буфер обмена Debug su Blocco Note @@ -368,7 +368,7 @@ Pošle debug informace do RPT a schránky. Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. Envia informação de depuração para RPT e área de transferência. - Copie le Debug dans le RPT et le presse papier + Copie le Debug dans le RPT et le presse-papier Debug információt küld az RPT-be és a vágólapra. Отправляет отладочную информацию в RPT и буфер обмена. Invia informazioni di debug all'RPT e al Blocco Note @@ -430,6 +430,7 @@ Všechny Kategorie Todas las categorías Tutte le Categorie + Toutes les catégories Logistics @@ -440,6 +441,7 @@ Logistika Logística Logistica + Logistique \ No newline at end of file diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index e41f9342d4..23a1b0253a 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 + Effet de surchauffe 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 + Montrer les effets lorsque l'arme surchauffe. 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 + Effets de surchauffe pour tout le monde. 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 + Montrer les effets de surchauffe des autres joueurs. Overheating Dispersion @@ -59,6 +63,7 @@ Wpływ na rozrzut Dispersione Surriscaldamento Dispersión + Disperssion dûe à la surchauffe 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. + Les armes en surchauffe seront moins précises et auront une vitesse en sortie de bouche plus faible. S'applique pour tous les joueurs. Unjam weapon on reload Behebt Ladehemmung beim Nachladen Desencasquillar el arma al recargar. Usuń zacięcie przy przeładowaniu + Des-enrayer l'arme au rechargement. Reloading clears a weapon jam. Nachladen behebt eine Ladehemmung. Recargar el arma la desencasquilla. Przeładowywanie usuwa zacięcie + Recharger vide la chambre de l'arme Chance of unjam failing Wahrscheinlichkeit, dass Ladehemmung nicht behoben wird Probabilidad de falla al desencasquillar. Szansa na porażkę usuw. zacięcia + Chance de rater le des-enrayement 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. + Probabilité qu'une action de des-enrayement échoue, nécessitant de recommencer. Spare barrel @@ -156,6 +166,7 @@ Ladehemmung nicht behoben Falló el desencasquillado Porażka przy usuwaniu zacięcia + Toujours enrayé ! Swap barrel diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index 83b6fc3409..880cc55e5f 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -64,7 +64,7 @@ Reserve Parachute Reserve Fallschirm - Mettre de coté le parachute (????) + Parachute de secours Spadochron awaryjny Tartalék ejtőernyő Para-quedas de reserva diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index a4b037c5a5..7806735c57 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -10,6 +10,7 @@ Nastavení přezbrojení Impostazioni Riarmo Parámetros de rearme + Options de réarmement This module allows you to tweak rearm system settings. @@ -20,6 +21,7 @@ Tento modul umožňuje upravovat systém přezbrojení. Questo modulo ti consente di cambiare le impostazioni del sistema Riarmo. Este módulo permite cambiar los parámetros de rearme. + Ce module autorise l'amélioration du système de réarmement. Rearm Amount @@ -30,6 +32,7 @@ Rychlost přezbrojení Ammontare Riarmo Velocidad de rearme + Quantité à réarmer How fast should a vehicle be rearmed? @@ -40,6 +43,7 @@ Jak rychle bude vozidlo přezbrojeno? Quanto velocemente dovrebbe essere riarmato un veicolo? Cuán rápido es el proceso de rearme? + A quelle vitesse devrait être réarmé un véhicule ? Entire Vehicle @@ -50,6 +54,7 @@ Celé vozidlo Tutto il Veicolo Vehículo completo + Véhicule entier Entire Magazine @@ -60,6 +65,7 @@ Celý zásobník Tutto il Caricatore Cargador completo + Chargeur entier Amount based on caliber @@ -70,6 +76,7 @@ Rychlost závisí na ráži Ammontare basato sul calibro Cantidad basada en el calibre + Quantité basée sur le calibre Rearm @@ -80,6 +87,7 @@ Přezbrojit Riarma Rearmar + Réarmer Rearming %1 with %2... @@ -90,6 +98,7 @@ Přezbrojuji %1 za pomoci %2... Sto Riarmando %1 con %2... Rearmando %1 con %2... + Réarmement de %1 avec %2... Rearming %1... @@ -100,6 +109,7 @@ Přezbrojuji %1... Riarmando %1... Rearmando %1... + Réarmement de %1... Taking %1 for %2... @@ -110,6 +120,7 @@ Beru %1 pro %2... Sto prendendo %1 per %2... Tomando %1 para %2... + Prend %1 pour %2... Take ammo @@ -120,6 +131,7 @@ Vít munici Prendi munizioni Tomar munición + Prendre la munition Pick up ammo @@ -130,6 +142,7 @@ Sebrat munici Raccogli munizioni Levantar munición + Ramasser la munition Store ammo @@ -140,6 +153,7 @@ Uskladnit munici Riponi munizioni Guardar munición + Stocker la munition Storing %1 in %2... @@ -150,6 +164,7 @@ Ukládám %1 v %2... Sto riponendo %1 in %2... Guardando %1 en %2... + Stocke %1 dans %2... Picking up ammo... @@ -159,6 +174,7 @@ Pegando munição... Sto raccogliendo le munizioni... Levantando munición... + Ramassage des munitions... Rearmed %1 rounds of %2 on %3 @@ -169,6 +185,7 @@ Přezbrojeno % nábojů z %2 u %3 Riarmati %1 colpi di %2 su %3 Rearmadas %1 rondas de %2 en %3 + %1 balles réarmées de %2 dans %3 Smoke Screen @@ -201,6 +218,7 @@ 30mm HEI 30mm HEI 30mm HEI + 30mm HEI 30mm HEI-T @@ -211,6 +229,7 @@ 30mm HEI-T 30mm HEI-T 30mm HEI-T + 30mm HEI-T AIM-9 Sidewinder @@ -221,6 +240,7 @@ AIM-9 Sidewinder AIM-9 Sidewinder AIM-9 Sidewinder + AIM-9 Sidewinder Wympel R-73 @@ -231,6 +251,7 @@ Wympel R-73 Wympel R-73 Wympel R-73 + Wympel R-73 AGM-65 Maverick @@ -241,6 +262,7 @@ AGM-65 Maverick AGM-65 Maverick AGM-65 Maverick + AGM-65 Maverick Kh-25MTP @@ -251,6 +273,7 @@ Kh-25MTP Kh-25MTP Kh-25MTP + Kh-25MTP Hydra 70 HE @@ -261,6 +284,7 @@ Hydra 70 HE Hydra 70 HE Hydra 70 HE + Hydra 70 HE S-8 HE @@ -271,6 +295,7 @@ S-8 HE S-8 HE S-8 HE + S-8 HE Hydra 70 AP @@ -281,6 +306,7 @@ Hydra 70 AP Hydra 70 AP Hydra 70 AP + Hydra 70 AP S-8 AP @@ -291,6 +317,7 @@ S-8 AP S-8 AP S-8 AP + S-8 AP GBU-12 @@ -301,6 +328,7 @@ GBU-12 GBU-12 GBU-12 + GBU-12 FAB-250M-54 @@ -311,6 +339,7 @@ FAB-250M-54 FAB-250M-54 FAB-250M-54 + FAB-250M-54 \ No newline at end of file diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index 5c651e8d80..2df51ea540 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -10,6 +10,7 @@ Nastavení tankování Impostazioni Rifornimento Parámetros de reabastecimiento + Réglages de ravitaillement Flow Rate @@ -20,6 +21,7 @@ Rychlost tankování Rateo Flusso Caudal de llenado + Vitesse du ravitaillement How fast should a vehicle be refueled? @@ -30,6 +32,7 @@ Jak rychle bude vozidlo natankováno? Quanto velocemente dovrebbe essere rifornito un veicolo? Cuán rápido se reabastecen los vehículos? + A quelle vitesse devrait être ravitaillé un véhicule ? Refuel @@ -40,6 +43,7 @@ Natankovat Rifornisci Reabastecer + Ravitaillement Take fuel nozzle @@ -50,6 +54,7 @@ Vzít výdejní pistoli Prenti manica benzina Tomar surtidor + Prendre la pompe Taking fuel nozzle... @@ -60,6 +65,7 @@ Beru výdejní pistoli... Sto prendendo manica benzina... Tomando surtidor... + Prise de la pompe... Connect fuel nozzle @@ -70,6 +76,7 @@ Připojit výdejní pistoli Collega manica benzina Conectar surtidor + Connecter la pompe Connecting fuel nozzle... @@ -80,6 +87,7 @@ Připojuji výdejní pistoli... Sto collegando la manica benzina... Conectando surtidor... + Connection de la pompe... Disconnect fuel nozzle @@ -90,6 +98,7 @@ Odpojit výdejní pistoli Scollega manica benzina Desconectar surtidor + Déconnecter la pompe Connect @@ -100,6 +109,7 @@ Připojit Collega Conectar + Connecter Check remaining fuel @@ -110,6 +120,7 @@ Zkontrolovat zůstatek paliva Controlla benzina rimanente Verificar combustible remanente + Vérifier le carburant restant Checking remaining fuel... @@ -120,6 +131,7 @@ Kontroluji zůstatek paliva... Sto controllando la benzina rimanente... Verificando combustible remanente,,, + Vérifie le carburant restant... There are %1 liters left. @@ -130,6 +142,7 @@ Zbývá ještě %1 litrů. Sono rimasti %1 litri. Quedan %1 litros. + Il reste %1 litres. There is no fuel left. @@ -140,6 +153,7 @@ Bez paliva. Non è rimasta più benzina. No queda combustible. + Il n'y a plus de carburant. Cancel @@ -150,6 +164,7 @@ Zrušit Cancella Cancelar + Annuler Failed @@ -160,6 +175,7 @@ Neúspěšný Fallito Falló + Echoué Stop fueling @@ -170,6 +186,7 @@ Zastavit tankování Ferma rifornimento Detener reabastecimiento + Arrêter le ravitaillement Stopping fueling... @@ -180,6 +197,7 @@ Zastavuji tankování... Sto fermando il rifornimento... Deteniendo reabastecimiento... + Arrête le ravitaillement... Start fueling @@ -190,6 +208,7 @@ Začít tankovat Inizia rifornimento Comenzar reabastecimiento + Débute le ravitaillement Starting fueling... @@ -200,6 +219,7 @@ Spouštím tankování... Sto iniziando il rifornimento... Comenzando reabastecimiento... + Début du ravitaillement... %1 Liters fueled @@ -210,6 +230,7 @@ %1 litrů natankováno %1 litri riforniti %1 lt reabastecido + %1 litres ravitaillés The fuel source is empty. @@ -220,6 +241,7 @@ Zdroj paliva je prázdný. La fonte di benzina èvuota. La fuente de combustible está vacía. + La source de carburant est vide. Maximum fuel hose length reached. @@ -230,6 +252,7 @@ Dosažena maximální délka hadice Distanza massima della manica raggiunta. Máxima longitud de manguera alcanzada. + Tuyau tendu au maximum Fueling completed @@ -240,6 +263,7 @@ Tankování dokončeno Rifornimento completato Reabastecimiento completado + Ravitaillement terminé Fueling stopped @@ -250,6 +274,7 @@ Tankování zastaveno Rifornimento fermato Reabastecimiento detenido + Ravitaillement stoppé Fueling started @@ -260,6 +285,7 @@ Tankování zahájeno Rifornimento iniziato Comenzó el reabastecimiento + Ravitaillement débuté Return fuel nozzle @@ -270,6 +296,7 @@ Vrátit výdejní pistoli Riponi manica benzina Devolver surtidor + Retourner la pompe Returning fuel nozzle... @@ -280,6 +307,7 @@ Vracím výdejní pistoli... Sto riponendo la manica della benzina... Devolviendo el surtidor... + Retourne la pompe Check fuel counter @@ -290,6 +318,7 @@ Zkonrolovat palivoměr Controlla indicatore livello benzina Verificar el contador de combustible + Vérifier le compteur Checking fuel counter... @@ -300,6 +329,7 @@ Konroluji palivoměr... Sto controllando l'indicatore del livello benzina... Verificando el contador de combustible + Vérification du compteur... %1 liters have been fueled. @@ -310,6 +340,7 @@ %1 litrů bylo natankováno. %1 litri sono stati riforniti. Se reabastecieron %1 lt + %1 litres ont été écoulés. diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index de640ff48c..fb505f4f4e 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -46,6 +46,7 @@ Měním kolo... Cambiando rueda... Sto sostituendo la ruota... + Remplacement de la roue... Wheel replaced @@ -56,6 +57,7 @@ Kolo vyměněno Rueda cambiada Ruota sostituita + Roue remplacée Remove Wheel @@ -78,6 +80,7 @@ Odstraňuji kolo... Quitando rueda... Sto rimuovendo la ruota... + Démontage de la roue... Wheel removed @@ -88,6 +91,7 @@ Kolo odstraněno Rueda quitada Ruota rimossa + Roue démontée Change Track @@ -98,6 +102,7 @@ Vyměnit pás Cambiar oruga Cambia cingolo + Changer la chenille Replacing Track... @@ -108,6 +113,7 @@ Měním pás... Cambiando oruga... Sto sostituendo il cingolo... + Remplacement de la chenille... Track replaced @@ -118,6 +124,7 @@ Pás vyměněn Oruga cambiada Cingolo sostituito + Chenille remplacée Remove Track @@ -128,6 +135,7 @@ Odstranit pás Quitar oruga Rimuovi cingolo + Enlever la chenille Removing Track... @@ -138,6 +146,7 @@ Odstraňuji pás... Quitando oruga... Sto rimuovendo il cingolo... + Enlèvement de la chenille... Track removed @@ -148,6 +157,7 @@ Pás odstraněn Oruga quitada Cingolo rimosso + Chenille enlevée Full Repair @@ -158,6 +168,7 @@ Kompletní oprava Reparación completa Riparazione completa + Réparations complètes Repairing Vehicle... @@ -168,6 +179,7 @@ Opravuji vozidlo... Reparando vehículo... Sto riparando il veicolo... + Réparation du véhicule... Full Repair Locations @@ -178,6 +190,7 @@ Oblast pro kompletní opravu Lugares de reparación completa Luoghi Riparazione Completa + Lieu de réparation complète At what locations can a vehicle be fully repaired? @@ -188,6 +201,7 @@ ¿En qué lugares puede un vehículo ser reparado totalmente? V které oblasti může být vozidlo plně opraveno? In quali luoghi è possibile riparare completamente un veicolo? + Où peuvent être réparés complètement les véhicules ? Allow Full Repair @@ -198,6 +212,7 @@ Povolit kompletní opravu Permitir reparación completa Consenti Riparazione Completa + Autoriser les réparations complètes. Who can perform a full repair on a vehicle? @@ -208,6 +223,7 @@ ¿Quién puede realizar una reparación completa de un vehículo? Kdo může provést úplné opravy na vozidle? Chi può eseguire una riparazione completa su un veicolo? + Qui peut faire une réparation complète ? Add Spare Parts @@ -218,6 +234,7 @@ Добавлять запчасти Přidat náhradní díly Aggiungi Parti di Ricambio + Ajouter des pièces de rechange Add spare parts to vehicles (requires Cargo component)? @@ -228,6 +245,7 @@ Добавлять запасные части в технику (требуется модуль Грузоперевозок)? Přidat náhradní díly do vozidla (vyžaduje úložný prostor)? Aggiungi parti di ricambio ai veicoli (richiede componente Cargo)? + Ajouter des pièces de rechage aux véhicules ? (à besoin du système de cargaison) Repair >> @@ -250,6 +268,7 @@ Zobrazit text při opravě Mostrar texto en la reparación Mostra testo mentre ripari + Afficher du texte pendant la réparation Display a notification whenever you repair a vehicle @@ -260,6 +279,7 @@ Mostrar una notificación cada vez que se reparare un vehículo Zobrazit oznámení kdykoliv opravíš vozidlo Mostra una notifica quando stai riparando un veicolo + Afficher une notification lorsque l'on répare un véhicule Repairing... @@ -306,6 +326,7 @@ Kompletně opravená část Parte totalmente reparado Parte riparata completamente + Pièce entièrement réparée Partially repaired %1 @@ -316,6 +337,7 @@ Parcialmente reparada %1 %1 - částečně opraveno %1 parzialmente riparato + %1 pratiquement réparée Fully repaired %1 @@ -326,6 +348,7 @@ %1 - kompletně opraveno Totalmente reparada %1 %1 completamente riparato + %1 entièrement réparée Partially repaired %1 @@ -336,6 +359,7 @@ Parcialmente reparada %1 %1 - částečně opraveno %1 parzialmente riparato + %1 pratiquement réparée Body @@ -381,6 +405,7 @@ Estabilizador horizontal izquierdo Levý horizontální stabilizátor Stabilizzatore Orizzontale Sinistro + Stabilisateur horizontal gauche Linkes Höhenleitwerk @@ -391,6 +416,7 @@ Estabilizador horizontal derecho Pravý horizontální stabilizátor Stabilizzatore Orizzontale Destro + Stabilisateur horizontal droit Rechtes Höhenleitwerk @@ -401,6 +427,7 @@ Estabilizador Vertical Estabilizador vertical Stabilizzatore Verticale + Stabilisateur vertical Seitenleitwerk @@ -424,6 +451,7 @@ Transmissão Transmisión Trasmissione + Instruments Gear @@ -434,6 +462,7 @@ Rueda Podvozek Motore + Trains d'attérissage Starter @@ -444,6 +473,7 @@ Arranque Motor de arranque Motore d'avviamento + Démarreur Tail @@ -454,6 +484,7 @@ Tail Cauda Coda + Queue Pitot Tube @@ -464,6 +495,7 @@ Tubo de Pitot Tubo del pitot Tubo di Pitot + Sonde pitot Static Port @@ -474,6 +506,7 @@ Puerto estático Statický port Porta Statica + Port statique Ammo @@ -484,6 +517,7 @@ Munição Munición Munizioni + Munitions Turret @@ -518,6 +552,7 @@ Rakiety Misiles Missili + Missiles Left Track @@ -684,6 +719,7 @@ Cabrestante Naviják Gancio + Treuil Glass (right) @@ -728,6 +764,7 @@ ERA Reaktivpanzerung ERA + ERA Repair Settings @@ -738,6 +775,7 @@ Ajustes de reparación Nastavení oprav Impostazioni Riparazioni + Réglages de réparation Provides a repair system for all types of vehicles. @@ -748,6 +786,7 @@ Proporciona un sistema de reparación para todo tipo de vehículos. Poskytuje rozsáhlý systém oprav pro všechny typy vozidel. Fornisce un sistema di riparazione per tutti i tipi di veicoli. + Fournit un système de réparation pour tous les types de véhicules. Anyone @@ -758,6 +797,7 @@ Kdokoliv Cualquiera Chiunque + Tout le monde Engineer only @@ -768,6 +808,7 @@ Pouze inženýr Solo ingeniero Solo Geniere + Ingénieurs seulement Repair Specialist only @@ -778,6 +819,7 @@ Pouze specialista na opravování Solo especialista en reparación Solo Specialista Riparazioni + Spécialistes de réparation seulement Allow Wheel @@ -788,6 +830,7 @@ Možnost Výměny Kol Permitir rueda Consenti Ruota + Autoriser les roues Who can remove and replace wheels? @@ -798,6 +841,7 @@ Kdo může odstranit a vyměnit kola? ¿Quién puede quitar y cambiar las ruedas? Chi può rimuovere e sostituire le ruote? + Qui peut enlever et remplacer les roues ? Allow Repair @@ -808,6 +852,7 @@ Možnost Opravování Permitir reparación Consenti Riparazioni + Autoriser les réparations Who can perform repair actions? @@ -818,6 +863,7 @@ Kdo může provádět opravy? ¿Quién puede realizar reparaciones? Chi può eseguire riparazioni? + Qui peut réparer ? Repair Threshold @@ -828,6 +874,7 @@ Umbral de reparación Práh oprav Limite Riparazioni + Seuil de réparation What is the maximum damage that can be repaired with a toolkit? @@ -838,6 +885,7 @@ ¿Cuál es el daño máximo que puede ser reparado con una caja de herramientas? Jaké maximální poškození může být opraveno pomocí opravárenské sady? Qual'è il danno massimo che può essere riparato con il Toolkit? + Quel est le maximum de dommages réparable par une trousse à outils ? Repair Threshold (Engineer) @@ -848,6 +896,7 @@ Umbral de Reparación (Ingeniero) Práh oprav (Inženýr) Limite Riparazioni (Geniere) + Seuil de réparatoin (ingénieur) What is the maximum damage that can be repaired by an engineer? @@ -858,6 +907,7 @@ ¿Cuál es el daño máximo que puede ser reparado por un ingeniero? Jaké maximální poškození může být opraveno pomoci inženýra? Qual'è il danno massimo che può essere riparato da un Geniere? + Quel est le maximum de dommages qui peuvent être réparés par un ingénieur ? Remove toolkit on use @@ -868,6 +918,7 @@ Eliminar conjunto de herramientas al usarlo Odstranit sadu nástrojů po použití Rimuovi Toolkit dopo l'uso + Enlever la trousse à outils après usage Should the toolkit be removed on usage? @@ -878,6 +929,7 @@ ¿Deben retirarse las herramientas al usarlas? Má být odstraněna sada nástroju po použití? Il Toolkit dev'essere rimosso dopo l'uso? + La trousse à outils devrait-elle être enlevée après usage ? Anywhere @@ -888,6 +940,7 @@ Kdekoliv En cualquier sitio Ovunque + N'importe où Repair Vehicle only @@ -898,6 +951,7 @@ Reparar solo en vehículo Pouze opravárenské vozidlo Solo Veicoli Riparazioni + Véhicule de réparation seulement Repair Facility only @@ -908,6 +962,7 @@ Reparar solo en instalación Pouze opravárenské zařízení Solo Strutture Riparazioni + Installation de réparation seulement Repair Facility or Vehicle @@ -918,6 +973,7 @@ Reparar en instalación o vehículo Opravárenské zařízení nebo vozidlo Strutture Riparazioni o Veicoli + Installations ou véhicule de réparation Assign Engineer @@ -928,6 +984,7 @@ Přiřadit Inženýra Asignar ingeniero Assegna Geniere + Assigner le rôle d'ingénieur List @@ -938,6 +995,7 @@ Seznam Lista Lista + Liste List of unit names that will be classified as engineer, separated by commas. @@ -948,6 +1006,7 @@ Lista de los nombres de las unidades que serán clasificados como ingeniero, separados por comas. Seznam jmen jednotek, které budou klasifikovány jako inženýr, oddělit čárkami. Lista di unità che verranno classificate come genieri, separate da virgole. + Liste des noms d'unités qui seront considérées ingénieurs. Séparé par des virgules Is Engineer @@ -958,6 +1017,7 @@ Es un ingeniero Inženýr E' Geniere + Est ingénieur Select the engineering skill level of the unit @@ -968,6 +1028,7 @@ Selecciona el nivel de conocimientos de ingeniería de la unidad Vyberte úroveň dovednosti inženýra pro jednotku Seleziona il livello di abilità geniere dell'unità + Sélectionner le niveau d'habilité en réparation de l'unité None @@ -978,6 +1039,7 @@ Nikdo Ningún Nessuna + Aucun Engineer @@ -988,6 +1050,7 @@ Inženýr Ingeniero Geniere + Ingénieur Specialist @@ -998,6 +1061,7 @@ Specialista Especialista Specialista Riparazioni + Spécialiste Assign one or multiple units as an engineer @@ -1008,6 +1072,7 @@ Asignar una o varias unidades como ingeniero Přiřaďte jednu nebo více osob jako inženýra Assegna una o più unità come genieri + Assigner un ou plusieurs unités comme ingénieur Assign Repair Vehicle @@ -1018,6 +1083,7 @@ Asignar vehículo de reparación Přiřaďte opraváresnké vozidlo Assegna Veicolo Riparazioni + Assigner en tant que véhicule de réparation List @@ -1028,6 +1094,7 @@ Seznam Lista Lista + Liste List of vehicles that will be classified as repair vehicle, separated by commas. @@ -1038,6 +1105,7 @@ Lista de los vehículos que se clasifican como vehículo de reparación, separados por comas. Seznam vozidel, která budou klasifikována jako opravárenská, oddělit čárkami. Lista di Veicoli che verranno considerati veicoli riparazioni, separati da virgole. + Liste de véhicules qui seront considérés comme véhicules de réparation. Séparé par des virgules. Is Repair Vehicle @@ -1048,6 +1116,7 @@ Es un vehículo de reparación Opravárenské vozidlo E' Veicolo Riparazioni + Est un véhicule de réparation Is the vehicle classified as a repair vehicle? @@ -1058,6 +1127,7 @@ ¿Está el vehículo clasificado como un vehículo de reparación? Je vozidlo klasifikováno jako opravárenské? Il veicolo è classificato dome veicolo riparazioni? + Le véhicule est-il considéré comme un véhicule de réparation ? Assign one or multiple vehicles as a repair vehicle @@ -1068,6 +1138,7 @@ Asignar uno o varios vehículos como vehículo de reparación Přiřaďte jedno nebo více vozidel jako opravárenské vozidlo Assegna uno o più veicoli come veicoli riparazioni + Assigner un ou plusieurs véhicules en tant que véhicule de réparation Assign Repair Facility @@ -1078,6 +1149,7 @@ Asignar instalación de reparación Přiřaďte opravárenské zařízení Assegna Struttura Riparazioni + Assigner en tant qu'installation de réparation List @@ -1088,6 +1160,7 @@ Seznam Lista Lista + Liste List of objects that will be classified as repair Facility, separated by commas. @@ -1098,6 +1171,7 @@ Lista de los objetos que se clasifican como instalaciones para la reparación, separados por comas. Seznam objektů, které budou klasifikovány jako opravárenské zařízení, oddělit čárkami. Lista di oggetti che verranno classificati come strutture riparazioni, separate da virgole. + Liste des objets considérés comme installations de réparation. Séparé par des virgules Is Repair Facility @@ -1108,6 +1182,7 @@ Es una instalación de reparación Opravárenské zařízení E' Struttura Riparazioni + Est une installation de réparation Is the object classified as a repair Facility? @@ -1118,6 +1193,7 @@ ¿Está el objeto clasificado como una instalación de reparación? Je objekt klasifikován jako opravárenské zařízení? L'oggetto è classificato come struttura riparazioni? + L'objet est-il considéré comme une installation de réparation ? Assign one or multiple objects as a repair Facility @@ -1128,6 +1204,7 @@ Asignar uno o varios objetos como una instalación de reparación Přiřaďte jeden nebo více objektů jako opravárenské zařízení Assegna uno o più oggetti come strutture riparazioni + Assigner un ou plusieurs objets en tant que véhicule de réparation Add Spare Parts @@ -1138,6 +1215,7 @@ Добавить запчасти Přidat náhradní díly Aggiungi Parti di Ricambio + Ajouter des pièces de rechange Add spare parts to one or multiple objects @@ -1148,6 +1226,7 @@ Добавить запасные части в одно или несколько транспортных средств Přidat náhradní díly do jednoho nebo více objektů Aggiungi parti di ricambio ad uno o più oggetti + Ajouter des pièces de rechange à un ou plusieurs objets List @@ -1158,6 +1237,7 @@ Список Seznam Lista + Liste List of objects that will get spare parts added, separated by commas. @@ -1168,6 +1248,7 @@ Список транспортных средств, в которые будут добавляться запчасти, разделенный запятыми. Seznam objektů, které dostanou náhradní díly, oddělit čárkami. Lista di oggetti a cui verranno aggiunte parti di ricambio, separate da virgole. + Liste des objets qui recevront des pièces de réparation en plus. Séparé par des virgules Part @@ -1178,6 +1259,7 @@ Запчасть Díl Parte + Pièce Spare part. @@ -1188,6 +1270,7 @@ Запасная часть. Náhradní díl. Parte di ricambio. + Pièce de rechange Amount @@ -1198,6 +1281,7 @@ Количество Množství Quantità + Quantité Number of selected spare parts. @@ -1208,6 +1292,7 @@ Число выбранных запасных частей. Počet vybraných náhradních dílů. Numero di parti di ricambio selezionate. + Nombre de pièces de rechange séléctionnées Wheel repair requirements @@ -1218,6 +1303,7 @@ Requerimentos para reparo de rodas Vyžaduje opravu kol Requisiti riparazione ruote + Exigences de réparation de roue Items required to remove/replace wheels @@ -1228,6 +1314,7 @@ Itens requeridos para remover/trocar rodas Položka vyžaduje odstraněná/vyměněná kola Oggetti richiesti per riparare/rimuovere ruote + Items exigés pour enlever/remplacer les roues diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 060f8113a0..e0d04aabfa 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -260,6 +260,7 @@ Этот модуль позволяет вам указать место сбора, куда вы можете быстро телепортироваться с "базы". Требуется наличие соответствующих объектов на карте - базы и флага. Они могут быть найдены в категории Пусто -> ACE Возрождения. Questo modulo ti consente di usare Punti di Raccolta in missione, a cui ti puoi teleportare rapidamente dalla bandiera in base. Richiede il piazzamento di oggetti speciali in mappa - base e bandiera. Entrambi disponibili nella categoria Vuoto -> Respawn ACE Este módulo permite usar puntos de reunión en la misión, a los que pueden teletransportarse las unidades desde la bandera de base. Requiere colocar objetos especiales en el mapa: las banderas de base y de reunión, ambas disponibles en la categoría Vacio-> Reaparición ACE + Ce module vous permet d'utiliser les "rally points" auxquels vous pouvez vous téléporter rapidement depuis un drapeau à la base. Il nécessite le placement d'objets spéciaux sur la carte - base et drapeau, disponibles dans la catégorie Vide -> ACE Respawn. Move Rallypoint diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index beca0433c7..8dc7a9eba0 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -67,7 +67,7 @@ Большая корректировка ВНИЗ Ajuste mayor abajo Regola l'alzata in basso - Hausse --- + Hausse - - - Große Korrektur nach unten Nagy állítás le Ajuste grande para baixo @@ -91,7 +91,7 @@ Большая корректировка ВЛЕВО Ajuste mayor izquierda Regola il tiro a sinistra - Dérive --- + Dérive - - - Große Korrektur nach links Nagy állítás balra Ajuste grande para esquerda diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 82d19827bb..f7c7b84b93 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -56,7 +56,7 @@ Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. Este módulo te permite desactivar la capacidad de sentarse en sillas. - Ce module controle la capacité de s'assoir sur des chaises ou sur des toilettes + Ce module contrôle la capacité de s'assoir sur des chaises ou sur des toilettes Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. Этот модуль позволяет вам запретить возможность садиться на стулья и туалеты. Questo modulo ti permette di disabilitare la possibilità di sederti sulle sedie. diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 6ca1cdfe27..4c45399ba6 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -87,7 +87,7 @@ List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). Eine Liste von Bildern, die bei der Vorführung verwendet werden. (Durch Kommata getrennt, mit vollem Pfad angegeben (z.B Bilder\bild.paa)). - Liste d'images qui seront utilisées dans des diaporama, séparation par virgule, avec le chemin d'accès complet et formaté correctement (ie. images\image.paa) + Liste d'images qui seront utilisées dans des diaporamas, séparation par virgule, avec le chemin d'accès complet et formaté correctement (ie. images\image.paa) Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). @@ -110,7 +110,7 @@ List of names that will be used for interaction entries, separated by commas, in order of images. - Liste de nom qui seront utilisés pour des interactions, séparation par virgule, dans l'ordre des images + Liste de noms qui seront utilisés pour des interactions, séparation par virgule, dans l'ordre des images Lista nazw, które zostaną użyte do nazwania wpisów interakcji, oddzielone przecinkiem, w kolejności obrazów. Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 2db602f145..b78febbef7 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -10,6 +10,7 @@ Nastavení pozorovatele Ajustes de espectador Impostazioni Spettatore + Réglages de spectateur Configure how the spectator system will operate by default. @@ -20,6 +21,7 @@ Configurar cómo el sistema de espectador funcionará por defecto. Konfigurovat výchozí nastavení pozorovatele Configura come il sistema spettatore si comporterà di default. + Configure comment le système de spectateurs opère par défaut. Unit filter @@ -30,6 +32,7 @@ Filtr jednotek Filtro de unidad Filtro Unità + Filtre d'unités Method of filtering spectatable units. @@ -40,6 +43,7 @@ Método de filtrado de unidades de espectador Metoda filtrování pozorovaných jednotek. Metodo di filtraggio delle unità osservabili. + Méthode de filtration des unités regardables. No units @@ -50,6 +54,7 @@ Žádné jednotky Ninguna Nessuna unità + Pas d'unités Only players @@ -60,6 +65,7 @@ Pouze hráči Solo jugadores Solo giocatori + Joueurs seulements Playable Units @@ -70,6 +76,7 @@ Hratelné jednotky Unidades jugables Unità giocabili + Unités jouables All units @@ -80,6 +87,7 @@ Všechny jednotky Todas las unidades Tutte le unità + Toutes les unités Side filter @@ -90,6 +98,7 @@ Filtr stran Filtro de bando Filtro Lato + Filtre de faction Method of filtering spectatable sides. @@ -100,6 +109,7 @@ Método de filtrado de bandos de espectador Metoda filtrování pozorovaných stran. Metodo per filtrare i lati osservabili. + Méthode de filtration des factions regardables Player side @@ -110,6 +120,7 @@ Strana hráče Bando del jugador Lato giocatore + Faction du joueur Friendly sides @@ -120,6 +131,7 @@ Strana spojenců Bandos amigos Lati alleati + Factions amies Hostile sides @@ -130,6 +142,7 @@ Strana nepřítele Bandos enemigos Lati nemici + Factions hostiles All sides @@ -140,6 +153,7 @@ Všechny strany Todos los bandos Tutti i lati + Toutes les factions Camera modes @@ -150,6 +164,7 @@ Módy kamery Modos de cámara Modalità camera + Mode de caméra Camera modes that can be used. @@ -160,6 +175,7 @@ Modos de la cámara que se pueden utilizar. Módy kamery které mohou být použity. Modalità che la camera può utilizzare. + Modes de caméra qui peuvent être utilisés All @@ -170,6 +186,7 @@ Všechny Todos Tutte + Tous Free only @@ -180,15 +197,16 @@ Pouze volná Solo libre Solo libera + Libre seulement Internal only Erste Person //Bitte überprüfen! - Tylko wewnętrznaSomente internaТолько внутренняяPouze pohled z první osobySolo internaSolo interna + Tylko wewnętrznaSomente internaТолько внутренняяPouze pohled z první osobySolo internaSolo internaInterne seulement External only Dritte Person //Bitte überpfüfen! - Tylko zewnętrznaSomente externaТолько внешняяPouze pohled z třetí osobySolo externaSolo esterna + Tylko zewnętrznaSomente externaТолько внешняяPouze pohled z třetí osobySolo externaSolo esternaExterne seulement Internal and external Erste und dritte Person @@ -198,6 +216,7 @@ Pohled z první a třetí osoby Interna y externa Interna ed Esterna + Interne et externe Vision modes @@ -208,6 +227,7 @@ Modos de visión Módy zobrazení Modalità visuali + Modes de vision Vision modes that can be used. @@ -218,6 +238,7 @@ Modos de visión que pueden ser utilizados. Módy zobrazení které mohou být použity. Modalità visuali che possono essere usate. + Modes de visions qui peuvent être utilisés Night vision @@ -228,6 +249,7 @@ Noktovize Visión nocturna Visione Notturna + Vision nocturne Thermal imaging @@ -238,6 +260,7 @@ Termovize Imagen térmica Visione Termica + Vision thermique @@ -249,6 +272,7 @@ Unidades espectador Jednotky pozorovatele Unità Osservabili + Unités spectatrices Spectator Controls @@ -259,6 +283,7 @@ Controles de espectador Ovládání pozorovatele Controlli Osservatore + Contrôles de spectateur Free @@ -269,15 +294,16 @@ Volná Libre Libera + Libre Internal Erste Person //Bitte überprüfen! - WewnętrznaInternaВнутренняяPohled z první osobyInternaInterna + WewnętrznaInternaВнутренняяPohled z první osobyInternaInternaInterne External Dritte Person //Bitte überprüfen! - ZewnętrznaExternaВнешняяPohled z třetí osobyExternaEsterna + ZewnętrznaExternaВнешняяPohled z třetí osobyExternaEsternaExterne Normal Normal @@ -287,6 +313,7 @@ Normální Normal Normale + Normale Night @@ -297,6 +324,7 @@ Noc Nocturna Notturno + Nuit Thermal @@ -307,6 +335,7 @@ Termál Térmica Termico + Thermique @@ -318,6 +347,7 @@ Volná Kamera Cámara libre Camera Libera + Caméra libre Camera Forward @@ -328,6 +358,7 @@ Vpřed (Kamera) Cámara delantera Camera Avanti + Caméra en avant Camera Backward @@ -338,6 +369,7 @@ Zpět (Kamera) Cámara trasera Camera Indietro + Caméra en arrière Camera Left @@ -348,6 +380,7 @@ Doleva (Kamera) Cámara izquierda Camera Sinistra + Caméra à gauche Camera Right @@ -358,6 +391,7 @@ Doprava (Kamera) Cámara derecha Camera Destra + Caméra à droite Camera Up @@ -368,6 +402,7 @@ Nahoru (Kamera) Cámara arriba Camera Su + Caméra en haut Camera Down @@ -378,6 +413,7 @@ Dolů (Kamera) Cámara abajo Camera Giù + Caméra en bas Pan Camera @@ -408,6 +444,7 @@ Zamknout kameru na Cíl Fijar cámara al objetivo Blocca la camera su obbiettivo + Verrouiller la caméra sur la cible Speed Boost @@ -418,6 +455,7 @@ Aumento de velocidad Zrychlení kamery Aumento Velocità + Boost de vitesse Interface @@ -428,6 +466,7 @@ Rozhraní Interfaz Interfaccia + Interface Toggle Interface @@ -438,6 +477,7 @@ Zobrazit/skrýt rozhraní Conmutar Apri Interfaccia + Bascule de l'interface Toggle Unit Icons @@ -448,6 +488,7 @@ Zobrazit/skrýt ikony jednotek Conmutar iconos de unidad Apri Icone Unità + Bascule des icônes des unités Toggle Unit List @@ -458,6 +499,7 @@ Zobrazit/skrýt seznam jednotek Conmutar lista de unidades Apri Lista Unità + Bascule de la liste des unités Toggle Toolbar @@ -468,6 +510,7 @@ Conmutar barra de herramientas Zobrazit/skrýt spodní panel Apri Barra degli Strumenti + Bascule de la barre d'outils Toggle Compass @@ -478,6 +521,7 @@ Zobrazit/skrýt kompas Conmutar brújula Apri Bussola + Basculer le compas Toggle Map @@ -488,6 +532,7 @@ Zobrazit/skrýt mapu Conmutar map Apri Mappa + Basculer la carte Toggle Help @@ -498,6 +543,7 @@ Zobrazit/skrýt ovládání Conmutar ayuda Apri Aiuti + Basculer l'aide Camera Attributes @@ -508,6 +554,7 @@ Atributos de cámara Atributy kamery Attributi Camera + Propriétés de la caméra Next Camera @@ -518,6 +565,7 @@ Následující kamera Siguiente cámara Prossima Camera + Caméra suivante Previous Camera @@ -528,6 +576,7 @@ Předchozí kamera Anterior cámara Precedente Camera + Caméra précédente Next Unit @@ -538,6 +587,7 @@ Následující jednotka Siguiente unidad Prossima Unità + Unité suivante Previous Unit @@ -548,6 +598,7 @@ Předchozí jednotka Anterior unidad Precedente Unità + Unité précédente Next Vision Mode @@ -558,6 +609,7 @@ Siguiente modo de visión Následující mód zobrazení Prossima Modalità Visiva + Mode de vision suivant Previous Vision Mode @@ -568,6 +620,7 @@ Anterior modo de visión Předchozí mód zobrazení Precedente Modalità Visiva + Mode de vision précédent Adjust Zoom @@ -578,6 +631,7 @@ Regulovat přiblížení Ajustar aumento Aggiusta Zoom + Ajuster le zoom Adjust Speed @@ -588,6 +642,7 @@ Regulovat rychlost Ajustar velocidad Aggiusta Velocità + Ajuster la vitesse Increment Zoom @@ -598,6 +653,7 @@ Incrementar aumento Regulovat přiblížení (pomalu) Aumenta Zoom + Augmenter le zoom Increment Speed @@ -608,6 +664,7 @@ Incrementar velocidad Regulovat rychlost (pomalu) Aumenta Velocità + Augmenter la vitesse Reset Zoom @@ -618,6 +675,7 @@ Obnovit přiblížení Reiniciar aumento Resetta Zoom + RAZ zoom Reset Speed @@ -628,6 +686,7 @@ Obnovit rychlost Reiniciar velocidad Resetta Velocità + RAZ vitesse - \ No newline at end of file + diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 26be64dccb..60d7fb0ecd 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -20,6 +20,7 @@ Próba zmiany Sto provando a cambiare Intentando cambiar + Essaye de basculer This unit is too close to the enemy. @@ -160,7 +161,7 @@ Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. - Activer une zone sécurisée autour des enemis? Les joueurs ne peuvent changer d'unité dand la zone sécurisée + Activer une zone sécurisée autour des enemis ? Les joueurs ne peuvent changer d'unité dand la zone sécurisée Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. Включить безопасную зону вокруг вражеских юнитов? Игроки не могут переключаться на юнитов, находящихся в безопасной зоне. Abilita una zona sicura attorno ad unità nemiche? I giocatori non possono cambiare ad unità dentro la zona sicura. diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index c57765c5a6..1e2c037f20 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -46,6 +46,7 @@ Prodloužit Estendi, +Ctrl ruota Extender + Déployer +Ctrl tilt @@ -55,6 +56,7 @@ +Ctrl наклонить +Ctrl naklonit +Ctrl inclinar + +Ctrl incliner Position ladder @@ -81,4 +83,4 @@ Pegar escada - \ No newline at end of file + diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 6dbbcddff1..392de0d24f 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -6,78 +6,91 @@ 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. Farba w sprayu, służy do oznakowywania terenu. + Un spray de peinture pour taguer les murs. - \ No newline at end of file + diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 1ed6e1fd7b..4fef526858 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -7,6 +7,7 @@ Saperka Pala Pala para trincheras + Outil de tranchée Entrenching Tool @@ -14,6 +15,7 @@ Mit Schanzzeug können Erdwälle oder Gräben ausgehoben werden. Pala Pala para trincheras + Outil de tranchée Envelope - Small @@ -21,6 +23,7 @@ Wnęka - mała Fascia - Piccola Trinchera pequeña + Envelope - petite Small Personal Trench @@ -28,6 +31,7 @@ Mała jednoosobowa wnęka Piccola Trincea Personale Trinchera personal pequeña + Petite tranchée personelle Dig Small Trench @@ -35,6 +39,7 @@ Kop małą wnękę Scava Trincea Piccola Cavar trinchera pequeña + Creuser une petite tranchée Envelope - Big @@ -42,6 +47,7 @@ Wnęka - duża Fascia - Grande Trinchera grande + Enveloppe - grande Large Personal Trench @@ -49,6 +55,7 @@ Duża jednoosobowa wnęka Grande Trincea Personale Trinchera personal grande + Grande tranchée personelle Dig Big Trench @@ -56,6 +63,7 @@ Kop dużą wnękę Scava Trincea Grande Cavar trinchera grande + Creuser une grande tranchée Confirm Dig @@ -63,6 +71,7 @@ Potwierdź kopanie Conferma Scava Confirmar cavado + Confirmer la creusée Cancel Dig @@ -70,6 +79,7 @@ Anuluj kopanie Cancella Scava Cancelar cavado + Annuler la creusée +Ctrl rotate @@ -77,6 +87,7 @@ +Ctrl obrót +Ctrl ruota +Ctrl rotar + +Ctrl rotation Digging Trench @@ -84,6 +95,7 @@ Kopanie okopu Sto Scavando la Trincea Cavando trinchera + Creuse la tranchée - \ No newline at end of file + diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index d5a011792b..a0f2bceb68 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -262,6 +262,7 @@ Oparty na FoV Basato su Campo Visivo (FoV) Basada en campo de visión + Champ de vision basé View Distance: @@ -312,4 +313,4 @@ Impostazioni Video - \ No newline at end of file + diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index f3f25f16a0..c9f1c94b1b 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -11,6 +11,7 @@ Yardage 450 Yardage 450 Yardage 450 + Yardage 450 Laser Rangefinder @@ -22,6 +23,7 @@ Lézeres távolságmérő Лазерный дальномер Distanziometro Laser + Télémètre laser Yardage 450 - Power Button @@ -33,6 +35,7 @@ Yardage 450 - Főkapcsoló gomb Yardage 450 - Кнопка питания Yardage 450 - Bottone Accensione + Yardage 450 - bouton d'alimentation - \ No newline at end of file + diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index f84cbdb7f7..c07d4f7f84 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -214,6 +214,7 @@ Přiřadit Zdravotníka Asignar médico Assegna Medico + Assigner médecin Assign Medical Vehicle @@ -224,6 +225,7 @@ Přiřadit Zdravotnické Vozidlo Asignar vehículo médico Assegna Veicolo Medico + Assigner véhicule médical Assign Medical Facility @@ -234,6 +236,7 @@ Přiřadit Zdravotnické Zařízení Asignar instalación médica Assegna Struttura Medica + Assigner installation médicale Add Spare Wheel @@ -244,6 +247,7 @@ Aggiungi Ruota di Scorta Ersatzrad hinzufügen Agregar rueda de auxilio + Ajouter pièce de rechange Adds a Spare Wheel to the vehicle @@ -254,6 +258,7 @@ Aggiungi una ruota di scorta al veicolo Fügt dem Fahrzeug ein Ersatzrad hinzu Agrega una rueda de auxilio al vehículo + Ajoute une roue de secours au véhicule Add Spare Track @@ -264,6 +269,7 @@ Aggiungi Cingolo di Scorta Ersatzkette hinzufügen Agregar oruga de repuesto + Ajouter une chenille de secours Adds a Spare Track to the vehicle @@ -274,6 +280,7 @@ Aggiungi un cingolo di scorta al veicolo Fügt dem Fahrzeug eine Ersatzkette hinzu Agrega una oruga de repuesto al vehículo + Ajoute une chenille de reserve Unit must be alive @@ -308,6 +315,7 @@ La unidad debe ser una estructura Jednotka musí být budova Si può usare solo su strutture + L'unité doit être une structure Unit must be a vehicle @@ -318,6 +326,7 @@ La unidad debe ser un vehículo Jednotka musí být vozidlo Si può usare solo su veicoli + L'unité doit être un véhicule Unit must be a vehicle with cargo space @@ -328,6 +337,7 @@ L'unità dev'essere un veicolo con spazio di carico Einheit muss ein Fahrzeug mit Ladekapazität sein La unidad debe ser un vehículo con espacio de carga + L'unité doit être un véhicule avec de l'espace de cargaison Unit must have cargo space left @@ -338,6 +348,7 @@ L'unità deve avere spazio di carico disponibile Einheit muss freie Ladekapazität haben La unidad debe tener espacio de carga disponible + L'unité doit avoir de l'espace libre en cargaison Unit must not be captive @@ -383,6 +394,7 @@ Agregar objetos al director Přidat objekty kurátorovi Aggiungi Oggetti al Curatore + Ajouter des objets au curateur (Zeus) Fügt Objekte zum Kurator hinzu @@ -393,6 +405,7 @@ Añadir cualquier objeto creado a todos los directores en la misión Přidá jakékoliv spawnuté objekty všem kurátorům v misi Aggiungi ogni oggetto creato a tutti i Curatori in missione + Ajoute n'importe quel objet spawné à tous les curateurs de la mission Fügt jedes gespawnte Objekt allen Kuratoren der Mission hinzu From 8bb7b072d42beb68b69c55580799b2bb83acf8c6 Mon Sep 17 00:00:00 2001 From: VKing Date: Sun, 28 Feb 2016 15:18:15 +0100 Subject: [PATCH 019/337] Standardize grammar of GVAR arrays in configs to place the square brackets outside the GVAR macro. This prevents any possible confusion when the GVARs are used in code. --- addons/concertina_wire/CfgVehicles.hpp | 2 +- addons/dragging/CfgVehicles.hpp | 26 +++++++++++++------------- addons/explosives/CfgAmmo.hpp | 8 ++++---- addons/fastroping/CfgVehicles.hpp | 24 ++++++++++++------------ addons/medical/CfgVehicles.hpp | 2 +- addons/repair/CfgVehicles.hpp | 16 ++++++++-------- addons/sitting/CfgVehicles.hpp | 24 ++++++++++++------------ addons/spottingscope/CfgVehicles.hpp | 2 +- addons/tripod/CfgVehicles.hpp | 2 +- addons/zeus/config.cpp | 2 +- 10 files changed, 54 insertions(+), 54 deletions(-) diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 2a0b8cead2..f86dab5a69 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -112,7 +112,7 @@ class CfgVehicles { accuracy = 1000; autocenter = 0; EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition[]) = {0,0.5,0.5}; + EGVAR(dragging,dragPosition)[] = {0,0.5,0.5}; EGVAR(dragging,dragDirection) = 0; EGVAR(cargo,size) = 1; EGVAR(cargo,canLoad) = 1; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index be5021fd43..b2806fa63d 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -4,11 +4,11 @@ class CfgVehicles { class LandVehicle; class StaticWeapon: LandVehicle { GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1.2,0}; + GVAR(carryPosition)[] = {0,1.2,0}; GVAR(carryDirection) = 0; GVAR(canDrag) = 1; - GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragPosition)[] = {0,1.2,0}; GVAR(dragDirection) = 0; }; @@ -21,11 +21,11 @@ class CfgVehicles { class StaticMortar; class Mortar_01_base_F: StaticMortar { GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1.2,0}; + GVAR(carryPosition)[] = {0,1.2,0}; GVAR(carryDirection) = 0; GVAR(canDrag) = 1; - GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragPosition)[] = {0,1.2,0}; GVAR(dragDirection) = 0; }; @@ -33,11 +33,11 @@ class CfgVehicles { class ThingX; class ReammoBox_F: ThingX { GVAR(canCarry) = 0; - GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryPosition)[] = {0,1,1}; GVAR(carryDirection) = 0; GVAR(canDrag) = 0; - GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragPosition)[] = {0,1.2,0}; GVAR(dragDirection) = 0; }; @@ -87,40 +87,40 @@ class CfgVehicles { class RoadCone_F: ThingX { XEH_ENABLED; GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryPosition)[] = {0,1,1}; GVAR(carryDirection) = 0; GVAR(canDrag) = 1; - GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragPosition)[] = {0,1.2,0}; GVAR(dragDirection) = 0; }; class RoadBarrier_F: RoadCone_F { - GVAR(carryPosition[]) = {0,1,0.300671}; + GVAR(carryPosition)[] = {0,1,0.300671}; }; class ACE_RepairItem_Base: ThingX {}; class ACE_Track: ACE_RepairItem_Base { GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryPosition)[] = {0,1,1}; GVAR(carryDirection) = 0; }; class ACE_Wheel: ACE_RepairItem_Base { GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryPosition)[] = {0,1,1}; GVAR(carryDirection) = 0; }; class Lamps_base_F; class Land_PortableLight_single_F: Lamps_base_F { GVAR(canCarry) = 1; - GVAR(carryPosition[]) = {0,1.2,0}; + GVAR(carryPosition)[] = {0,1.2,0}; GVAR(carryDirection) = 180; GVAR(canDrag) = 1; - GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragPosition)[] = {0,1.2,0}; GVAR(dragDirection) = 180; }; }; diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index 977e01e3af..8d81a52613 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -31,14 +31,14 @@ class CfgAmmo { class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase { GVAR(magazine) = "ClaymoreDirectionalMine_Remote_Mag"; GVAR(Explosive) = "ClaymoreDirectionalMine_Remote_Ammo_Scripted"; - GVAR(defuseObjectPosition[]) = {0, 0, 0.038}; + GVAR(defuseObjectPosition)[] = {0, 0, 0.038}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; }; // class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo {}; class APERSTripMine_Wire_Ammo: DirectionalBombBase { - GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12}; + GVAR(defuseObjectPosition)[] = {-1.415, 0, 0.12}; }; class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase { @@ -66,7 +66,7 @@ class CfgAmmo { class DemoCharge_Remote_Ammo: PipeBombBase { GVAR(magazine) = "DemoCharge_Remote_Mag"; GVAR(Explosive) = "DemoCharge_Remote_Ammo_Scripted"; - GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055}; + GVAR(defuseObjectPosition)[] = {0.07, 0, 0.055}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; hit = 500; @@ -76,7 +76,7 @@ class CfgAmmo { class SatchelCharge_Remote_Ammo: PipeBombBase { GVAR(magazine) = "SatchelCharge_Remote_Mag"; GVAR(Explosive) = "SatchelCharge_Remote_Ammo_Scripted"; - GVAR(defuseObjectPosition[]) = {0.1, 0.1, 0.05}; + GVAR(defuseObjectPosition)[] = {0.1, 0.1, 0.05}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; }; diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 560f60cffc..83890a51ad 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -154,54 +154,54 @@ class CfgVehicles { class Heli_Light_02_base_F: Helicopter_Base_H { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}}; + GVAR(ropeOrigins)[] = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}}; GVAR(onPrepare) = QFUNC(onPrepareCommon); GVAR(onCut) = QFUNC(onCutCommon); }; class Heli_Attack_02_base_F: Helicopter_Base_F { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{1.25, 1.5, -0.6}, {-1.1, 1.5, -0.6}}; + GVAR(ropeOrigins)[] = {{1.25, 1.5, -0.6}, {-1.1, 1.5, -0.6}}; GVAR(onPrepare) = QFUNC(onPrepareCommon); GVAR(onCut) = QFUNC(onCutCommon); }; class Heli_Transport_01_base_F: Helicopter_Base_H { GVAR(enabled) = 2; - GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"}; + GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"}; GVAR(friesType) = "ACE_friesAnchorBar"; - GVAR(friesAttachmentPoint[]) = {0.065, 2.2, -0.15}; + GVAR(friesAttachmentPoint)[] = {0.065, 2.2, -0.15}; GVAR(onPrepare) = QFUNC(onPrepareCommon); GVAR(onCut) = QFUNC(onCutCommon); EQUIP_FRIES_ATTRIBUTE; }; class Heli_Transport_02_base_F: Helicopter_Base_H { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}}; + GVAR(ropeOrigins)[] = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}}; }; class Heli_Transport_03_base_F: Helicopter_Base_H { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}}; + GVAR(ropeOrigins)[] = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}}; }; class Heli_light_03_base_F: Helicopter_Base_F { GVAR(enabled) = 2; - GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"}; + 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 { GVAR(enabled) = 2; - GVAR(ropeOrigins[]) = {"ropeOriginRight", "ropeOriginLeft"}; + GVAR(ropeOrigins)[] = {"ropeOriginRight", "ropeOriginLeft"}; GVAR(friesType) = "ACE_friesGantry"; - GVAR(friesAttachmentPoint[]) = {-1.07, 3.26, -0.5}; + GVAR(friesAttachmentPoint)[] = {-1.07, 3.26, -0.5}; EQUIP_FRIES_ATTRIBUTE; }; class Heli_Transport_04_base_F; class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}}; + GVAR(ropeOrigins)[] = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}}; }; class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F { GVAR(enabled) = 1; - GVAR(ropeOrigins[]) = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}}; + GVAR(ropeOrigins)[] = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}}; }; }; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index bddb8fc8a6..e1ac49f1ac 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -658,7 +658,7 @@ class CfgVehicles { icon = ""; displayName = CSTRING(Bodybag_Display); EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition[]) = {0,1.2,0}; + EGVAR(dragging,dragPosition)[] = {0,1.2,0}; EGVAR(dragging,dragDirection) = 0; EGVAR(cargo,size) = 1; EGVAR(cargo,canLoad) = 1; diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 1968023881..0d2e8f96d4 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -342,7 +342,7 @@ class CfgVehicles { class Helicopter_Base_H; class Heli_Transport_04_base_F: Helicopter_Base_H { - GVAR(hitpointGroups[]) = { {"HitEngine", {"HitEngine1", "HitEngine2"}}, {"Glass_1_hitpoint", {"Glass_2_hitpoint", "Glass_3_hitpoint", "Glass_4_hitpoint", "Glass_5_hitpoint", "Glass_6_hitpoint", "Glass_7_hitpoint", "Glass_8_hitpoint", "Glass_9_hitpoint", "Glass_10_hitpoint", "Glass_11_hitpoint", "Glass_12_hitpoint", "Glass_13_hitpoint", "Glass_14_hitpoint", "Glass_15_hitpoint", "Glass_16_hitpoint", "Glass_17_hitpoint", "Glass_18_hitpoint", "Glass_19_hitpoint", "Glass_20_hitpoint"}} }; + GVAR(hitpointGroups)[] = { {"HitEngine", {"HitEngine1", "HitEngine2"}}, {"Glass_1_hitpoint", {"Glass_2_hitpoint", "Glass_3_hitpoint", "Glass_4_hitpoint", "Glass_5_hitpoint", "Glass_6_hitpoint", "Glass_7_hitpoint", "Glass_8_hitpoint", "Glass_9_hitpoint", "Glass_10_hitpoint", "Glass_11_hitpoint", "Glass_12_hitpoint", "Glass_13_hitpoint", "Glass_14_hitpoint", "Glass_15_hitpoint", "Glass_16_hitpoint", "Glass_17_hitpoint", "Glass_18_hitpoint", "Glass_19_hitpoint", "Glass_20_hitpoint"}} }; }; class O_Heli_Transport_04_repair_F: Heli_Transport_04_base_F { GVAR(canRepair) = 1; @@ -357,12 +357,12 @@ class CfgVehicles { class Heli_Transport_02_base_F; class I_Heli_Transport_02_F: Heli_Transport_02_base_F { - GVAR(hitpointPositions[]) = {{"HitVRotor", {-1,-9.4,1.8}}, {"HitHRotor", {0,1.8,1.3}}}; + GVAR(hitpointPositions)[] = {{"HitVRotor", {-1,-9.4,1.8}}, {"HitHRotor", {0,1.8,1.3}}}; }; class Helicopter_Base_F; class Heli_light_03_base_F: Helicopter_Base_F { - GVAR(hitpointPositions[]) = {{"HitVRotor", {-0.5,-5.55,1.2}}, {"HitHRotor", {0,1.8,1.5}}}; + GVAR(hitpointPositions)[] = {{"HitVRotor", {-0.5,-5.55,1.2}}, {"HitHRotor", {0,1.8,1.5}}}; }; class B_APC_Tracked_01_base_F; @@ -372,12 +372,12 @@ class CfgVehicles { }; class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { - GVAR(hitpointPositions[]) = {{"HitTurret", {0,-2,0}}}; + GVAR(hitpointPositions)[] = {{"HitTurret", {0,-2,0}}}; }; class Car_F; class Offroad_01_base_F: Car_F { - GVAR(hitpointGroups[]) = { {"HitGlass1", {"HitGlass2"}} }; + GVAR(hitpointGroups)[] = { {"HitGlass1", {"HitGlass2"}} }; }; class Offroad_01_repair_base_F: Offroad_01_base_F { GVAR(canRepair) = 1; @@ -385,7 +385,7 @@ class CfgVehicles { }; class MRAP_01_base_F: Car_F { - GVAR(hitpointGroups[]) = { {"HitGlass1", {"HitGlass2", "HitGlass3", "HitGlass4", "HitGlass5", "HitGlass6"}} }; + GVAR(hitpointGroups)[] = { {"HitGlass1", {"HitGlass2", "HitGlass3", "HitGlass4", "HitGlass5", "HitGlass6"}} }; }; class B_Truck_01_mover_F; @@ -416,9 +416,9 @@ class CfgVehicles { class Quadbike_01_base_F; class B_Quadbike_01_F: Quadbike_01_base_F { - GVAR(hitpointPositions[]) = { {"HitEngine", {0, 0.5, -0.7}}, {"HitFuel", {0, 0, -0.5}} }; + GVAR(hitpointPositions)[] = { {"HitEngine", {0, 0.5, -0.7}}, {"HitFuel", {0, 0, -0.5}} }; }; class Hatchback_01_base_F: Car_F { - GVAR(hitpointPositions[]) = {{"HitBody", {0, 0.7, -0.5}}, {"HitFuel", {0, -1.75, -0.75}}}; + GVAR(hitpointPositions)[] = {{"HitBody", {0, 0.7, -0.5}}, {"HitFuel", {0, -1.75, -0.75}}}; }; }; diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index fde1786268..c21ffeaa86 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -42,9 +42,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, -0.1, -0.45}; + GVAR(sitPosition)[] = {0, -0.1, -0.45}; EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 180; }; // Camping Chair @@ -52,9 +52,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, -0.1, -0.45}; + GVAR(sitPosition)[] = {0, -0.1, -0.45}; EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 180; }; @@ -64,9 +64,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 90; - GVAR(sitPosition[]) = {0, 0, -0.5}; + GVAR(sitPosition)[] = {0, 0, -0.5}; EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 270; }; // Chair (Wooden) @@ -74,9 +74,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, -0.05, 0}; + GVAR(sitPosition)[] = {0, -0.05, 0}; EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 180; }; // Office Chair @@ -84,9 +84,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, 0, -0.6}; + GVAR(sitPosition)[] = {0, 0, -0.6}; EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 180; }; // Rattan Chair @@ -94,9 +94,9 @@ class CfgVehicles { XEH_ENABLED; GVAR(canSit) = 1; GVAR(sitDirection) = 180; - GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point) + GVAR(sitPosition)[] = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point) EGVAR(dragging,canCarry) = 1; - EGVAR(dragging,carryPosition[]) = {0, 0.75, 0.5}; + EGVAR(dragging,carryPosition)[] = {0, 0.75, 0.5}; EGVAR(dragging,carryDirection) = 180; }; }; diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 434c1c96ca..decdb36ee0 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -107,7 +107,7 @@ class CfgVehicles { }; }; EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition[]) = {0,1,0}; + EGVAR(dragging,dragPosition)[] = {0,1,0}; EGVAR(dragging,dragDirection) = 0; class ACE_Actions: ACE_Actions{ class ACE_MainActions: ACE_MainActions { diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index de16d6867a..7470dbe604 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -36,7 +36,7 @@ class CfgVehicles { class ACE_TripodObject: ThingX { XEH_ENABLED; EGVAR(dragging,canDrag) = 1; - EGVAR(dragging,dragPosition[]) = {0,1,0}; + EGVAR(dragging,dragPosition)[] = {0,1,0}; EGVAR(dragging,dragDirection) = 0; scope = 2; displayName = CSTRING(DisplayName); diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 853edaf2e9..f41769e727 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -36,7 +36,7 @@ class CfgPatches { class ACE_Curator { GVAR(captives) = "ace_captives"; GVAR(medical) = "ace_medical"; - GVAR(cargoAndRepair[]) = {"ace_cargo", "ace_repair"}; + GVAR(cargoAndRepair)[] = {"ace_cargo", "ace_repair"}; }; #include "CfgEventHandlers.hpp" From 75c2e3d032bf12c9a1021c41cc5c12d9076311f7 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 27 Feb 2016 23:00:24 +0100 Subject: [PATCH 020/337] Added QUOTE macros to fastroping configs --- addons/fastroping/CfgMoves.hpp | 6 +++--- addons/fastroping/CfgVehicles.hpp | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/fastroping/CfgMoves.hpp b/addons/fastroping/CfgMoves.hpp index da2d0f0613..747bd5bf7f 100644 --- a/addons/fastroping/CfgMoves.hpp +++ b/addons/fastroping/CfgMoves.hpp @@ -9,7 +9,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; class ACE_freefallLoop: Crew { - file = PATHTOF(anim\freefallLoop.rtm); + file = QUOTE(PATHTOF(anim\freefallLoop.rtm)); interpolateTo[] = {"Unconscious", 1}; disableWeapons = 1; disableWeaponsLong = 1; @@ -18,7 +18,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { speed = 0.204082; }; class ACE_freefallStart: Crew { - file = PATHTOF(anim\freefallStart.rtm); + file = QUOTE(PATHTOF(anim\freefallStart.rtm)); interpolateTo[] = {"Unconscious", 1}; disableWeapons = 1; disableWeaponsLong = 1; @@ -27,7 +27,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { speed = 0.61224502; }; class ACE_slidingLoop: Crew { - file = PATHTOF(anim\slidingLoop.rtm); + file = QUOTE(PATHTOF(anim\slidingLoop.rtm)); interpolateTo[] = {"Unconscious", 1}; disableWeapons = 1; disableWeaponsLong = 1; diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 560f60cffc..41fc81399a 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -4,7 +4,7 @@ control = "Checkbox"; \ displayName = CSTRING(Eden_equipFRIES); \ tooltip = CSTRING(Eden_equipFRIES_Tooltip); \ - expression = [_this] call FUNC(equipFRIES); \ + expression = QUOTE([_this] call FUNC(equipFRIES)); \ typeName = "BOOL"; \ condition = "objectVehicle"; \ defaultValue = false; \ @@ -22,7 +22,7 @@ class CfgVehicles { class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; scope = 1; - model = PATHTOF(data\friesAnchorBar.p3d); + model = QUOTE(PATHTOF(data\friesAnchorBar.p3d)); animated = 1; class AnimationSources: AnimationSources { class extendHookRight { @@ -40,7 +40,7 @@ class CfgVehicles { class ACE_friesGantry: ACE_friesBase { author = "jokoho48"; scope = 1; - model = PATHTOF(data\friesGantry.p3d); + model = QUOTE(PATHTOF(data\friesGantry.p3d)); animated = 1; class AnimationSources: AnimationSources { class adjustWidth { @@ -90,7 +90,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; @@ -108,29 +108,29 @@ class CfgVehicles { class ACE_SelfActions { class ACE_prepareFRIES { displayName = CSTRING(Interaction_prepareFRIES); - condition = [vehicle _player] call FUNC(canPrepareFRIES); - statement = [vehicle _player] call FUNC(prepareFRIES); + condition = QUOTE([vehicle _player] call FUNC(canPrepareFRIES)); + statement = QUOTE([vehicle _player] call FUNC(prepareFRIES)); showDisabled = 0; priority = 1; }; class ACE_deployRopes { displayName = CSTRING(Interaction_deployRopes); - condition = [_player, vehicle _player] call FUNC(canDeployRopes); - statement = [QGVAR(deployRopes), [vehicle _player]] call EFUNC(common,serverEvent); + condition = QUOTE([ARR_2(_player,vehicle _player)] call FUNC(canDeployRopes)); + statement = QUOTE([ARR_2(QUOTE(QGVAR(deployRopes)),[vehicle _player])] call EFUNC(common,serverEvent)); showDisabled = 0; priority = 1; }; class ACE_cutRopes { displayName = CSTRING(Interaction_cutRopes); - condition = [vehicle _player] call FUNC(canCutRopes); - statement = [vehicle _player] call FUNC(cutRopes); + condition = QUOTE([vehicle _player] call FUNC(canCutRopes)); + statement = QUOTE([vehicle _player] call FUNC(cutRopes)); showDisabled = 0; priority = 1; }; class ACE_fastRope { displayName = CSTRING(Interaction_fastRope); - condition = [_player, vehicle _player] call FUNC(canFastRope); - statement = [_player, vehicle _player] call FUNC(fastRope); + condition = QUOTE([ARR_2(_player,vehicle _player)] call FUNC(canFastRope)); + statement = QUOTE([ARR_2(_player,vehicle _player)] call FUNC(fastRope)); showDisabled = 0; priority = 1; }; @@ -143,7 +143,7 @@ class CfgVehicles { class GVAR(helper): Helicopter_Base_F { author = "KoffeinFlummi"; scope = 1; - model = PATHTOF(data\helper.p3d); + model = QUOTE(PATHTOF(data\helper.p3d)); class ACE_Actions { class ACE_MainActions { condition = "false"; From 8d326a0a1bbb95388fcb5377b7b8971e5b924dcc Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 28 Feb 2016 22:50:59 +0100 Subject: [PATCH 021/337] Remove duplicate medical string --- addons/medical/stringtable.xml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 53806a73ac..7091de6b6e 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2100,7 +2100,7 @@ %1 aplicou bandagem no paciente %1 již obvázal pacienta - + %1 performed CPR %1 wykonał cykl RKO %1 provádí CPR @@ -2147,16 +2147,6 @@ %1 aplicou um torniquete %1 použil škrtidlo - - %1 performed CPR - %1 hat eine HLW durchgeführt - %1 wykonał cykl RKO - %1 провел сердечно-легочную реанимацию - %1 realicó RCP - %1 realizou RCP - %1 provádí CPR - %1 ha eseguito CPR - %1 used Personal Aid Kit %1 hat das eigene Erste-Hilfe-Set verwendet From f5ff593dea9f1478c7b6e522a1ec5d9e4a8e0cb7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 28 Feb 2016 23:16:44 +0100 Subject: [PATCH 022/337] Revert "Convert fastroping animations to Arma 3, fix bone errors" --- addons/fastroping/anim/freefallLoop.rtm | Bin 139950 -> 149674 bytes addons/fastroping/anim/freefallStart.rtm | Bin 47242 -> 50771 bytes addons/fastroping/anim/slidingLoop.rtm | Bin 106840 -> 110773 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/fastroping/anim/freefallLoop.rtm b/addons/fastroping/anim/freefallLoop.rtm index 7e049c9eb97004c42ca89f96db046e99686aebcb..1046bdd4c0ce0a2df9b29b32bca10acb616cf7e1 100644 GIT binary patch delta 11000 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 E15D}tPXGV_ delta 1138 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 HCN1#@ut$hc diff --git a/addons/fastroping/anim/slidingLoop.rtm b/addons/fastroping/anim/slidingLoop.rtm index b8ce778244230a41ea22a6f9a3ab28c11fa52b35..def413363390a9a25a420d11f73a5cc26f33c6b9 100644 GIT binary patch delta 4814 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 From 3bbabac2d71c918b7b36cbdfa70f20d3b801f111 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 28 Feb 2016 20:12:56 -0300 Subject: [PATCH 023/337] 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 4184f096f7..6cbce0df78 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 aa545f491e..0000000000 --- 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 0000000000..f3c8c380bb --- /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 df82e06823..7b97cdc48f 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 cd0b4b1b27..b46ffcf1ad 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 91689f311f..270a993b43 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 be9b03c9f1..3b181b2387 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 d8a4d3b336..a9ef534346 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 0000000000..fcfb638143 --- /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 024/337] 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 f3c8c380bb..52b2cc11f9 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 fcfb638143..d555f00a75 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 025/337] 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 6cbce0df78..8383b7ad8a 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 0000000000..77d2378d0d --- /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 026/337] 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 6159351cc9..d161bbb385 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 3b181b2387..b8acc27c74 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 027/337] 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 d161bbb385..a76fa9a098 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 028/337] 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 a76fa9a098..23272f0890 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 029/337] 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 8383b7ad8a..906f4e18f7 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 0000000000..5ba54bfc9f --- /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 fc7e8daa2d..2f2b9b6363 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 030/337] 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 2f2b9b6363..28b1d4dd0b 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 031/337] 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 906f4e18f7..b9ad6ba546 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 0000000000..3e55f7b7ce --- /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 913431ccac..061a28c081 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 032/337] 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 5ba54bfc9f..6d89675d8a 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 d555f00a75..c9df4c6e91 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 033/337] 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 b9ad6ba546..7c030ecf98 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 c87d51a7e1..971342affb 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 0000000000..ac102d5d59 --- /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 034/337] 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 7c030ecf98..d7322082c6 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 0000000000..03c1234713 --- /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 de089b199b..311199b1b8 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 7b96fe6c2834434de6f43c55bc66abfacf6fe931 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 29 Feb 2016 16:37:19 +0100 Subject: [PATCH 035/337] Disable logging in tagging - fix #3468 --- addons/tagging/script_component.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/tagging/script_component.hpp b/addons/tagging/script_component.hpp index 4217989fde..bb94aae3ff 100644 --- a/addons/tagging/script_component.hpp +++ b/addons/tagging/script_component.hpp @@ -1,8 +1,10 @@ #define COMPONENT tagging #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 #ifdef DEBUG_ENABLED_BLANK #define DEBUG_MODE_FULL From 11a66d98e212bbe932cdd76095d18f7686a25d24 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 29 Feb 2016 00:34:14 +0100 Subject: [PATCH 036/337] Cleanup & fix interaction conditions --- .../fastroping/functions/fnc_canDeployRopes.sqf | 16 +++++++++------- .../fastroping/functions/fnc_canPrepareFRIES.sqf | 4 +--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/fastroping/functions/fnc_canDeployRopes.sqf b/addons/fastroping/functions/fnc_canDeployRopes.sqf index 59a26c6a17..6c8f1d28ed 100644 --- a/addons/fastroping/functions/fnc_canDeployRopes.sqf +++ b/addons/fastroping/functions/fnc_canDeployRopes.sqf @@ -17,14 +17,16 @@ #include "script_component.hpp" params ["_unit", "_vehicle"]; -private ["_deployedRopes", "_config"]; +private ["_config", "_enabled", "_deploymentStage"]; -_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +_enabled = getNumber (_config >> QGVAR(enabled)); +_deploymentStage = _vehicle getVariable [QGVAR(deploymentStage), 0]; -((driver _vehicle != _unit) && +(driver _vehicle != _unit) && +{getPos _vehicle select 2 > 2} && +{_enabled == 1 || {_enabled == 2 && {!(isNull (_vehicle getVariable [QGVAR(FRIES), objNull]))}}} && { - ((_vehicle getVariable [QGVAR(deploymentStage), 0]) == 2) || - {!(isText (_config >> QGVAR(onPrepare))) && {(_vehicle getVariable [QGVAR(deploymentStage), 0]) == 0}} -} && -{getPos _vehicle select 2 > 2}) + (_deploymentStage == 0 && {getText (_config >> QGVAR(onPrepare)) == ""}) || + {_deploymentStage == 2 && {getText (_config >> QGVAR(onPrepare)) != ""}} +} diff --git a/addons/fastroping/functions/fnc_canPrepareFRIES.sqf b/addons/fastroping/functions/fnc_canPrepareFRIES.sqf index 8231dca805..ef33a4c7ff 100644 --- a/addons/fastroping/functions/fnc_canPrepareFRIES.sqf +++ b/addons/fastroping/functions/fnc_canPrepareFRIES.sqf @@ -16,10 +16,8 @@ #include "script_component.hpp" params ["_vehicle"]; -private ["_deployedRopes", "_config"]; -_deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; (isNumber (_config >> QGVAR(enabled)) && {(getNumber (_config >> QGVAR(enabled)) == 1) || {!(isNull (_vehicle getVariable [QGVAR(FRIES), objNull]))}} && From 05c16a5dfb0e95dd83a4530007cc8e9739a84b32 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 29 Feb 2016 01:04:52 +0100 Subject: [PATCH 037/337] Removed TOH animations --- addons/fastroping/CfgMoves.hpp | 24 +--- addons/fastroping/anim/LICENSE | 110 ------------------ addons/fastroping/anim/fastroping.rtm | Bin 0 -> 12708 bytes addons/fastroping/anim/freefallLoop.rtm | Bin 149674 -> 0 bytes addons/fastroping/anim/freefallStart.rtm | Bin 50771 -> 0 bytes addons/fastroping/anim/slidingLoop.rtm | Bin 110773 -> 0 bytes .../functions/fnc_fastRopeLocalPFH.sqf | 18 +-- .../functions/fnc_fastRopeServerPFH.sqf | 2 +- 8 files changed, 7 insertions(+), 147 deletions(-) delete mode 100644 addons/fastroping/anim/LICENSE create mode 100644 addons/fastroping/anim/fastroping.rtm delete mode 100644 addons/fastroping/anim/freefallLoop.rtm delete mode 100644 addons/fastroping/anim/freefallStart.rtm delete mode 100644 addons/fastroping/anim/slidingLoop.rtm diff --git a/addons/fastroping/CfgMoves.hpp b/addons/fastroping/CfgMoves.hpp index da2d0f0613..94f3fe51f0 100644 --- a/addons/fastroping/CfgMoves.hpp +++ b/addons/fastroping/CfgMoves.hpp @@ -8,32 +8,12 @@ class CfgMovesBasic { class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; - class ACE_freefallLoop: Crew { - file = PATHTOF(anim\freefallLoop.rtm); + class ACE_FastRoping: Crew { + file = QUOTE(PATHTOF(anim\fastroping.rtm)); interpolateTo[] = {"Unconscious", 1}; disableWeapons = 1; disableWeaponsLong = 1; canReload = 0; - looped = 1; - speed = 0.204082; - }; - class ACE_freefallStart: Crew { - file = PATHTOF(anim\freefallStart.rtm); - interpolateTo[] = {"Unconscious", 1}; - disableWeapons = 1; - disableWeaponsLong = 1; - canReload = 0; - looped = 0; - speed = 0.61224502; - }; - class ACE_slidingLoop: Crew { - file = PATHTOF(anim\slidingLoop.rtm); - interpolateTo[] = {"Unconscious", 1}; - disableWeapons = 1; - disableWeaponsLong = 1; - canReload = 0; - looped = 1; - speed = 0.441176; }; }; }; diff --git a/addons/fastroping/anim/LICENSE b/addons/fastroping/anim/LICENSE deleted file mode 100644 index 2274430c9b..0000000000 --- a/addons/fastroping/anim/LICENSE +++ /dev/null @@ -1,110 +0,0 @@ -ARMA PUBLIC LICENSE -https://www.bistudio.com/community/licenses/arma-public-license - -Brief summary of this Licence - -PLEASE, NOTE THAT THIS SUMMARY HAS NO LEGAL EFFECT AND IS ONLY OF AN INFORMATORY NATURE DESIGNED FOR YOU TO GET THE BASIC INFORMATION ABOUT THE CONTENT OF THIS LICENCE. THE ONLY LEGALLY BINDING PROVISIONS ARE THOSE IN THE ORIGINAL AND FULL TEXT OF THIS LICENCE. - -With this licence you are free to adapt (i.e. modify, rework or update) and share (i.e. copy, distribute or transmit) the material under the following conditions: - - Attribution - You must attribute the material in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the material). - Noncommercial - You may not use this material for any commercial purposes. - Arma Only - You may not convert or adapt this material to be used in other games than Arma. - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Arma Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - -Section 1 - Definitions - - Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - ArmaOnly means primarily intended for or directed towards the use in any of existing and future Arma games, including but not limited to Arma: Cold War Assault, Arma, Arma 2 and Arma 3 and its official sequels and expansion packs. - Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. - Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - Licensor means the individual(s) or entity(ies) granting rights under this Public License. - NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. - Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. - You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. - -Section 2 – Scope - - License grant - Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - reproduce and Share the Licensed Material, in whole or in part, for NonCommercial and ArmaOnly purposes only; and - produce, reproduce, and Share Adapted Material for NonCommercial and ArmaOnly purposes only. - Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - Term. The term of this Public License is specified in Section 6(a). - Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - Downstream recipients. - Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(a)(i). - Other rights - Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. - Patent and trademark rights are not licensed under this Public License. - To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial and ArmaOnly purposes. - -Section 3 – License Conditions - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - - Attribution - - If You Share the Licensed Material (including in modified form), You must: - retain the following if it is supplied by the Licensor with the Licensed Material: - identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - a copyright notice; - a notice that refers to this Public License; - a notice that refers to the disclaimer of warranties; - a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(a) to the extent reasonably practicable. - If You Share Adapted Material You produce, the Adapter’s License You apply must not prevent recipients of the Adapted Material from complying with this Public License. - -Section 4 – Sui Generis Database Rights - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - - for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial and ArmaOnly purposes only; - if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and - You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. - -Section 5 – Disclaimer of Warranties and Limitation of Liability - - Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. - To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. - The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -Section 6 – Term and Termination - - This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - - Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -Section 7 – Other Terms and Conditions - - The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -Section 8 – Interpretation - - For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. - -Bohemia Interactive Notices - - Bohemia Interactive a.s. is not a party to this License, and makes no warranty whatsoever in connection with the Licensed Material. Bohemia Interactive a.s. will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, Bohemia Interactive a.s. may elect to apply the Public License to material it publishes and in those instances it becomes the "Licensor". - Except for the limited purpose of indicating to the public that the Licensed Material is shared under this Public License, Bohemia Interactive a.s. does not authorize the use by either party of the trademarks "Arma", "Bohemia Interactive" or any related trademark or logo of Arma or Bohemia Interactive without the prior written consent of Bohemia Interactive a.s. diff --git a/addons/fastroping/anim/fastroping.rtm b/addons/fastroping/anim/fastroping.rtm new file mode 100644 index 0000000000000000000000000000000000000000..9742732a565365ec3061de847df87732f676ca36 GIT binary patch literal 12708 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 Z9%W09vf(3JZavx3qipF>{(tUK{vV){j_Uvb literal 0 HcmV?d00001 diff --git a/addons/fastroping/anim/freefallLoop.rtm b/addons/fastroping/anim/freefallLoop.rtm deleted file mode 100644 index 1046bdd4c0ce0a2df9b29b32bca10acb616cf7e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149674 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 Bz0Lpt diff --git a/addons/fastroping/anim/freefallStart.rtm b/addons/fastroping/anim/freefallStart.rtm deleted file mode 100644 index 58aeccc0d9b4156cf81a4fdcad83fbff7dbde790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50771 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 diff --git a/addons/fastroping/anim/slidingLoop.rtm b/addons/fastroping/anim/slidingLoop.rtm deleted file mode 100644 index def413363390a9a25a420d11f73a5cc26f33c6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110773 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 diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 8eaeb9c938..d05c8bfdbc 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -25,25 +25,15 @@ private ["_vectorUp", "_vectorDir", "_origin"]; if (vehicle _unit != _unit) exitWith {}; //Start fast roping -if (animationState _unit != "ACE_slidingLoop") exitWith { +if (animationState _unit != "ACE_FastRoping") exitWith { _unit disableCollisionWith _dummy; - _unit attachTo [_dummy, [0, 0, -0.5]]; - [_unit, "ACE_slidingLoop", 2] call EFUNC(common,doAnimation); + _unit attachTo [_dummy, [0, 0, -1.45]]; + [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); }; //End of fast rope if (isNull attachedTo _unit) exitWith { - if ((getPos _unit) select 2 > 1) then { - [_unit, "ACE_freeFallStart", 2] call EFUNC(common,doAnimation); - [_unit, "ACE_freeFallLoop", 1] call EFUNC(common,doAnimation); - [{ - isTouchingGround _this - }, { - [_this, "", 2] call EFUNC(common,doAnimation); - }, _unit] call EFUNC(common,waitUntilAndExecute); - } else { - [_unit, "", 2] call EFUNC(common,doAnimation); - }; + [_unit, "", 2] call EFUNC(common,doAnimation); _unit setVectorUp [0, 0, 1]; [_pfhHandle] call CBA_fnc_removePerFrameHandler; diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf index 0446a332d3..44f9fedd1a 100644 --- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf @@ -25,7 +25,7 @@ private ["_vectorUp", "_vectorDir", "_origin"]; if (vehicle _unit != _unit) exitWith {}; //Start fast roping -if (animationState _unit != "ACE_slidingLoop") exitWith { +if (animationState _unit != "ACE_FastRoping") exitWith { //Fix for twitchyness _dummy setMass 80; _dummy setCenterOfMass [0, 0, -2]; From 5b4072bf50eb0594dd01d6cc5bace7a2e1a7972a Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 29 Feb 2016 19:18:59 +0100 Subject: [PATCH 038/337] Added vehicle existance check --- addons/fastroping/XEH_preInit.sqf | 1 + .../functions/fnc_checkVehicleThread.sqf | 25 +++++++++++++++++++ .../fastroping/functions/fnc_equipFRIES.sqf | 1 + 3 files changed, 27 insertions(+) create mode 100644 addons/fastroping/functions/fnc_checkVehicleThread.sqf diff --git a/addons/fastroping/XEH_preInit.sqf b/addons/fastroping/XEH_preInit.sqf index 39aeb66a94..83bb997eac 100644 --- a/addons/fastroping/XEH_preInit.sqf +++ b/addons/fastroping/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(canCutRopes); PREP(canDeployRopes); PREP(canFastRope); PREP(canPrepareFRIES); +PREP(checkVehicleThread); PREP(cutRopes); PREP(deployRopes); PREP(equipFRIES); diff --git a/addons/fastroping/functions/fnc_checkVehicleThread.sqf b/addons/fastroping/functions/fnc_checkVehicleThread.sqf new file mode 100644 index 0000000000..0cd0ca3234 --- /dev/null +++ b/addons/fastroping/functions/fnc_checkVehicleThread.sqf @@ -0,0 +1,25 @@ +/* + * Author: BaerMitUmlaut + * Checks if the given helicopter still exits, and if not, destroys the FRIES. + * + * Arguments: + * 0: The helicopter + * 1: The helicopter's FRIES + * + * Return Value: + * None + * + * Example: + * [_vehicle, _fries] call ace_fastroping_fnc_checkVehicleThread + * + * Public: No + */ + +#include "script_component.hpp" +params ["_vehicle", "_fries"]; + +if (isNull _vehicle) then { + deleteVehicle _fries; +} else { + [FUNC(checkVehicleThread), _this, 5] call EFUNC(common,waitAndExecute); +}; diff --git a/addons/fastroping/functions/fnc_equipFRIES.sqf b/addons/fastroping/functions/fnc_equipFRIES.sqf index 8e93a121f5..eaf603f938 100644 --- a/addons/fastroping/functions/fnc_equipFRIES.sqf +++ b/addons/fastroping/functions/fnc_equipFRIES.sqf @@ -35,5 +35,6 @@ if !(isNumber (_config >> QGVAR(enabled))) then { [_vehicle] call FUNC(cutRopes); }; }]; + [FUNC(checkVehicleThread), [_vehicle, _fries], 5] call EFUNC(common,waitAndExecute); }; }; From 2b3b6083cb05ec9ea90d448ff61e1f270306ce6d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 29 Feb 2016 14:06:14 -0600 Subject: [PATCH 039/337] Try to handle bad 3den mission modules --- .../common/functions/fnc_readSettingFromModule.sqf | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index f7cb361c1b..a08f21c83e 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -24,5 +24,15 @@ if (isNil {_logic getVariable _moduleVariable}) exitWith { ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable); }; +private _value = _logic getVariable _moduleVariable; +if ((missionVersion > 12) && {_value isEqualTo -1}) then { + //3den missions will save modules with value = 0 as -1 + //If the setting has a "values" array, we should be able to assume that -1 is not a valid number as it would not be a valid index for the array + if (isArray (configFile >> "ACE_Settings" >> _settingName >> "values")) then { + ACE_LOGWARNING_1("3den Mission - Module For Setting [%1] is saved as (-1), switching to (0)",_settingName); + _value = 0; + }; +}; + // Set the setting globally and force it -[_settingName, _logic getVariable _moduleVariable, true, true] call FUNC(setSetting); +[_settingName, _value, true, true] call FUNC(setSetting); From fe967ff2bd68a98d1be6ae94b56347cb48a447cf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 29 Feb 2016 14:07:15 -0600 Subject: [PATCH 040/337] Don't read medic setting that is not in module --- addons/medical/functions/fnc_moduleMedicalSettings.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_moduleMedicalSettings.sqf b/addons/medical/functions/fnc_moduleMedicalSettings.sqf index dbf3d8084d..29398bbc35 100644 --- a/addons/medical/functions/fnc_moduleMedicalSettings.sqf +++ b/addons/medical/functions/fnc_moduleMedicalSettings.sqf @@ -33,4 +33,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(bleedingCoefficient), "bleedingCoefficient"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(painCoefficient), "painCoefficient"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(keepLocalSettingsSynced), "keepLocalSettingsSynced"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(delayUnconCaptive), "delayUnconCaptive"] call EFUNC(common,readSettingFromModule); +// [_logic, QGVAR(delayUnconCaptive), "delayUnconCaptive"] call EFUNC(common,readSettingFromModule); From 2bdeff16398c512fdb73ac8d476c0634b8fba8ac Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 29 Feb 2016 16:34:51 -0600 Subject: [PATCH 041/337] Fix for all missionVersions --- addons/common/functions/fnc_readSettingFromModule.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index a08f21c83e..3e2a5d862e 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -25,11 +25,11 @@ if (isNil {_logic getVariable _moduleVariable}) exitWith { }; private _value = _logic getVariable _moduleVariable; -if ((missionVersion > 12) && {_value isEqualTo -1}) then { +if (_value isEqualTo -1) then { //3den missions will save modules with value = 0 as -1 //If the setting has a "values" array, we should be able to assume that -1 is not a valid number as it would not be a valid index for the array if (isArray (configFile >> "ACE_Settings" >> _settingName >> "values")) then { - ACE_LOGWARNING_1("3den Mission - Module For Setting [%1] is saved as (-1), switching to (0)",_settingName); + ACE_LOGWARNING_2("Module For Setting [%1] is saved as (-1), switching to (0) - missionVersion [%2]",_settingName,missionVersion); _value = 0; }; }; From bafe714ab5bb13c60c2729cbae9dcd1b67516e6b Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 10:05:06 -0300 Subject: [PATCH 042/337] Remove spare barrels from starting equipment, as they make some grenades not fit in the uniforms. --- addons/overheating/CfgVehicles.hpp | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index c7d9c6790a..ec4b868b84 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -99,29 +99,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 fa3913752bf9e0e51b811882c3fd07b43f1b00a9 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Mar 2016 17:05:00 +0100 Subject: [PATCH 043/337] replace XEH_ENABLED macro with actual class, fix #3482, fix #3483 --- addons/cargo/CfgVehicles.hpp | 161 ++++++++++++++++++++----- addons/concertina_wire/CfgVehicles.hpp | 22 +++- addons/dragging/CfgVehicles.hpp | 7 +- addons/explosives/CfgVehicles.hpp | 13 +- addons/interaction/CfgVehicles.hpp | 8 +- addons/medical/CfgVehicles.hpp | 7 +- addons/rearm/CfgVehicles.hpp | 99 +++++++-------- addons/refuel/CfgVehicles.hpp | 34 ++++-- addons/repair/CfgVehicles.hpp | 7 +- addons/respawn/CfgEventHandlers.hpp | 12 +- addons/respawn/CfgVehicles.hpp | 29 ++++- addons/sandbag/CfgVehicles.hpp | 7 +- addons/sitting/CfgVehicles.hpp | 37 ++++-- addons/spottingscope/CfgVehicles.hpp | 7 +- addons/tacticalladder/CfgVehicles.hpp | 7 +- addons/tripod/CfgVehicles.hpp | 8 +- 16 files changed, 337 insertions(+), 128 deletions(-) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 9104533302..e1750d8aad 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -1,3 +1,6 @@ + +class CBA_Extended_EventHandlers; + class CfgVehicles { class Logic; class Module_F: Logic { @@ -192,7 +195,7 @@ class CfgVehicles { }; class Heli_Transport_02_base_F; - class I_Heli_Transport_02_F : Heli_Transport_02_base_F { + class I_Heli_Transport_02_F: Heli_Transport_02_base_F { GVAR(space) = 20; GVAR(hasCargo) = 1; }; @@ -284,14 +287,16 @@ class CfgVehicles { GVAR(size) = 2; }; - class Scrapyard_base_F; class Land_PaperBox_closed_F: Scrapyard_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 10; GVAR(hasCargo) = 1; GVAR(size) = 11; GVAR(canLoad) = 1; - XEH_ENABLED; class ACE_Actions { class ACE_MainActions { @@ -323,163 +328,253 @@ class CfgVehicles { }; }; class Cargo10_base_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 14; GVAR(size) = 15; - XEH_ENABLED; }; class Land_Cargo20_blue_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_brick_red_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_cyan_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_grey_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_light_blue_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_light_green_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_military_green_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Ruins_F; class Land_Cargo20_military_ruins_F: Ruins_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_orange_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_red_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_sand_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_vr_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_white_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo20_yellow_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 49; GVAR(size) = 50; - XEH_ENABLED; }; class Land_Cargo40_blue_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_brick_red_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_cyan_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_grey_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_light_blue_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_light_green_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_military_green_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_military_ruins_F: Ruins_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_orange_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_red_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_sand_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_vr_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_white_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; class Land_Cargo40_yellow_F: Cargo_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 99; GVAR(size) = 100; - XEH_ENABLED; }; // small class Land_CargoBox_V1_F: ThingX { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(space) = 7; GVAR(hasCargo) = 1; GVAR(size) = 7; - XEH_ENABLED; class ACE_Actions { class ACE_MainActions { diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 2a0b8cead2..9c7d832bc1 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -1,11 +1,13 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { class Fence; - class ThingX; - class NonStrategic; - class ACE_ConcertinaWireNoGeo: Fence { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + scope = 1; displayName = ""; model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d); @@ -94,8 +96,13 @@ class CfgVehicles { }; }; }; + + class ThingX; class ACE_ConcertinaWireCoil: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + scope = 2; displayName = $STR_ACE_CONCERTINA_WIRECOIL; model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d); @@ -137,7 +144,10 @@ class CfgVehicles { }; }; + class NonStrategic; class Land_Razorwire_F: NonStrategic { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; }; }; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index be5021fd43..dab8c1e842 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -1,4 +1,6 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { // Static weapons class LandVehicle; @@ -85,7 +87,10 @@ class CfgVehicles { // Barrier class RoadCone_F: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canCarry) = 1; GVAR(carryPosition[]) = {0,1,1}; GVAR(carryDirection) = 0; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 9be3a936e5..ce77ce0d79 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -1,3 +1,6 @@ + +class CBA_Extended_EventHandlers; + class CfgVehicles { class Man; class CAManBase: Man { @@ -37,7 +40,10 @@ class CfgVehicles { class Items_base_F; class ACE_DefuseObject: Items_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + author = "ACE"; _generalMacro = "ACE_DefuseObject"; displayName = "ACE Defuse Helper"; @@ -66,7 +72,10 @@ class CfgVehicles { }; }; class ACE_Explosives_Place: Items_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + author = "ACE"; _generalMacro = "ACE_Explosives_Place"; displayName = "Multi-meter"; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 5c3366c9f0..0b71ebb4e1 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,3 +1,6 @@ + +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; class ACE_ModuleInteraction: ACE_Module { @@ -539,8 +542,11 @@ class CfgVehicles { class Lamps_base_F; class Land_PortableLight_single_F: Lamps_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + scope = 2; - XEH_ENABLED; class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index bddb8fc8a6..a4fef30466 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -1,6 +1,8 @@ #define MEDICAL_ACTION_DISTANCE 1.75 +class CBA_Extended_EventHandlers; + class CfgVehicles { class Logic; class Module_F: Logic { @@ -650,7 +652,10 @@ class CfgVehicles { class MapBoard_altis_F; class ACE_bodyBagObject: MapBoard_altis_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + scope = 1; scopeCurator = 2; side = -1; diff --git a/addons/rearm/CfgVehicles.hpp b/addons/rearm/CfgVehicles.hpp index 30548aed76..8bee12de85 100644 --- a/addons/rearm/CfgVehicles.hpp +++ b/addons/rearm/CfgVehicles.hpp @@ -1,3 +1,4 @@ + #define MACRO_REARM_ACTIONS \ class ACE_Actions { \ class ACE_MainActions { \ @@ -13,8 +14,8 @@ }; #define MACRO_REARM_TRUCK_ACTIONS \ - class ACE_Actions : ACE_Actions { \ - class ACE_MainActions : ACE_MainActions { \ + class ACE_Actions: ACE_Actions { \ + class ACE_MainActions: ACE_MainActions { \ class GVAR(TakeAmmo) { \ displayName = CSTRING(TakeAmmo); \ distance = REARM_ACTION_DISTANCE; \ @@ -36,9 +37,11 @@ }; \ }; +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; - class ACE_moduleRearmSettings : ACE_Module { + class ACE_moduleRearmSettings: ACE_Module { scope = 2; displayName = CSTRING(RearmSettings_Module_DisplayName); icon = QUOTE(PATHTOF(ui\icon_module_rearm.paa)); @@ -76,66 +79,66 @@ class CfgVehicles { }; class LandVehicle; - class Car : LandVehicle { + class Car: LandVehicle { MACRO_REARM_ACTIONS }; - class Tank : LandVehicle { + class Tank: LandVehicle { MACRO_REARM_ACTIONS }; - class StaticWeapon : LandVehicle { + class StaticWeapon: LandVehicle { MACRO_REARM_ACTIONS }; class Air; - class Helicopter : Air { + class Helicopter: Air { MACRO_REARM_ACTIONS }; - class Plane : Air { + class Plane: Air { MACRO_REARM_ACTIONS }; class Ship; - class Ship_F : Ship { + class Ship_F: Ship { MACRO_REARM_ACTIONS }; // Ammo Vehicles (with full inheritance for granted ACE_Actions) - class Car_F : Car {}; - class Truck_F : Car_F {}; + class Car_F: Car {}; + class Truck_F: Car_F {}; - class Truck_03_base_F : Truck_F {}; - class O_Truck_03_ammo_F : Truck_03_base_F { + class Truck_03_base_F: Truck_F {}; + class O_Truck_03_ammo_F: Truck_03_base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; - class Truck_02_base_F : Truck_F {}; - class Truck_02_Ammo_base_F : Truck_02_base_F {}; - class I_Truck_02_ammo_F : Truck_02_Ammo_base_F { + class Truck_02_base_F: Truck_F {}; + class Truck_02_Ammo_base_F: Truck_02_base_F {}; + class I_Truck_02_ammo_F: Truck_02_Ammo_base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; - class O_Truck_02_Ammo_F : Truck_02_Ammo_base_F { + class O_Truck_02_Ammo_F: Truck_02_Ammo_base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; - class Truck_01_base_F : Truck_F {}; - class B_Truck_01_transport_F : Truck_01_base_F {}; - class B_Truck_01_mover_F : B_Truck_01_transport_F {}; - class B_Truck_01_ammo_F : B_Truck_01_mover_F { + class Truck_01_base_F: Truck_F {}; + class B_Truck_01_transport_F: Truck_01_base_F {}; + class B_Truck_01_mover_F: B_Truck_01_transport_F {}; + class B_Truck_01_ammo_F: B_Truck_01_mover_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; - class Helicopter_Base_F : Helicopter {}; - class Helicopter_Base_H : Helicopter_Base_F {}; - class Heli_Transport_04_base_F : Helicopter_Base_H {}; - class O_Heli_Transport_04_ammo_F : Heli_Transport_04_base_F { + class Helicopter_Base_F: Helicopter {}; + class Helicopter_Base_H: Helicopter_Base_F {}; + class Heli_Transport_04_base_F: Helicopter_Base_H {}; + class O_Heli_Transport_04_ammo_F: Heli_Transport_04_base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; @@ -158,8 +161,7 @@ class CfgVehicles { }; }; - class B_Slingload_01_Ammo_F : Slingload_01_Base_F { - XEH_ENABLED; + class B_Slingload_01_Ammo_F: Slingload_01_Base_F { transportAmmo = 0; MACRO_REARM_TRUCK_ACTIONS }; @@ -167,8 +169,11 @@ class CfgVehicles { // Dummy Vehicles class ThingX; - class GVAR(defaultCarriedObject) : ThingX { - XEH_ENABLED; + class GVAR(defaultCarriedObject): ThingX { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + displayName = QGVAR(dummy_obj); scope = 1; scopeCurator = 1; @@ -187,59 +192,59 @@ class CfgVehicles { }; }; }; - class GVAR(Bo_GBU12_LGB) : GVAR(defaultCarriedObject) { + class GVAR(Bo_GBU12_LGB): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F\Ammo\Bomb_01_F.p3d"; }; - class GVAR(Bo_Mk82) : GVAR(defaultCarriedObject) { + class GVAR(Bo_Mk82): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F\Ammo\Bomb_02_F"; }; - class GVAR(Bomb_04_F) : GVAR(defaultCarriedObject) { + class GVAR(Bomb_04_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Bomb_04_F.p3d"; }; - class GVAR(Bomb_03_F) : GVAR(defaultCarriedObject) { + class GVAR(Bomb_03_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Bomb_03_F.p3d"; }; - class GVAR(Missile_AA_04_F) : GVAR(defaultCarriedObject) { + class GVAR(Missile_AA_04_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Missile_AA_04_F.p3d"; }; - class GVAR(Missile_AA_03_F) : GVAR(defaultCarriedObject) { + class GVAR(Missile_AA_03_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Missile_AA_03_F.p3d"; }; - class GVAR(Missile_AGM_02_F) : GVAR(defaultCarriedObject) { + class GVAR(Missile_AGM_02_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_02_F.p3d"; }; - class GVAR(Missile_AGM_01_F) : GVAR(defaultCarriedObject) { + class GVAR(Missile_AGM_01_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Missile_AGM_01_F.p3d"; }; - class GVAR(R_230mm_fly) : GVAR(defaultCarriedObject) { + class GVAR(R_230mm_fly): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F\Ammo\Missile_AT_02_F"; }; - class GVAR(R_230mm_HE) : GVAR(defaultCarriedObject) { + class GVAR(R_230mm_HE): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F\Ammo\Missile_AT_02_F"; }; - class GVAR(M_PG_AT) : GVAR(defaultCarriedObject) { + class GVAR(M_PG_AT): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F\Ammo\Rocket_01_F"; }; - class GVAR(Rocket_04_HE_F) : GVAR(defaultCarriedObject) { + class GVAR(Rocket_04_HE_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_HE_F.p3d"; }; - class GVAR(Rocket_03_HE_F) : GVAR(defaultCarriedObject) { + class GVAR(Rocket_03_HE_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d"; }; - class GVAR(Rocket_04_AP_F) : GVAR(defaultCarriedObject) { + class GVAR(Rocket_04_AP_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_04_AP_F.p3d"; }; - class GVAR(Rocket_03_AP_F) : GVAR(defaultCarriedObject) { + class GVAR(Rocket_03_AP_F): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_AP_F.p3d"; }; // Using wrong model - class GVAR(R_80mm_HE) : GVAR(defaultCarriedObject) { + class GVAR(R_80mm_HE): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d"; }; - class GVAR(R_60mm_HE) : GVAR(defaultCarriedObject) { + class GVAR(R_60mm_HE): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d"; }; - class GVAR(R_Hydra_HE) : GVAR(defaultCarriedObject) { + class GVAR(R_Hydra_HE): GVAR(defaultCarriedObject) { model = "\A3\Weapons_F_EPC\Ammo\Rocket_03_HE_F.p3d"; }; }; diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index 5b6d9f483b..665d217d39 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -1,3 +1,4 @@ + #define MACRO_REFUEL_ACTIONS \ class ACE_Actions: ACE_Actions { \ class ACE_MainActions: ACE_MainActions { \ @@ -111,6 +112,8 @@ }; \ }; +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; class ACE_moduleRefuelSettings: ACE_Module { @@ -135,7 +138,10 @@ class CfgVehicles { class ThingX; class ACE_refuel_fuelNozzle: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + MACRO_NOZZLE_ACTIONS displayName = QGVAR(fuelNozzle); scope = 1; @@ -144,20 +150,16 @@ class CfgVehicles { }; class All; - class Static: All {}; - class Building: Static {}; - class NonStrategic: Building {}; - class HouseBase: NonStrategic {}; - class House: HouseBase {}; - class House_F: House {}; class House_Small_F: House_F { + class EventHandlers; + class ACE_Actions { class ACE_MainActions { displayName = ECSTRING(interaction,MainAction); @@ -490,8 +492,7 @@ class CfgVehicles { }; }; - class B_Slingload_01_Fuel_F: Slingload_01_Base_F { - XEH_ENABLED; + class B_Slingload_01_Fuel_F: Slingload_01_Base_F { transportFuel = 0; //3k MACRO_REFUEL_ACTIONS GVAR(hooks)[] = {{0.55,3.02,-0.5},{-0.52,3.02,-0.5}}; @@ -524,7 +525,10 @@ class CfgVehicles { }; }; class Land_StorageBladder_01_F: StorageBladder_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + MACRO_REFUEL_ACTIONS transportFuel = 0; //60k GVAR(hooks)[] = {{-3.35,2.45,0.17}}; @@ -533,7 +537,10 @@ class CfgVehicles { // Vanilla buildings class Land_Fuelstation_Feed_F: House_Small_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + transportFuel = 0; //50k MACRO_REFUEL_ACTIONS GVAR(hooks)[] = {{0,0,-0.5}}; @@ -541,7 +548,10 @@ class CfgVehicles { }; class Land_fs_feed_F: House_Small_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + transportFuel = 0; //50k MACRO_REFUEL_ACTIONS GVAR(hooks)[] = {{-0.4,0.022,-.23}}; diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 1968023881..0d1e3f3f92 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -15,6 +15,8 @@ }; \ }; +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; class ACE_moduleRepairSettings: ACE_Module { @@ -304,7 +306,10 @@ class CfgVehicles { class ThingX; class ACE_RepairItem_Base: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + icon = "iconObject_circle"; mapSize = 0.7; accuracy = 0.2; diff --git a/addons/respawn/CfgEventHandlers.hpp b/addons/respawn/CfgEventHandlers.hpp index 69d602300e..a4601c6f95 100644 --- a/addons/respawn/CfgEventHandlers.hpp +++ b/addons/respawn/CfgEventHandlers.hpp @@ -36,37 +36,37 @@ class Extended_Respawn_EventHandlers { class Extended_Init_EventHandlers { class ACE_Rallypoint_West { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'',west)] call FUNC(initRallypoint)); + init = QUOTE([ARR_3(_this select 0,'',west)] call FUNC(initRallypoint)); }; }; class ACE_Rallypoint_East { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'',east)] call FUNC(initRallypoint)); + init = QUOTE([ARR_3(_this select 0,'',east)] call FUNC(initRallypoint)); }; }; class ACE_Rallypoint_Independent { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'',independent)] call FUNC(initRallypoint)); + init = QUOTE([ARR_3(_this select 0,'',independent)] call FUNC(initRallypoint)); }; }; class ACE_Rallypoint_West_Base { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'respawn_west',west)] call FUNC(initRallypoint)); + init = QUOTE([ARR_3(_this select 0,'respawn_west',west)] call FUNC(initRallypoint)); }; }; class ACE_Rallypoint_East_Base { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'respawn_east',east)] call FUNC(initRallypoint)); + init = QUOTE([ARR_3(_this select 0,'respawn_east',east)] call FUNC(initRallypoint)); }; }; class ACE_Rallypoint_Independent_Base { class ADDON { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'respawn_guerrila',independent)] call FUNC(initRallypoint)); //respawn_civilian + init = QUOTE([ARR_3(_this select 0,'respawn_guerrila',independent)] call FUNC(initRallypoint)); //respawn_civilian }; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index 8fdfb5f0fc..4650e8ffbe 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,4 +1,6 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; class ACE_ModuleRespawn: ACE_Module { @@ -78,20 +80,25 @@ class CfgVehicles { // rallypoints class FlagCarrier; class Flag_NATO_F: FlagCarrier { + class EventHandlers; class ACE_Actions; }; class Flag_CSAT_F: FlagCarrier { + class EventHandlers; class ACE_Actions; }; class Flag_AAF_F: FlagCarrier { + class EventHandlers; class ACE_Actions; }; // static class ACE_Rallypoint_West_Base: Flag_NATO_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointWestBase); @@ -111,7 +118,9 @@ class CfgVehicles { }; class ACE_Rallypoint_East_Base: Flag_CSAT_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointEastBase); @@ -131,7 +140,9 @@ class CfgVehicles { }; class ACE_Rallypoint_Independent_Base: Flag_AAF_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointIndependentBase); @@ -152,7 +163,9 @@ class CfgVehicles { // moveable class ACE_Rallypoint_West: Flag_NATO_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointWest); @@ -172,7 +185,9 @@ class CfgVehicles { }; class ACE_Rallypoint_East: Flag_CSAT_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointEast); @@ -192,7 +207,9 @@ class CfgVehicles { }; class ACE_Rallypoint_Independent: Flag_AAF_F { - XEH_ENABLED; + class EventHandlers: EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; author = ECSTRING(common,ACETeam); displayName = CSTRING(RallypointIndependent); diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index 494ff355e7..99f0fa6125 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -1,4 +1,6 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { class Man; class CAManBase: Man { @@ -44,8 +46,11 @@ class CfgVehicles { class ThingX; class ACE_SandbagObject: ThingX { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + author = ECSTRING(common,ACETeam); - XEH_ENABLED; scope = 2; side = -1; model = PATHTOF(data\ace_sandbag_build.p3d); diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index fde1786268..779022dd9a 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -1,3 +1,6 @@ + +class CBA_Extended_EventHandlers; + class CfgVehicles { class ACE_Module; class ACE_ModuleSitting: ACE_Module { @@ -36,10 +39,13 @@ class CfgVehicles { }; }; - class ThingX; // Folding Chair + class ThingX; class Land_CampingChair_V1_F: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -0.45}; @@ -49,7 +55,10 @@ class CfgVehicles { }; // Camping Chair class Land_CampingChair_V2_F: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -0.45}; @@ -58,10 +67,13 @@ class CfgVehicles { EGVAR(dragging,carryDirection) = 180; }; - class Furniture_base_F; // Chair (Plastic) + class Furniture_base_F: ThingX {}; class Land_ChairPlastic_F: Furniture_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 90; GVAR(sitPosition[]) = {0, 0, -0.5}; @@ -71,7 +83,10 @@ class CfgVehicles { }; // Chair (Wooden) class Land_ChairWood_F: Furniture_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.05, 0}; @@ -81,7 +96,10 @@ class CfgVehicles { }; // Office Chair class Land_OfficeChair_01_F: Furniture_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, 0, -0.6}; @@ -91,7 +109,10 @@ class CfgVehicles { }; // Rattan Chair class Land_RattanChair_01_F: Furniture_base_F { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canSit) = 1; GVAR(sitDirection) = 180; GVAR(sitPosition[]) = {0, -0.1, -1}; // Z must be -1 due to chair's geometry (magic floating seat point) diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 434c1c96ca..6905d6a8ad 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -1,4 +1,6 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { class Man; class CAManBase: Man { @@ -51,7 +53,10 @@ class CfgVehicles { }; }; class ACE_SpottingScopeObject: StaticATWeapon { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + scope = 1; side = 1; typicalCargo[] = {"Soldier"}; diff --git a/addons/tacticalladder/CfgVehicles.hpp b/addons/tacticalladder/CfgVehicles.hpp index 496ed6fd73..ed0ed0eb8c 100644 --- a/addons/tacticalladder/CfgVehicles.hpp +++ b/addons/tacticalladder/CfgVehicles.hpp @@ -1,4 +1,6 @@ +class CBA_Extended_EventHandlers; + class CfgVehicles { class Man; class CAManBase: Man { @@ -34,7 +36,10 @@ class CfgVehicles { class House; class ACE_TacticalLadder: House { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + displayName = CSTRING(DisplayName); class DestructionEffects {}; model = PATHTOF(data\ace_tacticalladder.p3d); diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index de16d6867a..6b9d11fe0f 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -1,3 +1,6 @@ + +class CBA_Extended_EventHandlers; + class CfgVehicles { class Man; class CAManBase: Man { @@ -34,7 +37,10 @@ class CfgVehicles { class ThingX; class ACE_TripodObject: ThingX { - XEH_ENABLED; + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + EGVAR(dragging,canDrag) = 1; EGVAR(dragging,dragPosition[]) = {0,1,0}; EGVAR(dragging,dragDirection) = 0; From 84052f50fda362a26509f3577dd6c73a507bbcf3 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 1 Mar 2016 18:53:52 +0100 Subject: [PATCH 044/337] Update extension builds --- ace_advanced_ballistics.dll | Bin 263680 -> 263168 bytes ace_break_line.dll | Bin 156160 -> 156160 bytes ace_clipboard.dll | Bin 82432 -> 82432 bytes ace_fcs.dll | Bin 204288 -> 204288 bytes ace_medical.dll | Bin 224768 -> 223744 bytes ace_parse_imagepath.dll | Bin 81920 -> 81920 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index a35dcbd2dae91c71c5a71193678e990f0bf6ffb7..0a3d2366f1e991e0c86bdc51ca70a698c5015ea2 100644 GIT binary patch delta 46407 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 z zI_OxJT)(-h>UH(zx}ZO+Pu3UfD`DQ{LnQyCZ!y0#Pnx@}FRd3mxzI{bdw~tMHF!yw zFKiKf*liNU7SeENBJYCJnVoh-N|pP|Bjo4hX)yXuK~?Z7IciJou)`0|=k#h2{Y&+p zhW9kY%K&qXskyl#8#e%zE)k9jv0_tklDGiM%w_pM`3YB<(azM&ju7xe%&dShJKOz^ zdyD%s@c6gxAKbsYD|zCes}6>VFxfL38teNo4EA{nJwJN55*xPz^)?i`K_y%(6bruy z3F1@Y8gYx5?3H@TKSO~hN|e%65tJHg{eZ3^!&=CL_HYs=U>SA`UF)S$?LBRq_8CO+ zA6jF_NEpQ5I<7h@LzuL4ws+2SmO@@saYeawR|;&j39e6Eak>L)LYBTle-C51Unfup z4nrBZVjMT?SfbU-@-DUhf&N$D-PGL`THy2UsqVAxMV@~>Tp4x@>=Km%oNuD%~=njvggX1}<60=|o?{OT&()1QX9+x`)b>N%V&gHHTV45;#%U5t(tTCzenfs`_ zsb?%$j&KVwhZ}`C;y&@3m>^x0%H$g8=3B}dWj!>>-O4{$ignZkbnd=7O`DD8w`$*O zRUAJ%7PwZpKEQPBar|bcoW0=%nCL8W#zA8m z3cbMxW3Hc(VJtMl&E=l+*j7ovzp_(M#s8%0a=a{}vA$SjQ{-Ie>f4}8d@I*h{?qcI z7o5hO-*G6;f3Vylbh{p-pJ5x7fXC+u#t2V~1!4oQ6s8udHMF<154Dw!;|{k|g>pc! zKIiF6^m}?Gm@sb}H;m2ZTI;%X5eDHvY_8O^)$=El1IdI-Lh!awCfpI)i>c5y|HIDF zOByfb%74pW!--JEw3|AkO(Oy0v7O)$UKAz?Q{^wTgW8jY+P7LGFh)nm5XS_E*D>3% z)RE;}=3L?Y!1bAHlD-H=?Irz&Ud5;d9s5bBCZmmM#uB5@_||A*I?P$VZDo8dn=Om( z`<=JEpST*sMRCl$hE1_)Ku`{chVrJh!@6Q+x)-^RxPNp1>#pi~6?*eI&##`pJzNgq z)}woM1x0vIC=~t@>WE9kPsN|aa&ext3v*Mul`dje9MBpaI8~cqP z4FbWp+T3scXcAcBZ&-&czm?$b;a=`O>AvBvNmKshr#zL9St`PYTqbf-q-2+(q*!ds zO{FABkQB+3lBEt(s+1=6kv76@kPl0$P$^PQE5*tMI1%h>lo~_7{D*JTXgX}9+3GxX z0nFIt@Gh=~d^@5R!a6z)4xnkb_|&kyP&8@YEj}vR@3`TJ0b3?Gn>t%KlbixJP^a(U zE&gEmQ$=vwU4UwT#pQS1aFw}kL6f-)CJO_bMS{_y^u@S`6y|C;Lz_u^+ z6nRd2is6JP@m%rvJvTgMzJdSo*DHCkXK+KL47eKe;8HD?u1H~WBt%>+tlT77fso69 zDZ4`64e3@W-;nRX$B*rr~-9WLUnw8#dDs-CLv=>sMfYMjBB@ES#}PhGLlT0HwlK$}!eM z#o28XWBuMSI5Pn@(hxHP7ScR3&)jI{!&2I77D0u)fz@&sUZDsp(z07oR;(phPAk>w zV~w#gp=9J(v#ka25pA^ct=-mM>wr~kl~}i|yIw2I9qG2aqujA>!R>S>yF0^^o8}(i z&TwbBbHD(b-4`HCIZuMe#QxmblLi<15IFP3K%lM&OgD4h6b7ahtFVX<=zC#81WX4L z&h<25x{w1$&SGH&9K!2`-PphH2r*&;G=yYP9S(m^4x~;2mI#N1kqj*)2fR=ql|U6t fkdwgyIp6@iZGgQkLTQ1y@9dit7M5#UB1HT@6M4Rx delta 47011 zcmb5X3w(^n7eBo7Q%zi2BpNBPqN$;y zMN!piscNGVmy(DI8XBq^m5{d7XtWLWBUlEr|6%r1`K|0eN2ZUNJza+~ z`_wD`@lUH!C`J+|MVDy{Q!Pmi3aOn7aaSnTOA5tuB9mXF14%fULiHrfC-0J-A`{dG zy!(pO5POBr{>^r6>|^W|D*7eKCwX+Bl+^EqS+i%ntWf01EbJ8uuv1*L6FIE^5*3QX z=W!ySXhHTGiaF)#YLeVwGJq{R-EZRa}xcQP>3 za5JN_8km$Kjqy;{A9gA&@9#;o9K*X0+7KE#O+D`O_+0@;yEsH7L^D zJM_LR5Y+mSS1B*h~sy;8SWgd? z`_-bRr>iulPl^=&-1iE_g9<6T3;!C5sk>u=AK;B%R``J`%>ffU5OBUjAngyD8E@wm z&yd@zG}}$cdzXa*_&kO#D)@;l=zyHMmE}23hV#62Z@R_p4G0+NK8uW?)IFBGMXTJ~ z5-q*y-mk~Z&*aw2?^lDSGv-9-rl7&A98M#)65>@kR3qdd*t+b8AOgkjm85yBAl~;O ziD9T$ezR(UOQPYt*4UH(IFA0NYAbcwLtQ;Lk<)aSX9U?xFL+KMDKxV6#on^2eY#1Z zsJ8rrvghAX-}6v8gp^CFwER2Ddmf(lq5N7pQPlOT`BGBV2Zr(ov{##UkT|_fV2r?d zq+Luk-nqWa|#HaL9D8SY&gzjo{h%BL#z1p`+-KbFX z?svM$PL-qDu^X?%o#MGuP>Pc8@OAV(ug>HMt@dg^D!QX+7-fF5F(=d`t-MN8S93s8 z>9Wp=F0Gs8aaq%#tkb$2bO~D}1xuv_;9B-=}@O$B^Ol z4e$2hVH<=HM}cc8grEo^GLddTI{nD2y<~WYp7Uxq`h4jBcVWWMTZOswOqk}kt-_q7 zw4Zm1xDSw{}M+~ggDVuh*NG7XX4wkIHUf5h|^qc6{q%@IH#cl7__2o zHmrv@9n^-36ZX&4qFT&?m^}_|rRVmwb-k-sRyoFF5OC>zde_®%(Sw+mV+dxmU?tzZWHPp`#Q1Sb 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 delta 3578 zcmZ{ne_T{m7Qo+m%##68#{&5wg8UHVhlmWr4~Jid7*@ytI`Bl)Oq52q)ELv$1$X>K zBg%T!XGvxzZ9jBFU-?!=MR21ZYL>di3ND$}Ma(EoCPChwH#4;Eezy0=n{&SB+iN5U!QeYJ|zwL6X6o+$sf(8E+m2Zh2oNeIAHh8C;O*s z*=OgI*6E{Qjo34NKCn0DkrJaX)R7mB;jo6hZj6U)@se>W3&kXWx4<~EkG~4j$l96v zT$e6n7`~*LH2Q~-oZ=k#leoKh88>vn9K<-pOC`;n;YH%er-k8Q62)cSkHS0Tv-M+G zgO>b^KM`8dcLPMhOJw9B9!3-Mp~qn^IdLcj`pNx6Iw%!m4}ZgPXO%}B@wXW8>&$h- zDappdQ!9+DMtjf1l&@JE{lpNwG`j62#$=aR5v0pTT>ycR~uptf;#NwZa+ zVZD_{myN+bvY)ET>8sA^%QMg#vglZLurJc;LRFP(e)WrL#q4g)&NfsHr7_s4QBI@< z=1AGajZ+)xS{5^XAz?Up)42A2YrqK_A$a{?w;78Kl zI1*NoUmN{n8t-9zlYd!JG^?TO56ZG^_OP1OM*1X*7}>U7HoIyYJ43O;=*uMYbf~{N zOPPreE}M_VHlm!f*n-XO1)tx42^cRX#}lCk-x`fKgMd< z@*tBpg?hVu%~bD*`JIurlXsef z#S6_|DtLo@*OCPFV&KOY0k)GnpInC?@#{}lgE|8jj5pF`GVAOlm`V1W9S70m?Age$ zJ-^7ZHOt1k*ecT*^E+L`3upw^k%^(}(8BZDD=4lc{^w$cXCtVtP+48E=FQzknnX&@ zT>zfMoR1&1xC@<|O&(<(N=8!l;^<4SV;QLBSgIx!=i|ANiU;X9A0)P(4+Ge-?ZR;i%Ylp&hcX{D=-!y6&m0M%LMiu$xbi$htlhwfCwV=!hM47qglwyMfl(!CgC0 zFx@V~MJ)gob(dTK9ut!4q09jOT_^(p1wUGCehah#IbbSfEZ0T4u~0a^?*2;E_I6a zbFoC|GpJQ(sjIU3sgM_VtPzDys76?08$Pl&$ zLpppUd>#xss1djj*rztXj-%q}*TVZD5DiC#Hs$9d$t@IqV&Rg|8wQc^ybu-+i{YF^ z!l9OhQXw`Hf+{k1VFr$DQgZVPeq%f@FJDb#{sTi$#Ql52X7s=408F(Q-y3AHlm1Lj{HrE<{4O`ZdKv zOLq!#B>4NTM2*J-%hIf}v}i08@Z&Mp8|l+Rd=wM|C)7m2H{c~Ki-z%oSM9`5=IbUE z4UrB+!w|OO3bEI)M$eVure5x9pr1I1r=DBvB$9*p=(#0MQs*H4dam3_h=YvQb1R%= zt%HQ>xz$ecyn`g^xf&-aDR!U~J-6M7o^+55J-5qAk{x8So~w0|a0kiOb96Kk9} z#xC47&@sZ2IB0My+ltA2VKtpA=(LbLH4IhUQdD|wmUAAS4x-j`bDe~BkXSvp$w|7m z*jvTxxy?>;RgknW1?~&|S_tt!h<0nY7Iz1;jV@4}d0d0xGA>DxkQxu8Jj(4JXz!-u zg$41j*L_Phw#l*O(e;8x2Qxh)QI|z~=?4nSb+83$BrXBkS?|NR7V?q(N{#--F21dZ zwZgASP!ODLCq>FdCe<#^Qp7mBI9CzFh3AqXYSQdVWr+51sSWgpO|snOS7@a3`jo-0 zYc%81Uc|G&NWVlAkJ;-QV`5r1;Ppeftuyqv^v`6N>;+{)U@nw^kFX{e#zKVfRxW%A zLxq(FI0n0g_&kJ3LP;L{5x1_kJeUnL1${mwLa^{cK1_lyg%9(Ahel~w0n7(*mCC2X z2o-co)*?9P0(}xc3$Cl7P)aL>+K|C5o)|E;(HbL)XZtC9|%^T8($&aVxr4*+G dr-rA!n^vFJl*XhFO4p`0q&G=XPq3H0{|yg403ZMW diff --git a/ace_clipboard.dll b/ace_clipboard.dll index c6b771be7ff0b0a68a5e73ff45fe197ff6c4c5d3..a21c2da4ab5b0d69afbb74ade0b3914365bf2342 100644 GIT binary patch delta 192 zcmZo@VQpw(-Jrn8a^&jOu+1urQ3ttA^$c_^laovgQW7_J9_sc2OKq3nWxT@+Vg8U} zydlWR%D~J30<6<->M-sXHD%CaFksMSuw+PPNMbMnvQromr?1szRL3FpQkO9thg7H@ mqpG|a&@clAV=!sR5W--{V8LJoG}s(S8ZsDfpQ*=~E(`#8P%Rw* delta 192 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

}&cb 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 delta 29414 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 diff --git a/ace_medical.dll b/ace_medical.dll index 3b5e97ca198f1aca516900b7d8c274cea64c525c..0091bc67bd898e648ba83834431537ee8fb75aed 100644 GIT binary patch delta 32116 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 delta 32762 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 diff --git a/ace_parse_imagepath.dll b/ace_parse_imagepath.dll index f2c6054cec2f0207bead290e1d8a1609e0244be2..2235393dd4f9a36dc4a3407005b8dad80e067ba1 100644 GIT binary patch delta 192 zcmZo@U~On%-5|lpa^&jOu+1`zRtLFF^$c_^laovgQW7^O9y;s^mfEht!`Q5< mQB~dyXqW+mF_<)D2w^Z}uwbwP8f*?E4H=BL&(vW|7X|>S6)UI! delta 192 zcmZo@U~On%-5|lpqPKBt=w=y4tApG|dIq{lX(p+brm33~4;}UdOKsQSVeH|BFn35Y zN(gc?F)%ZL0MqoFT8#TejTrP83>b77k{Hq$Oc+ubEE!B0Qm3!gW>m)^^-`NL9EVh> o4x_5PDbO$j26G^3#9+n{0wj$YtQZV|hFbwyCfjG~Fs2Iw03T>6JOBUy From e2c7576251901a9229d12bd58d51795e8c9ddaaa Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 1 Mar 2016 19:09:42 +0100 Subject: [PATCH 045/337] Remove headless client component from ACE. The component does not fit properly within the scope of the ACE project. In order to avoid difficulties at a later point in time, project management has decided to pull the HC component from the ACE 3.5.0 release. We are going to look into alternative options for the HC component, such as a separate repository maintained by the ACE team. --- addons/headless/$PBOPREFIX$ | 1 - addons/headless/ACE_Settings.hpp | 20 --- addons/headless/CfgEventHandlers.hpp | 26 ---- addons/headless/CfgVehicles.hpp | 37 ----- addons/headless/README.md | 16 -- .../headless/UI/Icon_Module_Headless_ca.paa | Bin 5625 -> 0 bytes addons/headless/XEH_PREP.hpp | 7 - addons/headless/XEH_postInit.sqf | 16 -- addons/headless/XEH_preInit.sqf | 13 -- addons/headless/XEH_preStart.sqf | 3 - addons/headless/config.cpp | 17 --- .../functions/fnc_handleConnectHC.sqf | 36 ----- .../functions/fnc_handleDisconnect.sqf | 34 ----- .../headless/functions/fnc_handleInitPost.sqf | 31 ---- addons/headless/functions/fnc_moduleInit.sqf | 27 ---- addons/headless/functions/fnc_rebalance.sqf | 29 ---- .../headless/functions/fnc_transferGroups.sqf | 144 ------------------ .../headless/functions/script_component.hpp | 1 - addons/headless/script_component.hpp | 15 -- addons/headless/stringtable.xml | 61 -------- 20 files changed, 534 deletions(-) delete mode 100644 addons/headless/$PBOPREFIX$ delete mode 100644 addons/headless/ACE_Settings.hpp delete mode 100644 addons/headless/CfgEventHandlers.hpp delete mode 100644 addons/headless/CfgVehicles.hpp delete mode 100644 addons/headless/README.md delete mode 100644 addons/headless/UI/Icon_Module_Headless_ca.paa delete mode 100644 addons/headless/XEH_PREP.hpp delete mode 100644 addons/headless/XEH_postInit.sqf delete mode 100644 addons/headless/XEH_preInit.sqf delete mode 100644 addons/headless/XEH_preStart.sqf delete mode 100644 addons/headless/config.cpp delete mode 100644 addons/headless/functions/fnc_handleConnectHC.sqf delete mode 100644 addons/headless/functions/fnc_handleDisconnect.sqf delete mode 100644 addons/headless/functions/fnc_handleInitPost.sqf delete mode 100644 addons/headless/functions/fnc_moduleInit.sqf delete mode 100644 addons/headless/functions/fnc_rebalance.sqf delete mode 100644 addons/headless/functions/fnc_transferGroups.sqf delete mode 100644 addons/headless/functions/script_component.hpp delete mode 100644 addons/headless/script_component.hpp delete mode 100644 addons/headless/stringtable.xml diff --git a/addons/headless/$PBOPREFIX$ b/addons/headless/$PBOPREFIX$ deleted file mode 100644 index 553c595da0..0000000000 --- a/addons/headless/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\headless diff --git a/addons/headless/ACE_Settings.hpp b/addons/headless/ACE_Settings.hpp deleted file mode 100644 index 6c8246a06b..0000000000 --- a/addons/headless/ACE_Settings.hpp +++ /dev/null @@ -1,20 +0,0 @@ -class ACE_Settings { - class GVAR(Enabled) { - value = 0; - typeName = "BOOL"; - displayName = ECSTRING(common,Enabled); - description = CSTRING(EnabledDesc); - }; - class GVAR(Delay) { - value = DELAY_DEFAULT; - typeName = "SCALAR"; - displayName = CSTRING(Delay); - description = CSTRING(DelayDesc); - }; - class GVAR(Log) { - value = 0; - typeName = "BOOL"; - displayName = CSTRING(Log); - description = CSTRING(LogDesc); - }; -}; diff --git a/addons/headless/CfgEventHandlers.hpp b/addons/headless/CfgEventHandlers.hpp deleted file mode 100644 index b9c2681558..0000000000 --- a/addons/headless/CfgEventHandlers.hpp +++ /dev/null @@ -1,26 +0,0 @@ - -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)); - }; -}; - -class Extended_PostInit_EventHandlers { - class ADDON { - init = QUOTE(call COMPILE_FILE(XEH_postInit)); - }; -}; - -class Extended_InitPost_EventHandlers { - class AllVehicles { - class ADDON { - serverInit = QUOTE(_this call FUNC(handleInitPost)); - }; - }; -}; diff --git a/addons/headless/CfgVehicles.hpp b/addons/headless/CfgVehicles.hpp deleted file mode 100644 index aa3837f6ae..0000000000 --- a/addons/headless/CfgVehicles.hpp +++ /dev/null @@ -1,37 +0,0 @@ -class CfgVehicles { - class ACE_Module; - class GVAR(module): ACE_Module { - author = ECSTRING(common,ACETeam); - category = "ACE_missionModules"; - displayName = CSTRING(Module); - function = QFUNC(moduleInit); - scope = 2; - isGlobal = 1; // Global - isTriggerActivated = 0; - isDisposable = 0; - icon = QUOTE(PATHTOF(UI\Icon_Module_Headless_ca.paa)); - class Arguments { - class Enabled { - displayName = ECSTRING(common,Enabled); - description = CSTRING(EnabledDesc); - typeName = "BOOL"; - defaultValue = 0; - }; - class Delay { - displayName = CSTRING(Delay); - description = CSTRING(DelayDesc); - typeName = "NUMBER"; - defaultValue = DELAY_DEFAULT; - }; - class Log { - displayName = CSTRING(Log); - description = CSTRING(LogDesc); - typeName = "BOOL"; - defaultValue = 0; - }; - }; - class ModuleDescription { - description = CSTRING(ModuleDesc); - }; - }; -}; diff --git a/addons/headless/README.md b/addons/headless/README.md deleted file mode 100644 index ab3d1ef403..0000000000 --- a/addons/headless/README.md +++ /dev/null @@ -1,16 +0,0 @@ -ace_headless -============ - -Adds automatic passing of AI groups to (up to 3) Headless Clients. -- Automatic Headless Client recognition -- Event-based transferring (on unit spawn, Headless Client connect and disconnect) -- Round-robin transferring when more than 1 Headless Client is present -- Mission makers can use the following to prevent a group from transferring to a Headless Client: - `this setVariable ["ace_headless_blacklist", true, true];` - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [Jonpas](http://github.com/jonpas) diff --git a/addons/headless/UI/Icon_Module_Headless_ca.paa b/addons/headless/UI/Icon_Module_Headless_ca.paa deleted file mode 100644 index a3e23a8537d9246e68096d9513e9248ef86da652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 zcmeHLO>7%Q6n^8MxJ8X^D!UQ~$cjdS3q2w($g@IqVu>n7*afMoL|t)!L&&KT0?C_J zZIwfb6VYQ-P8Ent+k-i9uu;#5ic_Q@(u$v3AWae4s;Z~od$SvAyS8iLQb>8;AAdVD z@6Gq-&F;L3o2efT0Kcn&A!+ADM^ht*3 ze3s}3oWqGGO_YXV+YB9$f5T!*H2z5BHlxx`7mJ2=*Z5!@hYYK)t3K(-Bo2OFgp6K4 z)g}weqMyp;GR$oEp9ysKhoUA$(ZFxzQpu2B4%-){eFuNI*P)0bdbHN8Kdc|x>%eJJ zfqtbF^bf~>u>Lmtok26mzfqb#IeF-N@mC2lusu

o9-KcPeb-@&hr4x~l#~;BAo9yp0dIx{^#ciGEc6R>C_#*syK0s=Aen6$b zK9>iyk2qxgh46of_6UAu?IHYOpX1-Q$Mgr5`PH+3o&6n*;U9#g^;g;Y>xshc<2%@2 zJF9-5P##H<%)i3kFuw3U?;mfJAd1oEgv8^)vK~n%9;XuJFXsID9P?4iRTMWDjNb@W z8+gNG<&ZNsg)hDk8hB~KpBJpP>psq|kHYrYzSc&rbz`0RyKn$KC0NsJ4#n5BSF^3i7uD{$L+Zo4XU{W{%4>93FkDb#C3?Se5!( zzcGq2_*dzO`lrJ9Ry@AZ+w;Ix;qPL8>~QIdZ{?rL;b8vw-v7^khmSuc@pAW7_n;J9Nk5PKK+#9)UUUT}~H{)OcAz#Un|xVm*Uz&hfct=_r( z!5zlwOeX6!P@bBT*EAef6s%`|3hKuVO?xpMj583?U){pTUff%>_Uy77Pq3^n)M7Ze zJPV;nbu(q`wgS=yd=}fwy+&%Y-M(&_KK6q&62mIn2wls3Y^WriAkE2Uk)?RKTA21A z>i}*q*WTi@tMwI0L%3XfCua8t7+DkQC!P!SWipJ-g~{zSsu$)kWd9&>llr}}=JNVE zvCmnV#Vg`JcrdWnyM32_85T}e|C$Q?s2BFWnND6Oju+cwuQ@YEi8=J&Vs6Xg;Jp9Y zsBq3JB!4+kdBIwX$F(=JMGGrIJQj;EE8^h#DC~P3+gx79HjTCZ@cbn$kiN?3+xYB* z5pNYtCJ1k{Vd>;8jDx&jW%dyW)AJX>TVE*CDP5qd#F%ZHHlfq2YO{CgEeXzy6 zu;SpxHY(TttbFa4$ucJV6oyH`%0&wn`kbx8AS@x_Y=3a|=6&q#k!KmJkOy~2pq>d!B~ dx_0U4GGkU7!w>#E`00DkFO2QkZ5x5V$UQJVxmy4L diff --git a/addons/headless/XEH_PREP.hpp b/addons/headless/XEH_PREP.hpp deleted file mode 100644 index 8d2aaa2cfb..0000000000 --- a/addons/headless/XEH_PREP.hpp +++ /dev/null @@ -1,7 +0,0 @@ - -PREP(handleConnectHC); -PREP(handleDisconnect); -PREP(handleInitPost); -PREP(moduleInit); -PREP(rebalance); -PREP(transferGroups); diff --git a/addons/headless/XEH_postInit.sqf b/addons/headless/XEH_postInit.sqf deleted file mode 100644 index 7b8a4615dc..0000000000 --- a/addons/headless/XEH_postInit.sqf +++ /dev/null @@ -1,16 +0,0 @@ -#include "script_component.hpp" - -// Exit on player clients that are not hosts -if (hasInterface && !isServer) exitWith {}; - -["SettingsInitialized", { - if (isServer) then { - // Add disconnect EH if HC transferring enabled - if (GVAR(Enabled)) then { - addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; - }; - } else { - // Register HC (this part happens on HC only) - ["ACE_HeadlessClientJoined", [player]] call EFUNC(common,globalEvent); - }; -}] call EFUNC(common,addEventHandler); diff --git a/addons/headless/XEH_preInit.sqf b/addons/headless/XEH_preInit.sqf deleted file mode 100644 index 2455c9f999..0000000000 --- a/addons/headless/XEH_preInit.sqf +++ /dev/null @@ -1,13 +0,0 @@ -#include "script_component.hpp" - -ADDON = false; - -#include "XEH_PREP.hpp" - -if (isServer) then { - GVAR(headlessClients) = []; - GVAR(inRebalance) = false; - ["ACE_HeadlessClientJoined", FUNC(handleConnectHC)] call EFUNC(common,addEventHandler); -}; - -ADDON = true; diff --git a/addons/headless/XEH_preStart.sqf b/addons/headless/XEH_preStart.sqf deleted file mode 100644 index 022888575e..0000000000 --- a/addons/headless/XEH_preStart.sqf +++ /dev/null @@ -1,3 +0,0 @@ -#include "script_component.hpp" - -#include "XEH_PREP.hpp" diff --git a/addons/headless/config.cpp b/addons/headless/config.cpp deleted file mode 100644 index 9c4c6b9120..0000000000 --- a/addons/headless/config.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[]= {"Jonpas"}; - authorUrl = "https://github.com/jonpas"; - VERSION_CONFIG; - }; -}; - -#include "ACE_Settings.hpp" -#include "CfgEventHandlers.hpp" -#include "CfgVehicles.hpp" diff --git a/addons/headless/functions/fnc_handleConnectHC.sqf b/addons/headless/functions/fnc_handleConnectHC.sqf deleted file mode 100644 index 19293e9229..0000000000 --- a/addons/headless/functions/fnc_handleConnectHC.sqf +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Author: Jonpas - * Registers connected Headless Client for use. - * - * Arguments: - * 0: Headless Client - * - * Return Value: - * None - * - * Example: - * [headlessClient] call ace_headless_handleConnectHC; - * - * Public: No - */ -#include "script_component.hpp" - -params ["_headlessClient"]; - -// Delay until settings are initialized (for checking if HC trasnferring is enabled) -if (!EGVAR(common,settingsInitFinished)) exitWith { - EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(handleConnectHC), _this]; -}; - -// Exit if HC transferring disabled or HC already registered -if (!GVAR(Enabled) || {_headlessClient in GVAR(headlessClients)}) exitWith {}; - -// Register for use -GVAR(headlessClients) pushBack _headlessClient; - -if (GVAR(Log)) then { - ACE_LOGINFO_1("Registered HC: %1",_headlessClient); -}; - -// Rebalance -[true] call FUNC(rebalance); diff --git a/addons/headless/functions/fnc_handleDisconnect.sqf b/addons/headless/functions/fnc_handleDisconnect.sqf deleted file mode 100644 index dc20379458..0000000000 --- a/addons/headless/functions/fnc_handleDisconnect.sqf +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Author: Jonpas - * Removes Headless Client from use. - * - * Arguments: - * 0: Object - * - * Return Value: - * Transfer To Server - * - * Example: - * [unit] call ace_headless_handleDisconnect; - * - * Public: No - */ -#include "script_component.hpp" - -params ["_object"]; - -// Exit if not HC -if !(_object in GVAR(headlessClients)) exitWith {}; - -// Remove HC -GVAR(headlessClients) deleteAt (GVAR(headlessClients) find _object); - -if (GVAR(Log)) then { - ACE_LOGINFO_1("Removed HC: %1",_object); -}; - -// Rebalance -[true] call FUNC(rebalance); - -// Prevent transferring of HC to server -false diff --git a/addons/headless/functions/fnc_handleInitPost.sqf b/addons/headless/functions/fnc_handleInitPost.sqf deleted file mode 100644 index fd75367ce7..0000000000 --- a/addons/headless/functions/fnc_handleInitPost.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Author: Jonpas - * Request a rebalance. - * - * Arguments: - * 0: Object - * - * Return Value: - * None - * - * Example: - * [object] call ace_headless_handleInitPost; - * - * Public: No - */ -#include "script_component.hpp" - -params ["_object"]; - -TRACE_1("InitPost",_object); - -// Delay until settings are initialized (for checking if HC trasnferring is enabled) -if (!EGVAR(common,settingsInitFinished)) exitWith { - EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(handleInitPost), _this]; -}; - -// Exit if HC transferring disabled or object not a unit (including unit inside vehicle) or is player -if (!GVAR(Enabled) || {!(_object in allUnits)} || {isPlayer _object}) exitWith {}; - -// Rebalance -[false] call FUNC(rebalance); diff --git a/addons/headless/functions/fnc_moduleInit.sqf b/addons/headless/functions/fnc_moduleInit.sqf deleted file mode 100644 index dc06d95b3b..0000000000 --- a/addons/headless/functions/fnc_moduleInit.sqf +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Author: Jonpas - * Initializes the Headless module. - * - * Arguments: - * 0: The module logic - * 1: Units (Unused) - * 2: Activated - * - * Return Value: - * None - * - * Public: No - */ -#include "script_component.hpp" - -if (!isServer) exitWith {}; - -params ["_logic", "", "_activated"]; - -if (!_activated) exitWith {}; - -[_logic, QGVAR(Enabled), "Enabled"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(Delay), "Delay"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(Log), "Log"] call EFUNC(common,readSettingFromModule); - -ACE_LOGINFO("Headless Module Initialized."); diff --git a/addons/headless/functions/fnc_rebalance.sqf b/addons/headless/functions/fnc_rebalance.sqf deleted file mode 100644 index 1c792ff94a..0000000000 --- a/addons/headless/functions/fnc_rebalance.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Author: Jonpas - * Rebalance AI groups accross HCs. - * - * Arguments: - * 0: Force - * - * Return Value: - * None - * - * Example: - * [false] call ace_headless_rebalance; - * - * Public: No - */ -#include "script_component.hpp" - -params ["_force"]; - -TRACE_3("Rebalance",GVAR(inRebalance),GVAR(headlessClients),_force); - -// Exit if waiting for rebalance or no HCs present -if (GVAR(inRebalance) || {GVAR(headlessClients) isEqualTo []}) exitWith {}; - -// Transfer after rebalance delay -[FUNC(transferGroups), [_force], GVAR(Delay)] call EFUNC(common,waitAndExecute); - -// Currently in rebalance flag -GVAR(inRebalance) = true; diff --git a/addons/headless/functions/fnc_transferGroups.sqf b/addons/headless/functions/fnc_transferGroups.sqf deleted file mode 100644 index 892e9b58ff..0000000000 --- a/addons/headless/functions/fnc_transferGroups.sqf +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Author: Jonpas - * Transfers AI groups to Headess Client(s). - * - * Arguments: - * 0: Force - * - * Return Value: - * None - * - * Example: - * [false] call ace_headless_fnc_transferGroups; - * - * Public: No - */ -#include "script_component.hpp" - -params ["_force"]; - -GVAR(headlessClients) params [ - ["_HC1", objNull, [objNull] ], - ["_HC2", objNull, [objNull] ], - ["_HC3", objNull, [objNull] ] -]; - -if (GVAR(Log)) then { - ACE_LOGINFO_2("Present HCs: %1 - Full Rebalance: %2",GVAR(headlessClients),_force); -}; - - -// Enable round-robin load balancing if more than one HC is present -private _loadBalance = [false, true] select (count GVAR(headlessClients) > 1); - - -// Get IDs and determine first HC to start with -private _idHC1 = -1; -private _idHC2 = -1; -private _idHC3 = -1; -private _currentHC = 0; - -if (!local _HC1) then { - _idHC1 = owner _HC1; - _currentHC = 1; -}; - -if (!local _HC2) then { - _idHC2 = owner _HC2; - - if (_currentHC == 0) then { - _currentHC = 2; - }; -}; - -if (!local _HC3) then { - _idHC3 = owner _HC3; - - if (_currentHC == 0) then { - _currentHC = 3; - }; -}; - - -// Prepare statistics -private _numTransferredHC1 = 0; -private _numTransferredHC2 = 0; -private _numTransferredHC3 = 0; - - -// Transfer AI groups -{ - // No transfer if empty group - private _transfer = !(_x isEqualTo []); - - if (_transfer) then { - { - // No transfer if already transferred - if (!_force && {(owner _x) in [_idHC1, _idHC2, _idHC3]}) exitWith { - _transfer = false; - }; - - // No transfer if player in this group - if (isPlayer _x) exitWith { - _transfer = false; - }; - - // No transfer if any unit in group is blacklisted - if (_x getVariable [QGVAR(blacklist), false]) exitWith { - _transfer = false; - }; - - // No transfer if vehicle unit is in or crew in that vehicle is blacklisted - if (vehicle _x != _x && {(vehicle _x) getVariable [QGVAR(blacklist), false]}) exitWith { - _transfer = false; - }; - } forEach (units _x); - }; - - - // Round robin between HCs if load balance enabled, else pass all to one HC - if (_transfer) then { - switch (_currentHC) do { - case 1: { - private _transferred = _x setGroupOwner _idHC1; - if (_loadBalance) then { - _currentHC = [3, 2] select (!local _HC2); - }; - if (_transferred) then { - _numTransferredHC1 = _numTransferredHC1 + 1; - }; - }; - case 2: { - private _transferred = _x setGroupOwner _idHC2; - if (_loadBalance) then { - _currentHC = [1, 3] select (!local _HC3); - }; - if (_transferred) then { - _numTransferredHC2 = _numTransferredHC2 + 1; - }; - }; - case 3: { - private _transferred = _x setGroupOwner _idHC3; - if (_loadBalance) then { - _currentHC = [2, 1] select (!local _HC1); - }; - if (_transferred) then { - _numTransferredHC3 = _numTransferredHC3 + 1; - }; - }; - default { - TRACE_1("No Valid HC to transfer to",_currentHC); - }; - }; - }; -} forEach allGroups; - - -if (GVAR(Log)) then { - private _numTransferredTotal = _numTransferredHC1 + _numTransferredHC2 + _numTransferredHC3; - ACE_LOGINFO_4("Groups Transferred: Total: %1 - HC1: %2 - HC2: %3 - HC3: %4",_numTransferredTotal,_numTransferredHC1,_numTransferredHC2,_numTransferredHC3); -}; - - -// Allow rebalance flag -GVAR(inRebalance) = false; diff --git a/addons/headless/functions/script_component.hpp b/addons/headless/functions/script_component.hpp deleted file mode 100644 index a38efad3a9..0000000000 --- a/addons/headless/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\headless\script_component.hpp" diff --git a/addons/headless/script_component.hpp b/addons/headless/script_component.hpp deleted file mode 100644 index c69bd780c9..0000000000 --- a/addons/headless/script_component.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#define COMPONENT headless -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_HEADLESS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_HEADLESS - #define DEBUG_SETTINGS DEBUG_SETTINGS_HEADLESS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" - - -#define DELAY_DEFAULT 15 diff --git a/addons/headless/stringtable.xml b/addons/headless/stringtable.xml deleted file mode 100644 index 293915b3c7..0000000000 --- a/addons/headless/stringtable.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - Headless - Headless - Headless - Headless - Headless - Headless - - - This module allows you to setup automatic transferring of AI to Headless Clients. (Default: No) - Dieses Modul erlaubt es dir, die KI automatisch auf einen Headless Client zu transferieren. (Standard: Nein) - Moduł ten pozwala ustawić automatyczne przenoszenie AI do Headless Clientów. (Domyślnie: Nie) - 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 rendre automatic le transfert des IA au client Headless. (Défaut : Non) - - - Enables transferring of AI to Headless Clients. - Aktiviert den Transfer der KI auf Headless Clients. - Aktywuje przenoszenie AI do Headless Clientów - Abilita trasferimento di IA a Headless Client - Habilita la transferencia de IA al Headless Client. - Active le transfert d'IA au Headless Client. - - - Delay - Verzögerung - Opóźnienie - Ritardo - Retardo - Délai - - - Minimal delay between transfers, in seconds. (Default: 15) - Minimale Verzögerung zwischen Transfers in Sekunden. (Standard: 15) - Minimalne opóźnienie w sekundach pomiędzy transferami. (Domyślnie: 15) - 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) - - - Log - Protokolldatei anlegen - Dziennik - Log - Registro - Registre (logs) - - - Log transfer statistics and Headless Client (dis)connections to RPT. (Default: No) - Zeichnet Transferstatistiken, Verbindungen und Verbindungsabbrüche in einer RPT-Datei auf. (Standard: Nein) - Zapisuj statystyki transferów oraz status Headless Clienta do RPT. (Domyślnie: Nie) - 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) - Enregistrer les stats et les (dé)connections du Headless Client dans le .RPT. (Défaut : Non) - - - From 353b5e9ef42d80f89c7c46b7984c31cd55cb2400 Mon Sep 17 00:00:00 2001 From: VKing Date: Tue, 1 Mar 2016 21:58:21 +0100 Subject: [PATCH 046/337] Replace transportMax... with maximumLoad for mortar boxes. Fixes 3490 --- addons/mk6mortar/CfgVehicles.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index 175cbf82f3..fa6667f874 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -139,8 +139,7 @@ class CfgVehicles { class ACE_Box_82mm_Mo_HE: Box_NATO_AmmoOrd_F { displayName = CSTRING(HEBox_DisplayName); author = ECSTRING(common,ACETeam); - transportMaxWeapons = 4; - transportMaxMagazines = 8; + maximumLoad = 400; class TransportMagazines { MACRO_ADDMAGAZINE(ACE_1Rnd_82mm_Mo_HE,8); }; @@ -161,7 +160,7 @@ class CfgVehicles { }; class ACE_Box_82mm_Mo_Combo: ACE_Box_82mm_Mo_HE { displayName = CSTRING(ComboBox_DisplayName); - transportMaxMagazines = 48; + maximumLoad = 2400; class TransportMagazines { MACRO_ADDMAGAZINE(ACE_1Rnd_82mm_Mo_HE,32); MACRO_ADDMAGAZINE(ACE_1Rnd_82mm_Mo_Smoke,8); From 46a96dd5da73e12c8b337c1fe121bd28db81566a Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 1 Mar 2016 18:14:36 -0300 Subject: [PATCH 047/337] 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 26366b9896..8f584ef6e6 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 f29a1c624c..0e8eaad7c4 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 0000000000..97fe9d8883 --- /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 0000000000..01a6ecc0a4 --- /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 8bd63e4874..6eba214617 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 048/337] 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 61b619a79b..928a22420a 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 8f584ef6e6..cc1948e6bd 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 0000000000..b7509671bb --- /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 ace5806f61..fc38ae0054 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 049/337] 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 928a22420a..8981c907f7 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 050/337] 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 ad381ff30e..d9b3ee2bdc 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 051/337] 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 8981c907f7..61052553a4 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 b7509671bb..e8dbaabec0 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 052/337] 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 d9b3ee2bdc..cc040eca0f 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 a7feade1c3..54bc392273 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 97fe9d8883..23d2c7959e 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 01a6ecc0a4..9f286832c6 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 053/337] 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 0e8eaad7c4..831c2c2348 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 23d2c7959e..dd58d58207 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 6eba214617..62a3b13ef6 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 b86e5d8ad69a85037c709fd96a42db86a08be063 Mon Sep 17 00:00:00 2001 From: looterz Date: Tue, 1 Mar 2016 18:23:33 -0600 Subject: [PATCH 054/337] Fixes player markers not showing up correctly when BFT_ShowPlayerNames is enabled in multiplayer --- addons/map/functions/fnc_blueForceTrackingUpdate.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf index 34d41bb49c..cecf228924 100644 --- a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf +++ b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf @@ -33,7 +33,7 @@ if (GVAR(BFT_Enabled) and {(!isNil "ACE_player") and {alive ACE_player}}) then { private _markerType = [_x] call EFUNC(common,getMarkerType); private _colour = format ["Color%1", side _x]; - private _marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos leader _x) select 0, (getPos leader _x) select 1]]; + private _marker = createMarkerLocal [format ["ACE_BFT_%1", _forEachIndex], [(getPos _x) select 0, (getPos _x) select 1]]; _marker setMarkerTypeLocal _markerType; _marker setMarkerColorLocal _colour; _marker setMarkerTextLocal (name _x); From 8f620f2e614b6c6a5bd6d567a8c64b15ae5171c4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 1 Mar 2016 18:49:41 -0600 Subject: [PATCH 055/337] Fix portable light floating / dir when carrying #3486 --- addons/common/functions/fnc_fixPosition.sqf | 10 ++++++++++ addons/dragging/functions/fnc_handleScrollWheel.sqf | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/addons/common/functions/fnc_fixPosition.sqf b/addons/common/functions/fnc_fixPosition.sqf index e2e2d71059..689512d925 100644 --- a/addons/common/functions/fnc_fixPosition.sqf +++ b/addons/common/functions/fnc_fixPosition.sqf @@ -16,6 +16,16 @@ // setVectorUp requires local object if (!local _this) exitWith {}; +if ((getText (configFile >> "CfgVehicles" >> (typeOf _this) >> "simulation")) == "house") then { + //Houses don't have gravity/physics, so make sure they are not floating + private _posAbove = (getPos _this) select 2; + TRACE_2("house",_this,_posAbove); + if (_posAbove > 0.1) then { + private _newPosASL = (getPosASL _this) vectorDiff [0,0,_posAbove]; + _this setPosASL _newPosASL; + }; +}; + private _position = getPos _this; // don't place the object below the ground diff --git a/addons/dragging/functions/fnc_handleScrollWheel.sqf b/addons/dragging/functions/fnc_handleScrollWheel.sqf index e3547ca63a..c97284618c 100644 --- a/addons/dragging/functions/fnc_handleScrollWheel.sqf +++ b/addons/dragging/functions/fnc_handleScrollWheel.sqf @@ -40,4 +40,8 @@ detach _carriedItem; _carriedItem setPosATL _position; _carriedItem attachTo [_unit]; +//reset the carry direction +private _direction = _carriedItem getVariable [QGVAR(carryDirection), 0]; +["setDir", _carriedItem, [_carriedItem, _direction]] call EFUNC(common,targetEvent); + true From 467075ad67fdcd4189302ca56df2f1aaf86d9e22 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Mar 2016 11:01:39 +0100 Subject: [PATCH 056/337] 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 a541d30ce8..08270b0a31 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 fc8dc1b8a2..6bc6e234ae 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 9646f065d4..b8deb1a487 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 02468d0349..d3fd552267 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 0f42f9637c..ac64bdcbb7 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 ffc3c35081..45ee431730 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 0b125af1aa..e6f96bd4a7 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 58e674dd8d..f74b83916d 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 20b3692b9f..e5043d3802 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 f8fe21d760..05266c2168 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 2c7cdd4b27..6160dfd090 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 c51b3bd454..4c03b11768 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 3c68327535..fdbe912be9 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 b2978f9cc4..97998c1298 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 10e2881c10..0890578857 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 e842590f35..434a2c3e4b 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 75f684f5dd..1bb48428df 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 62df8f10a7..d5a2623cd8 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 67cfc50f9a..3aaa3c8f47 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 e5366d331e..0000000000 --- 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 6f282ba656..6180598a5a 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 e4fb341537..7e6bec9575 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 be2f932028..f0614bda6c 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 e1376f4052..bf1daee2f0 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 b7364a8f40..9af811adc7 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 ec00693825..2624bbf05c 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 948af15891..963921efa7 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 3237ddbb07..751baccf06 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 ab117e90fd..08aeba738b 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 fd528b0104..1890dbac1a 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 4d39672a9e..007469d960 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 24a279e7a7..04c536cbd8 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 cfa84fe279..c7843cfdc9 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 e61baed136..3c4943badf 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 919ac3a58e..b35c74383e 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 02c870a519..0b21bd4930 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 1ce83d62dc..f569331eb7 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 61c8f077ab..12b06de946 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 680dc31c37..922e37e719 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 8c72ae8bac..64e82b6f83 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 dd569781e7..84497b78be 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 944b98f127..9b17fe1d1f 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 dcfcc51bec..066bc040f7 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 58eedc7b39..0e6e1e1cb7 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 2eb7611a6a..80d5e33043 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 551b9975b6..cef500a7a2 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 e06ada87ea..8abf8e1b57 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 ac3ee9b0f5..1ef6f0a411 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 b71130a248..4d9f0af4db 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 117a828b0b..ff7687b78b 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 1d42f38c6c..b5fc4f81fa 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 6abb980620..f975db17f1 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 b2249d1589..180c01fba9 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 f561806eaa..04a5e1d04c 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 cb4eac74f9..85624712e3 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 f22fc2228f..9511041bd2 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 83c471092a..a051f6b1b6 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 64d06fea1c..0c25808f37 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 016baebef7..c3bce5efa2 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 901fa04b9a..12873b5ed0 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 e585a409ff..24f19506fe 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 a64c8e014d..f394b0e17f 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 00e9e737cf..cf4b20c032 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 0e36a6fdd6..b89a75aa32 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 5d29d22cec..ed12661379 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 aa545f491e..5114cc91fd 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 ca54d8cd27..4fce53e0ab 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 d07319e8b5..74da98012b 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 c87d51a7e1..b1b31d9c5d 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 91689f311f..e4485fae9f 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 6159351cc9..1ae3f616cc 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 f934978d2b..313ee8eca4 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 7b2c195f10..62254ffd9d 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 913431ccac..a67877eb33 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 25bc8aacb5..6fce00ebf4 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 07431ac66d..1a546dd8d0 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 be9b03c9f1..fcfd75f701 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 e78c80f3ec..055753a0f3 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 92e2af341f..8213e14770 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 67e295e22e..52fc28ba84 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 a8a51ff028..e6ed7e6135 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 122d690bae..918d8c68e3 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 7fc77fdd56..057f07561d 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 3ee45f324e..eb44a68f15 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 9d8b292070..d1e0a8dd05 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 e14fd77f6a..483a69d42b 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 46d0e287d8..0ef4fde96b 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 eed96b3101..d9d26cd0ac 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 2cf607945c..5bd725b74d 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 9c62e77f21..d0c9f4e70a 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 89d5975024..4c2b07d309 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 cc32724e9d..213bf10887 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 466abfb77e..b8ee8add6d 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 43595bde87..eb47c692bf 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 8ebf776987..0df2530cf2 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 94e28dea33..be56e28b31 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 9fa51e9068..feb706bc02 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 ff4e5fc6ad..568ef2050c 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 e2c171e018..8b0d0f17bb 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 a19e000332..d971dc49f2 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 c9ccd43ff9..7c08e813e1 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 2eb264d91b..3f2f9a356c 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 8fa18500e8..aaf7cff82c 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 393a5cd757..5ec512c903 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 5f123b8cb2..901e6ce563 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 d10d36b839..dc26f78bf6 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 1143c30443..cdacd5ff0e 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 cb21b20d9fbf69e01c2bc643fd62d72142e90273 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 2 Mar 2016 09:58:47 -0300 Subject: [PATCH 057/337] Require specifying the CBA version in issues. --- .github/ISSUE_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 097b824779..8097ed6e28 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,4 +1,5 @@ **Arma 3 Version:** `x.xx` (stable / rc / dev) +**CBA Version:** `2.x.x` (stable / dev + commit hash) **ACE3 Version:** `3.x.x` (stable / dev + commit hash) **Mods:** From e7ec87d28427730c0994123a8aee26608d758eef Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Wed, 2 Mar 2016 16:38:23 +0100 Subject: [PATCH 058/337] Added carry and interaction for case. --- addons/cargo/CfgVehicles.hpp | 17 +++++++++++++++++ addons/dragging/CfgVehicles.hpp | 26 ++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index e1750d8aad..96896fdec9 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -256,6 +256,7 @@ class CfgVehicles { // Ammo boxes class ThingX; + class Items_base_F; class ReammoBox_F: ThingX { GVAR(size) = 2; // 1 = small, 2 = large GVAR(canLoad) = 1; @@ -278,6 +279,22 @@ class CfgVehicles { class Slingload_01_Base_F: Slingload_base_F { //Huron 20ft containers GVAR(canLoad) = 0; }; + + class PlasticCase_01_base_F: Items_base_F { + GVAR(size) = 1; // 1 = small, 2 = large + GVAR(canLoad) = 1; + }; + class Land_PlasticCase_01_large_F: PlasticCase_01_base_F { + GVAR(size) = 2; // 1 = small, 2 = large + }; + class MetalCase_01_base_F: Items_base_F { + GVAR(size) = 1; // 1 = small, 2 = large + GVAR(canLoad) = 1; + }; + class Land_MetalCase_01_large_F: MetalCase_01_base_F { + GVAR(size) = 2; // 1 = small, 2 = large + }; + // objects class RoadCone_F: ThingX { GVAR(size) = 1; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index dab8c1e842..92bb6cf12c 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -33,6 +33,7 @@ class CfgVehicles { // ammo boxes class ThingX; + class Items_base_F; class ReammoBox_F: ThingX { GVAR(canCarry) = 0; GVAR(carryPosition[]) = {0,1,1}; @@ -85,6 +86,31 @@ class CfgVehicles { GVAR(canDrag) = 0; }; + class PlasticCase_01_base_F: Items_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canCarry) = 1; + GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryDirection) = 90; + + GVAR(canDrag) = 1; + GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragDirection) = 0; + }; + class MetalCase_01_base_F: Items_base_F { + class EventHandlers { + class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; + }; + GVAR(canCarry) = 1; + GVAR(carryPosition[]) = {0,1,1}; + GVAR(carryDirection) = 90; + + GVAR(canDrag) = 1; + GVAR(dragPosition[]) = {0,1.2,0}; + GVAR(dragDirection) = 0; + }; + // Barrier class RoadCone_F: ThingX { class EventHandlers { From b91897de3b4a5ef114129225074ae8c19b1e6de4 Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Wed, 2 Mar 2016 16:41:45 +0100 Subject: [PATCH 059/337] Added comment --- addons/cargo/CfgVehicles.hpp | 1 + addons/dragging/CfgVehicles.hpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 96896fdec9..82475b72a4 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -280,6 +280,7 @@ class CfgVehicles { GVAR(canLoad) = 0; }; + //Plastic and metal case class PlasticCase_01_base_F: Items_base_F { GVAR(size) = 1; // 1 = small, 2 = large GVAR(canLoad) = 1; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 92bb6cf12c..53b0900744 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -85,7 +85,8 @@ class CfgVehicles { GVAR(canCarry) = 0; GVAR(canDrag) = 0; }; - + + //Plastic and metal case class PlasticCase_01_base_F: Items_base_F { class EventHandlers { class CBA_Extended_EventHandlers: CBA_Extended_EventHandlers {}; From 4918dbacb01c4308d61cb51dde95276d39722931 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 2 Mar 2016 17:33:46 +0100 Subject: [PATCH 060/337] Replace and depreacate EFUNC(common,addScrollWheelEventHandler) with MouseZChanged Display EH --- addons/common/functions/fnc_addScrollWheelEventHandler.sqf | 2 ++ addons/dragging/CfgEventHandlers.hpp | 6 ++++++ addons/dragging/XEH_missionDisplayLoad.sqf | 5 +++++ addons/dragging/XEH_postInit.sqf | 2 -- addons/explosives/CfgEventHandlers.hpp | 6 ++++++ addons/explosives/XEH_missionDisplayLoad.sqf | 5 +++++ addons/explosives/XEH_postInit.sqf | 2 -- addons/interaction/CfgEventHandlers.hpp | 6 ++++++ addons/interaction/XEH_missionDisplayLoad.sqf | 5 +++++ addons/interaction/XEH_postInit.sqf | 2 -- addons/sandbag/CfgEventHandlers.hpp | 6 ++++++ addons/sandbag/XEH_missionDisplayLoad.sqf | 5 +++++ addons/sandbag/XEH_postInit.sqf | 2 -- addons/tacticalladder/CfgEventHandlers.hpp | 6 ++++++ addons/tacticalladder/XEH_missionDisplayLoad.sqf | 5 +++++ addons/tacticalladder/XEH_postInit.sqf | 2 -- addons/trenches/CfgEventHandlers.hpp | 6 ++++++ addons/trenches/XEH_missionDisplayLoad.sqf | 5 +++++ addons/trenches/XEH_postInit.sqf | 2 -- addons/tripod/CfgEventHandlers.hpp | 6 ++++++ addons/tripod/XEH_missionDisplayLoad.sqf | 5 +++++ addons/tripod/XEH_postInit.sqf | 2 -- 22 files changed, 79 insertions(+), 14 deletions(-) create mode 100644 addons/dragging/XEH_missionDisplayLoad.sqf create mode 100644 addons/explosives/XEH_missionDisplayLoad.sqf create mode 100644 addons/interaction/XEH_missionDisplayLoad.sqf create mode 100644 addons/sandbag/XEH_missionDisplayLoad.sqf create mode 100644 addons/tacticalladder/XEH_missionDisplayLoad.sqf create mode 100644 addons/trenches/XEH_missionDisplayLoad.sqf create mode 100644 addons/tripod/XEH_missionDisplayLoad.sqf diff --git a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf b/addons/common/functions/fnc_addScrollWheelEventHandler.sqf index aef88543be..2a9b26e71c 100644 --- a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf +++ b/addons/common/functions/fnc_addScrollWheelEventHandler.sqf @@ -15,6 +15,8 @@ params ["_statement"]; +ACE_DEPRECATED("ace_common_fnc_addScrollWheelEventHandler", "3.8.0", "'MouseZChanged' Display EventHandler"); + if (_statement isEqualType "") then { _statement = compile _statement; }; diff --git a/addons/dragging/CfgEventHandlers.hpp b/addons/dragging/CfgEventHandlers.hpp index 313406a3f1..226efc5ef7 100644 --- a/addons/dragging/CfgEventHandlers.hpp +++ b/addons/dragging/CfgEventHandlers.hpp @@ -55,3 +55,9 @@ class Extended_AnimChanged_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/dragging/XEH_missionDisplayLoad.sqf b/addons/dragging/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/dragging/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/dragging/XEH_postInit.sqf b/addons/dragging/XEH_postInit.sqf index 5a54f8c8a2..9e20d8ee60 100644 --- a/addons/dragging/XEH_postInit.sqf +++ b/addons/dragging/XEH_postInit.sqf @@ -8,8 +8,6 @@ if (isServer) then { if (!hasInterface) exitWith {}; -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - if (isNil "ACE_maxWeightDrag") then { ACE_maxWeightDrag = 800; }; diff --git a/addons/explosives/CfgEventHandlers.hpp b/addons/explosives/CfgEventHandlers.hpp index 0a40c12726..ced23c6b56 100644 --- a/addons/explosives/CfgEventHandlers.hpp +++ b/addons/explosives/CfgEventHandlers.hpp @@ -32,3 +32,9 @@ class Extended_Put_EventHandlers { GVAR(takeHandler) = QUOTE([ARR_3(_this select 1, _this select 0, _this select 2)] call FUNC(onInventoryChanged)); }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/explosives/XEH_missionDisplayLoad.sqf b/addons/explosives/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/explosives/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index e8f12ca6e3..57cbecba75 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -81,5 +81,3 @@ if (isServer) then { _this call FUNC(interactEH); }] call EFUNC(common,addEventHandler); - -[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(common,addScrollWheelEventHandler); diff --git a/addons/interaction/CfgEventHandlers.hpp b/addons/interaction/CfgEventHandlers.hpp index 93be6e902b..f4febe40e9 100644 --- a/addons/interaction/CfgEventHandlers.hpp +++ b/addons/interaction/CfgEventHandlers.hpp @@ -24,3 +24,9 @@ class Extended_Respawn_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/interaction/XEH_missionDisplayLoad.sqf b/addons/interaction/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/interaction/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index c57fd09191..66e0cb1341 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -32,8 +32,6 @@ if (!hasInterface) exitWith {}; GVAR(isOpeningDoor) = false; -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - ["tapShoulder", { params ["_unit", "_shoulderNum"]; diff --git a/addons/sandbag/CfgEventHandlers.hpp b/addons/sandbag/CfgEventHandlers.hpp index 54701ffb3e..32d4ac80f4 100644 --- a/addons/sandbag/CfgEventHandlers.hpp +++ b/addons/sandbag/CfgEventHandlers.hpp @@ -32,3 +32,9 @@ class Extended_Killed_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/sandbag/XEH_missionDisplayLoad.sqf b/addons/sandbag/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/sandbag/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/sandbag/XEH_postInit.sqf b/addons/sandbag/XEH_postInit.sqf index c3f99c2a9b..d6e4c0aadc 100644 --- a/addons/sandbag/XEH_postInit.sqf +++ b/addons/sandbag/XEH_postInit.sqf @@ -11,8 +11,6 @@ GVAR(sandBag) = objNull; GVAR(deployPFH) = -1; GVAR(deployDirection) = 0; -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - // Cancel deploy sandbag if interact menu opened ["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); diff --git a/addons/tacticalladder/CfgEventHandlers.hpp b/addons/tacticalladder/CfgEventHandlers.hpp index ed44329687..cb09874dab 100644 --- a/addons/tacticalladder/CfgEventHandlers.hpp +++ b/addons/tacticalladder/CfgEventHandlers.hpp @@ -24,3 +24,9 @@ class Extended_Killed_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/tacticalladder/XEH_missionDisplayLoad.sqf b/addons/tacticalladder/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/tacticalladder/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/tacticalladder/XEH_postInit.sqf b/addons/tacticalladder/XEH_postInit.sqf index 8ebf776987..465f514d14 100644 --- a/addons/tacticalladder/XEH_postInit.sqf +++ b/addons/tacticalladder/XEH_postInit.sqf @@ -16,8 +16,6 @@ GVAR(currentAngle) = 0; // Cancel adjustment if interact menu opens ["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - // 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); diff --git a/addons/trenches/CfgEventHandlers.hpp b/addons/trenches/CfgEventHandlers.hpp index 6db97e9c9d..5b2eb3a053 100644 --- a/addons/trenches/CfgEventHandlers.hpp +++ b/addons/trenches/CfgEventHandlers.hpp @@ -24,3 +24,9 @@ class Extended_Killed_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/trenches/XEH_missionDisplayLoad.sqf b/addons/trenches/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/trenches/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/trenches/XEH_postInit.sqf b/addons/trenches/XEH_postInit.sqf index d0e8775f05..ba84123009 100644 --- a/addons/trenches/XEH_postInit.sqf +++ b/addons/trenches/XEH_postInit.sqf @@ -12,8 +12,6 @@ GVAR(trench) = objNull; GVAR(digPFH) = -1; GVAR(digDirection) = 0; -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - // Cancel dig sandbag if interact menu opened ["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); diff --git a/addons/tripod/CfgEventHandlers.hpp b/addons/tripod/CfgEventHandlers.hpp index 6e31dde2cb..eaec430c1e 100644 --- a/addons/tripod/CfgEventHandlers.hpp +++ b/addons/tripod/CfgEventHandlers.hpp @@ -32,3 +32,9 @@ class Extended_Killed_EventHandlers { }; }; }; + +class Extended_DisplayLoad_EventHandlers { + class RscDisplayMission { + ADDON = QUOTE(_this call COMPILE_FILE(XEH_missionDisplayLoad)); + }; +}; diff --git a/addons/tripod/XEH_missionDisplayLoad.sqf b/addons/tripod/XEH_missionDisplayLoad.sqf new file mode 100644 index 0000000000..289d2f067a --- /dev/null +++ b/addons/tripod/XEH_missionDisplayLoad.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +params ["_display"]; + +_display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; diff --git a/addons/tripod/XEH_postInit.sqf b/addons/tripod/XEH_postInit.sqf index 6f2dc9b7e0..79aa7a69f2 100644 --- a/addons/tripod/XEH_postInit.sqf +++ b/addons/tripod/XEH_postInit.sqf @@ -9,8 +9,6 @@ GVAR(height) = 0; // Cancel adjustment if interact menu opens ["interactMenuOpened", {[ACE_player] call FUNC(handleInteractMenuOpened)}] call EFUNC(common,addEventHandler); -[{_this call FUNC(handleScrollWheel)}] call EFUNC(common,addScrollWheelEventHandler); - // 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); From 0399335a3f98b8b61425c2ae1cddd369180af4e7 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 2 Mar 2016 14:41:41 -0300 Subject: [PATCH 061/337] Make the FRIES inherit from Helicopter_Base_F. Fix #3504 --- addons/fastroping/CfgVehicles.hpp | 124 +++++++++++++++--------------- 1 file changed, 61 insertions(+), 63 deletions(-) diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 560f60cffc..cde8470130 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -12,12 +12,69 @@ } class CfgVehicles { - class Building; - class NonStrategic: Building { + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; + class ACE_moduleEquipFRIES: ACE_Module { + scope = 2; + displayName = CSTRING(Module_FRIES_DisplayName); + icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa)); + category = "ACE"; + function = QUOTE(FUNC(moduleEquipFRIES)); + functionPriority = 10; + isGlobal = 0; + isTriggerActivated = 0; + isDisposable = 0; + author = "BaerMitUmlaut"; + + class ModuleDescription: ModuleDescription { + description = CSTRING(Module_FRIES_Description); + sync[] = {"AnyVehicle"}; + }; + }; + + class Air; + class Helicopter: Air { + class ACE_SelfActions { + class ACE_prepareFRIES { + displayName = CSTRING(Interaction_prepareFRIES); + condition = [vehicle _player] call FUNC(canPrepareFRIES); + statement = [vehicle _player] call FUNC(prepareFRIES); + showDisabled = 0; + priority = 1; + }; + class ACE_deployRopes { + displayName = CSTRING(Interaction_deployRopes); + condition = [_player, vehicle _player] call FUNC(canDeployRopes); + statement = [QGVAR(deployRopes), [vehicle _player]] call EFUNC(common,serverEvent); + showDisabled = 0; + priority = 1; + }; + class ACE_cutRopes { + displayName = CSTRING(Interaction_cutRopes); + condition = [vehicle _player] call FUNC(canCutRopes); + statement = [vehicle _player] call FUNC(cutRopes); + showDisabled = 0; + priority = 1; + }; + class ACE_fastRope { + displayName = CSTRING(Interaction_fastRope); + condition = [_player, vehicle _player] call FUNC(canFastRope); + statement = [_player, vehicle _player] call FUNC(fastRope); + showDisabled = 0; + priority = 1; + }; + }; + }; + + class Helicopter_Base_F: Helicopter { class AnimationSources; }; - class ACE_friesBase: NonStrategic { + class ACE_friesBase: Helicopter_Base_F { destrType = ""; + class Turrets {}; }; class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; @@ -80,66 +137,6 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ModuleDescription; - }; - class ACE_Module: Module_F {}; - class ACE_moduleEquipFRIES: ACE_Module { - scope = 2; - displayName = CSTRING(Module_FRIES_DisplayName); - icon = QUOTE(PATHTOF(UI\Icon_Module_FRIES_ca.paa)); - category = "ACE"; - function = QUOTE(FUNC(moduleEquipFRIES)); - functionPriority = 10; - isGlobal = 0; - isTriggerActivated = 0; - isDisposable = 0; - author = "BaerMitUmlaut"; - - class ModuleDescription: ModuleDescription { - description = CSTRING(Module_FRIES_Description); - sync[] = {"AnyVehicle"}; - }; - }; - - class Air; - class Helicopter: Air { - class ACE_SelfActions { - class ACE_prepareFRIES { - displayName = CSTRING(Interaction_prepareFRIES); - condition = [vehicle _player] call FUNC(canPrepareFRIES); - statement = [vehicle _player] call FUNC(prepareFRIES); - showDisabled = 0; - priority = 1; - }; - class ACE_deployRopes { - displayName = CSTRING(Interaction_deployRopes); - condition = [_player, vehicle _player] call FUNC(canDeployRopes); - statement = [QGVAR(deployRopes), [vehicle _player]] call EFUNC(common,serverEvent); - showDisabled = 0; - priority = 1; - }; - class ACE_cutRopes { - displayName = CSTRING(Interaction_cutRopes); - condition = [vehicle _player] call FUNC(canCutRopes); - statement = [vehicle _player] call FUNC(cutRopes); - showDisabled = 0; - priority = 1; - }; - class ACE_fastRope { - displayName = CSTRING(Interaction_fastRope); - condition = [_player, vehicle _player] call FUNC(canFastRope); - statement = [_player, vehicle _player] call FUNC(fastRope); - showDisabled = 0; - priority = 1; - }; - }; - }; - - class Helicopter_Base_H; - class Helicopter_Base_F; - class GVAR(helper): Helicopter_Base_F { author = "KoffeinFlummi"; scope = 1; @@ -152,6 +149,7 @@ class CfgVehicles { class Turrets {}; }; + class Helicopter_Base_H; class Heli_Light_02_base_F: Helicopter_Base_H { GVAR(enabled) = 1; GVAR(ropeOrigins[]) = {{1.41, 1.38, 0}, {-1.41, 1.38, 0}}; From 928a9b9485269f78d38d4770eea44c4834a4eac5 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 2 Mar 2016 15:25:41 -0300 Subject: [PATCH 062/337] Increase interaction distance with explosives from 1m to 1.5m. Fix #3379 --- addons/explosives/CfgVehicles.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index ce77ce0d79..db9c7c9b7e 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -56,7 +56,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { selection = ""; - distance = 1; + distance = 1.5; condition = "true"; class ACE_Defuse { displayName = CSTRING(Defuse); @@ -88,12 +88,11 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { selection = ""; - distance = 1; + distance = 1.5; condition = "true"; class ACE_SetTrigger { selection = ""; displayName = CSTRING(TriggerMenu); - distance = 1; condition = "true"; statement = ""; insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions);); @@ -105,7 +104,6 @@ class CfgVehicles { class ACE_PickUp { selection = ""; displayName = CSTRING(Pickup); - distance = 1; condition = "true"; statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;); showDisabled = 0; From 6b13ea287e7810245280ac23b741612d68ddbed8 Mon Sep 17 00:00:00 2001 From: FFAAMOD Date: Wed, 2 Mar 2016 19:56:50 +0100 Subject: [PATCH 063/337] Added Spanish Translation to fastroping module Added Spanish Translations, some of these can have multiple translations but according to the context, they match properly their meanings. --- addons/fastroping/stringtable.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index b65169b273..35fcffb37c 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -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. + Equipar helicoptero compatible con un Sistema de Inserción Extracción Fast Rope. Prepare fast roping system Bereite Fast Roping System vor Przygotuj system zjazdu na linach Préparer le système de corde lisse + Preparar el sistema fast roping Deploy ropes Seile auswerfen Wypuść liny Déployer les cordes + Desplegar cuerdas Fast rope Abseilen Zjedź na linie Descendre à la corde + Descender por la cuerda Cut ropes Seile abwerfen Odetnij liny Détacher les cordes + Cortar cuerdas Equip helicopter with FRIES Rüste Helicopter mit FRIES aus Wyposaż helikopter w FRIES Equiper l'hélicoptère avec le FRIED + Equipar helicoptero con 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 el helicoptero seleccionado con un Sistema de Inserción Extracción Fast Rope From 67695286c73cca19fee984ef2c4caf791c1837aa Mon Sep 17 00:00:00 2001 From: FFAAMOD Date: Wed, 2 Mar 2016 20:01:41 +0100 Subject: [PATCH 064/337] Added FFAAMOD to AUTHORS.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 7de58d43f0..c79206137c 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -65,6 +65,7 @@ F3 Project Falke75 Ferenczi Ferenzi +FFAAMOD Filip Basara fr89k FreeZbe From e6a5d2dacd08abb3f8ed2c8487de281b87dd9407 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 2 Mar 2016 13:19:20 -0600 Subject: [PATCH 065/337] Add CBA 2.3.1 to versioning check --- addons/main/config.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 857478a442..ccd72e5667 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -588,3 +588,16 @@ class CfgMods { #include "CfgModuleCategories.hpp" #include "CfgVehicleClasses.hpp" + +class CfgSettings { + class CBA { + class Versioning { + class ACE { + class dependencies { + CBA[] = {"cba_main", {2,3,1}, "true"}; + }; + }; + }; + }; +}; + From e0493458c0a65f8ab2da87056be766e5c3f6fcd7 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Wed, 2 Mar 2016 16:19:38 -0300 Subject: [PATCH 066/337] Reduce interaction distance for defusing back to 1m --- addons/explosives/CfgVehicles.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index db9c7c9b7e..5f81bde127 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -56,7 +56,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { selection = ""; - distance = 1.5; + distance = 1; condition = "true"; class ACE_Defuse { displayName = CSTRING(Defuse); @@ -66,7 +66,6 @@ class CfgVehicles { showDisabled = 0; icon = PATHTOF(UI\Defuse_ca.paa); priority = 0.8; - distance = 1; }; }; }; From 95007d8ccdddfd177506a1558db087b31710988e Mon Sep 17 00:00:00 2001 From: FFAAMOD Date: Wed, 2 Mar 2016 21:00:46 +0100 Subject: [PATCH 067/337] Spanish translation of FastRope fixed Fixed wrong tag in Spanish Translation of Fast Rope module. --- addons/fastroping/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 35fcffb37c..5394cf9b63 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -20,7 +20,7 @@ Bereite Fast Roping System vor Przygotuj system zjazdu na linach Préparer le système de corde lisse - Preparar el sistema fast roping + Preparar el sistema fast roping Deploy ropes @@ -34,7 +34,7 @@ Abseilen Zjedź na linie Descendre à la corde - Descender por la cuerda + Descender por la cuerda Cut ropes From 303f8d93b9d31b688b6c2d4a6fe8d4f9a063af6c Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Mar 2016 22:16:40 +0100 Subject: [PATCH 068/337] simplify inheritance --- addons/fastroping/CfgVehicles.hpp | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index cde8470130..3468a0ecb9 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -35,8 +35,11 @@ class CfgVehicles { }; }; - class Air; - class Helicopter: Air { + class Helicopter_Base_F; + class ACE_friesBase: Helicopter_Base_F { + destrType = ""; + class Turrets {}; + class ACE_SelfActions { class ACE_prepareFRIES { displayName = CSTRING(Interaction_prepareFRIES); @@ -68,20 +71,12 @@ class CfgVehicles { }; }; }; - - class Helicopter_Base_F: Helicopter { - class AnimationSources; - }; - class ACE_friesBase: Helicopter_Base_F { - destrType = ""; - class Turrets {}; - }; class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; scope = 1; model = PATHTOF(data\friesAnchorBar.p3d); animated = 1; - class AnimationSources: AnimationSources { + class AnimationSources { class extendHookRight { source = "user"; initPhase = 0; @@ -99,7 +94,7 @@ class CfgVehicles { scope = 1; model = PATHTOF(data\friesGantry.p3d); animated = 1; - class AnimationSources: AnimationSources { + class AnimationSources { class adjustWidth { source = "user"; initPhase = 0.211; @@ -118,7 +113,7 @@ class CfgVehicles { }; }; class ACE_friesGantryReverse: ACE_friesGantry { - class AnimationSources: AnimationSources { + class AnimationSources { class adjustWidth { source = "user"; initPhase = 0.213; @@ -141,11 +136,7 @@ class CfgVehicles { author = "KoffeinFlummi"; scope = 1; model = PATHTOF(data\helper.p3d); - class ACE_Actions { - class ACE_MainActions { - condition = "false"; - }; - }; + class ACE_Actions {}; class Turrets {}; }; From 8b4892598ab2f65ded4b0b14e3c321f0fc5cbb74 Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Wed, 2 Mar 2016 22:17:19 +0100 Subject: [PATCH 069/337] added EventHandlers --- addons/cargo/CfgEventHandlers.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/cargo/CfgEventHandlers.hpp b/addons/cargo/CfgEventHandlers.hpp index 3f784e7ab4..391c3a662d 100644 --- a/addons/cargo/CfgEventHandlers.hpp +++ b/addons/cargo/CfgEventHandlers.hpp @@ -57,6 +57,16 @@ class Extended_InitPost_EventHandlers { init = QUOTE(_this call DFUNC(initObject); _this call DFUNC(initVehicle)); }; }; + class PlasticCase_01_base_F { + class ADDON { + 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)); From 730e79def089075b651ade6e70c45b703e3b3448 Mon Sep 17 00:00:00 2001 From: nomisum Date: Wed, 2 Mar 2016 22:17:49 +0100 Subject: [PATCH 070/337] 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 0000000000..e6532146fe --- /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 0000000000..d6312034ca --- /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 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 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 d05c8bfdbc..7279d4838a 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 80bada0365a00390381788e6620cfed3dde5e386 Mon Sep 17 00:00:00 2001 From: ColdEvul Date: Wed, 2 Mar 2016 22:27:29 +0100 Subject: [PATCH 071/337] Fixed carrying rotation. --- addons/dragging/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 53b0900744..e66186e6c8 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -93,7 +93,7 @@ class CfgVehicles { }; GVAR(canCarry) = 1; GVAR(carryPosition[]) = {0,1,1}; - GVAR(carryDirection) = 90; + GVAR(carryDirection) = 270; GVAR(canDrag) = 1; GVAR(dragPosition[]) = {0,1.2,0}; @@ -105,7 +105,7 @@ class CfgVehicles { }; GVAR(canCarry) = 1; GVAR(carryPosition[]) = {0,1,1}; - GVAR(carryDirection) = 90; + GVAR(carryDirection) = 270; GVAR(canDrag) = 1; GVAR(dragPosition[]) = {0,1.2,0}; From 48e9e9c9e4407a5be0958e6611afb93310e05791 Mon Sep 17 00:00:00 2001 From: nomisum Date: Wed, 2 Mar 2016 22:36:42 +0100 Subject: [PATCH 072/337] 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 e6532146fe..1cdf993adc 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 7279d4838a..1b41404299 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 073/337] 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 d6312034ca..71835222cd 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 92fddff833cc480fc18550e0a7ef7604fae402c8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Mar 2016 23:14:23 +0100 Subject: [PATCH 074/337] also fix modifier key --- addons/common/init_handleModifierKey.sqf | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/common/init_handleModifierKey.sqf b/addons/common/init_handleModifierKey.sqf index dd07db621c..7fe2be6476 100644 --- a/addons/common/init_handleModifierKey.sqf +++ b/addons/common/init_handleModifierKey.sqf @@ -12,9 +12,17 @@ */ #include "script_component.hpp" -disableSerialization; +_this spawn {// + waitUntil {!isNull findDisplay 46};// + sleep 2;// -params ["_display"]; + disableSerialization; -_display displayAddEventHandler ["KeyDown", FUNC(handleModifierKey)]; -_display displayAddEventHandler ["KeyUp", FUNC(handleModifierKeyUp)]; + params ["_display"]; + + _display displayAddEventHandler ["KeyDown", {_this call FUNC(handleModifierKey)}]; + _display displayAddEventHandler ["KeyUp", {_this call FUNC(handleModifierKeyUp)}]; +};// + +//@todo, remove all lines with comments after CBA update, events rewrite branch +// note 2, will break in save games after ~ 10 seconds thanks to CBA, fixed with above From 137a512a9e6a5312504a5718d4d7b9ba2a7ff6c0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 2 Mar 2016 16:33:29 -0600 Subject: [PATCH 075/337] close main display if using incompatible cba --- addons/common/functions/fnc_checkFiles.sqf | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 19a4c6f72a..1f3a26db7d 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -19,6 +19,18 @@ private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "version ACE_LOGINFO_1("ACE is version %1.",_version); +//CBA Versioning check - close main display if using incompatible version +private _cbaVersionAr = getArray (configFile >> "CfgPatches" >> "cba_main" >> "versionAr"); +private _cbaRequiredAr = (getArray (configFile >> "CfgSettings" >> "CBA" >> "Versioning" >> "ACE" >> "dependencies" >> "CBA")) select 1; +ACE_LOGINFO_2("CBA is version %1 [min required %2]",_cbaVersionAr,_cbaRequiredAr); +if ([_cbaRequiredAr, _cbaVersionAr] call cba_versioning_fnc_version_compare) then { + private _errorMsg = format ["CBA Version [%1] is outdated [required %2]", _cbaVersionAr, _cbaRequiredAr]; + ACE_LOGERROR(_errorMsg); + if (hasInterface) then { + ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }; +}; + //private _addons = activatedAddons; // broken with High-Command module, see #2134 private _addons = "true" configClasses (configFile >> "CfgPatches");// _addons = _addons apply {toLower configName _x};// From a928185ea0a1ba72471c873e34dd17a362a4d5d3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 3 Mar 2016 17:09:37 +0100 Subject: [PATCH 076/337] Remove download badge --- README.md | 3 --- docs/README_DE.md | 3 --- docs/README_PL.md | 3 --- 3 files changed, 9 deletions(-) diff --git a/README.md b/README.md index f91634f6d4..3de005ce29 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,6 @@ ACE3 Version - - ACE3 Download - ACE3 Issues diff --git a/docs/README_DE.md b/docs/README_DE.md index c30d260611..0f9ca83536 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -6,9 +6,6 @@ ACE3 Version - - ACE3 Download - ACE3 Fehlermeldungen diff --git a/docs/README_PL.md b/docs/README_PL.md index 1fd43eaa4d..f8ff8683e5 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -5,9 +5,6 @@ ACE3 Wersja - - ACE3 Pobierz - ACE3 Zagadnienia From ef95e278f95fd8eb2c68c5121201f3e4a5933df6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 3 Mar 2016 17:35:43 +0100 Subject: [PATCH 077/337] Fix Cancel Action by moving it to MouseButtonDown display EH --- addons/explosives/XEH_PREP.hpp | 1 + addons/explosives/XEH_missionDisplayLoad.sqf | 1 + .../functions/fnc_cancelPlacement.sqf | 28 +++++++++++++++++++ .../functions/fnc_setupExplosive.sqf | 7 ----- addons/sandbag/XEH_missionDisplayLoad.sqf | 1 + addons/sandbag/functions/fnc_deploy.sqf | 6 ---- addons/sandbag/functions/fnc_deployCancel.sqf | 7 +++-- .../sandbag/functions/fnc_deployConfirm.sqf | 1 - .../tacticalladder/XEH_missionDisplayLoad.sqf | 1 + .../functions/fnc_cancelTLdeploy.sqf | 15 +++++----- .../functions/fnc_confirmTLdeploy.sqf | 1 - .../functions/fnc_positionTL.sqf | 6 ---- addons/trenches/XEH_missionDisplayLoad.sqf | 1 + addons/trenches/functions/fnc_placeCancel.sqf | 8 ++++-- .../trenches/functions/fnc_placeConfirm.sqf | 1 - addons/trenches/functions/fnc_placeTrench.sqf | 6 ---- 16 files changed, 51 insertions(+), 40 deletions(-) create mode 100644 addons/explosives/functions/fnc_cancelPlacement.sqf diff --git a/addons/explosives/XEH_PREP.hpp b/addons/explosives/XEH_PREP.hpp index b3686a986f..0d8a4eeca5 100644 --- a/addons/explosives/XEH_PREP.hpp +++ b/addons/explosives/XEH_PREP.hpp @@ -6,6 +6,7 @@ PREP(addExplosiveActions); PREP(addToSpeedDial); PREP(addTransmitterActions); PREP(addTriggerActions); +PREP(cancelPlacement); PREP(canDefuse); PREP(canDetonate); PREP(connectExplosive); diff --git a/addons/explosives/XEH_missionDisplayLoad.sqf b/addons/explosives/XEH_missionDisplayLoad.sqf index 289d2f067a..1475f774e8 100644 --- a/addons/explosives/XEH_missionDisplayLoad.sqf +++ b/addons/explosives/XEH_missionDisplayLoad.sqf @@ -3,3 +3,4 @@ params ["_display"]; _display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; +_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(cancelPlacement)}]; diff --git a/addons/explosives/functions/fnc_cancelPlacement.sqf b/addons/explosives/functions/fnc_cancelPlacement.sqf new file mode 100644 index 0000000000..4a7f385a01 --- /dev/null +++ b/addons/explosives/functions/fnc_cancelPlacement.sqf @@ -0,0 +1,28 @@ +/* + * Author: Garth 'L-H' de Wet + * Cancels explosives placement. + * + * Arguments: + * 0: Unit + * 1: Key + * + * Return Value: + * None + * + * Example: + * [unit, 1] call ace_explosives_fnc_cancelPlacement + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_key"]; + +if (_key != 1) exitWith {}; + +if (_unit == ACE_player && + {([_unit, objNull, ["isNotSwimming"]] call EFUNC(common,canInteractWith))} && + {(_magClassname in (magazines _unit))} +) exitWith {}; + +GVAR(placeAction) = PLACE_CANCEL; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index b1fdf7216b..567bb95db8 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -141,13 +141,6 @@ GVAR(TweakedAngle) = 0; //Don't allow placing in a bad position: if (_badPosition && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;}; - if (((inputAction "zoomTemp") > 0) || //Cancel on RMB, For some reason this works (when held) but AddActionEventHandler doesn't - {_unit != ACE_player} || - {!([_unit, objNull, ["isNotSwimming"]] call EFUNC(common,canInteractWith))} || - {!(_magClassname in (magazines _unit))}) then { - GVAR(placeAction) = PLACE_CANCEL; - }; - if (GVAR(placeAction) != PLACE_WAITING) then { [_pfID] call CBA_fnc_removePerFrameHandler; GVAR(pfeh_running) = false; diff --git a/addons/sandbag/XEH_missionDisplayLoad.sqf b/addons/sandbag/XEH_missionDisplayLoad.sqf index 289d2f067a..cb85ffb9fb 100644 --- a/addons/sandbag/XEH_missionDisplayLoad.sqf +++ b/addons/sandbag/XEH_missionDisplayLoad.sqf @@ -3,3 +3,4 @@ params ["_display"]; _display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; +_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(deployCancel)}]; diff --git a/addons/sandbag/functions/fnc_deploy.sqf b/addons/sandbag/functions/fnc_deploy.sqf index 1a539929ff..735a736bbb 100644 --- a/addons/sandbag/functions/fnc_deploy.sqf +++ b/addons/sandbag/functions/fnc_deploy.sqf @@ -52,10 +52,4 @@ _unit setVariable [QGVAR(Deploy), [ {[_this select 0] call FUNC(deployConfirm)} ] call EFUNC(common,addActionEventHandler)]; -_unit setVariable [QGVAR(Cancel), [ - _unit, "zoomtemp", - {GVAR(deployPFH) != -1}, - {[_this select 0] call FUNC(deployCancel)} -] call EFUNC(common,addActionEventHandler)]; - _unit setVariable [QGVAR(isDeploying), true, true]; diff --git a/addons/sandbag/functions/fnc_deployCancel.sqf b/addons/sandbag/functions/fnc_deployCancel.sqf index bb9d691fa9..e0315d7849 100644 --- a/addons/sandbag/functions/fnc_deployCancel.sqf +++ b/addons/sandbag/functions/fnc_deployCancel.sqf @@ -3,7 +3,8 @@ * Cancels sandbag deployment * * Arguments: - * 0: unit + * 0: Unit + * 1: Key * * Return Value: * None @@ -15,7 +16,9 @@ */ #include "script_component.hpp" -params ["_unit"]; +params ["_unit", "_key"]; + +if (_key != 1) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Sandbag", false] call EFUNC(common,statusEffect_set); diff --git a/addons/sandbag/functions/fnc_deployConfirm.sqf b/addons/sandbag/functions/fnc_deployConfirm.sqf index 8c789fd124..c560bc15ba 100644 --- a/addons/sandbag/functions/fnc_deployConfirm.sqf +++ b/addons/sandbag/functions/fnc_deployConfirm.sqf @@ -51,7 +51,6 @@ GVAR(deployPFH) = -1; call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(common,removeActionEventHandler); -[_unit, "zoomtemp", _unit getVariable [QGVAR(Cancel), -1]] call EFUNC(common,removeActionEventHandler); // play animation _unit playActionNow "PutDown"; diff --git a/addons/tacticalladder/XEH_missionDisplayLoad.sqf b/addons/tacticalladder/XEH_missionDisplayLoad.sqf index 289d2f067a..05419598b9 100644 --- a/addons/tacticalladder/XEH_missionDisplayLoad.sqf +++ b/addons/tacticalladder/XEH_missionDisplayLoad.sqf @@ -3,3 +3,4 @@ params ["_display"]; _display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; +_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(cancelTLdeploy)}]; diff --git a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf index 940b2b612a..6f9eb5cff9 100644 --- a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf +++ b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf @@ -3,8 +3,8 @@ * Cancel tactical ladder deployment * * Arguments: - * 0: unit - * 1: ladder + * 0: Unit + * 1: Key * * Return Value: * None @@ -18,23 +18,24 @@ #define __ANIMS ["extract_1","extract_2","extract_3","extract_4","extract_5","extract_6","extract_7","extract_8","extract_9","extract_10","extract_11"] -params ["_unit", "_ladder"]; +params ["_unit", "_key"]; + +if (_key != 1) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Ladder", false] call EFUNC(common,statusEffect_set); -detach _ladder; +detach GVAR(ladder); -_ladder animate ["rotate", 0]; +GVAR(ladder) animate ["rotate", 0]; { - _ladder animate [_x, 0]; + GVAR(ladder) animate [_x, 0]; } count __ANIMS; // remove mouse buttons and hint call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); -[_unit, "zoomtemp", _unit getVariable [QGVAR(Cancel), -1]] call EFUNC(Common,removeActionEventHandler); GVAR(ladder) = objNull; diff --git a/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf b/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf index 9d5783b327..3703fe1f47 100644 --- a/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf +++ b/addons/tacticalladder/functions/fnc_confirmTLdeploy.sqf @@ -34,7 +34,6 @@ detach _ladder; call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(common,removeActionEventHandler); -[_unit, "zoomtemp", _unit getVariable [QGVAR(Cancel), -1]] call EFUNC(common,removeActionEventHandler); GVAR(ladder) = objNull; diff --git a/addons/tacticalladder/functions/fnc_positionTL.sqf b/addons/tacticalladder/functions/fnc_positionTL.sqf index 94e28dea33..27ea683b5a 100644 --- a/addons/tacticalladder/functions/fnc_positionTL.sqf +++ b/addons/tacticalladder/functions/fnc_positionTL.sqf @@ -50,9 +50,3 @@ _unit setVariable [QGVAR(Deploy), [ {!isNull GVAR(ladder)}, {[_this select 0, GVAR(ladder)] call FUNC(confirmTLdeploy)} ] call EFUNC(common,addActionEventHandler)]; - -_unit setVariable [QGVAR(Cancel), [ - _unit, "zoomtemp", - {!isNull GVAR(ladder)}, - {[_this select 0, GVAR(ladder)] call FUNC(cancelTLdeploy)} -] call EFUNC(common,addActionEventHandler)]; diff --git a/addons/trenches/XEH_missionDisplayLoad.sqf b/addons/trenches/XEH_missionDisplayLoad.sqf index 289d2f067a..2c4951ec7a 100644 --- a/addons/trenches/XEH_missionDisplayLoad.sqf +++ b/addons/trenches/XEH_missionDisplayLoad.sqf @@ -3,3 +3,4 @@ params ["_display"]; _display displayAddEventHandler ["MouseZChanged", {(_this select 1) call FUNC(handleScrollWheel)}]; +_display displayAddEventHandler ["MouseButtonDown", {[ACE_player, _this select 1] call FUNC(placeCancel)}]; diff --git a/addons/trenches/functions/fnc_placeCancel.sqf b/addons/trenches/functions/fnc_placeCancel.sqf index a48d6e3f5b..90c9d6ecc7 100644 --- a/addons/trenches/functions/fnc_placeCancel.sqf +++ b/addons/trenches/functions/fnc_placeCancel.sqf @@ -3,7 +3,8 @@ * Cancels trench dig * * Arguments: - * 0: unit + * 0: Unit + * 1: Key * * Return Value: * None @@ -15,7 +16,9 @@ */ #include "script_component.hpp" -params ["_unit"]; +params ["_unit", "_key"]; + +if (_key != 1) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Trenches", false] call EFUNC(common,statusEffect_set); @@ -31,6 +34,5 @@ GVAR(digPFH) = -1; call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Dig), -1]] call EFUNC(common,removeActionEventHandler); -[_unit, "zoomtemp", _unit getVariable [QGVAR(Cancel), -1]] call EFUNC(common,removeActionEventHandler); _unit setVariable [QGVAR(isPlacing), false, true]; diff --git a/addons/trenches/functions/fnc_placeConfirm.sqf b/addons/trenches/functions/fnc_placeConfirm.sqf index 797499a63f..47f80014f8 100644 --- a/addons/trenches/functions/fnc_placeConfirm.sqf +++ b/addons/trenches/functions/fnc_placeConfirm.sqf @@ -28,7 +28,6 @@ GVAR(digPFH) = -1; call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Dig), -1]] call EFUNC(common,removeActionEventHandler); -[_unit, "zoomtemp", _unit getVariable [QGVAR(Cancel), -1]] call EFUNC(common,removeActionEventHandler); _unit setVariable [QGVAR(isPlacing), false, true]; diff --git a/addons/trenches/functions/fnc_placeTrench.sqf b/addons/trenches/functions/fnc_placeTrench.sqf index 21c4d92bb9..48a768427f 100644 --- a/addons/trenches/functions/fnc_placeTrench.sqf +++ b/addons/trenches/functions/fnc_placeTrench.sqf @@ -95,10 +95,4 @@ _unit setVariable [QGVAR(Dig), [ {[_this select 0] call FUNC(placeConfirm)} ] call EFUNC(common,addActionEventHandler)]; -_unit setVariable [QGVAR(Cancel), [ - _unit, "zoomtemp", - {GVAR(digPFH) != -1}, - {[_this select 0] call FUNC(placeCancel)} -] call EFUNC(common,addActionEventHandler)]; - _unit setVariable [QGVAR(isPlacing), true, true]; From 56c5343bd7199d3c8cc9be6ac37948e50d2a1cea Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Mar 2016 12:54:13 -0600 Subject: [PATCH 078/337] Set sandbag side to civ to show in 3den ref #3102 #2633 --- addons/sandbag/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index 99f0fa6125..64d62ad424 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -52,7 +52,7 @@ class CfgVehicles { author = ECSTRING(common,ACETeam); scope = 2; - side = -1; + side = 3; model = PATHTOF(data\ace_sandbag_build.p3d); displayName = CSTRING(sandbag_displayName); vehicleClass = "ACE_Logistics_Items"; From 53a36f8783022425870dff19bb825e2b3e253590 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Mar 2016 13:00:47 -0600 Subject: [PATCH 079/337] Add REQUIRED_CBA_VERSION macro to script_mod.hpp --- addons/main/config.cpp | 2 +- addons/main/script_mod.hpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index ccd72e5667..5f34c6137d 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -594,7 +594,7 @@ class CfgSettings { class Versioning { class ACE { class dependencies { - CBA[] = {"cba_main", {2,3,1}, "true"}; + CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "true"}; }; }; }; diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 0c6ec9acb4..dd2cef0204 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -13,3 +13,4 @@ // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.56 +#define REQUIRED_CBA_VERSION {2,3,1} From e3deebff7e8a93a223d29f301304532a9335fe66 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Mar 2016 13:23:53 -0600 Subject: [PATCH 080/337] Fix empty callback for hr adjustment Fix #3526 Same issue as #3384 --- .../medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf index 2c3cf4cc41..85f8485f6b 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf @@ -64,6 +64,7 @@ if (isNil _hrCallback) then { } else { _hrCallback = missionNamespace getVariable _hrCallback; }; +if (!(_hrCallback isEqualType {})) then {_hrCallback = {TRACE_1("callback was NOT code",_hrCallback)};}; // Adjust the heart rate based upon config entry _heartRate = _target getVariable [QGVAR(heartRate), 70]; From 02616ebbb2ffc88626d499df68371c59ecd85166 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Thu, 3 Mar 2016 19:43:26 -0300 Subject: [PATCH 081/337] Throw a globalEvent when a tag is created. Close #3521. --- addons/tagging/functions/fnc_createTag.sqf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index fdb2cd08b0..a1a7a89002 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -7,6 +7,7 @@ * 1: Vector dir and up * 2: Colour of the tag (valid colours are black, red, green and blue) * 3: Object it should be tied too + * 4: Unit that created the tag * * Return Value: * None @@ -19,8 +20,8 @@ #include "script_component.hpp" -params ["_tagPosASL", "_vectorDirAndUp", "_color", "_object"]; -TRACE_4("createTag:", _tagPosASL, _vectorDirAndUp, _color, _object); +params ["_tagPosASL", "_vectorDirAndUp", "_color", "_object", "_unit"]; +TRACE_5("createTag:", _tagPosASL, _vectorDirAndUp, _color, _object, _unit); if !((toLower _color) in ["black", "red", "green", "blue"]) exitWith { ACE_LOGERROR_1("%1 is not a valid tag colour.", _color); @@ -31,6 +32,9 @@ _tag setObjectTextureGlobal [0, '\z\ace\addons\tagging\UI\tags\' + _color + '\' _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; +// Throw a global event for mision makers +["tagCreated", [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); + if (isNull _object) exitWith {}; // If the tag is applied to an object, handle its destruction From 5450954fc2f3875beb3c53582677057f50d4f978 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Fri, 4 Mar 2016 09:16:42 -0300 Subject: [PATCH 082/337] Rename the event as "ace_tagging_tagCreated" --- addons/tagging/functions/fnc_createTag.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index a1a7a89002..812decbbb9 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -24,7 +24,7 @@ params ["_tagPosASL", "_vectorDirAndUp", "_color", "_object", "_unit"]; TRACE_5("createTag:", _tagPosASL, _vectorDirAndUp, _color, _object, _unit); if !((toLower _color) in ["black", "red", "green", "blue"]) exitWith { - ACE_LOGERROR_1("%1 is not a valid tag colour.", _color); + ACE_LOGERROR_1("%1 is not a valid tag color.", _color); }; private _tag = "UserTexture1m_F" createVehicle [0,0,0]; @@ -33,7 +33,7 @@ _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers -["tagCreated", [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); +[QGVAR(tagCreated), [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); if (isNull _object) exitWith {}; From 0b3abd55d32cc57b885da12e624072968d731885 Mon Sep 17 00:00:00 2001 From: GitHawk Date: Fri, 4 Mar 2016 13:59:14 +0100 Subject: [PATCH 083/337] Disallow refueling with running engine --- addons/refuel/functions/fnc_canTurnOn.sqf | 3 ++- addons/refuel/functions/fnc_refuel.sqf | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/refuel/functions/fnc_canTurnOn.sqf b/addons/refuel/functions/fnc_canTurnOn.sqf index 98173e0fa4..e9de5c205c 100644 --- a/addons/refuel/functions/fnc_canTurnOn.sqf +++ b/addons/refuel/functions/fnc_canTurnOn.sqf @@ -27,4 +27,5 @@ if (isNull _unit || !(_nozzle getVariable [QGVAR(isRefueling), false]) && {[_nozzle getVariable QGVAR(source)] call FUNC(getFuel) != 0} && {!isNull (_nozzle getVariable [QGVAR(sink), objNull])} && - {(fuel (_nozzle getVariable QGVAR(sink))) < 1} + {(fuel (_nozzle getVariable QGVAR(sink))) < 1} && + {!(isEngineOn (_nozzle getVariable QGVAR(sink)))} diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index 117cf5ea1e..a1187c3954 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -52,6 +52,9 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> private _finished = false; private _fueling = _nozzle getVariable [QGVAR(isRefueling), false]; if (_fueling) then { + if (isEngineOn _sink) exitWith { + _nozzle setVariable [QGVAR(isRefueling), false, true]; + }; private _fuelInSource = [_source] call FUNC(getFuel); if (_fuelInSource == 0) exitWith { [LSTRING(Hint_SourceEmpty), 2, _unit] call EFUNC(common,displayTextStructured); From 4826a89ef5397a92c628eedd8f7a86ad478503ba Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 4 Mar 2016 11:45:38 -0600 Subject: [PATCH 084/337] Fix captivity system on dedicated Fix #3532 --- addons/captives/XEH_postInit.sqf | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index 144d3efb9a..5aada0950f 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -1,5 +1,11 @@ #include "script_component.hpp" +["SettingsInitialized", { + // Hold on a little bit longer to ensure anims will work + [{ + GVAR(captivityEnabled) = true; + }, [], 0.05] call EFUNC(common,waitAndExecute); +}] call EFUNC(common,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 @@ -33,10 +39,3 @@ if (!hasInterface) exitWith {}; ["isNotEscorting", {!(GETVAR(_this select 0,GVAR(isEscorting),false))}] call EFUNC(common,addCanInteractWithCondition); ["isNotHandcuffed", {!(GETVAR(_this select 0,GVAR(isHandcuffed),false))}] call EFUNC(common,addCanInteractWithCondition); ["isNotSurrendering", {!(GETVAR(_this select 0,GVAR(isSurrendering),false))}] call EFUNC(common,addCanInteractWithCondition); - -["SettingsInitialized", { - // Hold on a little bit longer to ensure anims will work - [{ - GVAR(captivityEnabled) = true; - }, [], 0.05] call EFUNC(common,waitAndExecute); -}] call EFUNC(common,addEventHandler); From b37b1a39b2acbbc1c7eb1951881d4999af3ed50d Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 14:29:04 +0100 Subject: [PATCH 085/337] Allow string input for isBackpack --- addons/backpacks/functions/fnc_isBackpack.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/backpacks/functions/fnc_isBackpack.sqf b/addons/backpacks/functions/fnc_isBackpack.sqf index d6b0fb1071..aa12b85ad9 100644 --- a/addons/backpacks/functions/fnc_isBackpack.sqf +++ b/addons/backpacks/functions/fnc_isBackpack.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -params [["_backpack", objNull, [objNull]]]; +params [["_backpack", objNull, [objNull, ""]]]; if (_backpack isEqualType objNull) then { _backpack = typeOf _backpack; From 62f598b2a6bca3049438c52154e3b9c612aac952 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 13:11:20 -0300 Subject: [PATCH 086/337] 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 54bc392273..dcd9ddc092 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 dd58d58207..a3f9998497 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 9f286832c6..eb3f514ac1 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 087/337] 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 dcd9ddc092..ccb7cba58a 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 a3f9998497..b90271abd9 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 eb3f514ac1..2ff248016d 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 088/337] 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 ccb7cba58a..cdd1fa78dd 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 401d457a46d916c63f9d4a22de72b9765e1bfb6e Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 17:41:47 +0100 Subject: [PATCH 089/337] Replace execRemoteFnc with global/targetEvent in refuel --- addons/refuel/XEH_postInit.sqf | 17 +++++++++++++++++ .../functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_refuel.sqf | 2 +- addons/refuel/functions/fnc_reset.sqf | 4 ++-- addons/refuel/functions/fnc_returnNozzle.sqf | 2 +- addons/refuel/functions/fnc_takeNozzle.sqf | 2 +- 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 16c4232457..151f08d80b 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -5,3 +5,20 @@ if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; }; + +// @todo move to common? +[QGVAR(setVectorDirAndUp), { + params ["_vehicle", "_vectorDirAndUp"]; + + if (local _vehicle) then { + (_this select 0) setVectorDirAndUp (_this select 1) + }; +}] call EFUNC(common,addEventHandler); + +[QGVAR(setVehicleHitPointDamage), { + (_this select 0) setHitPointDamage (_this select 1); +}] call EFUNC(common,addEventHandler); + +[QGVAR(resetLocal), { + _this call FUNC(resetLocal); +}] call EFUNC(common,addEventHandler); diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index bf9b6b8092..ec99f51fa4 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)]; }; }; }; - [[_nozzle, _dirAndUp], "{(_this select 0) setVectorDirAndUp (_this select 1)}", 2] call EFUNC(common,execRemoteFnc); + [QGVAR(setVectorDirAndUp), [_nozzle, _dirAndUp]] call EFUNC(common,globalEvent); _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 117cf5ea1e..d4c5e111f6 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -77,7 +77,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> _unit setVariable [QGVAR(tempFuel), _fuelInSink]; if !(local _sink) then { - [[_sink, _fuelInSink], "{(_this select 0) setFuel (_this select 1)}", _sink] call EFUNC(common,execRemoteFnc); + ["setFuel", _sink [_sink, _fuelInSink]] call EFUNC(common,targetEvent); } else { _sink setFuel _fuelInSink; }; diff --git a/addons/refuel/functions/fnc_reset.sqf b/addons/refuel/functions/fnc_reset.sqf index 8c9b2aaf6b..f0955b609a 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -20,7 +20,7 @@ params [["_target", objNull, [objNull]]]; if (local _target) then { _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; } else { - [[_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]], "{(_this select 0) setHitPointDamage (_this select 1)}", _target] call EFUNC(common,execRemoteFnc); + [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); }; _target setVariable [QGVAR(engineHit), nil, true]; _target setVariable [QGVAR(isConnected), false, true]; @@ -41,7 +41,7 @@ if !(isNil "_nozzle") then { if (local _x) then { [_x, _nozzle] call FUNC(resetLocal); } else { - [[_x, _nozzle], "{_this call FUNC(resetLocal)}", _x] call EFUNC(common,execRemoteFnc); + [QGVAR(resetLocal), _x, [_x, _nozzle]] call EFUNC(common,targetEvent); }; } count allPlayers; deleteVehicle _nozzle; diff --git a/addons/refuel/functions/fnc_returnNozzle.sqf b/addons/refuel/functions/fnc_returnNozzle.sqf index 852a3d8c38..f3f00429da 100644 --- a/addons/refuel/functions/fnc_returnNozzle.sqf +++ b/addons/refuel/functions/fnc_returnNozzle.sqf @@ -49,7 +49,7 @@ if (isNull _nozzle || {_source != _target}) exitWith {false}; deleteVehicle _nozzle; if !(local _target) then { - [[_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]], "{(_this select 0) setHitPointDamage (_this select 1)}", _sink] call EFUNC(common,execRemoteFnc); + [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); } else { _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; }; diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index 3bccce15e2..02eefe27fe 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -28,7 +28,7 @@ private _endPosOffset = [0, 0, 0]; if (isNull _nozzle) then { // func is called on fuel truck _target setVariable [QGVAR(engineHit), _target getHitPointDamage "HitEngine", true]; if !(local _target) then { - [[_target, ["HitEngine", 1]], "{(_this select 0) setHitPointDamage (_this select 1)}", _sink] call EFUNC(common,execRemoteFnc); + [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", 1]] call EFUNC(common,targetEvent); } else { _target setHitPointDamage ["HitEngine", 1]; }; From 015a60e6c4c3e2aaa0ca21e702cb1a1797a1515d Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 17:44:03 +0100 Subject: [PATCH 090/337] Increase fuel update to 1s --- addons/refuel/functions/fnc_refuel.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index d4c5e111f6..69e76f9ae9 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -#define PFH_STEPSIZE 0.1 +#define PFH_STEPSIZE 1 params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]], ["_nozzle", objNull, [objNull]], ["_connectToPoint", [0,0,0], [[]], 3]]; From 589ca27b600f21b84380600af9d27252d3c89a29 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 18:02:21 +0100 Subject: [PATCH 091/337] Fix missing comma --- addons/refuel/functions/fnc_refuel.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index 69e76f9ae9..9db305526c 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -77,7 +77,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> _unit setVariable [QGVAR(tempFuel), _fuelInSink]; if !(local _sink) then { - ["setFuel", _sink [_sink, _fuelInSink]] call EFUNC(common,targetEvent); + ["setFuel", _sink, [_sink, _fuelInSink]] call EFUNC(common,targetEvent); } else { _sink setFuel _fuelInSink; }; From 881eaf951aeb9f64a2e4cbb9e5180e67e690655a Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 18:07:07 +0100 Subject: [PATCH 092/337] Move setVectorDirAndUp and setHitPointDamage events to common, Make refuel set nozzle position execute only on target where local --- addons/common/XEH_postInit.sqf | 3 +++ addons/refuel/XEH_postInit.sqf | 13 ------------- addons/refuel/functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_reset.sqf | 2 +- addons/refuel/functions/fnc_returnNozzle.sqf | 2 +- addons/refuel/functions/fnc_takeNozzle.sqf | 2 +- 6 files changed, 7 insertions(+), 17 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 58e674dd8d..f188025d7b 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -158,6 +158,9 @@ if (isServer) then { ["enableSimulationGlobal", {(_this select 0) enableSimulationGlobal (_this select 1)}] call FUNC(addEventHandler); }; +["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler); +["setHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); + ////////////////////////////////////////////////// // Set up remote execution diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 151f08d80b..5078d808a2 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -6,19 +6,6 @@ if (isServer) then { addMissionEventHandler ["HandleDisconnect", {_this call FUNC(handleDisconnect)}]; }; -// @todo move to common? -[QGVAR(setVectorDirAndUp), { - params ["_vehicle", "_vectorDirAndUp"]; - - if (local _vehicle) then { - (_this select 0) setVectorDirAndUp (_this select 1) - }; -}] call EFUNC(common,addEventHandler); - -[QGVAR(setVehicleHitPointDamage), { - (_this select 0) setHitPointDamage (_this select 1); -}] call EFUNC(common,addEventHandler); - [QGVAR(resetLocal), { _this call FUNC(resetLocal); }] call EFUNC(common,addEventHandler); diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index ec99f51fa4..ae707a5718 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)]; }; }; }; - [QGVAR(setVectorDirAndUp), [_nozzle, _dirAndUp]] call EFUNC(common,globalEvent); + ["setVectorDirAndUp", _nozzle, [_nozzle, _dirAndUp]] call EFUNC(common,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_reset.sqf b/addons/refuel/functions/fnc_reset.sqf index f0955b609a..da983e6492 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -20,7 +20,7 @@ params [["_target", objNull, [objNull]]]; if (local _target) then { _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; } else { - [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); + ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); }; _target setVariable [QGVAR(engineHit), nil, true]; _target setVariable [QGVAR(isConnected), false, true]; diff --git a/addons/refuel/functions/fnc_returnNozzle.sqf b/addons/refuel/functions/fnc_returnNozzle.sqf index f3f00429da..179785f863 100644 --- a/addons/refuel/functions/fnc_returnNozzle.sqf +++ b/addons/refuel/functions/fnc_returnNozzle.sqf @@ -49,7 +49,7 @@ if (isNull _nozzle || {_source != _target}) exitWith {false}; deleteVehicle _nozzle; if !(local _target) then { - [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); + ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); } else { _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; }; diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index 02eefe27fe..08f9e152c0 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -28,7 +28,7 @@ private _endPosOffset = [0, 0, 0]; if (isNull _nozzle) then { // func is called on fuel truck _target setVariable [QGVAR(engineHit), _target getHitPointDamage "HitEngine", true]; if !(local _target) then { - [QGVAR(setVehicleHitPointDamage), _target, ["HitEngine", 1]] call EFUNC(common,targetEvent); + ["setHitPointDamage", _target, ["HitEngine", 1]] call EFUNC(common,targetEvent); } else { _target setHitPointDamage ["HitEngine", 1]; }; From 9463b052184261ad3769d92652c4b36785ea1252 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Mar 2016 18:16:09 +0100 Subject: [PATCH 093/337] targetEvent -> objectEvent --- addons/refuel/functions/fnc_checkFuel.sqf | 4 ++-- addons/refuel/functions/fnc_connectNozzleAction.sqf | 2 +- addons/refuel/functions/fnc_refuel.sqf | 6 +----- addons/refuel/functions/fnc_reset.sqf | 13 +++---------- addons/refuel/functions/fnc_returnNozzle.sqf | 6 +----- addons/refuel/functions/fnc_takeNozzle.sqf | 6 +----- 6 files changed, 9 insertions(+), 28 deletions(-) diff --git a/addons/refuel/functions/fnc_checkFuel.sqf b/addons/refuel/functions/fnc_checkFuel.sqf index 6ba7a4928e..140021419d 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,targetEvent); + ["displayTextStructured", _unit, [[LSTRING(Hint_RemainingFuel), _fuel], 2, _unit]] call EFUNC(common,objectEvent); } else { - ["displayTextStructured", [_unit], [LSTRING(Hint_Empty), 2, _unit]] call EFUNC(common,targetEvent); + ["displayTextStructured", _unit, [LSTRING(Hint_Empty), 2, _unit]] call EFUNC(common,objectEvent); }; true }, diff --git a/addons/refuel/functions/fnc_connectNozzleAction.sqf b/addons/refuel/functions/fnc_connectNozzleAction.sqf index ae707a5718..1df5f1e208 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,targetEvent); + ["setVectorDirAndUp", _nozzle, [_nozzle, _dirAndUp]] call EFUNC(common,objectEvent); _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 9db305526c..5ee3bf3794 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -76,11 +76,7 @@ private _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> }; _unit setVariable [QGVAR(tempFuel), _fuelInSink]; - if !(local _sink) then { - ["setFuel", _sink, [_sink, _fuelInSink]] call EFUNC(common,targetEvent); - } else { - _sink setFuel _fuelInSink; - }; + ["setFuel", _sink, [_sink, _fuelInSink]] call EFUNC(common,objectEvent); [_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 da983e6492..ff04ed13e3 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -17,11 +17,8 @@ params [["_target", objNull, [objNull]]]; -if (local _target) then { - _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; -} else { - ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); -}; +["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,objectEvent); + _target setVariable [QGVAR(engineHit), nil, true]; _target setVariable [QGVAR(isConnected), false, true]; @@ -38,11 +35,7 @@ if !(isNil "_nozzle") then { }; { - if (local _x) then { - [_x, _nozzle] call FUNC(resetLocal); - } else { - [QGVAR(resetLocal), _x, [_x, _nozzle]] call EFUNC(common,targetEvent); - }; + [QGVAR(resetLocal), _x, [_x, _nozzle]] call EFUNC(common,objectEvent); } count allPlayers; deleteVehicle _nozzle; }; diff --git a/addons/refuel/functions/fnc_returnNozzle.sqf b/addons/refuel/functions/fnc_returnNozzle.sqf index 179785f863..af3e8c6d4e 100644 --- a/addons/refuel/functions/fnc_returnNozzle.sqf +++ b/addons/refuel/functions/fnc_returnNozzle.sqf @@ -48,11 +48,7 @@ if (isNull _nozzle || {_source != _target}) exitWith {false}; }; deleteVehicle _nozzle; - if !(local _target) then { - ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,targetEvent); - } else { - _target setHitPointDamage ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]; - }; + ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,objectEvent); _target setVariable [QGVAR(engineHit), nil, true]; }, "", diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index 08f9e152c0..d862aa16b5 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -27,11 +27,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]; - if !(local _target) then { - ["setHitPointDamage", _target, ["HitEngine", 1]] call EFUNC(common,targetEvent); - } else { - _target setHitPointDamage ["HitEngine", 1]; - }; + ["setHitPointDamage", _target, ["HitEngine", 1]] call EFUNC(common,objectEvent); _target setVariable [QGVAR(isConnected), true, true]; _endPosOffset = getArray (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(hooks)); From b8a4349c10142a6c04bab723758817b4640093db Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 5 Mar 2016 20:25:35 +0100 Subject: [PATCH 094/337] Added deployment API and waypoint --- addons/fastroping/CfgWaypoints.hpp | 11 ++ addons/fastroping/UI/Icon_Waypoint.paa | Bin 0 -> 5625 bytes addons/fastroping/XEH_preInit.sqf | 1 + addons/fastroping/config.cpp | 1 + addons/fastroping/functions/fnc_deployAI.sqf | 95 ++++++++++++++++++ .../functions/fnc_deployAIWaypoint.sqf | 42 ++++++++ addons/fastroping/stringtable.xml | 4 + 7 files changed, 154 insertions(+) create mode 100644 addons/fastroping/CfgWaypoints.hpp create mode 100644 addons/fastroping/UI/Icon_Waypoint.paa create mode 100644 addons/fastroping/functions/fnc_deployAI.sqf create mode 100644 addons/fastroping/functions/fnc_deployAIWaypoint.sqf diff --git a/addons/fastroping/CfgWaypoints.hpp b/addons/fastroping/CfgWaypoints.hpp new file mode 100644 index 0000000000..4c4da2a7cb --- /dev/null +++ b/addons/fastroping/CfgWaypoints.hpp @@ -0,0 +1,11 @@ +class CfgWaypoints { + class ACE { + displayName = "ACE"; + class Fastrope { + displayName = CSTRING(Waypoint_Fastrope); + displayNameDebug = "Fastrope"; + file = QUOTE(PATHTOF(functions\fnc_deployAIWaypoint.sqf)); + icon = QUOTE(PATHTOF(UI\Icon_Waypoint.paa)); + }; + }; +}; diff --git a/addons/fastroping/UI/Icon_Waypoint.paa b/addons/fastroping/UI/Icon_Waypoint.paa new file mode 100644 index 0000000000000000000000000000000000000000..4f7d9086aea0e9e86ad854091a1257e9b6c50653 GIT binary patch literal 5625 zcmeHL4Nz3q6+Um-2dIM}vckq}L4_hl3Q6i#$7Fbfh`dY*i|(UN`UguBMfropiKwtdvbsIz-o5;+^(Qm6 z%}je|7x>;e_x#>-&V9(HmfC7LL{=fdWBQS&9Pquo!0Gg)3Op{*Z(nIbO_^yQv z-z)Gv4-o$45`oiJPo+Qh)KvPG-3k|7FO$&AxKK83>lNKvqP1GCtacipFz zLx1FuVUrgIHmP-ciK-Ao6n^C}7H>_n+v(ArTqaO!V$~X-K20{oV6gNCfx$GFa7YZ< zNA+Uq(~IW*;1KghlL3}q(?bf>RgW?{8XA4+;~ozlDdDfzj1Oz7wg?>MC4F^xo_Rcw zZbbT7fxp(=+_2I6Hmf&sKH8-x_GLZCxHSc!f$YsPaID#Z+Zz%q?Bo6z1h%1wn=bP} zdj7C={XMi_l4N-lYK$4V^W(X7He2LzwdO217H|x5{t4&sdnq0a0E$%SP#2M4nP>JW#^yM_ICYAi>k|jO8SkZ@absz3$@6=_PT*FUyhyZL@4(OlJAF z+41~6-9B?j3B~*nU6!>UIz7j|-2Z=NzrR00wR-+?Jzyd2H<@HG{*L({%aAC*|t9Vn4KPGrSDJxy(L{uetZ7t^G;$EIu~d_3`z$PjRPj z_(RURXK25K%dE6mL_b3J?e*_ii!W>{`MaP$a)sH?;zQ{R|C3&nzve}L9$|8FNhYnu+AX*gZ*0PSb~Lk89-&xaiw zP`Ece|C{&`bZ?6-nDh$$+=@GgU%QqxhQUu6*Js&gSco5i&AeWW%zsTYt!-M?-Q%fe z^?5t~E3Ut7h)s8}^T+ewY;oZcAbFI3<*iM{qweA}+<#eq>R4HhYd@!h&1U=c8*B1K z{Zoewy-+lB$XbFqrzlA>|9#{5yf)%=^M1lPgWi}rPoHd>G*81!rq!ccj~@4Qw{vbq z!Tjef$0I~@=N+Fq+;v#-C& z*pL<-Ewl8WFDxWF)|X^Vp!s0wBaH3JmbG&tUR1C2oR-L!KVH{3(N6#k4&d{Mn<5hT;naM_eKZxH zq0mg?kA@`|;{{eUEjH=q^Tj;qE*{Qt@cvExtF0{4)tbo8FYDj_4)|eT{jl?o>DAnj zmX`cZaTmqodhh)-4LC0?bXF74@He@)oz3PQcAq48#E5IK@IR-kRvye+maT=tZD9 zSefD()v7_g&916|XJ33Iv|f zt%tZ~53p+l-pXOdlBx2zzKLsIAGXo$>h8NqAGTe&51@H_ru$)*Mq@+-Y^)rTqKDXP zvVv_q@H_g31NsJb4aY7mhxX!(ZsB7G$qIDSHE{aNv|mDoMZ*QNpWpctGm{5lVSSL% z5&K9v8*A7WZAYMM%C$1^gVulr$p$9hhzrg}{`lS=?j8Np=!ucsDc87KZ$dS{rgIIc zN1Cr}BX-nJ{DIDWBT<1oRlI5 zUYKRxFEjb5J|gC1nWe8KlgUT*_P}gCf3u#)FosKW0S2e^KBkZCi-3eW@fspw8{GlX zCrdP_UBH?zNX zJfGuZThKA2Y{lSD;WItB5l%Z~E!d^6XZfUS2=UU2!7uF(qbx~~$&Ptw2AN5-Vh`cB zzdu*t*~{@5*OyuaX8cZiyXE`=l~~444E~&9oW9Tt_giJVLRf~dh^+S;8y;P-@g=q zHf%))D)R8HgLM}O?A9MtXDw!zE=pC@Usio1;a7R=r4nKG-6t+YWHcAP$Bl#)M(n5< S&sT!H-eZAdXN9%MitC?n9qNey literal 0 HcmV?d00001 diff --git a/addons/fastroping/XEH_preInit.sqf b/addons/fastroping/XEH_preInit.sqf index 83bb997eac..33f7b7b44e 100644 --- a/addons/fastroping/XEH_preInit.sqf +++ b/addons/fastroping/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(canFastRope); PREP(canPrepareFRIES); PREP(checkVehicleThread); PREP(cutRopes); +PREP(deployAI); PREP(deployRopes); PREP(equipFRIES); PREP(fastRope); diff --git a/addons/fastroping/config.cpp b/addons/fastroping/config.cpp index 25ec1876fa..a74abeb3b8 100644 --- a/addons/fastroping/config.cpp +++ b/addons/fastroping/config.cpp @@ -15,3 +15,4 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgMoves.hpp" #include "CfgVehicles.hpp" +#include "CfgWaypoints.hpp" diff --git a/addons/fastroping/functions/fnc_deployAI.sqf b/addons/fastroping/functions/fnc_deployAI.sqf new file mode 100644 index 0000000000..6d77259fa6 --- /dev/null +++ b/addons/fastroping/functions/fnc_deployAI.sqf @@ -0,0 +1,95 @@ +/* + * Author: BaerMitUmlaut + * Auomatically deploy a helicopter filled with AI units. + * + * Arguments: + * 0: The helicopter + * 1: Deploy special roles (gunners, copilot) (default: false) + * 2: Create deployment group (default: true) + * + * Return Value: + * None + * + * Example: + * [_vehicle] call ace_fastroping_fnc_deployAI + * + * Public: Yes + */ + +#include "script_component.hpp" +params [["_vehicle", objNull, [objNull]], ["_deploySpecial", false, [true]], ["_createDeploymentGroup", true, [true]]]; +private ["_config", "_configEnabled", "_deployTime", "_unitsToDeploy", "_deployGroup"]; + +if (isNull _vehicle || {!(_vehicle isKindOf "Helicopter")}) exitWith { + if (hasInterface) then { + ["deployAI was called with an invalid or non-existant vehicle.", QFUNC(deployAI)] spawn BIS_fnc_guiMessage; + }; + ACE_LOGERROR('FUNC(deployAI): deployAI was called with an invalid or non-existant vehicle.'); +}; + +_config = configFile >> "CfgVehicles" >> typeOf _vehicle; +_configEnabled = getNumber (_config >> QGVAR(enabled)); +if (_configEnabled == 0) exitWith { + if (hasInterface) then { + [format ["You cannot fast rope from a ""%1"" helicopter.", getText (_config >> "DisplayName")], QFUNC(deployAI)] spawn BIS_fnc_guiMessage; + }; + ACE_LOGERROR_1('FUNC(deployAI): You cannot fast rope from a "%1" helicopter.',getText (_config >> "DisplayName")); +}; + +if (_configEnabled == 2 && {isNull (_vehicle getVariable [QGVAR(FRIES), objNull])}) exitWith { + if (hasInterface) then { + [format ["""%1"" requires a FRIES for fastroping, but has not been equipped with one.", getText (_config >> "DisplayName")], QFUNC(deployAI)] spawn BIS_fnc_guiMessage; + }; + ACE_LOGERROR_1('FUNC(deployAI): "%1" requires a FRIES for fastroping but has not been equipped with one.',getText (_config >> "DisplayName")); +}; + +_unitsToDeploy = crew _vehicle; +if (_deploySpecial) then { + _unitsToDeploy deleteAt (_unitsToDeploy find driver _vehicle); +} else { + _unitsToDeploy = _unitsToDeploy select {(assignedVehicleRole _x) select 0 == "cargo"}; +}; + +if (_unitsToDeploy isEqualTo []) exitWith { + ACE_LOGWARNING_1('FUNC(deployAI): Found no units to deploy in "%1".',getText (_config >> "DisplayName")); +}; + +if (_createDeploymentGroup) then { + _deployGroup = createGroup side (_unitsToDeploy select 0); + _unitsToDeploy joinSilent _deployGroup; +}; + +_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); +driver _vehicle disableAI "MOVE"; + +DFUNC(deployAIRecursive) = { + params ["_vehicle", "_unitsToDeploy"]; + + private _unit = _unitsToDeploy deleteAt 0; + unassignVehicle _unit; + [_unit, _vehicle] call FUNC(fastRope); + + if !(_unitsToDeploy isEqualTo []) then { + [{ + [{ + 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); + } else { + [{ + private _deployedRopes = _this getVariable [QGVAR(deployedRopes), []]; + ({_x select 5} count (_deployedRopes)) == 0 + }, { + [_this] call FUNC(cutRopes); + driver _this enableAI "MOVE"; + }, _vehicle] call EFUNC(common,waitUntilAndExecute); + }; +}; + +[FUNC(deployAIRecursive), [_vehicle, _unitsToDeploy], _deployTime + 4] call EFUNC(common,waitAndExecute); diff --git a/addons/fastroping/functions/fnc_deployAIWaypoint.sqf b/addons/fastroping/functions/fnc_deployAIWaypoint.sqf new file mode 100644 index 0000000000..9d8f4a03e2 --- /dev/null +++ b/addons/fastroping/functions/fnc_deployAIWaypoint.sqf @@ -0,0 +1,42 @@ +/* + * Author: BaerMitUmlaut + * Waypoint function for the fast rope waypoint. + * + * Arguments: + * 0: Group + * 1: Waypoint position + * + * Return Value: + * true + * + * Example: + * [_group, [6560, 12390, 0]] call ace_fastroping_fnc_deployAIWayoint + * + * Public: No + */ + +#include "script_component.hpp" +params [["_group", grpNull, [grpNull]], ["_position", [0, 0, 0], [[]], 3]]; +private ["_vehicle", "_commander", "_speedMode"]; + +_vehicle = vehicle leader _group; +_commander = effectiveCommander _vehicle; +_speedMode = speedMode _group; + +// - Approach ----------------------------------------------------------------- +if (_vehicle distance2D _position > 50) then { + _group setSpeedMode "LIMITED"; + _vehicle flyInHeight 20; + _commander doMove _position; + waitUntil {_vehicle distance2D _position < 50}; + waitUntil {vectorMagnitude (velocity _vehicle) < 3}; + //doStop _commander; +}; + +// - Deployment --------------------------------------------------------------- +[_vehicle] call FUNC(deployAI); +waitUntil {!((_vehicle getVariable [QGVAR(deployedRopes), []]) isEqualTo [])}; +waitUntil {(_vehicle getVariable [QGVAR(deployedRopes), []]) isEqualTo []}; +_group setSpeedMode _speedMode; + +true diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 5394cf9b63..f6c0f34826 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -57,5 +57,9 @@ 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 + + LET UNITS FAST ROPE + EINHEITEN ABSEILEN LASSEN + From 21d546ac1c8d50a6aba2d9abb281132a9296e8b0 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 5 Mar 2016 21:22:45 +0100 Subject: [PATCH 095/337] Added note concerning BIS_fnc_guiMessage --- addons/fastroping/functions/fnc_deployAI.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/fastroping/functions/fnc_deployAI.sqf b/addons/fastroping/functions/fnc_deployAI.sqf index 6d77259fa6..dd4bfe4e71 100644 --- a/addons/fastroping/functions/fnc_deployAI.sqf +++ b/addons/fastroping/functions/fnc_deployAI.sqf @@ -22,6 +22,7 @@ private ["_config", "_configEnabled", "_deployTime", "_unitsToDeploy", "_deployG if (isNull _vehicle || {!(_vehicle isKindOf "Helicopter")}) exitWith { if (hasInterface) then { + // Note: BIS_fnc_guiMessage causes a CTD with call, so spawn is used instead. ["deployAI was called with an invalid or non-existant vehicle.", QFUNC(deployAI)] spawn BIS_fnc_guiMessage; }; ACE_LOGERROR('FUNC(deployAI): deployAI was called with an invalid or non-existant vehicle.'); From 8039332743d766efe3541581b103e01d9c85c163 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 5 Mar 2016 23:19:53 +0100 Subject: [PATCH 096/337] Switched to preStart + XEH_PREP --- addons/fastroping/CfgEventHandlers.hpp | 6 ++++++ addons/fastroping/XEH_PREP.hpp | 16 ++++++++++++++++ addons/fastroping/XEH_preInit.sqf | 17 +---------------- addons/fastroping/XEH_preStart.sqf | 3 +++ 4 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 addons/fastroping/XEH_PREP.hpp create mode 100644 addons/fastroping/XEH_preStart.sqf diff --git a/addons/fastroping/CfgEventHandlers.hpp b/addons/fastroping/CfgEventHandlers.hpp index e75956f440..0d3301d6e0 100644 --- a/addons/fastroping/CfgEventHandlers.hpp +++ b/addons/fastroping/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/fastroping/XEH_PREP.hpp b/addons/fastroping/XEH_PREP.hpp new file mode 100644 index 0000000000..266005f1ee --- /dev/null +++ b/addons/fastroping/XEH_PREP.hpp @@ -0,0 +1,16 @@ +PREP(canCutRopes); +PREP(canDeployRopes); +PREP(canFastRope); +PREP(canPrepareFRIES); +PREP(checkVehicleThread); +PREP(cutRopes); +PREP(deployRopes); +PREP(equipFRIES); +PREP(fastRope); +PREP(fastRopeLocalPFH); +PREP(fastRopeServerPFH); +PREP(moduleEquipFRIES); +PREP(onCutCommon); +PREP(onPrepareCommon); +PREP(onRopeBreak); +PREP(prepareFRIES); diff --git a/addons/fastroping/XEH_preInit.sqf b/addons/fastroping/XEH_preInit.sqf index 83bb997eac..a7feade1c3 100644 --- a/addons/fastroping/XEH_preInit.sqf +++ b/addons/fastroping/XEH_preInit.sqf @@ -2,21 +2,6 @@ ADDON = false; -PREP(canCutRopes); -PREP(canDeployRopes); -PREP(canFastRope); -PREP(canPrepareFRIES); -PREP(checkVehicleThread); -PREP(cutRopes); -PREP(deployRopes); -PREP(equipFRIES); -PREP(fastRope); -PREP(fastRopeLocalPFH); -PREP(fastRopeServerPFH); -PREP(moduleEquipFRIES); -PREP(onCutCommon); -PREP(onPrepareCommon); -PREP(onRopeBreak); -PREP(prepareFRIES); +#include "XEH_PREP.hpp" ADDON = true; diff --git a/addons/fastroping/XEH_preStart.sqf b/addons/fastroping/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/fastroping/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" From b20e433f43375563c1c791e80af77e8938950e11 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 5 Mar 2016 23:20:44 +0100 Subject: [PATCH 097/337] Fixed bug with fastroping simultaneously --- addons/fastroping/functions/fnc_fastRope.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/fastroping/functions/fnc_fastRope.sqf b/addons/fastroping/functions/fnc_fastRope.sqf index 9d91697d22..bf2730efc7 100644 --- a/addons/fastroping/functions/fnc_fastRope.sqf +++ b/addons/fastroping/functions/fnc_fastRope.sqf @@ -24,7 +24,7 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; _usableRope = _deployedRopes select 0; _usableRopeIndex = 0; { - if !(_x select 6) exitWith { + if !(_x select 5) exitWith { _usableRope = _x; _usableRopeIndex = _forEachIndex; }; From 8e895e8cffbe15d827c575725f19506a9d739d28 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sat, 5 Mar 2016 23:21:10 +0100 Subject: [PATCH 098/337] Added gantry hiding animation --- addons/fastroping/CfgVehicles.hpp | 12 +++++++++++- addons/fastroping/data/model.cfg | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 3468a0ecb9..9aba9e2a85 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -110,10 +110,20 @@ class CfgVehicles { initPhase = 0; animPeriod = 0; }; + class hideGantryLeft { + source = "user"; + initPhase = 0; + animPeriod = 0; + }; + class hideGantryRight { + source = "user"; + initPhase = 0; + animPeriod = 0; + }; }; }; class ACE_friesGantryReverse: ACE_friesGantry { - class AnimationSources { + class AnimationSources: AnimationSources { class adjustWidth { source = "user"; initPhase = 0.213; diff --git a/addons/fastroping/data/model.cfg b/addons/fastroping/data/model.cfg index de8c55b45d..3291e7a509 100644 --- a/addons/fastroping/data/model.cfg +++ b/addons/fastroping/data/model.cfg @@ -90,6 +90,24 @@ class CfgModels { angle0 = "rad 0"; angle1 = "rad 360"; }; + class hideGantryLeft { + type = "hide"; + source = ""; + selection = "gantryLeft"; + animPeriod = 0; + minValue = 0; + maxValue = 1; + hideValue = 0.99999; + }; + class hideGantryRight { + type = "hide"; + source = ""; + selection = "gantryRight"; + animPeriod = 0; + minValue = 0; + maxValue = 1; + hideValue = 0.99999; + }; }; }; }; From e15d534fd106867baf76874bdf6f524f84d8c3b9 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 21:11:53 -0300 Subject: [PATCH 099/337] Rename event, removing prefix. Back to square one. --- addons/tagging/functions/fnc_createTag.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 812decbbb9..fb966b5b64 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -33,7 +33,7 @@ _tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers -[QGVAR(tagCreated), [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); +["tagCreated", [_tag, _color, _object, _unit]] call EFUNC(common,globalEvent); if (isNull _object) exitWith {}; From ae3a41e6d8fff04684b88f1930a57d7ffd8f31a9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 02:38:05 +0100 Subject: [PATCH 100/337] Move common event handlers closer to their counterparts --- addons/common/XEH_postInit.sqf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index f188025d7b..6ea32c3534 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -152,15 +152,14 @@ if (isServer) then { ["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); +["setHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] 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); }; -["setVectorDirAndUp", {(_this select 0) setVectorDirAndUp (_this select 1)}] call FUNC(addEventHandler); -["setHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); - ////////////////////////////////////////////////// // Set up remote execution From ae8cbb4834ac98d6874140d367c930eea5287386 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 5 Mar 2016 23:33:30 -0300 Subject: [PATCH 101/337] 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 61052553a4..528f77375c 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 cc1948e6bd..44fd931ca0 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 831c2c2348..96d518ac9f 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 f720665620..fd2ac5f56c 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 b90271abd9..08cb85083c 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 bbdab91705..a63ef5a36a 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 0000000000..5e3c31fc5e --- /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 62a3b13ef6..339b6627b1 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 6a58af5b33b86cde97480b20b49fa7520db5a0de Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Mar 2016 06:22:38 +0100 Subject: [PATCH 102/337] fix save game crash?, ref #3397 --- addons/interact_menu/XEH_preInit.sqf | 3 +++ .../functions/fnc_addActionToClass.sqf | 9 +++++---- .../interact_menu/functions/fnc_addMainAction.sqf | 8 ++++++-- addons/interact_menu/functions/fnc_compileMenu.sqf | 6 +++--- .../functions/fnc_compileMenuSelfAction.sqf | 6 +++--- .../functions/fnc_removeActionFromClass.sqf | 14 ++++++++------ .../functions/fnc_renderActionPoints.sqf | 9 +++++---- 7 files changed, 33 insertions(+), 22 deletions(-) diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index ac3ee9b0f5..791402cd01 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -4,6 +4,9 @@ ADDON = false; #include "XEH_PREP.hpp" +GVAR(ActNamespace) = [] call CBA_fnc_createNamespace; +GVAR(ActSelfNamespace) = [] call CBA_fnc_createNamespace; + // Event handlers for all interact menu controls DFUNC(handleMouseMovement) = { if (GVAR(cursorKeepCentered)) then { diff --git a/addons/interact_menu/functions/fnc_addActionToClass.sqf b/addons/interact_menu/functions/fnc_addActionToClass.sqf index 68efce4f2c..56ae64e5f9 100644 --- a/addons/interact_menu/functions/fnc_addActionToClass.sqf +++ b/addons/interact_menu/functions/fnc_addActionToClass.sqf @@ -30,10 +30,11 @@ if (_typeNum == 0) then { [_objectType] call FUNC(compileMenuSelfAction); }; -private _varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType]; -private _actionTrees = missionNamespace getVariable [_varName, []]; -if((count _actionTrees) == 0) then { - missionNamespace setVariable [_varName, _actionTrees]; +private _namespace = [GVAR(ActNamespace), GVAR(ActSelfNamespace)] select _typeNum; +private _actionTrees = _namespace getVariable _objectType; +if (isNil "_actionTrees") then { + _actionTrees = []; + _namespace setVariable [_objectType, _actionTrees]; }; if (_parentPath isEqualTo ["ACE_MainActions"]) then { diff --git a/addons/interact_menu/functions/fnc_addMainAction.sqf b/addons/interact_menu/functions/fnc_addMainAction.sqf index 161e12d6de..4370f4d2ee 100644 --- a/addons/interact_menu/functions/fnc_addMainAction.sqf +++ b/addons/interact_menu/functions/fnc_addMainAction.sqf @@ -18,8 +18,12 @@ params ["_objectType", "_typeNum"]; -private _varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType]; -private _actionTrees = missionNamespace getVariable [_varName, []]; +private _namespace = [GVAR(ActNamespace), GVAR(ActSelfNamespace)] select _typeNum; +private _actionTrees = _namespace getVariable _objectType; +if (isNil "_actionTrees") then { + _actionTrees = []; +}; + private _parentNode = [_actionTrees, ["ACE_MainActions"]] call FUNC(findActionNode); if (isNil {_parentNode}) then { diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 02941626d1..7f2ca38540 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -18,10 +18,10 @@ private _objectType = _target; if (_target isEqualType objNull) then { _objectType = typeOf _target; }; -private _actionsVarName = format [QGVAR(Act_%1), _objectType]; +private _namespace = GVAR(ActNamespace); // Exit if the action menu is already compiled for this class -if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {}; +if !(isNil {_namespace getVariable _objectType}) exitWith {}; private _recurseFnc = { params ["_actionsCfg", "_parentDistance"]; @@ -104,7 +104,7 @@ private _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions TRACE_1("Building ACE_Actions",_objectType); private _actions = [_actionsCfg, 0] call _recurseFnc; -missionNamespace setVariable [_actionsVarName, _actions]; +_namespace setVariable [_objectType, _actions]; /* [ diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index de1364ee84..eb9727a072 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -18,10 +18,10 @@ private _objectType = _target; if (_target isEqualType objNull) then { _objectType = typeOf _target; }; -private _actionsVarName = format [QGVAR(SelfAct_%1), _objectType]; +private _namespace = GVAR(ActSelfNamespace); // Exit if the action menu is already compiled for this class -if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {}; +if !(isNil {_namespace getVariable _objectType}) exitWith {}; private _recurseFnc = { @@ -125,4 +125,4 @@ private _actions = [ ] ]; -missionNamespace setVariable [_actionsVarName, _actions]; +_namespace setVariable [_objectType, _actions]; diff --git a/addons/interact_menu/functions/fnc_removeActionFromClass.sqf b/addons/interact_menu/functions/fnc_removeActionFromClass.sqf index c95f53f152..a01078ad3b 100644 --- a/addons/interact_menu/functions/fnc_removeActionFromClass.sqf +++ b/addons/interact_menu/functions/fnc_removeActionFromClass.sqf @@ -19,18 +19,20 @@ params ["_objectType", "_typeNum", "_fullPath"]; -private ["_res","_varName","_actionTrees", "_parentNode", "_found"]; -_res = _fullPath call FUNC(splitPath); +private _res = _fullPath call FUNC(splitPath); _res params ["_parentPath", "_actionName"]; -_varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType]; -_actionTrees = missionNamespace getVariable [_varName, []]; +private _namespace = [GVAR(ActNamespace), GVAR(ActSelfNamespace)] select _typeNum; +private _actionTrees = _namespace getVariable _objectType; +if (isNil "_actionTrees") then { + _actionTrees = []; +}; -_parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); +private _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); if (isNil {_parentNode}) exitWith {}; // Iterate through children of the father -_found = false; +private _found = false; { if (((_x select 0) select 0) == _actionName) exitWith { TRACE_2("Deleting Action", _forEachIndex, _x); diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf index 1d42f38c6c..c99688564a 100644 --- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf +++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf @@ -54,8 +54,9 @@ private _fnc_renderNearbyActions = { } count GVAR(objectActionList); // Iterate through base level class actions and render them if appropiate - private _actionsVarName = format [QGVAR(Act_%1), typeOf _target]; - private _classActions = missionNamespace getVariable [_actionsVarName, []]; + private _namespace = GVAR(ActNamespace); + private _classActions = _namespace getVariable typeOf _target; + { private _action = _x; // Try to render the menu @@ -95,8 +96,8 @@ private _fnc_renderSelfActions = { GVAR(objectActionList) = _target getVariable [QGVAR(selfActions), []]; // Iterate through base level class actions and render them if appropiate - private _actionsVarName = format [QGVAR(SelfAct_%1), typeOf _target]; - private _classActions = missionNamespace getVariable [_actionsVarName, []]; + private _namespace = GVAR(ActSelfNamespace); + private _classActions = _namespace getVariable typeOf _target; private _pos = if !(GVAR(useCursorMenu)) then { //Convert to ASL, add offset and then convert back to AGL (handles waves when over water) From f43b287093e6b224e8f5e58a5152740b64d2ec64 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Mar 2016 06:53:59 +0100 Subject: [PATCH 103/337] use namespace for cargo filters, fixes problem with save games --- addons/inventory/XEH_postInit.sqf | 42 ++++++++++++++++++ addons/inventory/XEH_preInit.sqf | 43 ------------------- .../functions/fnc_forceItemListUpdate.sqf | 7 +-- 3 files changed, 44 insertions(+), 48 deletions(-) diff --git a/addons/inventory/XEH_postInit.sqf b/addons/inventory/XEH_postInit.sqf index bf7adec77a..c6ddaf4700 100644 --- a/addons/inventory/XEH_postInit.sqf +++ b/addons/inventory/XEH_postInit.sqf @@ -2,6 +2,48 @@ if (!hasInterface) exitWith {}; +// cache config +// items in the inventory display can only be distinguished by their lb names and pictures +// this can cause collisions (mainly weapons with attachments), +// but if the item has the same name and picture it at least shouldn't change the filter anyway +// luckily we don't need private items, so dummy and parent classes are out of the picture + +GVAR(ItemKeyNamespace) = [] call CBA_fnc_createNamespace; + +private _fnc_addToCache = { + private _displayName = getText (_this >> "displayName"); + private _picture = getText (_this >> "picture"); + + // list box seems to delete the leading backslash + if (_picture select [0,1] == "\") then { + _picture = _picture select [1]; + }; + + GVAR(ItemKeyNamespace) setVariable [format ["%1:%2", _displayName, _picture], _this]; +}; + +// weapons and items +{ + if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache}; + false +} count ( + ("true" configClasses (configFile >> "CfgWeapons")) + + ("true" configClasses (configFile >> "CfgGlasses")) +); + +// magazines +{ + if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache}; + false +} count ("true" configClasses (configFile >> "CfgMagazines")); + +// backpacks +{ + if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache}; + false +} count ("true" configClasses (configFile >> "CfgVehicles")); + + GVAR(customFilters) = []; GVAR(selectedFilterIndex) = -1; diff --git a/addons/inventory/XEH_preInit.sqf b/addons/inventory/XEH_preInit.sqf index 535b9be656..a7feade1c3 100644 --- a/addons/inventory/XEH_preInit.sqf +++ b/addons/inventory/XEH_preInit.sqf @@ -4,47 +4,4 @@ ADDON = false; #include "XEH_PREP.hpp" -// cache config -// items in the inventory display can only be distinguished by their lb names and pictures -// this can cause collisions (mainly weapons with attachments), -// but if the item has the same name and picture it at least shouldn't change the filter anyway -// luckily we don't need private items, so dummy and parent classes are out of the picture - -if !(uiNamespace getVariable [QGVAR(configCached), false]) then { - private _fnc_addToCache = { - private _displayName = getText (_this >> "displayName"); - private _picture = getText (_this >> "picture"); - - // list box seems to delete the leading backslash - if (_picture select [0,1] == "\") then { - _picture = _picture select [1]; - }; - - uiNamespace setVariable [format [QGVAR(ItemKey:%1:%2), _displayName, _picture], _this]; - }; - - // weapons and items - { - if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache}; - false - } count ( - ("true" configClasses (configFile >> "CfgWeapons")) + - ("true" configClasses (configFile >> "CfgGlasses")) - ); - - // magazines - { - if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache}; - false - } count ("true" configClasses (configFile >> "CfgMagazines")); - - // backpacks - { - if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache}; - false - } count ("true" configClasses (configFile >> "CfgVehicles")); - - uiNamespace setVariable [QGVAR(configCached), true]; -}; - ADDON = true; diff --git a/addons/inventory/functions/fnc_forceItemListUpdate.sqf b/addons/inventory/functions/fnc_forceItemListUpdate.sqf index 89142b99ff..e5358212bb 100644 --- a/addons/inventory/functions/fnc_forceItemListUpdate.sqf +++ b/addons/inventory/functions/fnc_forceItemListUpdate.sqf @@ -23,12 +23,9 @@ if (_filterFunction isEqualType {}) then { private _i = 0; while {_i < lbSize _itemList} do { - private _config = uiNamespace getVariable [ - format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i], - configNull - ]; + private _config = GVAR(ItemKeyNamespace) getVariable format ["%1:%2", _itemList lbText _i, _itemList lbPicture _i]; - if (!isNull _config && {!(_config call _filterFunction)}) then { + if (!isNil "_config" && {!(_config call _filterFunction)}) then { _itemList lbDelete _i; // in case the filter function returns nil. Otherwise could lock up the game. From 8603f2062af671cea9e5dfaa468a104defdd22a8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Mar 2016 07:14:43 +0100 Subject: [PATCH 104/337] simplify --- addons/inventory/XEH_postInit.sqf | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/addons/inventory/XEH_postInit.sqf b/addons/inventory/XEH_postInit.sqf index c6ddaf4700..7135383734 100644 --- a/addons/inventory/XEH_postInit.sqf +++ b/addons/inventory/XEH_postInit.sqf @@ -22,27 +22,14 @@ private _fnc_addToCache = { GVAR(ItemKeyNamespace) setVariable [format ["%1:%2", _displayName, _picture], _this]; }; -// weapons and items -{ - if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache}; - false -} count ( - ("true" configClasses (configFile >> "CfgWeapons")) + - ("true" configClasses (configFile >> "CfgGlasses")) -); +private _allItems = []; -// magazines -{ - if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache}; - false -} count ("true" configClasses (configFile >> "CfgMagazines")); - -// backpacks -{ - if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache}; - false -} count ("true" configClasses (configFile >> "CfgVehicles")); +_allItems append ("getNumber (_x >> 'scope') > 0" configClasses (configFile >> "CfgWeapons")); +_allItems append ("getNumber (_x >> 'scope') > 0" configClasses (configFile >> "CfgGlasses")); +_allItems append ("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgMagazines")); +_allItems append ("getNumber (_x >> 'scope') > 0 && {getNumber (_x >> 'isBackpack') == 1}" configClasses (configFile >> "CfgVehicles")); +{_x call _fnc_addToCache; false} count _allItems; GVAR(customFilters) = []; GVAR(selectedFilterIndex) = -1; From 8892aeed9dc484e3bccd9eb54243b00c3c90380d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Mar 2016 07:55:34 +0100 Subject: [PATCH 105/337] missed one --- addons/interaction/functions/fnc_addPassengerActions.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index 47a845601b..ca87542172 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -20,8 +20,11 @@ params ["", "", "_parameters"]; _parameters params ["_unit"]; -private _varName = format [QEGVAR(interact_menu,Act_%1), typeOf _unit]; -private _actionTrees = missionNamespace getVariable [_varName, []]; +private _namespace = EGVAR(interact_menu,ActNamespace); +private _actionTrees = _namespace getVariable typeOf _unit; +if (isNil "_actionTrees") then { + _actionTrees = []; +}; private _actions = []; From 79db282acab6bb3ced41e458e2bde61c0dff5114 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Mar 2016 09:12:49 +0100 Subject: [PATCH 106/337] remove obsolete fix, fix #3545 --- addons/smallarms/CfgWeapons.hpp | 76 ++++++++++++++------------------- 1 file changed, 31 insertions(+), 45 deletions(-) diff --git a/addons/smallarms/CfgWeapons.hpp b/addons/smallarms/CfgWeapons.hpp index c0f4b4daef..75d8ee6538 100644 --- a/addons/smallarms/CfgWeapons.hpp +++ b/addons/smallarms/CfgWeapons.hpp @@ -58,18 +58,12 @@ class CfgWeapons { // Grenade launchers ///////////////////////////////////// // Updated strings are in weapon configs. class GrenadeLauncher; - class UGL_F : GrenadeLauncher {}; + class UGL_F: GrenadeLauncher {}; // MXs //////////////////////////////////////////////////// - class arifle_MX_Base_F : Rifle_Base_F { - //magazines[] = {"30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag_Tracer", "100Rnd_65x39_caseless_mag", "100Rnd_65x39_caseless_mag_Tracer"}; - - // http://www.bushmaster.com/acr/#/intro - // 800 rpm (whatever, fictional lol) - - //class Single : Mode_SemiAuto {}; - class Single : Mode_SemiAuto { + class arifle_MX_Base_F: Rifle_Base_F { + class Single: Mode_SemiAuto { reloadTime = 0.075; }; @@ -78,20 +72,20 @@ class CfgWeapons { }; }; - class arifle_MX_SW_F : arifle_MX_Base_F { + class arifle_MX_SW_F: arifle_MX_Base_F { modes[] = {"Single", "manual", "close", "short", "medium", "far_optic1", "far_optic2"}; - //class Single : Single {}; - //class manual : FullAuto {}; + //class Single: Single {}; + //class manual: FullAuto {}; }; // Katibas //////////////////////////////////////////////////// - class arifle_katiba_Base_F : Rifle_Base_F { + class arifle_katiba_Base_F: Rifle_Base_F { // http://world.guns.ru/assault/iran/khaybar-kh2002-e.html // 800 rpm - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { reloadTime = 0.075; }; @@ -102,16 +96,16 @@ class CfgWeapons { // SDAR ////////////////////////////////////////////////// - class SDAR_base_F : Rifle_Base_F { + class SDAR_base_F: Rifle_Base_F { modes[] = {"Single", "FullAuto"}; // Leave in the imaginary full-auto mode because, whatever. }; // Tavor TRG //////////////////////////////////////////////// - class Tavor_base_F : Rifle_Base_F { + class Tavor_base_F: Rifle_Base_F { // http://www.israel-weapon.com/files/brochure_2012/IWI_TAVOR_AR.pdf // 700 ~1000 rpm (850) - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { reloadTime = 0.07; }; @@ -122,10 +116,10 @@ class CfgWeapons { // Mk20 (F2000) ////////////////////////////////////////////////// - class mk20_base_F : Rifle_Base_F { + class mk20_base_F: Rifle_Base_F { // http://www.fnherstal.com/primary-menu/products-capabilities/rifles/technical-data/product/182/232/182/1/_/fn-f2000R-standard.html // 850 rpm - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { reloadTime = 0.07; }; @@ -136,14 +130,14 @@ class CfgWeapons { // SMG Vermin //////////////////////////////////////////////////// - class SMG_01_Base : Rifle_Base_F { + class SMG_01_Base: Rifle_Base_F { // http://kriss-usa.com/pdf/operatormanual/ // 1200 rpm - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { reloadTime = 0.05; }; - class Burst : Mode_Burst { + class Burst: Mode_Burst { burst = 2; reloadTime = 0.05; }; @@ -155,17 +149,17 @@ class CfgWeapons { // SMG Scorpion //////////////////////////////////////////////////// - class SMG_02_base_F : Rifle_Base_F { + class SMG_02_base_F: Rifle_Base_F { //http://www.czub.cz/zbrojovka/cz-manual/Instruction-Manual-Scorpion-EVO-3-A1_en.pdf // 1150 rpm - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf // 900-1100 rpm (1000rpm) reloadTime = 0.052; }; - class Burst : Mode_Burst { + class Burst: Mode_Burst { reloadTime = 0.052; }; @@ -177,11 +171,9 @@ class CfgWeapons { // SMG PDW2000 /////////////////////////////////////////////////// class pdw2000_base_F: Rifle_Base_F { - magazines[] = {"30Rnd_9x21_Mag"}; - modes[] = {"Single", "FullAuto"}; // No burst on this thing - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf // 900-1100 rpm (1000rpm) reloadTime = 0.06; @@ -194,24 +186,18 @@ class CfgWeapons { // Pistols ////////////////////////////////////////////// - class hgun_P07_F : Pistol_Base_F { - magazines[] = {"16Rnd_9x21_Mag"}; - }; - - class hgun_Rook40_F : Pistol_Base_F { - magazines[] = {"16Rnd_9x21_Mag"}; - }; - - /*class hgun_ACPC2_F: Pistol_Base_F {}; + /*class hgun_P07_F: Pistol_Base_F {}; + class hgun_Rook40_F: Pistol_Base_F {}; + class hgun_ACPC2_F: Pistol_Base_F {}; class hgun_Pistol_heavy_01_F: Pistol_Base_F {}; class hgun_Pistol_heavy_02_F: Pistol_Base_F {};*/ // LMGs ////////////////////////////////////////////// - class LMG_Mk200_F : Rifle_Long_Base_F { + class LMG_Mk200_F: Rifle_Long_Base_F { modes[] = {"manual", "Single", "close", "short", "medium", "far_optic1", "far_optic2"}; - class manual : Mode_FullAuto { + class manual: Mode_FullAuto { // http://www.defensereview.com/kac-stoner-lmg-belt-fed-5-56mm-nato-lightweight-light-machine-gun-squad-automatic-weapon-lmgsaw-displayed-at-sofic-2010/ // 550 rpm reloadTime = 0.109; @@ -219,7 +205,7 @@ class CfgWeapons { // Add semi-auto mode. // Inherit from 'manual' for sound reasons. - class Single : manual { + class Single: manual { reloadTime = 0.109; dispersion = 0.00175; // radians. Equal to 6 MOA. autofire = 0; @@ -233,28 +219,28 @@ class CfgWeapons { class LMG_Zafir_F: Rifle_Long_Base_F { modes[] = {"FullAuto", "Single", "close", "short", "medium", "far_optic1", "far_optic2"}; - class FullAuto : Mode_FullAuto { + class FullAuto: Mode_FullAuto { reloadTime = 0.070; // 850 RPM on gas position 1 }; }; // Sniper and anti-materiel rifles ///////////////////////////////// - class EBR_base_F : Rifle_Long_Base_F { + class EBR_base_F: Rifle_Long_Base_F { // EMR/EBR is typically issued semi-auto AFAIK modes[] = {"Single", "single_close_optics1", "single_medium_optics1", "single_far_optics1"}; cursor = "arifle"; }; - class LRR_base_F : Rifle_Long_Base_F { + class LRR_base_F: Rifle_Long_Base_F { cursor = "arifle"; }; - class GM6_base_F : Rifle_Long_Base_F { + class GM6_base_F: Rifle_Long_Base_F { cursor = "arifle"; // Fuck your balancing, BI. - class Single : Mode_SemiAuto { + class Single: Mode_SemiAuto { // 250 rpm is probably the limit of the finger on a heavy bullpup trigger like this thing must have. reloadTime = 0.24; }; From 52007fab6a687a5bf992de3faf18f844c5c475dd Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 12:06:17 +0100 Subject: [PATCH 107/337] Add sanity checks, fix explosives checks --- addons/explosives/functions/fnc_cancelPlacement.sqf | 7 +------ addons/explosives/functions/fnc_setupExplosive.sqf | 7 +++++++ addons/sandbag/functions/fnc_deployCancel.sqf | 2 +- addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf | 2 +- addons/trenches/functions/fnc_placeCancel.sqf | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/explosives/functions/fnc_cancelPlacement.sqf b/addons/explosives/functions/fnc_cancelPlacement.sqf index 4a7f385a01..e6bd60f637 100644 --- a/addons/explosives/functions/fnc_cancelPlacement.sqf +++ b/addons/explosives/functions/fnc_cancelPlacement.sqf @@ -18,11 +18,6 @@ params ["_unit", "_key"]; -if (_key != 1) exitWith {}; - -if (_unit == ACE_player && - {([_unit, objNull, ["isNotSwimming"]] call EFUNC(common,canInteractWith))} && - {(_magClassname in (magazines _unit))} -) exitWith {}; +if (_key != 1 || {!GVAR(pfeh_running)}) exitWith {}; GVAR(placeAction) = PLACE_CANCEL; diff --git a/addons/explosives/functions/fnc_setupExplosive.sqf b/addons/explosives/functions/fnc_setupExplosive.sqf index 567bb95db8..709ea688d5 100644 --- a/addons/explosives/functions/fnc_setupExplosive.sqf +++ b/addons/explosives/functions/fnc_setupExplosive.sqf @@ -141,6 +141,13 @@ GVAR(TweakedAngle) = 0; //Don't allow placing in a bad position: if (_badPosition && {GVAR(placeAction) == PLACE_APPROVE}) then {GVAR(placeAction) = PLACE_WAITING;}; + if (_unit != ACE_player || + {!([_unit, objNull, ["isNotSwimming"]] call EFUNC(common,canInteractWith))} || + {!(_magClassname in (magazines _unit))} + ) then { + GVAR(placeAction) = PLACE_CANCEL; + }; + if (GVAR(placeAction) != PLACE_WAITING) then { [_pfID] call CBA_fnc_removePerFrameHandler; GVAR(pfeh_running) = false; diff --git a/addons/sandbag/functions/fnc_deployCancel.sqf b/addons/sandbag/functions/fnc_deployCancel.sqf index e0315d7849..6cb38e4f73 100644 --- a/addons/sandbag/functions/fnc_deployCancel.sqf +++ b/addons/sandbag/functions/fnc_deployCancel.sqf @@ -18,7 +18,7 @@ params ["_unit", "_key"]; -if (_key != 1) exitWith {}; +if (_key != 1 || {GVAR(deployPFH) == -1}) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Sandbag", false] call EFUNC(common,statusEffect_set); diff --git a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf index 6f9eb5cff9..b009028c93 100644 --- a/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf +++ b/addons/tacticalladder/functions/fnc_cancelTLdeploy.sqf @@ -20,7 +20,7 @@ params ["_unit", "_key"]; -if (_key != 1) exitWith {}; +if (_key != 1 || {isNull GVAR(ladder)}) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Ladder", false] call EFUNC(common,statusEffect_set); diff --git a/addons/trenches/functions/fnc_placeCancel.sqf b/addons/trenches/functions/fnc_placeCancel.sqf index 90c9d6ecc7..b3d6bf78da 100644 --- a/addons/trenches/functions/fnc_placeCancel.sqf +++ b/addons/trenches/functions/fnc_placeCancel.sqf @@ -18,7 +18,7 @@ params ["_unit", "_key"]; -if (_key != 1) exitWith {}; +if (_key != 1 || {GVAR(digPFH) == -1}) exitWith {}; // enable running again [_unit, "forceWalk", "ACE_Trenches", false] call EFUNC(common,statusEffect_set); From a064c0c98db5b5e98a82ac0478bbd5d929c916fa Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 12:50:16 +0100 Subject: [PATCH 108/337] 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 423993f757..36c0fca8a3 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 0000000000..222afadf25 --- /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 8a86e3ec32..a7feade1c3 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 0000000000..022888575e --- /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 c87a79ffae..e5fc66d565 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 3952d8e337..1a9ca73399 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 109/337] 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 | 224 ++++++++++-------- 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, 240 insertions(+), 239 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 7310690f16..0000000000 --- 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 6ded1cd687..86ba809a93 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 53e1496b38..3e5c53d328 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; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(SoldierVehicleWeaponInfo); category = CSTRING(Category); + displayName = CSTRING(SoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleRadar) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleRadar); category = CSTRING(Category); + displayName = CSTRING(VehicleRadar); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleCompass) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleCompass); category = CSTRING(Category); + displayName = CSTRING(VehicleCompass); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(commandMenu) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(CommandMenu); category = CSTRING(Category); + displayName = CSTRING(CommandMenu); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(groupBar) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(GroupBar); category = CSTRING(Category); + displayName = CSTRING(GroupBar); + typeName = "BOOL"; + value = 0; + isClientSettable = 1; }; // ADVANCED // Upper Weapon Info class GVAR(weaponName) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(WeaponName); category = CSTRING(Category); + displayName = CSTRING(WeaponName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(weaponNameBackground) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(WeaponNameBackground); category = CSTRING(Category); + displayName = CSTRING(WeaponNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(firingMode) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(FiringMode); category = CSTRING(Category); + displayName = CSTRING(FiringMode); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; // Lower Weapon Info class GVAR(ammoType) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(AmmoType); category = CSTRING(Category); + displayName = CSTRING(AmmoType); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(ammoCount) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(AmmoCount); - description = CSTRING(AmmoCountDesc); category = CSTRING(Category); + displayName = CSTRING(AmmoCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 0; + isClientSettable = 1; }; class GVAR(magCount) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; + category = CSTRING(Category); displayName = CSTRING(MagCount); - category = CSTRING(Category); - }; - class GVAR(grenadeFlareType) { - value = 1; + description = CSTRING(RequiresSoldierVehicleWeaponInfo); typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(GrenadeFlareType); - category = CSTRING(Category); - }; - class GVAR(grenadeFlareCount) { value = 1; - typeName = "BOOL"; isClientSettable = 1; - displayName = CSTRING(GrenadeFlareCount); + }; + class GVAR(throwableName) { category = CSTRING(Category); + displayName = CSTRING(throwableName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; + }; + class GVAR(throwableCount) { + category = CSTRING(Category); + displayName = CSTRING(throwableCount); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(zeroing) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(Zeroing); category = CSTRING(Category); + displayName = CSTRING(Zeroing); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(weaponLowerInfoBackground) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(WeaponLowerInfoBackground); //todo category = CSTRING(Category); + displayName = CSTRING(WeaponLowerInfoBackground); //todo + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; // Stance class GVAR(stance) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(Stance); category = CSTRING(Category); + displayName = CSTRING(Stance); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; // Vehicle class GVAR(vehicleName) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleName); category = CSTRING(Category); + displayName = CSTRING(VehicleName); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleNameBackground) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleNameBackground); category = CSTRING(Category); + displayName = CSTRING(VehicleNameBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleFuelBar) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleFuelBar); category = CSTRING(Category); + displayName = CSTRING(VehicleFuelBar); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleSpeed) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleSpeed); category = CSTRING(Category); + displayName = CSTRING(VehicleSpeed); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleAltitude) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleAltitude); category = CSTRING(Category); + displayName = CSTRING(VehicleAltitude); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleDamage) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleDamage); category = CSTRING(Category); + displayName = CSTRING(VehicleDamage); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleInfoBackground) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleInfoBackground); category = CSTRING(Category); + displayName = CSTRING(VehicleInfoBackground); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; class GVAR(vehicleGunnerWeapon) { - value = 1; - typeName = "BOOL"; - isClientSettable = 1; - displayName = CSTRING(VehicleGunnerWeapon); category = CSTRING(Category); + displayName = CSTRING(VehicleGunnerWeapon); + description = CSTRING(RequiresSoldierVehicleWeaponInfo); + typeName = "BOOL"; + value = 1; + isClientSettable = 1; }; }; diff --git a/addons/ui/CfgVehicles.hpp b/addons/ui/CfgVehicles.hpp index 69f28f955e..1441d97217 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 222afadf25..6660470ba8 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 d778fb2746..23fa19af11 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 f4a57831c8..fe0f07709a 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 ab5666af69..0000000000 --- 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 e5fc66d565..21910f0042 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 1a9ca73399..c1bb131db5 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 72f9066f1b..15f0b731b6 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 e320d3ce39..21932cb98e 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 b47b887a219ab6a7da4be7e0c44157d695ea1484 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 16:20:16 +0100 Subject: [PATCH 110/337] Fix event name already being used --- addons/common/XEH_postInit.sqf | 2 +- addons/refuel/functions/fnc_reset.sqf | 2 +- addons/refuel/functions/fnc_returnNozzle.sqf | 2 +- addons/refuel/functions/fnc_takeNozzle.sqf | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 6ea32c3534..b17ff292a4 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -153,7 +153,7 @@ if (isServer) then { ["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); -["setHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); +["setVanillaHitPointDamage", {(_this select 0) setHitPointDamage (_this select 1)}] call FUNC(addEventHandler); if (isServer) then { ["hideObjectGlobal", {(_this select 0) hideObjectGlobal (_this select 1)}] call FUNC(addEventHandler); diff --git a/addons/refuel/functions/fnc_reset.sqf b/addons/refuel/functions/fnc_reset.sqf index ff04ed13e3..6e3bdbe774 100644 --- a/addons/refuel/functions/fnc_reset.sqf +++ b/addons/refuel/functions/fnc_reset.sqf @@ -17,7 +17,7 @@ params [["_target", objNull, [objNull]]]; -["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,objectEvent); +["setVanillaHitPointDamage", _target, [_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]] ] ] call EFUNC(common,objectEvent); _target setVariable [QGVAR(engineHit), nil, true]; _target setVariable [QGVAR(isConnected), false, true]; diff --git a/addons/refuel/functions/fnc_returnNozzle.sqf b/addons/refuel/functions/fnc_returnNozzle.sqf index af3e8c6d4e..bd4da5569b 100644 --- a/addons/refuel/functions/fnc_returnNozzle.sqf +++ b/addons/refuel/functions/fnc_returnNozzle.sqf @@ -48,7 +48,7 @@ if (isNull _nozzle || {_source != _target}) exitWith {false}; }; deleteVehicle _nozzle; - ["setHitPointDamage", _target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]]] call EFUNC(common,objectEvent); + ["setVanillaHitPointDamage", _target, [_target, ["HitEngine", _target getVariable [QGVAR(engineHit), 0]] ] ] call EFUNC(common,objectEvent); _target setVariable [QGVAR(engineHit), nil, true]; }, "", diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index d862aa16b5..3d557f9a2e 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -27,7 +27,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]; - ["setHitPointDamage", _target, ["HitEngine", 1]] call EFUNC(common,objectEvent); + ["setVanillaHitPointDamage", _target, [_target, ["HitEngine", 1]] ] call EFUNC(common,objectEvent); _target setVariable [QGVAR(isConnected), true, true]; _endPosOffset = getArray (configFile >> "CfgVehicles" >> typeOf _target >> QGVAR(hooks)); From c378cd9f12e0d0451bbf9682d3e57a6d9289edcd Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 16:47:46 +0100 Subject: [PATCH 111/337] Disable action menu on mouse hint with inGameUISetEventHandler rather than showHud, as showHud disables UI script commands --- addons/interaction/functions/fnc_hideMouseHint.sqf | 5 ++++- addons/interaction/functions/fnc_showMouseHint.sqf | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/interaction/functions/fnc_hideMouseHint.sqf b/addons/interaction/functions/fnc_hideMouseHint.sqf index d7f9d9140e..709b798fed 100644 --- a/addons/interaction/functions/fnc_hideMouseHint.sqf +++ b/addons/interaction/functions/fnc_hideMouseHint.sqf @@ -19,4 +19,7 @@ if (isNull (uiNamespace getVariable ["ACE_Helper_Display", objNull])) exitWith { (QGVAR(InteractionHelper) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; -["mouseHint", []] call EFUNC(common,showHud); //This is equivalent to the old showHud true +// Disable action menu, showHud also disables all scripted UI (such as drawIcon3D) +inGameUISetEventHandler ["PrevAction", "false"]; +inGameUISetEventHandler ["NextAction", "false"]; +inGameUISetEventHandler ["Action", "false"]; diff --git a/addons/interaction/functions/fnc_showMouseHint.sqf b/addons/interaction/functions/fnc_showMouseHint.sqf index 429b7d7670..57c8a7bf50 100644 --- a/addons/interaction/functions/fnc_showMouseHint.sqf +++ b/addons/interaction/functions/fnc_showMouseHint.sqf @@ -50,4 +50,7 @@ if (_scroll == "") exitWith { (_display displayCtrl 1002) ctrlSetText _scroll; -["mouseHint", [false, true, true, true, true, true, true, false]] call EFUNC(common,showHud); //This is equivalent to the old showHud false +// Enable action menu +inGameUISetEventHandler ["PrevAction", "true"]; +inGameUISetEventHandler ["NextAction", "true"]; +inGameUISetEventHandler ["Action", "true"]; From 858c68f8d702a0dd1db50220f3f2c552a4c2e0a5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Mar 2016 16:54:27 +0100 Subject: [PATCH 112/337] Don't use modifier for rotation where not needed --- .../functions/fnc_handleScrollWheel.sqf | 2 +- addons/explosives/stringtable.xml | 20 ++++++++--------- .../functions/fnc_handleScrollWheel.sqf | 4 ++-- addons/sandbag/stringtable.xml | 22 +++++++++---------- .../functions/fnc_handleScrollWheel.sqf | 2 +- .../functions/fnc_handleScrollWheel.sqf | 4 ++-- addons/trenches/stringtable.xml | 16 +++++++++----- 7 files changed, 37 insertions(+), 33 deletions(-) diff --git a/addons/explosives/functions/fnc_handleScrollWheel.sqf b/addons/explosives/functions/fnc_handleScrollWheel.sqf index 0d5fdd2aba..36530afb08 100644 --- a/addons/explosives/functions/fnc_handleScrollWheel.sqf +++ b/addons/explosives/functions/fnc_handleScrollWheel.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -if ((!GVAR(pfeh_running)) || {ACE_Modifier == 0}) exitWith {false}; +if (!GVAR(pfeh_running)) exitWith {false}; GVAR(TweakedAngle) = ((GVAR(TweakedAngle) + 7.2 * _this) + 360) % 360; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index ad89649cbd..e3ba902a9b 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -107,16 +107,16 @@ Отмена - +Ctrl rotate - +Strg drehen - +Ctrl girar - +Ctrl tourner - +Ctrl rotazione - +Ctrl otočit - +Ctrl forgatás - +Ctrl obrót - +Ctrl rotaciona - +Ctrl Bращать + Rotate + Drehen + Girar + Tourner + Rotazione + Otočit + Forgatás + Obrót + Rotaciona + Bращать Turn On Thor III diff --git a/addons/sandbag/functions/fnc_handleScrollWheel.sqf b/addons/sandbag/functions/fnc_handleScrollWheel.sqf index 94697d7691..20d403a7a1 100644 --- a/addons/sandbag/functions/fnc_handleScrollWheel.sqf +++ b/addons/sandbag/functions/fnc_handleScrollWheel.sqf @@ -15,9 +15,9 @@ */ #include "script_component.hpp" -params ["_scroll"]; +if (GVAR(deployPFH) == -1) exitWith {false}; -if (GETMVAR(ACE_Modifier,0) == 0 || GVAR(deployPFH) == -1) exitWith { false }; +params ["_scroll"]; GVAR(deployDirection) = GVAR(deployDirection) + (_scroll * 5); diff --git a/addons/sandbag/stringtable.xml b/addons/sandbag/stringtable.xml index 70db715d77..a1d7a46938 100644 --- a/addons/sandbag/stringtable.xml +++ b/addons/sandbag/stringtable.xml @@ -146,16 +146,16 @@ Aqui não tem areia - +Ctrl rotate - +Strg drehen - +Ctrl girar - +Ctrl tourner - +Ctrl rotazione - +Ctrl otočit - +Ctrl forgatás - +Ctrl obrót - +Ctrl rotaciona - +Ctrl Bращать + Rotate + Drehen + Girar + Tourner + Rotazione + Otočit + Forgatás + Obrót + Rotaciona + Bращать - \ No newline at end of file + diff --git a/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf b/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf index c22141ca24..e7d4136526 100644 --- a/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf +++ b/addons/tacticalladder/functions/fnc_handleScrollWheel.sqf @@ -19,7 +19,7 @@ params ["_scroll"]; if (isNull GVAR(ladder)) exitWith { false }; -if (GETMVAR(ACE_Modifier,0) == 0) then { +if (ACE_Modifier == 0) then { private ["_currentStep"]; // Lengthening if (_scroll > 0) then { diff --git a/addons/trenches/functions/fnc_handleScrollWheel.sqf b/addons/trenches/functions/fnc_handleScrollWheel.sqf index 783463dd25..5dbe661417 100644 --- a/addons/trenches/functions/fnc_handleScrollWheel.sqf +++ b/addons/trenches/functions/fnc_handleScrollWheel.sqf @@ -15,9 +15,9 @@ */ #include "script_component.hpp" -params ["_scroll"]; +if (GVAR(digPFH) == -1) exitWith {false}; -if (GETMVAR(ACE_Modifier,0) == 0 || GVAR(digPFH) == -1) exitWith { false }; +params ["_scroll"]; GVAR(digDirection) = GVAR(digDirection) + (_scroll * 5); diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 4fef526858..617a604457 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -82,12 +82,16 @@ Annuler la creusée - +Ctrl rotate - +Strg drehen - +Ctrl obrót - +Ctrl ruota - +Ctrl rotar - +Ctrl rotation + Rotate + Drehen + Girar + Tourner + Rotazione + Otočit + Forgatás + Obrót + Rotaciona + Bращать Digging Trench From 84af4b7676e35da79771fba6e52507a653356a96 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sun, 6 Mar 2016 19:53:37 +0100 Subject: [PATCH 113/337] Force open ramps on helicopters --- addons/fastroping/CfgVehicles.hpp | 42 ++++++++++++++++--- addons/fastroping/XEH_PREP.hpp | 1 + .../fastroping/functions/fnc_canCloseRamp.sqf | 29 +++++++++++++ .../fastroping/functions/fnc_onCutCommon.sqf | 12 +++++- .../functions/fnc_onPrepareCommon.sqf | 5 +++ 5 files changed, 81 insertions(+), 8 deletions(-) create mode 100644 addons/fastroping/functions/fnc_canCloseRamp.sqf diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 9aba9e2a85..2cbc95b063 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -35,11 +35,8 @@ class CfgVehicles { }; }; - class Helicopter_Base_F; - class ACE_friesBase: Helicopter_Base_F { - destrType = ""; - class Turrets {}; - + class Helicopter; + class Helicopter_Base_F: Helicopter { class ACE_SelfActions { class ACE_prepareFRIES { displayName = CSTRING(Interaction_prepareFRIES); @@ -71,6 +68,10 @@ class CfgVehicles { }; }; }; + class ACE_friesBase: Helicopter_Base_F { + destrType = ""; + class Turrets {}; + }; class ACE_friesAnchorBar: ACE_friesBase { author = "jokoho48"; scope = 1; @@ -175,10 +176,28 @@ class CfgVehicles { class Heli_Transport_02_base_F: Helicopter_Base_H { GVAR(enabled) = 1; GVAR(ropeOrigins[]) = {{0.94, -4.82, -1.16}, {-0.94, -4.82, -1.16}}; + GVAR(onPrepare) = QFUNC(onPrepareCommon); + GVAR(onCut) = QFUNC(onCutCommon); + + class UserActions { + class Ramp_Open; + class Ramp_Close: Ramp_Open { + condition = QUOTE([ARR_5(this,'CargoRamp_Open',[[0],[1],[2]])] call FUNC(canCloseRamp)); + }; + }; }; class Heli_Transport_03_base_F: Helicopter_Base_H { GVAR(enabled) = 1; GVAR(ropeOrigins[]) = {{0.75, -5.29, -0.11}, {-0.87, -5.29, -0.11}}; + GVAR(onPrepare) = QFUNC(onPrepareCommon); + GVAR(onCut) = QFUNC(onCutCommon); + + class UserActions { + class Ramp_Open; + class Ramp_Close: Ramp_Open { + condition = QUOTE([ARR_5(this,'Door_rear_source',[[0],[3],[4]])] call FUNC(canCloseRamp)); + }; + }; }; class Heli_light_03_base_F: Helicopter_Base_F { GVAR(enabled) = 2; @@ -194,7 +213,9 @@ class CfgVehicles { GVAR(friesAttachmentPoint[]) = {-1.07, 3.26, -0.5}; EQUIP_FRIES_ATTRIBUTE; }; - class Heli_Transport_04_base_F; + class Heli_Transport_04_base_F: Helicopter_Base_H { + class UserActions; + }; class O_Heli_Transport_04_bench_F: Heli_Transport_04_base_F { GVAR(enabled) = 1; GVAR(ropeOrigins[]) = {{1.03, 1.6, -0.23}, {1.03, -1.36, -0.23}, {-1.23, 1.6, -0.23}, {-1.23, -1.36, -0.23}}; @@ -202,5 +223,14 @@ class CfgVehicles { class O_Heli_Transport_04_covered_F: Heli_Transport_04_base_F { GVAR(enabled) = 1; GVAR(ropeOrigins[]) = {{0.83, -4.7, -0.03}, {-1.02, -4.7, -0.03}}; + GVAR(onPrepare) = QFUNC(onPrepareCommon); + GVAR(onCut) = QFUNC(onCutCommon); + + class UserActions: UserActions { + class CloseDoor_6; + class Ramp_Close: CloseDoor_6 { + condition = QUOTE([ARR_6(this,'Door_6_source',[[0],[1],[2],[3]])] call FUNC(canCloseRamp)); + }; + }; }; }; diff --git a/addons/fastroping/XEH_PREP.hpp b/addons/fastroping/XEH_PREP.hpp index 266005f1ee..780f358f8a 100644 --- a/addons/fastroping/XEH_PREP.hpp +++ b/addons/fastroping/XEH_PREP.hpp @@ -1,3 +1,4 @@ +PREP(canCloseRamp); PREP(canCutRopes); PREP(canDeployRopes); PREP(canFastRope); diff --git a/addons/fastroping/functions/fnc_canCloseRamp.sqf b/addons/fastroping/functions/fnc_canCloseRamp.sqf new file mode 100644 index 0000000000..58827cb29b --- /dev/null +++ b/addons/fastroping/functions/fnc_canCloseRamp.sqf @@ -0,0 +1,29 @@ +/* + * Author: BaerMitUmlaut + * Checks if the player can close the ramp of the given helo. + * + * Arguments: + * 0: The helicopter + * 1: The ramp animation name + * 2: Turret paths that can close the ramp + * + * Return Value: + * Able to close ramp + * + * Example: + * [_player, _vehicle] call ace_fastroping_fnc_canCloseRamp + * + * Public: No + */ + +#include "script_component.hpp" +params ["_vehicle", "_door", "_turretPaths"]; + +(_vehicle doorPhase _door > 0.5) && +{alive _vehicle} && +{(_vehicle getVariable ["bis_disabled_Ramp", 0]) != 1} && +{!(_vehicle getVariable [QGVAR(doorsLocked), false])} && +{ + (ACE_player == driver _vehicle) || + {((assignedVehicleRole ACE_player) param [1, []]) in _turretPaths} +} diff --git a/addons/fastroping/functions/fnc_onCutCommon.sqf b/addons/fastroping/functions/fnc_onCutCommon.sqf index 7bfb95b68b..404f94e9d8 100644 --- a/addons/fastroping/functions/fnc_onCutCommon.sqf +++ b/addons/fastroping/functions/fnc_onCutCommon.sqf @@ -24,16 +24,24 @@ if !(isNull _fries) then { [{ _this animateDoor ["door_R", 0]; _this animateDoor ["door_L", 0]; - _vehicle animate ["dvere1_posunZ", 0]; - _vehicle animate ["dvere2_posunZ", 0]; + _this animateDoor ["CargoRamp_Open", 0]; + _this animateDoor ["Door_rear_source", 0]; + _this animateDoor ["Door_6_source", 0]; + _this animate ["dvere1_posunZ", 0]; + _this animate ["dvere2_posunZ", 0]; + _this setVariable [QGVAR(doorsLocked), false, true]; }, _vehicle, 2] call EFUNC(common,waitAndExecute); 4 } else { _vehicle animateDoor ["door_R", 0]; _vehicle animateDoor ["door_L", 0]; + _vehicle animateDoor ["CargoRamp_Open", 0]; + _vehicle animateDoor ["Door_rear_source", 0]; + _vehicle animateDoor ["Door_6_source", 0]; _vehicle animate ["dvere1_posunZ", 0]; _vehicle animate ["dvere2_posunZ", 0]; + _vehicle setVariable [QGVAR(doorsLocked), false, true]; 2 }; diff --git a/addons/fastroping/functions/fnc_onPrepareCommon.sqf b/addons/fastroping/functions/fnc_onPrepareCommon.sqf index d9138ea0e2..5e8bf931bb 100644 --- a/addons/fastroping/functions/fnc_onPrepareCommon.sqf +++ b/addons/fastroping/functions/fnc_onPrepareCommon.sqf @@ -22,9 +22,14 @@ _waitTime = 2; _vehicle animateDoor ["door_R", 1]; _vehicle animateDoor ["door_L", 1]; +_vehicle animateDoor ["CargoRamp_Open", 1]; +_vehicle animateDoor ["Door_rear_source", 1]; +_vehicle animateDoor ["Door_6_source", 1]; _vehicle animate ["dvere1_posunZ", 1]; _vehicle animate ["dvere2_posunZ", 1]; +_vehicle setVariable [QGVAR(doorsLocked), true, true]; + _fries = _vehicle getVariable [QGVAR(FRIES), objNull]; if !(isNull _fries) then { [{ From 955333b0bc796d2835c11192de7571aad5f21a11 Mon Sep 17 00:00:00 2001 From: novichiv Date: Sun, 6 Mar 2016 22:06:11 +0300 Subject: [PATCH 114/337] 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 fa1a8643e7..dc27d60c72 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 c65656a016fc377eb03583dcc04d144ff1aa3141 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Sun, 6 Mar 2016 20:33:23 +0100 Subject: [PATCH 115/337] Improved rope glitchyness --- addons/fastroping/XEH_postInit.sqf | 5 ----- addons/fastroping/functions/fnc_cutRopes.sqf | 6 ++++-- addons/fastroping/functions/fnc_deployRopes.sqf | 5 +++-- addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf | 1 + addons/fastroping/functions/fnc_fastRopeServerPFH.sqf | 4 ++-- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/addons/fastroping/XEH_postInit.sqf b/addons/fastroping/XEH_postInit.sqf index 873d1091e5..ae88feaa76 100644 --- a/addons/fastroping/XEH_postInit.sqf +++ b/addons/fastroping/XEH_postInit.sqf @@ -7,8 +7,3 @@ [QGVAR(startFastRope), { [FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); - -[QGVAR(ropeDetach), { - params ["_object", "_rope"]; - _object ropeDetach _rope; -}] call EFUNC(common,addEventHandler); diff --git a/addons/fastroping/functions/fnc_cutRopes.sqf b/addons/fastroping/functions/fnc_cutRopes.sqf index 88b02a70af..71fe682f7e 100644 --- a/addons/fastroping/functions/fnc_cutRopes.sqf +++ b/addons/fastroping/functions/fnc_cutRopes.sqf @@ -32,8 +32,10 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; }; }; - [QGVAR(ropeDetach), [_hook, _ropeTop]] call EFUNC(common,serverEvent); - [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy, _hook], 60] call EFUNC(common,waitAndExecute); + detach _dummy; + deleteVehicle _ropeTop; + deleteVehicle _hook; + [{{deleteVehicle _x} count _this}, [_ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute); } count _deployedRopes; _vehicle setVariable [QGVAR(deployedRopes), [], true]; diff --git a/addons/fastroping/functions/fnc_deployRopes.sqf b/addons/fastroping/functions/fnc_deployRopes.sqf index c944b2c3cb..af79dd2cfe 100644 --- a/addons/fastroping/functions/fnc_deployRopes.sqf +++ b/addons/fastroping/functions/fnc_deployRopes.sqf @@ -35,13 +35,14 @@ _hookAttachment = _vehicle getVariable [QGVAR(FRIES), _vehicle]; _origin = getPosATL _hook; - _dummy = createVehicle [QGVAR(helper), _origin vectorAdd [0, 0, -1], [], 0, "CAN_COLLIDE"]; + _dummy = createVehicle [QGVAR(helper), _origin, [], 0, "CAN_COLLIDE"]; _dummy allowDamage false; _dummy disableCollisionWith _vehicle; + _dummy attachTo [_hook, [0, 0, 0]]; _ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5]; _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1]; - ropeUnwind [_ropeBottom, 30, 34.5, false]; + ropeUnwind [_ropeBottom, 30, 35, false]; _ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}]; _ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}]; diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index d05c8bfdbc..6a4e810ff5 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -26,6 +26,7 @@ if (vehicle _unit != _unit) exitWith {}; //Start fast roping if (animationState _unit != "ACE_FastRoping") exitWith { + detach _dummy; _unit disableCollisionWith _dummy; _unit attachTo [_dummy, [0, 0, -1.45]]; [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf index 44f9fedd1a..627ed959bc 100644 --- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf @@ -54,14 +54,14 @@ if (((getPos _unit select 2) < 0.2) || {ropeLength _ropeTop == 34.5} || {vectorM deleteVehicle _ropeBottom; _origin = getPosASL _hook; - _dummy setPosASL (_origin vectorAdd [0, 0, -1]); + _dummy attachTo [_hook, [0, 0, 0]]; //Restore original mass and center of mass _dummy setMass 40; _dummy setCenterOfMass [0.000143227,0.00105986,-0.246147]; _ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5]; - _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 34.5]; + _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 35]; _ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}]; _ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}]; From 7344474658f4d2dcc0210eecc1934656b53e48ce Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Wed, 2 Mar 2016 00:01:34 +0100 Subject: [PATCH 116/337] Added RHS Fastroping compatibility --- .../compat_rhs_afrf3/CfgEventHandlers.hpp | 11 ++ optionals/compat_rhs_afrf3/CfgVehicles.hpp | 53 +++++++- optionals/compat_rhs_afrf3/XEH_PREP.hpp | 2 + optionals/compat_rhs_afrf3/XEH_preInit.sqf | 7 ++ optionals/compat_rhs_afrf3/XEH_preStart.sqf | 3 + optionals/compat_rhs_afrf3/config.cpp | 3 +- .../compat_rhs_afrf3/functions/fnc_onCut.sqf | 23 ++++ .../functions/fnc_onPrepare.sqf | 23 ++++ .../compat_rhs_afrf3/script_component.hpp | 2 +- .../compat_rhs_usf3/CfgEventHandlers.hpp | 11 ++ optionals/compat_rhs_usf3/CfgVehicles.hpp | 116 +++++++++++++++++- optionals/compat_rhs_usf3/XEH_PREP.hpp | 3 + optionals/compat_rhs_usf3/XEH_preInit.sqf | 7 ++ optionals/compat_rhs_usf3/XEH_preStart.sqf | 3 + optionals/compat_rhs_usf3/config.cpp | 3 +- .../functions/fnc_canCloseDoor.sqf | 30 +++++ .../compat_rhs_usf3/functions/fnc_onCut.sqf | 36 ++++++ .../functions/fnc_onPrepare.sqf | 38 ++++++ .../compat_rhs_usf3/script_component.hpp | 2 +- 19 files changed, 367 insertions(+), 9 deletions(-) create mode 100644 optionals/compat_rhs_afrf3/CfgEventHandlers.hpp create mode 100644 optionals/compat_rhs_afrf3/XEH_PREP.hpp create mode 100644 optionals/compat_rhs_afrf3/XEH_preInit.sqf create mode 100644 optionals/compat_rhs_afrf3/XEH_preStart.sqf create mode 100644 optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf create mode 100644 optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf create mode 100644 optionals/compat_rhs_usf3/CfgEventHandlers.hpp create mode 100644 optionals/compat_rhs_usf3/XEH_PREP.hpp create mode 100644 optionals/compat_rhs_usf3/XEH_preInit.sqf create mode 100644 optionals/compat_rhs_usf3/XEH_preStart.sqf create mode 100644 optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf create mode 100644 optionals/compat_rhs_usf3/functions/fnc_onCut.sqf create mode 100644 optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf diff --git a/optionals/compat_rhs_afrf3/CfgEventHandlers.hpp b/optionals/compat_rhs_afrf3/CfgEventHandlers.hpp new file mode 100644 index 0000000000..93e3311cf2 --- /dev/null +++ b/optionals/compat_rhs_afrf3/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +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/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp index d0486ecd0e..5402a2faf1 100644 --- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -1,4 +1,4 @@ -class cfgVehicles { +class CfgVehicles { class LandVehicle; class Tank: LandVehicle { class NewTurret; @@ -201,9 +201,58 @@ class cfgVehicles { EGVAR(refuel,fuelCapacity) = 3600; }; - class Heli_Light_02_base_F; + class Helicopter_Base_F; + class Helicopter_Base_H: Helicopter_Base_F { + class EventHandlers; + }; + class Heli_Light_02_base_F: Helicopter_Base_H {}; class RHS_Mi8_base : Heli_Light_02_base_F { EGVAR(refuel,fuelCapacity) = 3700; + class EventHandlers: EventHandlers { + class RHS_EventHandlers; + }; + }; + + class RHS_Mi8amt_base: RHS_Mi8_base { + EGVAR(fastroping,enabled) = 1; + EGVAR(fastroping,ropeOrigins)[] = {{-1.13, 4.67, -0.89}}; + EGVAR(fastroping,onCut) = QFUNC(onCut); + EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); + + class UserActions { + class openDoor; + class closeDoor_L: openDoor { + condition = QUOTE((this doorPhase 'LeftDoor' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])}); + }; + }; + + class EventHandlers: EventHandlers { + class RHS_EventHandlers: RHS_EventHandlers { + getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); + }; + }; + }; + + class RHS_Mi8_VVS_Base: RHS_Mi8_base {}; + class RHS_Mi8mt_vvs: RHS_Mi8_VVS_Base {}; + class RHS_Mi8mt_Cargo_vvs: RHS_Mi8mt_vvs { + EGVAR(fastroping,enabled) = 1; + EGVAR(fastroping,ropeOrigins)[] = {{-1.13, 4.67, -0.89}}; + EGVAR(fastroping,onCut) = QFUNC(onCut); + EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); + + class UserActions { + class openDoor; + class closeDoor_L: openDoor { + condition = QUOTE((this doorPhase 'LeftDoor' > 0.5) && {alive this} && {!(this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)])}); + }; + }; + + class EventHandlers: EventHandlers { + class RHS_EventHandlers: RHS_EventHandlers { + getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); + }; + }; }; class Heli_Attack_02_base_F; diff --git a/optionals/compat_rhs_afrf3/XEH_PREP.hpp b/optionals/compat_rhs_afrf3/XEH_PREP.hpp new file mode 100644 index 0000000000..cb5a1268d9 --- /dev/null +++ b/optionals/compat_rhs_afrf3/XEH_PREP.hpp @@ -0,0 +1,2 @@ +PREP(onCut); +PREP(onPrepare); diff --git a/optionals/compat_rhs_afrf3/XEH_preInit.sqf b/optionals/compat_rhs_afrf3/XEH_preInit.sqf new file mode 100644 index 0000000000..a7feade1c3 --- /dev/null +++ b/optionals/compat_rhs_afrf3/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +ADDON = true; diff --git a/optionals/compat_rhs_afrf3/XEH_preStart.sqf b/optionals/compat_rhs_afrf3/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/optionals/compat_rhs_afrf3/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index 4840f8da82..82873b01e2 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -6,12 +6,13 @@ 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"}; + author[]={"Ruthberg", "GitHawk", "BaerMitUmlaut"}; VERSION_CONFIG; }; }; #include "CfgAmmo.hpp" +#include "CfgEventHandlers.hpp" #include "CfgMagazines.hpp" #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" diff --git a/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf b/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf new file mode 100644 index 0000000000..ef2efd3a92 --- /dev/null +++ b/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf @@ -0,0 +1,23 @@ +/* + * Author: BaerMitUmlaut + * Function for closing doors and retracting the hooks for RHS USF helos. + * + * Arguments: + * 0: Helicopter + * + * Return Value: + * Amount of time to wait before cutting ropes + * + * Example: + * [_vehicle] call ace_compat_rhs_afrf3_fnc_onCut + * + * Public: No + */ + +#include "..\script_component.hpp" +params ["_vehicle"]; + +_vehicle setVariable [QEGVAR(fastroping,doorsLocked), false, true]; +_vehicle animateDoor ["LeftDoor", 0]; + +2 diff --git a/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf b/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf new file mode 100644 index 0000000000..1c2b82bef8 --- /dev/null +++ b/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf @@ -0,0 +1,23 @@ +/* + * Author: BaerMitUmlaut + * Function for opening doors and extending the hook for most vanilla helos. + * + * Arguments: + * 0: Helicopter + * + * Return Value: + * Amount of time to wait before deploying ropes + * + * Example: + * [_vehicle] call ace_compat_rhs_afrf3_fnc_onPrepare + * + * Public: No + */ + +#include "..\script_component.hpp" +params ["_vehicle"]; + +_vehicle setVariable [QEGVAR(fastroping,doorsLocked), true, true]; +_vehicle animateDoor ["LeftDoor", 1]; + +2 diff --git a/optionals/compat_rhs_afrf3/script_component.hpp b/optionals/compat_rhs_afrf3/script_component.hpp index edf3963b1f..307b1f8de6 100644 --- a/optionals/compat_rhs_afrf3/script_component.hpp +++ b/optionals/compat_rhs_afrf3/script_component.hpp @@ -1,4 +1,4 @@ -#define COMPONENT rhs_c_weapons_comp +#define COMPONENT compat_rhs_afrf3 #include "\z\ace\addons\main\script_mod.hpp" diff --git a/optionals/compat_rhs_usf3/CfgEventHandlers.hpp b/optionals/compat_rhs_usf3/CfgEventHandlers.hpp new file mode 100644 index 0000000000..93e3311cf2 --- /dev/null +++ b/optionals/compat_rhs_usf3/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +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/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 87c66f7212..82bd23d5a2 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -1,4 +1,17 @@ -class cfgVehicles { +#define EQUIP_FRIES_ATTRIBUTE class Attributes { \ + class EGVAR(fastroping,equipFRIES) { \ + property = QEGVAR(fastroping,equipFRIES); \ + control = "Checkbox"; \ + displayName = ECSTRING(fastroping,Eden_equipFRIES); \ + tooltip = ECSTRING(fastroping,Eden_equipFRIES_Tooltip); \ + expression = QUOTE([_this] call EFUNC(fastroping,equipFRIES)); \ + typeName = "BOOL"; \ + condition = "objectVehicle"; \ + defaultValue = false; \ + }; \ +} + +class CfgVehicles { class LandVehicle; class Tank: LandVehicle { class NewTurret; @@ -44,21 +57,118 @@ class cfgVehicles { ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint", "era_37_hitpoint", "era_38_hitpoint", "era_39_hitpoint", "era_40_hitpoint", "era_41_hitpoint", "era_42_hitpoint", "era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint"}}}; }; - class Heli_light_03_base_F; + class Helicopter; + class Helicopter_Base_F: Helicopter { + class Eventhandlers; + }; + class Heli_Light_03_base_F: Helicopter_Base_F {}; class RHS_UH1_Base: Heli_light_03_base_F { EGVAR(refuel,fuelCapacity) = 1447; }; - class Heli_Transport_01_base_F; + class RHS_UH1Y_base: RHS_UH1_Base {}; + class RHS_UH1Y_US_base: RHS_UH1Y_base {}; + class RHS_UH1Y: RHS_UH1Y_US_base { + EGVAR(fastroping,enabled) = 2; + EGVAR(fastroping,friesType) = "ACE_friesAnchorBar"; + EGVAR(fastroping,friesAttachmentPoint)[] = {0, 2.38, -0.135}; + EGVAR(fastroping,onCut) = QFUNC(onCut); + EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); + EGVAR(fastroping,ropeOrigins)[] = {"ropeOriginLeft", "ropeOriginRight"}; + + class UserActions; + class EventHandlers: EventHandlers { + class RHSUSF_EventHandlers; + }; + + EQUIP_FRIES_ATTRIBUTE; + }; + class RHS_UH1Y_FFAR: RHS_UH1Y { + class UserActions: UserActions { + class OpenCargoDoor; + class CloseCargoDoor: OpenCargoDoor { + condition = QUOTE([ARR_2(this,'doorRB')] call FUNC(canCloseDoor)); + }; + class CloseCargoLDoor: OpenCargoDoor { + condition = QUOTE([ARR_2(this,'doorLB')] call FUNC(canCloseDoor)); + }; + }; + + class EventHandlers: EventHandlers { + class RHSUSF_EventHandlers: RHSUSF_EventHandlers { + getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); + }; + }; + }; + + class Helicopter_Base_H: Helicopter_Base_F { + class Eventhandlers; + }; + class Heli_Transport_01_base_F: Helicopter_Base_H {}; class RHS_UH60_Base: Heli_Transport_01_base_F { EGVAR(refuel,fuelCapacity) = 1360; }; + class RHS_UH60M_base: RHS_UH60_Base {}; + class RHS_UH60M_US_base: RHS_UH60M_base {}; + class RHS_UH60M: RHS_UH60M_US_base { + EGVAR(fastroping,enabled) = 2; + EGVAR(fastroping,friesType) = "ACE_friesAnchorBar"; + EGVAR(fastroping,friesAttachmentPoint)[] = {0, 1.25, -0.65}; + EGVAR(fastroping,onCut) = QFUNC(onCut); + EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); + EGVAR(fastroping,ropeOrigins)[] = {"ropeOriginLeft", "ropeOriginRight"}; + + class UserActions { + class OpenCargoDoor; + class CloseCargoDoor: OpenCargoDoor { + condition = QUOTE([ARR_2(this,'doorRB')] call FUNC(canCloseDoor)); + }; + class CloseCargoLDoor: OpenCargoDoor { + condition = QUOTE([ARR_2(this,'doorLB')] call FUNC(canCloseDoor)); + }; + }; + + class EventHandlers: EventHandlers { + class RHSUSF_EventHandlers { + getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); + }; + }; + + EQUIP_FRIES_ATTRIBUTE; + }; + + class RHS_UH60M_MEV: RHS_UH60M { + EGVAR(fastroping,enabled) = 0; + class Attributes { + delete EGVAR(fastroping,equipFRIES); + }; + }; + + class RHS_UH60M_MEV2: RHS_UH60M_MEV { + EGVAR(fastroping,enabled) = 2; + EQUIP_FRIES_ATTRIBUTE; + }; + class Heli_Transport_02_base_F; class RHS_CH_47F_base: Heli_Transport_02_base_F { EGVAR(refuel,fuelCapacity) = 3914; }; + class RHS_CH_47F: RHS_CH_47F_base { + EGVAR(fastroping,enabled) = 1; + EGVAR(fastroping,ropeOrigins)[] = {{0.5, -7.15, -0.95}, {-0.5, -7.15, -0.95}}; + EGVAR(fastroping,onCut) = QFUNC(onCut); + EGVAR(fastroping,onPrepare) = QFUNC(onPrepare); + + class UserActions { + class OpenCargoDoor; + class CloseCargoDoor: OpenCargoDoor { + condition = QUOTE([ARR_2(this,'ramp_anim')] call FUNC(canCloseDoor)); + }; + }; + }; + class Heli_Attack_01_base_F; class RHS_AH1Z_base: Heli_Attack_01_base_F { EGVAR(refuel,fuelCapacity) = 1600; diff --git a/optionals/compat_rhs_usf3/XEH_PREP.hpp b/optionals/compat_rhs_usf3/XEH_PREP.hpp new file mode 100644 index 0000000000..821ee657be --- /dev/null +++ b/optionals/compat_rhs_usf3/XEH_PREP.hpp @@ -0,0 +1,3 @@ +PREP(canCloseDoor); +PREP(onCut); +PREP(onPrepare); diff --git a/optionals/compat_rhs_usf3/XEH_preInit.sqf b/optionals/compat_rhs_usf3/XEH_preInit.sqf new file mode 100644 index 0000000000..a7feade1c3 --- /dev/null +++ b/optionals/compat_rhs_usf3/XEH_preInit.sqf @@ -0,0 +1,7 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +ADDON = true; diff --git a/optionals/compat_rhs_usf3/XEH_preStart.sqf b/optionals/compat_rhs_usf3/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/optionals/compat_rhs_usf3/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index ce847e969e..ef173ad1c6 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -6,12 +6,13 @@ 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"}; + author[]={"Ruthberg", "GitHawk", "BaerMitUmlaut"}; VERSION_CONFIG; }; }; #include "CfgAmmo.hpp" +#include "CfgEventHandlers.hpp" #include "CfgMagazines.hpp" #include "CfgWeapons.hpp" #include "CfgVehicles.hpp" diff --git a/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf new file mode 100644 index 0000000000..bbe3ce6e9c --- /dev/null +++ b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf @@ -0,0 +1,30 @@ +/* + * Author: BaerMitUmlaut + * Checks if the door can be closed. + * + * Arguments: + * 0: Helicopter + * 1: Door + * + * Return Value: + * Door can be closed + * + * Example: + * [_vehicle, "DoorLB"] call ace_compat_rhs_usf3_fnc_canCloseDoor + * + * Public: No + */ + +#include "..\script_component.hpp" +params ["_vehicle", "_door"]; + +(_vehicle doorPhase _door > 0) && +{alive _vehicle} && +{!(_vehicle getVariable QEGVAR(fastroping,doorsLocked),false])} && +{ + if (_vehicle isKindOf "RHS_CH_47F") then { + ACE_player in [driver _vehicle, _vehicle turretUnit [3], _vehicle turretUnit [4]] + } else { + ACE_player in _vehicle + } +} diff --git a/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf b/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf new file mode 100644 index 0000000000..26177bd15a --- /dev/null +++ b/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf @@ -0,0 +1,36 @@ +/* + * Author: BaerMitUmlaut + * Function for closing doors and retracting the hooks for RHS USF helos. + * + * Arguments: + * 0: Helicopter + * + * Return Value: + * Amount of time to wait before cutting ropes + * + * Example: + * [_vehicle] call ace_compat_rhs_usf3_fnc_onCut + * + * Public: No + */ + +#include "..\script_component.hpp" +params ["_vehicle"]; + +_vehicle setVariable [QEGVAR(fastroping,doorsLocked), false, true]; + +private _fries = _vehicle getVariable [QEGVAR(fastroping,FRIES), objNull]; +if !(isNull _fries) then { + _fries animate ["extendHookRight", 0]; + _fries animate ["extendHookLeft", 0]; + [{ + _this animateDoor ["doorRB", 0]; + _this animateDoor ["doorLB", 0]; + }, _vehicle, 2] call EFUNC(common,waitAndExecute); + + 4 +} else { + _vehicle animateDoor ["ramp_anim", 0]; + + 2 +}; diff --git a/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf b/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf new file mode 100644 index 0000000000..25b244c810 --- /dev/null +++ b/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf @@ -0,0 +1,38 @@ +/* + * Author: BaerMitUmlaut + * Function for opening doors and extending the hook for most vanilla helos. + * + * Arguments: + * 0: Helicopter + * + * Return Value: + * Amount of time to wait before deploying ropes + * + * Example: + * [_vehicle] call ace_compat_rhs_usf3_fnc_onPrepare + * + * Public: No + */ + +#include "..\script_component.hpp" +params ["_vehicle"]; +private ["_fries", "_waitTime"]; + +_vehicle setVariable [QEGVAR(fastroping,doorsLocked), true, true]; + +_waitTime = 2; + +_vehicle animateDoor ["doorRB", 1]; +_vehicle animateDoor ["doorLB", 1]; +_vehicle animateDoor ["ramp_anim", 1]; + +_fries = _vehicle getVariable [QEGVAR(fastroping,FRIES), objNull]; +if !(isNull _fries) then { + [{ + _this animate ["extendHookRight", 1]; + _this animate ["extendHookLeft", 1]; + }, _fries, 2] call EFUNC(common,waitAndExecute); + _waitTime = 4; +}; + +_waitTime diff --git a/optionals/compat_rhs_usf3/script_component.hpp b/optionals/compat_rhs_usf3/script_component.hpp index c0a5bbf1f4..32aecef74e 100644 --- a/optionals/compat_rhs_usf3/script_component.hpp +++ b/optionals/compat_rhs_usf3/script_component.hpp @@ -1,4 +1,4 @@ -#define COMPONENT rhsusf_c_weapons_comp +#define COMPONENT compat_rhs_usf3 #include "\z\ace\addons\main\script_mod.hpp" From 46367c003c3f94c218bb05922fb98d7dbe079263 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sun, 6 Mar 2016 18:19:19 +0100 Subject: [PATCH 117/337] Fixed EH parameters, prevent wrong fastroping option due to inherition --- optionals/compat_rhs_afrf3/CfgVehicles.hpp | 7 +++++-- optionals/compat_rhs_usf3/CfgVehicles.hpp | 5 ++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp index 5402a2faf1..87d8673cd8 100644 --- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -208,6 +208,7 @@ class CfgVehicles { class Heli_Light_02_base_F: Helicopter_Base_H {}; class RHS_Mi8_base : Heli_Light_02_base_F { EGVAR(refuel,fuelCapacity) = 3700; + EGVAR(fastroping,enabled) = 0; class EventHandlers: EventHandlers { class RHS_EventHandlers; }; @@ -228,7 +229,7 @@ class CfgVehicles { class EventHandlers: EventHandlers { class RHS_EventHandlers: RHS_EventHandlers { - getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); + getOut = QUOTE(if !((_this select 0) getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); }; }; }; @@ -250,7 +251,7 @@ class CfgVehicles { class EventHandlers: EventHandlers { class RHS_EventHandlers: RHS_EventHandlers { - getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); + getOut = QUOTE(if !((_this select 0) getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_mi8_doors}); }; }; }; @@ -258,10 +259,12 @@ class CfgVehicles { class Heli_Attack_02_base_F; class RHS_Ka52_base : Heli_Attack_02_base_F { EGVAR(refuel,fuelCapacity) = 1870; + EGVAR(fastroping,enabled) = 0; }; class RHS_Mi24_base : Heli_Attack_02_base_F { EGVAR(refuel,fuelCapacity) = 1851; + EGVAR(fastroping,enabled) = 0; }; class rhs_t80b : rhs_tank_base { diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 82bd23d5a2..2d3b28fbae 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -96,7 +96,7 @@ class CfgVehicles { class EventHandlers: EventHandlers { class RHSUSF_EventHandlers: RHSUSF_EventHandlers { - getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); + getOut = QUOTE(if !((_this select 0) getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); }; }; }; @@ -128,10 +128,9 @@ class CfgVehicles { condition = QUOTE([ARR_2(this,'doorLB')] call FUNC(canCloseDoor)); }; }; - class EventHandlers: EventHandlers { class RHSUSF_EventHandlers { - getOut = QUOTE(if !(_this getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); + getOut = QUOTE(if !((_this select 0) getVariable [ARR_2(QUOTE(QEGVAR(fastroping,doorsLocked)),false)]) then {_this call rhs_fnc_uh60_doors}); }; }; From 45383a0c1d39e2ac46a9bbe3f68600be2accac2a Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 7 Mar 2016 18:42:43 +0100 Subject: [PATCH 118/337] Fixed missing bracket --- optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf index bbe3ce6e9c..909875cc15 100644 --- a/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf +++ b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf @@ -20,7 +20,7 @@ params ["_vehicle", "_door"]; (_vehicle doorPhase _door > 0) && {alive _vehicle} && -{!(_vehicle getVariable QEGVAR(fastroping,doorsLocked),false])} && +{!(_vehicle getVariable [QEGVAR(fastroping,doorsLocked),false])} && { if (_vehicle isKindOf "RHS_CH_47F") then { ACE_player in [driver _vehicle, _vehicle turretUnit [3], _vehicle turretUnit [4]] From 8c867e5e55bd9e7f65305d99845cbf5406d21cf6 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 7 Mar 2016 20:15:55 +0100 Subject: [PATCH 119/337] Standardised script_component inclusion --- optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf | 2 +- optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf | 2 +- optionals/compat_rhs_afrf3/functions/script_component.hpp | 1 + optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf | 2 +- optionals/compat_rhs_usf3/functions/fnc_onCut.sqf | 2 +- optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf | 2 +- optionals/compat_rhs_usf3/functions/script_component.hpp | 1 + 7 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 optionals/compat_rhs_afrf3/functions/script_component.hpp create mode 100644 optionals/compat_rhs_usf3/functions/script_component.hpp diff --git a/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf b/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf index ef2efd3a92..6a249a55c4 100644 --- a/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf +++ b/optionals/compat_rhs_afrf3/functions/fnc_onCut.sqf @@ -14,7 +14,7 @@ * Public: No */ -#include "..\script_component.hpp" +#include "script_component.hpp" params ["_vehicle"]; _vehicle setVariable [QEGVAR(fastroping,doorsLocked), false, true]; diff --git a/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf b/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf index 1c2b82bef8..8a9dc9471e 100644 --- a/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf +++ b/optionals/compat_rhs_afrf3/functions/fnc_onPrepare.sqf @@ -14,7 +14,7 @@ * Public: No */ -#include "..\script_component.hpp" +#include "script_component.hpp" params ["_vehicle"]; _vehicle setVariable [QEGVAR(fastroping,doorsLocked), true, true]; diff --git a/optionals/compat_rhs_afrf3/functions/script_component.hpp b/optionals/compat_rhs_afrf3/functions/script_component.hpp new file mode 100644 index 0000000000..afabd202be --- /dev/null +++ b/optionals/compat_rhs_afrf3/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\compat_rhs_afrf3\script_component.hpp" diff --git a/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf index 909875cc15..61269519ed 100644 --- a/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf +++ b/optionals/compat_rhs_usf3/functions/fnc_canCloseDoor.sqf @@ -15,7 +15,7 @@ * Public: No */ -#include "..\script_component.hpp" +#include "script_component.hpp" params ["_vehicle", "_door"]; (_vehicle doorPhase _door > 0) && diff --git a/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf b/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf index 26177bd15a..3663a10bd5 100644 --- a/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf +++ b/optionals/compat_rhs_usf3/functions/fnc_onCut.sqf @@ -14,7 +14,7 @@ * Public: No */ -#include "..\script_component.hpp" +#include "script_component.hpp" params ["_vehicle"]; _vehicle setVariable [QEGVAR(fastroping,doorsLocked), false, true]; diff --git a/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf b/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf index 25b244c810..3e655a0aca 100644 --- a/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf +++ b/optionals/compat_rhs_usf3/functions/fnc_onPrepare.sqf @@ -14,7 +14,7 @@ * Public: No */ -#include "..\script_component.hpp" +#include "script_component.hpp" params ["_vehicle"]; private ["_fries", "_waitTime"]; diff --git a/optionals/compat_rhs_usf3/functions/script_component.hpp b/optionals/compat_rhs_usf3/functions/script_component.hpp new file mode 100644 index 0000000000..c2cdf03c81 --- /dev/null +++ b/optionals/compat_rhs_usf3/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\compat_rhs_usf3\script_component.hpp" From 35857f45235cac8199c742e56ca93a761f774a7f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 7 Mar 2016 18:27:12 +0100 Subject: [PATCH 120/337] Cleanup canPrepareFRIES --- addons/fastroping/functions/fnc_canPrepareFRIES.sqf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/fastroping/functions/fnc_canPrepareFRIES.sqf b/addons/fastroping/functions/fnc_canPrepareFRIES.sqf index ef33a4c7ff..67e2165c3f 100644 --- a/addons/fastroping/functions/fnc_canPrepareFRIES.sqf +++ b/addons/fastroping/functions/fnc_canPrepareFRIES.sqf @@ -19,7 +19,6 @@ params ["_vehicle"]; private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; -(isNumber (_config >> QGVAR(enabled)) && -{(getNumber (_config >> QGVAR(enabled)) == 1) || {!(isNull (_vehicle getVariable [QGVAR(FRIES), objNull]))}} && +((getNumber (_config >> QGVAR(enabled)) == 1) || {!(isNull (_vehicle getVariable [QGVAR(FRIES), objNull]))}) && {(_vehicle getVariable [QGVAR(deploymentStage), 0]) == 0} && -{isText (_config >> QGVAR(onPrepare))}) +{getText (_config >> QGVAR(onPrepare)) != ""} From e605ede04a501e99b1f887b93e76cb6257c06350 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 8 Mar 2016 01:19:32 +0100 Subject: [PATCH 121/337] execute addActionEvents in unscheduled env --- addons/common/functions/fnc_addActionEventHandler.sqf | 2 +- addons/common/functions/fnc_addActionMenuEventHandler.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_addActionEventHandler.sqf b/addons/common/functions/fnc_addActionEventHandler.sqf index fe641010e4..56d2de16db 100644 --- a/addons/common/functions/fnc_addActionEventHandler.sqf +++ b/addons/common/functions/fnc_addActionEventHandler.sqf @@ -45,7 +45,7 @@ if (_actionID == -1) then { private _addAction = call compile format [ "[ '', - {if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)}, + {[{if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)}, _this] call CBA_fnc_directCall}, nil, -1, false, diff --git a/addons/common/functions/fnc_addActionMenuEventHandler.sqf b/addons/common/functions/fnc_addActionMenuEventHandler.sqf index e68507ae7b..c86cf45f17 100644 --- a/addons/common/functions/fnc_addActionMenuEventHandler.sqf +++ b/addons/common/functions/fnc_addActionMenuEventHandler.sqf @@ -52,7 +52,7 @@ _actionIDs pushBack _id; private _addAction = call compile format [ "[ '%2', - {if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}}, + {[{if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}}, _this] call CBA_fnc_directCall}, nil, %4, false, From b5e95f394501d8ed6eccafdda36f2dc0233f206e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Mar 2016 01:17:40 -0600 Subject: [PATCH 122/337] Add some names/descriptions to settings configs --- addons/advanced_ballistics/ACE_Settings.hpp | 11 ++++ addons/explosives/ACE_Settings.hpp | 4 ++ addons/interaction/ACE_Settings.hpp | 2 + addons/medical/ACE_Settings.hpp | 60 ++++++++++++++++++++- addons/microdagr/ACE_Settings.hpp | 4 +- addons/mk6mortar/ACE_Settings.hpp | 8 +++ addons/rearm/ACE_Settings.hpp | 1 + addons/refuel/ACE_Settings.hpp | 1 + addons/respawn/ACE_Settings.hpp | 4 ++ addons/spectator/ACE_Settings.hpp | 8 +++ addons/switchunits/ACE_Settings.hpp | 12 +++++ addons/vehiclelock/ACE_Settings.hpp | 10 +++- addons/viewdistance/ACE_Settings.hpp | 6 +++ addons/zeus/ACE_Settings.hpp | 10 ++++ 14 files changed, 136 insertions(+), 5 deletions(-) diff --git a/addons/advanced_ballistics/ACE_Settings.hpp b/addons/advanced_ballistics/ACE_Settings.hpp index d88a9b1148..9815cc8491 100644 --- a/addons/advanced_ballistics/ACE_Settings.hpp +++ b/addons/advanced_ballistics/ACE_Settings.hpp @@ -1,29 +1,34 @@ class ACE_Settings { class GVAR(enabled) { + category = CSTRING(DisplayName); displayName = CSTRING(enabled_DisplayName); description = CSTRING(enabled_Description); typeName = "BOOL"; value = 0; }; class GVAR(simulateForSnipers) { + category = CSTRING(DisplayName); displayName = CSTRING(simulateForSnipers_DisplayName); description = CSTRING(simulateForSnipers_Description); typeName = "BOOL"; value = 1; }; class GVAR(simulateForGroupMembers) { + category = CSTRING(DisplayName); displayName = CSTRING(simulateForGroupMembers_DisplayName); description = CSTRING(simulateForGroupMembers_Description); typeName = "BOOL"; value = 0; }; class GVAR(simulateForEveryone) { + category = CSTRING(DisplayName); displayName = CSTRING(simulateForEveryone_DisplayName); description = CSTRING(simulateForEveryone_Description); typeName = "BOOL"; value = 0; }; class GVAR(disabledInFullAutoMode) { + category = CSTRING(DisplayName); displayName = CSTRING(disabledInFullAutoMod_DisplayName); description = CSTRING(disabledInFullAutoMod_Description); typeName = "BOOL"; @@ -31,6 +36,7 @@ class ACE_Settings { }; /* // TODO: We currently do not have firedEHs on vehicles class GVAR(vehicleGunnerEnabled) { + category = CSTRING(DisplayName); displayName = "Enabled For Vehicle Gunners"; description = "Enables advanced ballistics for vehicle gunners"; typeName = "BOOL"; @@ -38,30 +44,35 @@ class ACE_Settings { }; */ class GVAR(ammoTemperatureEnabled) { + category = CSTRING(DisplayName); displayName = CSTRING(ammoTemperatureEnabled_DisplayName); description = CSTRING(ammoTemperatureEnabled_Description); typeName = "BOOL"; value = 1; }; class GVAR(barrelLengthInfluenceEnabled) { + category = CSTRING(DisplayName); displayName = CSTRING(barrelLengthInfluenceEnabled_DisplayName); description = CSTRING(barrelLengthInfluenceEnabled_Description); typeName = "BOOL"; value = 1; }; class GVAR(bulletTraceEnabled) { + category = CSTRING(DisplayName); displayName = CSTRING(bulletTraceEnabled_DisplayName); description = CSTRING(bulletTraceEnabled_Description); typeName = "BOOL"; value = 1; }; class GVAR(simulationInterval) { + category = CSTRING(DisplayName); displayName = CSTRING(simulationInterval_DisplayName); description = CSTRING(simulationInterval_Description); typeName = "SCALAR"; value = 0.0; }; class GVAR(simulationRadius) { + category = CSTRING(DisplayName); displayName = CSTRING(simulationRadius_DisplayName); description = CSTRING(simulationRadius_Description); typeName = "SCALAR"; diff --git a/addons/explosives/ACE_Settings.hpp b/addons/explosives/ACE_Settings.hpp index ef6a723d5b..ceb6b62d25 100644 --- a/addons/explosives/ACE_Settings.hpp +++ b/addons/explosives/ACE_Settings.hpp @@ -1,9 +1,13 @@ class ACE_Settings { class GVAR(RequireSpecialist) { + displayName = CSTRING(RequireSpecialist_DisplayName); + description = CSTRING(RequireSpecialist_Description); value = 0; typeName = "BOOL"; }; class GVAR(PunishNonSpecialists) { + displayName = CSTRING(PunishNonSpecialists_DisplayName); + description = CSTRING(PunishNonSpecialists_Description); value = 1; typeName = "BOOL"; }; diff --git a/addons/interaction/ACE_Settings.hpp b/addons/interaction/ACE_Settings.hpp index a4e6dad42c..1cb8b747ef 100644 --- a/addons/interaction/ACE_Settings.hpp +++ b/addons/interaction/ACE_Settings.hpp @@ -1,6 +1,8 @@ class ACE_Settings { class GVAR(EnableTeamManagement) { + displayName = CSTRING(EnableTeamManagement_DisplayName); + description = CSTRING(EnableTeamManagement_Description); value = 1; typeName = "BOOL"; }; diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 429cb995a1..e029f86d00 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -1,12 +1,16 @@ class ACE_Settings { class GVAR(level) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_level_DisplayName); + description = CSTRING(MedicalSettings_level_Description); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Basic", "Advanced"}; }; class GVAR(medicSetting) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_medicSetting_DisplayName); + description = CSTRING(MedicalSettings_medicSetting_Description); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "Normal", "Advanced"}; @@ -20,6 +24,8 @@ class ACE_Settings { }; class GVAR(enableFor) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableFor_Description); value = 0; typeName = "SCALAR"; values[] = {"Players only", "Players and AI"}; @@ -31,11 +37,15 @@ class ACE_Settings { }; class GVAR(bleedingCoefficient) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_bleedingCoefficient_DisplayName); + description = CSTRING(MedicalSettings_bleedingCoefficient_Description); typeName = "SCALAR"; value = 1; }; class GVAR(painCoefficient) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_painCoefficient_DisplayName); + description = CSTRING(MedicalSettings_painCoefficient_Description); typeName = "SCALAR"; value = 1; }; @@ -51,58 +61,80 @@ class ACE_Settings { }; class GVAR(enableAdvancedWounds) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableAdvancedWounds_Description); typeName = "BOOL"; value = false; }; class GVAR(enableVehicleCrashes) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_DisplayName); + description = CSTRING(AdvancedMedicalSettings_enableVehicleCrashes_Description); typeName = "BOOL"; value = 1; }; class GVAR(enableScreams) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_enableScreams_DisplayName); + description = CSTRING(MedicalSettings_enableScreams_Description); typeName = "BOOL"; value = 1; }; class GVAR(playerDamageThreshold) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_playerDamageThreshold_DisplayName); + description = CSTRING(MedicalSettings_playerDamageThreshold_Description); typeName = "SCALAR"; value = 1; }; class GVAR(AIDamageThreshold) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_AIDamageThreshold_DisplayName); + description = CSTRING(MedicalSettings_AIDamageThreshold_Description); typeName = "SCALAR"; value = 1; }; class GVAR(enableUnconsciousnessAI) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_enableUnconsciousnessAI_DisplayName); + description = CSTRING(MedicalSettings_enableUnconsciousnessAI_Description); value = 1; typeName = "SCALAR"; values[] = {"Disabled", "50/50", "Enabled"}; }; class GVAR(remoteControlledAI) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_remoteControlledAI_DisplayName); + description = CSTRING(MedicalSettings_remoteControlledAI_Description); typeName = "BOOL"; value = 1; }; class GVAR(preventInstaDeath) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_preventInstaDeath_DisplayName); + description = CSTRING(MedicalSettings_preventInstaDeath_Description); typeName = "BOOL"; value = 0; }; class GVAR(enableRevive) { category = CSTRING(Category_Medical); + displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); + description = CSTRING(ReviveSettings_enableRevive_Description); typeName = "SCALAR"; value = 0; values[] = {"Disabled", "Players only", "Players and AI"}; }; class GVAR(maxReviveTime) { category = CSTRING(Category_Medical); + displayName = CSTRING(ReviveSettings_maxReviveTime_DisplayName); + description = CSTRING(ReviveSettings_maxReviveTime_Description); typeName = "SCALAR"; value = 120; }; class GVAR(amountOfReviveLives) { category = CSTRING(Category_Medical); + displayName = CSTRING(ReviveSettings_amountOfReviveLives_DisplayName); + description = CSTRING(ReviveSettings_amountOfReviveLives_Description); typeName = "SCALAR"; value = -1; }; @@ -113,6 +145,8 @@ class ACE_Settings { }; class GVAR(allowLitterCreation) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_allowLitterCreation_DisplayName); + description = CSTRING(MedicalSettings_allowLitterCreation_Description); typeName = "BOOL"; value = 1; }; @@ -130,53 +164,71 @@ class ACE_Settings { }; class GVAR(litterCleanUpDelay) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_litterCleanUpDelay_DisplayName); + description = CSTRING(MedicalSettings_litterCleanUpDelay_Description); typeName = "SCALAR"; value = 0; }; class GVAR(medicSetting_basicEpi) { category = CSTRING(Category_Medical); + displayName = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_DisplayName); + description = CSTRING(BasicMedicalSettings_medicSetting_basicEpi_Description); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(medicSetting_PAK) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_medicSetting_PAK_Description); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(medicSetting_SurgicalKit) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_medicSetting_SurgicalKit_Description); typeName = "SCALAR"; value = 1; values[] = {"Anyone", "Medics only", "Doctors only"}; }; class GVAR(consumeItem_PAK) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_consumeItem_PAK_Description); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(consumeItem_SurgicalKit) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_consumeItem_SurgicalKit_Description); typeName = "SCALAR"; value = 0; values[] = {"No", "Yes"}; }; class GVAR(useLocation_basicEpi) { category = CSTRING(Category_Medical); + displayName = CSTRING(BasicMedicalSettings_useLocation_basicEpi_DisplayName); + description = CSTRING(BasicMedicalSettings_useLocation_basicEpi_Description); typeName = "SCALAR"; value = 0; values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; }; class GVAR(useLocation_PAK) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_useLocation_PAK_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useLocation_PAK_Description); typeName = "SCALAR"; value = 3; values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; }; class GVAR(useLocation_SurgicalKit) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName); + description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description); typeName = "SCALAR"; value = 2; values[] = {CSTRING(AdvancedMedicalSettings_anywhere), CSTRING(AdvancedMedicalSettings_vehicle), CSTRING(AdvancedMedicalSettings_facility), CSTRING(AdvancedMedicalSettings_vehicleAndFacility), ECSTRING(common,Disabled)}; @@ -199,17 +251,23 @@ class ACE_Settings { }; class GVAR(keepLocalSettingsSynced) { category = CSTRING(Category_Medical); + displayName = CSTRING(MedicalSettings_keepLocalSettingsSynced_DisplayName); + description = CSTRING(MedicalSettings_keepLocalSettingsSynced_Description); typeName = "BOOL"; value = 1; }; class GVAR(healHitPointAfterAdvBandage) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); + description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); displayName = CSTRING(healHitPointAfterAdvBandage); typeName = "BOOL"; value = 0; }; class GVAR(painIsOnlySuppressed) { category = CSTRING(Category_Medical); + displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName); + description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); displayName = CSTRING(painIsOnlySuppressed); typeName = "BOOL"; value = 1; @@ -232,7 +290,6 @@ class ACE_Settings { typeName = "BOOL"; value = 0; }; - class GVAR(menuTypeStyle) { category = CSTRING(Category_Medical); displayName = CSTRING(menuTypeDisplay); @@ -242,7 +299,6 @@ class ACE_Settings { values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"}; isClientSettable = 1; }; - class GVAR(delayUnconCaptive) { category = CSTRING(Category_Medical); displayName = CSTRING(MedicalSettings_delayUnconCaptive_DisplayName); diff --git a/addons/microdagr/ACE_Settings.hpp b/addons/microdagr/ACE_Settings.hpp index db175e7303..4cf83794dd 100644 --- a/addons/microdagr/ACE_Settings.hpp +++ b/addons/microdagr/ACE_Settings.hpp @@ -1,7 +1,9 @@ class ACE_Settings { class GVAR(MapDataAvailable) { + displayName = CSTRING(MapDataAvailable_DisplayName); + description = CSTRING(MapDataAvailable_Description); value = 2; typeName = "SCALAR"; isClientSettable = 0; }; -}; \ No newline at end of file +}; diff --git a/addons/mk6mortar/ACE_Settings.hpp b/addons/mk6mortar/ACE_Settings.hpp index 6d1eebf942..cd7d4e64cb 100644 --- a/addons/mk6mortar/ACE_Settings.hpp +++ b/addons/mk6mortar/ACE_Settings.hpp @@ -1,21 +1,29 @@ class ACE_Settings { //These settings effect gameplay difficutly: defaults will leave the mortar the same as vanilla class GVAR(airResistanceEnabled) { + displayName = CSTRING(airResistanceEnabled_DisplayName); + description = CSTRING(airResistanceEnabled_Description); value = 0; typeName = "BOOL"; isClientSetable = 0; }; class GVAR(allowComputerRangefinder) { + displayName = CSTRING(allowComputerRangefinder_DisplayName); + description = CSTRING(allowComputerRangefinder_Description); value = 1; typeName = "BOOL"; isClientSetable = 0; }; class GVAR(allowCompass) { + displayName = CSTRING(allowCompass_DisplayName); + description = CSTRING(allowCompass_Description); value = 1; typeName = "BOOL"; isClientSetable = 0; }; class GVAR(useAmmoHandling) { + displayName = CSTRING(useAmmoHandling_DisplayName); + description = CSTRING(useAmmoHandling_Description); value = 0; typeName = "BOOL"; isClientSetable = 0; diff --git a/addons/rearm/ACE_Settings.hpp b/addons/rearm/ACE_Settings.hpp index f4d6562807..798bbd7650 100644 --- a/addons/rearm/ACE_Settings.hpp +++ b/addons/rearm/ACE_Settings.hpp @@ -1,5 +1,6 @@ class ACE_Settings { class GVAR(level) { + category = ECSTRING(OptionsMenu,CategoryLogistics); displayName = CSTRING(RearmSettings_level_DisplayName); description = CSTRING(RearmSettings_level_Description); value = 0; diff --git a/addons/refuel/ACE_Settings.hpp b/addons/refuel/ACE_Settings.hpp index 0ae0accaad..b38a880641 100644 --- a/addons/refuel/ACE_Settings.hpp +++ b/addons/refuel/ACE_Settings.hpp @@ -1,5 +1,6 @@ class ACE_Settings { class GVAR(rate) { + category = ECSTRING(OptionsMenu,CategoryLogistics); displayName = CSTRING(RefuelSettings_speed_DisplayName); description = CSTRING(RefuelSettings_speed_Description); value = 1; diff --git a/addons/respawn/ACE_Settings.hpp b/addons/respawn/ACE_Settings.hpp index f704d25412..86083d6d07 100644 --- a/addons/respawn/ACE_Settings.hpp +++ b/addons/respawn/ACE_Settings.hpp @@ -1,10 +1,14 @@ class ACE_Settings { class GVAR(SavePreDeathGear) { + displayName = CSTRING(SavePreDeathGear_DisplayName); + description = CSTRING(SavePreDeathGear_Description); value = 0; typeName = "BOOL"; }; class GVAR(RemoveDeadBodiesDisconnected) { + displayName = CSTRING(RemoveDeadBodiesDisconnected_DisplayName); + description = CSTRING(RemoveDeadBodiesDisconnected_Description); value = 1; typeName = "BOOL"; }; diff --git a/addons/spectator/ACE_Settings.hpp b/addons/spectator/ACE_Settings.hpp index 78402cff23..31e4ea3fd0 100644 --- a/addons/spectator/ACE_Settings.hpp +++ b/addons/spectator/ACE_Settings.hpp @@ -1,20 +1,28 @@ class ACE_Settings { class GVAR(filterUnits) { + displayName = CSTRING(units_DisplayName); + description = CSTRING(units_Description); typeName = "SCALAR"; value = 2; values[] = {CSTRING(units_none), CSTRING(units_players), CSTRING(units_playable), CSTRING(units_all)}; }; class GVAR(filterSides) { + displayName = CSTRING(sides_DisplayName); + description = CSTRING(sides_Description); typeName = "SCALAR"; value = 0; values[] = {CSTRING(sides_player), CSTRING(sides_friendly), CSTRING(sides_hostile), CSTRING(sides_all)}; }; class GVAR(restrictModes) { + displayName = CSTRING(modes_DisplayName); + description = CSTRING(modes_Description); typeName = "SCALAR"; value = 0; values[] = {CSTRING(modes_all), CSTRING(modes_unit), CSTRING(modes_free), CSTRING(modes_internal), CSTRING(modes_external)}; }; class GVAR(restrictVisions) { + displayName = CSTRING(visions_DisplayName); + description = CSTRING(visions_Description); typeName = "SCALAR"; value = 0; values[] = {CSTRING(modes_all), CSTRING(visions_nv), CSTRING(visions_ti), "$STR_Special_None"}; diff --git a/addons/switchunits/ACE_Settings.hpp b/addons/switchunits/ACE_Settings.hpp index 06c1ff274c..fe15e63e87 100644 --- a/addons/switchunits/ACE_Settings.hpp +++ b/addons/switchunits/ACE_Settings.hpp @@ -4,26 +4,38 @@ class ACE_Settings { typeName = "BOOL"; }; class GVAR(SwitchToWest) { + displayName = CSTRING(SwitchToWest_DisplayName); + description = CSTRING(SwitchToWest_Description); value = 0; typeName = "BOOL"; }; class GVAR(SwitchToEast) { + displayName = CSTRING(SwitchToEast_DisplayName); + description = CSTRING(SwitchToEast_Description); value = 0; typeName = "BOOL"; }; class GVAR(SwitchToIndependent) { + displayName = CSTRING(SwitchToIndependent_DisplayName); + description = CSTRING(SwitchToIndependent_Description); value = 0; typeName = "BOOL"; }; class GVAR(SwitchToCivilian) { + displayName = CSTRING(SwitchToCivilian_DisplayName); + description = CSTRING(SwitchToCivilian_Description); value = 0; typeName = "BOOL"; }; class GVAR(EnableSafeZone) { + displayName = CSTRING(EnableSafeZone_DisplayName); + description = CSTRING(EnableSafeZone_Description); value = 1; typeName = "BOOL"; }; class GVAR(SafeZoneRadius) { + displayName = CSTRING(SafeZoneRadius_DisplayName); + description = CSTRING(SafeZoneRadius_Description); value = 100; typeName = "SCALAR"; }; diff --git a/addons/vehiclelock/ACE_Settings.hpp b/addons/vehiclelock/ACE_Settings.hpp index 9eac505db2..fabc8b94ad 100644 --- a/addons/vehiclelock/ACE_Settings.hpp +++ b/addons/vehiclelock/ACE_Settings.hpp @@ -1,14 +1,20 @@ class ACE_Settings { class GVAR(DefaultLockpickStrength) { + displayName = CSTRING(DefaultLockpickStrength_DisplayName); + description = CSTRING(DefaultLockpickStrength_Description); value = 10; typeName = "SCALAR"; }; class GVAR(LockVehicleInventory) { + displayName = CSTRING(LockVehicleInventory_DisplayName); + description = CSTRING(LockVehicleInventory_Description); value = 0; typeName = "BOOL"; - }; + }; class GVAR(VehicleStartingLockState) { + displayName = CSTRING(VehicleStartingLockState_DisplayName); + description = CSTRING(VehicleStartingLockState_Description); value = -1; typeName = "SCALAR"; }; -}; \ No newline at end of file +}; diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index 1499626b7f..356c7d86f2 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -1,11 +1,13 @@ class ACE_Settings { class GVAR(enabled) { + category = CSTRING(Module_DisplayName); typeName = "BOOL"; value = 1; displayName = CSTRING(enabled_DisplayName); description = CSTRING(enabled_Description); }; class GVAR(viewDistanceOnFoot) { + category = CSTRING(Module_DisplayName); typeName = "SCALAR"; isClientSettable = 1; value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). @@ -14,6 +16,7 @@ class ACE_Settings { description = CSTRING(onFoot_Description); }; class GVAR(viewDistanceLandVehicle) { + category = CSTRING(Module_DisplayName); typeName = "SCALAR"; isClientSettable = 1; value = 0; // index, NOT value @@ -22,6 +25,7 @@ class ACE_Settings { description = CSTRING(landVehicle_Description); }; class GVAR(viewDistanceAirVehicle) { + category = CSTRING(Module_DisplayName); typeName = "SCALAR"; isClientSettable = 1; value = 0; // index, NOT value @@ -30,12 +34,14 @@ class ACE_Settings { description = CSTRING(airVehicle_Description); }; class GVAR(limitViewDistance) { + category = CSTRING(Module_DisplayName); typeName = "SCALAR"; value = 10000; // Value, NOT index. 10000 is the maximum in A3 displayName = CSTRING(limit_DisplayName); description = CSTRING(limit_setting); }; class GVAR(objectViewDistanceCoeff) { + category = CSTRING(Module_DisplayName); typeName = "SCALAR"; isClientSettable = 1; value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 6488a23e4e..6357992cf6 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -1,21 +1,31 @@ class ACE_Settings { class GVAR(zeusAscension) { + displayName = CSTRING(ascension_DisplayName); + description = CSTRING(ascension_Description); typeName = "BOOL"; value = 0; }; class GVAR(zeusBird) { + displayName = CSTRING(bird_DisplayName); + description = CSTRING(bird_Description); typeName = "BOOL"; value = 0; }; class GVAR(remoteWind) { + displayName = CSTRING(remoteWind_DisplayName); + description = CSTRING(remoteWind_Description); typeName = "BOOL"; value = 0; }; class GVAR(radioOrdnance) { + displayName = CSTRING(radioOrdnance_DisplayName); + description = CSTRING(radioOrdnance_Description); typeName = "BOOL"; value = 0; }; class GVAR(revealMines) { + displayName = CSTRING(revealMines_DisplayName); + description = CSTRING(revealMines_Description); typeName = "SCALAR"; value = 0; values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(revealMines_partial), CSTRING(revealMines_full)}; From 3232654e13dcc76472b55f4f9e49a5c9d62440dc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Mar 2016 11:02:49 -0600 Subject: [PATCH 123/337] Close #3565 -Fix spelling of local var _woundEffectiveness --- .../functions/fnc_treatmentAdvanced_bandageLocal.sqf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index 5c02ecc0cb..5cfe73ab8d 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -15,7 +15,7 @@ #include "script_component.hpp" -private ["_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectivenss", "_mostEffectiveInjury", "_impact", "_exit", "_classID", "_effectivenessFound", "_className", "_hitPoints", "_hitSelections", "_point", "_woundTreatmentConfig"]; +private ["_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectiveness", "_mostEffectiveInjury", "_impact", "_exit", "_classID", "_effectivenessFound", "_className", "_hitPoints", "_hitSelections", "_point", "_woundTreatmentConfig"]; params ["_target", "_bandage", "_selectionName", ["_specificClass", -1]]; // Ensure it is a valid bodypart @@ -44,7 +44,7 @@ _exit = false; TRACE_2("OPENWOUND: ", _target, _x); // Only parse injuries that are for the selected bodypart. if (_partX == _part) then { - _woundEffectivenss = _effectiveness; + _woundEffectiveness = _effectiveness; // Select the classname from the wound classname storage _className = GVAR(woundClassNames) select _classID; @@ -54,7 +54,7 @@ _exit = false; // Collect the effectiveness from the used bandage for this wound type _woundTreatmentConfig = (_config >> _className); if (isNumber (_woundTreatmentConfig >> "effectiveness")) then { - _woundEffectivenss = getNumber (_woundTreatmentConfig >> "effectiveness"); + _woundEffectiveness = getNumber (_woundTreatmentConfig >> "effectiveness"); }; } else { ACE_LOGWARNING_2("No config for wound type [%1] config base [%2]", _className, _config); @@ -62,15 +62,15 @@ _exit = false; TRACE_2("Wound classes: ", _specificClass, _classID); if (_specificClass == _classID) exitWith { - _effectivenessFound = _woundEffectivenss; + _effectivenessFound = _woundEffectiveness; _mostEffectiveSpot = _forEachIndex; _mostEffectiveInjury = _x; _exit = true; }; // Check if this is the currently most effective found. - if (_woundEffectivenss * ((_x select 4) * (_x select 3)) > _effectivenessFound * ((_mostEffectiveInjury select 4) * (_mostEffectiveInjury select 3))) then { - _effectivenessFound = _woundEffectivenss; + if (_woundEffectiveness * ((_x select 4) * (_x select 3)) > _effectivenessFound * ((_mostEffectiveInjury select 4) * (_mostEffectiveInjury select 3))) then { + _effectivenessFound = _woundEffectiveness; _mostEffectiveSpot = _forEachIndex; _mostEffectiveInjury = _x; }; From 64fe944b0fdbf7d7db271a0ea488fb1f6e347b6a Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:12:01 +0100 Subject: [PATCH 124/337] 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 6660470ba8..8a6b4d2ce1 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 a7feade1c3..4a5638fc03 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 fe0f07709a..8327b09e72 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 21910f0042..9e001d7d9c 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 0000000000..f09fe061f1 --- /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 c1bb131db5..71fbfdf945 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 125/337] 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 23fa19af11..47fb36cb14 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 9e001d7d9c..2ef88d5868 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 f09fe061f1..d2ec34d7ba 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 71fbfdf945..92cc981065 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 15f0b731b6..14392f5af2 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 126/337] 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 d2ec34d7ba..b019c4c081 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 1a77b0fcd48c2daf83fc55899152aa72ae39d071 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Mar 2016 11:43:35 -0600 Subject: [PATCH 127/337] Disable drag and carry for StaticCannon #3528 --- addons/dragging/CfgVehicles.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index dab8c1e842..ac0ca8c5dd 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -14,6 +14,11 @@ class CfgVehicles { GVAR(dragDirection) = 0; }; + class StaticCannon: StaticWeapon { + GVAR(canCarry) = 0; + GVAR(canDrag) = 0; + }; + //remove actions from Taru Pods class Pod_Heli_Transport_04_base_F: StaticWeapon { GVAR(canCarry) = 0; From 70100825cf23de1ca2d0ef9ffb4528b420fa1994 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 8 Mar 2016 18:49:19 +0100 Subject: [PATCH 128/337] 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 47fb36cb14..97cc3e026b 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 94adcf4ccbf2842061b2d94829db74ec546dfe40 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Mar 2016 13:17:20 -0600 Subject: [PATCH 129/337] MicroDagr Scalar Values --- addons/microdagr/ACE_Settings.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/microdagr/ACE_Settings.hpp b/addons/microdagr/ACE_Settings.hpp index 4cf83794dd..637584178c 100644 --- a/addons/microdagr/ACE_Settings.hpp +++ b/addons/microdagr/ACE_Settings.hpp @@ -5,5 +5,6 @@ class ACE_Settings { value = 2; typeName = "SCALAR"; isClientSettable = 0; + values[] = {CSTRING(MapFill_None), CSTRING(MapFill_OnlyRoads), CSTRING(MapFill_Full)}; }; }; From ad3a03a9c77c59c79bbcbd5be363950a4a4b0aa2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Mar 2016 13:52:34 -0600 Subject: [PATCH 130/337] versioning - Add warnings for missing compat PBOs --- addons/main/CfgDependencies.hpp | 23 +++++++++++++++++++++++ addons/main/config.cpp | 14 +------------- 2 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 addons/main/CfgDependencies.hpp diff --git a/addons/main/CfgDependencies.hpp b/addons/main/CfgDependencies.hpp new file mode 100644 index 0000000000..6dd58fb60b --- /dev/null +++ b/addons/main/CfgDependencies.hpp @@ -0,0 +1,23 @@ +class CfgSettings { + class CBA { + class Versioning { + class ACE { + class dependencies { + //ACE will hard exit if this is missing + CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "true"}; + + //Warnings for missing compat pbos + compat_r3f[] = {"ace_compat_r3f", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'R3F_Armes')"}; + compat_rh_acc[] = {"ace_compat_rh_acc", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_acc')"}; + compat_rh_de[] = {"ace_compat_rh_de", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_de_cfg')"}; + compat_rh_m4[] = {"ace_compat_rh_m4", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_m4_cfg')"}; + compat_rh_pdw[] = {"ace_compat_rh_pdw", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_PDW')"}; + 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')"}; + compat_rksl_pm_ii[] = {"ace_compat_rksl_pm_ii", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RKSL_PMII')"}; + compat_sma3_iansky[] = {"ace_compat_sma3_iansky", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'iansky_opt')"}; + }; + }; + }; + }; +}; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 5f34c6137d..3181df1dea 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -586,18 +586,6 @@ class CfgMods { }; }; +#include "CfgDependencies.hpp" #include "CfgModuleCategories.hpp" #include "CfgVehicleClasses.hpp" - -class CfgSettings { - class CBA { - class Versioning { - class ACE { - class dependencies { - CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "true"}; - }; - }; - }; - }; -}; - From 32c32b6cc556385d4854440b9f805e51e8ee30d3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 9 Mar 2016 18:58:46 +0100 Subject: [PATCH 131/337] 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 3e5c53d328..89ddc8d35d 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 1441d97217..ccd79684f5 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 8327b09e72..10f18f94f3 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 14392f5af2..e9051beeac 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 21932cb98e..42e7932411 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -64,6 +64,9 @@ Stance + + Stamina Bar + Vehicle Name From aad79eda853e01c698189829ffb19c84bdaf8316 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 12 Mar 2016 10:06:45 -0300 Subject: [PATCH 132/337] The dead shouldn't interact (it's not TWD) --- addons/common/XEH_postInit.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index b17ff292a4..8eeed526f5 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -444,6 +444,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { // Add various canInteractWith conditions ////////////////////////////////////////////////// +["isNotDead", { + params ["_unit", "_target"]; + alive _unit +}] call FUNC(addCanInteractWithCondition); + ["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition); ["isNotInside", { From fca8b51bb2376ebdc8f754d6fd6362e922ebdfda Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 12 Jan 2016 19:32:26 +0100 Subject: [PATCH 133/337] reset interaction menu time variables on save game load --- addons/interact_menu/XEH_preInit.sqf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 791402cd01..fae8843a4e 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -45,6 +45,13 @@ GVAR(expanded) = false; GVAR(startHoverTime) = ACE_diagTime; GVAR(expandedTime) = ACE_diagTime; + +// reset on mission load +addMissionEventHandler ["Loaded", { + GVAR(startHoverTime) = 0; + GVAR(expandedTime) = 0; +}]; + GVAR(iconCtrls) = []; GVAR(iconCount) = 0; From 61f1959109a97b150065a5515aa164ba63c851f5 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Sat, 12 Mar 2016 18:55:42 +0100 Subject: [PATCH 134/337] Fix morphine increasing viscosity Morphine should decrease viscosity instead of increase. Closes #3579 --- addons/medical/ACE_Medical_Treatments.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 47d78d23e1..14205fbd30 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -1366,7 +1366,7 @@ class ACE_Medical_Advanced { timeInSystem = 900; maxDose = 4; inCompatableMedication[] = {}; - viscosityChange = 10; + viscosityChange = -10; }; class Epinephrine { painReduce = 0; From 1985e7e20ae94e08b9c59cb7f79a40b6ea0f9397 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 12 Mar 2016 13:42:52 -0600 Subject: [PATCH 135/337] Fix versioning true when compiled --- addons/main/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 5f34c6137d..1326014f45 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -594,7 +594,7 @@ class CfgSettings { class Versioning { class ACE { class dependencies { - CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "true"}; + CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "(true)"}; }; }; }; From 32846014a1b72a115805c488ebe7fb9e2effde1a Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Mon, 14 Mar 2016 14:21:02 +0100 Subject: [PATCH 136/337] fix ammo handling init on dedicated --- addons/mk6mortar/XEH_postInit.sqf | 2 ++ .../fnc_handlePlayerVehicleChanged.sqf | 29 +++++++++---------- addons/mk6mortar/functions/fnc_mortarInit.sqf | 13 +++++---- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/addons/mk6mortar/XEH_postInit.sqf b/addons/mk6mortar/XEH_postInit.sqf index 5c82d55f50..9c098b8cdd 100644 --- a/addons/mk6mortar/XEH_postInit.sqf +++ b/addons/mk6mortar/XEH_postInit.sqf @@ -15,6 +15,8 @@ _static setMagazineTurretAmmo [_magazine, _ammoCount, [0]]; }] call EFUNC(common,addEventHandler); +["initMortar", {_this call FUNC(mortarInit);}] call EFUNC(common,addEventHandler); + if (!hasInterface) exitWith {}; ["playerVehicleChanged", {_this call FUNC(handlePlayerVehicleChanged);}] call EFUNC(common,addEventHandler); diff --git a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf index 02049289aa..2d921973d4 100644 --- a/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf +++ b/addons/mk6mortar/functions/fnc_handlePlayerVehicleChanged.sqf @@ -16,31 +16,30 @@ */ #include "script_component.hpp" -PARAMS_2(_player,_newVehicle); - -private["_tubeWeaponName" ,"_fireModes", "_lastFireMode"]; +params ["_player", "_newVehicle"]; if (isNull _newVehicle) exitWith {}; if (!(_newVehicle isKindOf "Mortar_01_base_F")) exitWith {}; // Run magazine handling initialization if enabled -if (!EGVAR(common,settingsInitFinished)) then { - EGVAR(common,runAtSettingsInitialized) pushBack [{ - if (GVAR(useAmmoHandling) && {!(_this getVariable [QGVAR(initialized),false]) && !(_this getVariable [QGVAR(exclude),false])}) then { - _this call FUNC(mortarInit); +if (!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVariable [QGVAR(exclude),false])) then { + // Make sure that mortar init is executed after settings init + [{ + params ["_mortar"]; + 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); + }, _mortar, 0.05] call EFUNC(common,waitAndExecute); }; - }, _newVehicle]; -} else { - if (GVAR(useAmmoHandling) && {!(_newVehicle getVariable [QGVAR(initialized),false]) && !(_newVehicle getVariable [QGVAR(exclude),false])}) then { - _newVehicle call FUNC(mortarInit); - }; + }, _newVehicle] call EFUNC(common,runAfterSettingsInit); }; -_tubeWeaponName = (weapons _newVehicle) select 0; -_fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes"); +private _tubeWeaponName = (weapons _newVehicle) select 0; +private _fireModes = getArray (configFile >> "CfgWeapons" >> _tubeWeaponName >> "modes"); //Restore last firemode: -_lastFireMode = _newVehicle getVariable [QGVAR(lastFireMode), -1]; +private _lastFireMode = _newVehicle getVariable [QGVAR(lastFireMode), -1]; if (_lastFireMode != -1) then { _player action ["SwitchWeapon", _newVehicle, _player, _lastFireMode]; }; diff --git a/addons/mk6mortar/functions/fnc_mortarInit.sqf b/addons/mk6mortar/functions/fnc_mortarInit.sqf index 7c74cb8249..68c9eab91e 100644 --- a/addons/mk6mortar/functions/fnc_mortarInit.sqf +++ b/addons/mk6mortar/functions/fnc_mortarInit.sqf @@ -18,27 +18,28 @@ params ["_mortar"]; if (_mortar getVariable [QGVAR(initialized),false] || _mortar getVariable [QGVAR(exclude),false]) exitWith {TRACE_1("Exit",_mortar)}; +if (!(_mortar turretLocal [0])) exitWith {TRACE_1("Exit - turret not local",_mortar)}; -// Remove all magazines +// Remove all magazines from turret if (count magazines _mortar > 0) then { { - [QGVAR(removeMagazine), [_mortar, _x]] call EFUNC(common,globalEvent); + _mortar removeMagazineTurret [_x,[0]]; } forEach magazines _mortar; }; -// Replace current weapon with ammo handling weapon +// Replace current turret weapon with ammo handling weapon private _currentWeapon = _mortar weaponsTurret [0] select 0; private _newWeapon = ""; -if (_currentWeapon == "mortar_82mm") then { +if (tolower _currentWeapon == "mortar_82mm") then { _newWeapon = "ace_mortar_82mm"; } else { _newWeapon = getText (configFile >> "CfgWeapons" >> _currentWeapon >> QGVAR(replaceWith)); }; if (_newWeapon != "") then { - _mortar removeWeaponGlobal _currentWeapon; - _mortar addWeaponGlobal _newWeapon; + _mortar removeWeaponTurret [_currentWeapon,[0]]; + _mortar addWeaponTurret [_newWeapon,[0]]; }; _mortar setVariable [QGVAR(initialized),true,true]; From 14183470bc65251a4ddf2461c1e80b7ff2c89010 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Mon, 14 Mar 2016 12:16:23 -0300 Subject: [PATCH 137/337] Revert "Improved rope glitchyness" This reverts commit c65656a016fc377eb03583dcc04d144ff1aa3141. --- addons/fastroping/XEH_postInit.sqf | 5 +++++ addons/fastroping/functions/fnc_cutRopes.sqf | 6 ++---- addons/fastroping/functions/fnc_deployRopes.sqf | 5 ++--- addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf | 1 - addons/fastroping/functions/fnc_fastRopeServerPFH.sqf | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/addons/fastroping/XEH_postInit.sqf b/addons/fastroping/XEH_postInit.sqf index ae88feaa76..873d1091e5 100644 --- a/addons/fastroping/XEH_postInit.sqf +++ b/addons/fastroping/XEH_postInit.sqf @@ -7,3 +7,8 @@ [QGVAR(startFastRope), { [FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); + +[QGVAR(ropeDetach), { + params ["_object", "_rope"]; + _object ropeDetach _rope; +}] call EFUNC(common,addEventHandler); diff --git a/addons/fastroping/functions/fnc_cutRopes.sqf b/addons/fastroping/functions/fnc_cutRopes.sqf index 71fe682f7e..88b02a70af 100644 --- a/addons/fastroping/functions/fnc_cutRopes.sqf +++ b/addons/fastroping/functions/fnc_cutRopes.sqf @@ -32,10 +32,8 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; }; }; - detach _dummy; - deleteVehicle _ropeTop; - deleteVehicle _hook; - [{{deleteVehicle _x} count _this}, [_ropeBottom, _dummy], 60] call EFUNC(common,waitAndExecute); + [QGVAR(ropeDetach), [_hook, _ropeTop]] call EFUNC(common,serverEvent); + [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy, _hook], 60] call EFUNC(common,waitAndExecute); } count _deployedRopes; _vehicle setVariable [QGVAR(deployedRopes), [], true]; diff --git a/addons/fastroping/functions/fnc_deployRopes.sqf b/addons/fastroping/functions/fnc_deployRopes.sqf index af79dd2cfe..c944b2c3cb 100644 --- a/addons/fastroping/functions/fnc_deployRopes.sqf +++ b/addons/fastroping/functions/fnc_deployRopes.sqf @@ -35,14 +35,13 @@ _hookAttachment = _vehicle getVariable [QGVAR(FRIES), _vehicle]; _origin = getPosATL _hook; - _dummy = createVehicle [QGVAR(helper), _origin, [], 0, "CAN_COLLIDE"]; + _dummy = createVehicle [QGVAR(helper), _origin vectorAdd [0, 0, -1], [], 0, "CAN_COLLIDE"]; _dummy allowDamage false; _dummy disableCollisionWith _vehicle; - _dummy attachTo [_hook, [0, 0, 0]]; _ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5]; _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 1]; - ropeUnwind [_ropeBottom, 30, 35, false]; + ropeUnwind [_ropeBottom, 30, 34.5, false]; _ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}]; _ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}]; diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 6a4e810ff5..d05c8bfdbc 100644 --- a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf @@ -26,7 +26,6 @@ if (vehicle _unit != _unit) exitWith {}; //Start fast roping if (animationState _unit != "ACE_FastRoping") exitWith { - detach _dummy; _unit disableCollisionWith _dummy; _unit attachTo [_dummy, [0, 0, -1.45]]; [_unit, "ACE_FastRoping", 2] call EFUNC(common,doAnimation); diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf index 627ed959bc..44f9fedd1a 100644 --- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf @@ -54,14 +54,14 @@ if (((getPos _unit select 2) < 0.2) || {ropeLength _ropeTop == 34.5} || {vectorM deleteVehicle _ropeBottom; _origin = getPosASL _hook; - _dummy attachTo [_hook, [0, 0, 0]]; + _dummy setPosASL (_origin vectorAdd [0, 0, -1]); //Restore original mass and center of mass _dummy setMass 40; _dummy setCenterOfMass [0.000143227,0.00105986,-0.246147]; _ropeTop = ropeCreate [_dummy, [0, 0, 0], _hook, [0, 0, 0], 0.5]; - _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 35]; + _ropeBottom = ropeCreate [_dummy, [0, 0, 0], 34.5]; _ropeTop addEventHandler ["RopeBreak", {[_this, "top"] call FUNC(onRopeBreak)}]; _ropeBottom addEventHandler ["RopeBreak", {[_this, "bottom"] call FUNC(onRopeBreak)}]; From 89924e927a53520c643402d5b73f09ce803623ad Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 14 Mar 2016 17:25:20 +0100 Subject: [PATCH 138/337] 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 e9051beeac..a7410a49b8 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 139/337] 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 ccd79684f5..24340db031 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 7fac3a4946..c55ffbc5c7 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 zcmV;o3rO^dP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002uNkl^9t6u{dZdFP)c0sznh!XtSv$Tkrm0)?hQD&WI)K>G-Ib$K%l(gOeh;BRAz zzavHk002O-g^;NL003y+14IP?06^;=u<9CI!Q0OK4ix|Z00000000000000000000 z006K9z?0vX0f@e>u9G6*%x8a$JugW)>)DU2fU-}Qu0+{Yb%2?J&`CW&FSDN_HY=N8 tiRqD*V0Qpsk|F{C^d3I|009600|4I#8k=$v3e^Ar002ovPDHLkV1l;Pfg1n- 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 72c9e9da39dd2bbb3e96070eae482e5f3468159c Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 16 Mar 2016 20:17:23 +0100 Subject: [PATCH 140/337] Replace usage of filter to select in tagging --- addons/tagging/functions/fnc_tagTestingThread.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/tagging/functions/fnc_tagTestingThread.sqf b/addons/tagging/functions/fnc_tagTestingThread.sqf index 18d14e2e4f..a904587f8a 100644 --- a/addons/tagging/functions/fnc_tagTestingThread.sqf +++ b/addons/tagging/functions/fnc_tagTestingThread.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" -_fnc_isLeaning = { +GVAR(tagsToTest) = GVAR(tagsToTest) select { params ["_tag", "_tagPosASL", "_vectorDirAndUp"]; _vectorDirAndUp params ["_v1", "_v2"]; @@ -34,7 +34,6 @@ _fnc_isLeaning = { }; true }; -GVAR(tagsToTest) = [GVAR(tagsToTest), _fnc_isLeaning] call EFUNC(common,filter); // If there's no more tag if (GVAR(tagsToTest) isEqualTo []) exitWith { From 485900dce8bba0bd80811e95cf300cb43f61c423 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Wed, 16 Mar 2016 22:59:28 +0100 Subject: [PATCH 141/337] increment patch version --- README.md | 2 +- addons/main/script_mod.hpp | 2 +- docs/README_DE.md | 2 +- docs/README_PL.md | 2 +- mod.cpp | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3de005ce29..3ead78c57f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index dd2cef0204..1f86448c94 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 5 -#define PATCHLVL 0 +#define PATCHLVL 1 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/docs/README_DE.md b/docs/README_DE.md index 0f9ca83536..95a7b3c406 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Fehlermeldungen diff --git a/docs/README_PL.md b/docs/README_PL.md index f8ff8683e5..87884e3a68 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -3,7 +3,7 @@

- ACE3 Wersja + ACE3 Wersja ACE3 Zagadnienia diff --git a/mod.cpp b/mod.cpp index b146f500b0..a0ee3b211e 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.5.0"; +name = "Advanced Combat Environment 3.5.1"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.5.0"; +description = "ACE3 - Version 3.5.1"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From 218d333738531a778d249a91afdc5ff74aeefaef Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 17 Mar 2016 11:56:20 -0500 Subject: [PATCH 142/337] Fix nametag error when rank is empty string --- addons/nametags/functions/fnc_drawNameTagIcon.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index c564e6e90f..95c3f5228b 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -36,7 +36,7 @@ _fnc_parameters = { _icon = format [QUOTE(PATHTOF(UI\soundwave%1.paa)), floor random 10]; _size = 1; } else { - if (_drawRank) then { + if (_drawRank && {rank _target != ""}) then { _icon = format["\A3\Ui_f\data\GUI\Cfg\Ranks\%1_gs.paa", toLower rank _target]; _size = 1; }; From b25ffdb54febee9698d10253ef8a4562588afc3f Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Fri, 18 Mar 2016 00:15:57 +0100 Subject: [PATCH 143/337] Fixed network race condition --- addons/fastroping/functions/fnc_fastRopeServerPFH.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf index 44f9fedd1a..ed78d43592 100644 --- a/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf +++ b/addons/fastroping/functions/fnc_fastRopeServerPFH.sqf @@ -25,7 +25,7 @@ private ["_vectorUp", "_vectorDir", "_origin"]; if (vehicle _unit != _unit) exitWith {}; //Start fast roping -if (animationState _unit != "ACE_FastRoping") exitWith { +if (getMass _dummy != 80) exitWith { //Fix for twitchyness _dummy setMass 80; _dummy setCenterOfMass [0, 0, -2]; @@ -38,7 +38,9 @@ if (animationState _unit != "ACE_FastRoping") exitWith { }; //Check if rope broke and unit is falling -if (isNull attachedTo _unit) exitWith { +//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 { [_pfhHandle] call CBA_fnc_removePerFrameHandler; }; From fc067822561c1b3f52d5fe008d98d724f81168f3 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Fri, 18 Mar 2016 00:16:31 +0100 Subject: [PATCH 144/337] Fixed broken ropeDetach --- addons/fastroping/XEH_postInit.sqf | 5 ----- addons/fastroping/functions/fnc_cutRopes.sqf | 7 +++++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/fastroping/XEH_postInit.sqf b/addons/fastroping/XEH_postInit.sqf index 873d1091e5..ae88feaa76 100644 --- a/addons/fastroping/XEH_postInit.sqf +++ b/addons/fastroping/XEH_postInit.sqf @@ -7,8 +7,3 @@ [QGVAR(startFastRope), { [FUNC(fastRopeServerPFH), 0, _this] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); - -[QGVAR(ropeDetach), { - params ["_object", "_rope"]; - _object ropeDetach _rope; -}] call EFUNC(common,addEventHandler); diff --git a/addons/fastroping/functions/fnc_cutRopes.sqf b/addons/fastroping/functions/fnc_cutRopes.sqf index 88b02a70af..dcabda56ba 100644 --- a/addons/fastroping/functions/fnc_cutRopes.sqf +++ b/addons/fastroping/functions/fnc_cutRopes.sqf @@ -32,8 +32,11 @@ _deployedRopes = _vehicle getVariable [QGVAR(deployedRopes), []]; }; }; - [QGVAR(ropeDetach), [_hook, _ropeTop]] call EFUNC(common,serverEvent); - [{{deleteVehicle _x} count _this}, [_ropeTop, _ropeBottom, _dummy, _hook], 60] call EFUNC(common,waitAndExecute); + //Destroy rope + //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); } count _deployedRopes; _vehicle setVariable [QGVAR(deployedRopes), [], true]; From 0fc7525cbd0e87ef2fbd388d0281a735242dbdcb Mon Sep 17 00:00:00 2001 From: bux578 Date: Fri, 18 Mar 2016 09:27:06 +0100 Subject: [PATCH 145/337] Update CONTRIBUTING.md --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8eb5664cf5..b8aae89b77 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -24,6 +24,6 @@ ACE2, AGM and CSE had a lot of features implemented or planned. All of them are Please refrain from making requests for any planned or existing features from either ACE2, AGM or CSE. Most of them are already being or have been considered for porting or a rewrite. ## Requesting a feature -In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/414). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier. +In order to avoid duplicates and keep the issue tracker organized, we have created a common issue for [ACE3 Feature requests](https://github.com/acemod/ACE3/issues/3594). Any and all relevant requests should be submitted there, where they will also get discussed and evaluated. Before adding a new one, make sure to check the previous entries from the thread and do a quick search for similar suggestions; please don't reiterate requests for features that had already been accepted for inclusion, or those which were disregarded earlier. Following their approval, feature requests may be moved by moderators to a separate issue for further discussion. From 8555f00889e54cc5c855375bd35cd78e97f59c62 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Fri, 18 Mar 2016 17:26:37 +0100 Subject: [PATCH 146/337] remove needless tolower from mortarinit --- addons/mk6mortar/functions/fnc_mortarInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mk6mortar/functions/fnc_mortarInit.sqf b/addons/mk6mortar/functions/fnc_mortarInit.sqf index 68c9eab91e..65d0ff74db 100644 --- a/addons/mk6mortar/functions/fnc_mortarInit.sqf +++ b/addons/mk6mortar/functions/fnc_mortarInit.sqf @@ -31,7 +31,7 @@ if (count magazines _mortar > 0) then { private _currentWeapon = _mortar weaponsTurret [0] select 0; private _newWeapon = ""; -if (tolower _currentWeapon == "mortar_82mm") then { +if (_currentWeapon == "mortar_82mm") then { _newWeapon = "ace_mortar_82mm"; } else { _newWeapon = getText (configFile >> "CfgWeapons" >> _currentWeapon >> QGVAR(replaceWith)); From a841839aa60af15b47f49c006ad199c9a60dc5e4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 19 Mar 2016 19:37:26 +0100 Subject: [PATCH 147/337] don't overwrite helicopter sub class self actions --- addons/fastroping/CfgVehicles.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/fastroping/CfgVehicles.hpp b/addons/fastroping/CfgVehicles.hpp index 14804d3526..a9f5ebfbad 100644 --- a/addons/fastroping/CfgVehicles.hpp +++ b/addons/fastroping/CfgVehicles.hpp @@ -35,8 +35,8 @@ class CfgVehicles { }; }; - class Helicopter; - class Helicopter_Base_F: Helicopter { + class Air; + class Helicopter: Air { class ACE_SelfActions { class ACE_prepareFRIES { displayName = CSTRING(Interaction_prepareFRIES); @@ -68,6 +68,8 @@ class CfgVehicles { }; }; }; + + class Helicopter_Base_F; class ACE_friesBase: Helicopter_Base_F { destrType = ""; class Turrets {}; From 5aeb19312ba77735f66b93b0f9d3972a1583d411 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 20 Mar 2016 17:09:03 +0100 Subject: [PATCH 148/337] fix script error in tagging --- addons/tagging/functions/fnc_tagTestingThread.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/tagging/functions/fnc_tagTestingThread.sqf b/addons/tagging/functions/fnc_tagTestingThread.sqf index a904587f8a..0e3bb8075d 100644 --- a/addons/tagging/functions/fnc_tagTestingThread.sqf +++ b/addons/tagging/functions/fnc_tagTestingThread.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" GVAR(tagsToTest) = GVAR(tagsToTest) select { - params ["_tag", "_tagPosASL", "_vectorDirAndUp"]; + _x params ["_tag", "_tagPosASL", "_vectorDirAndUp"]; _vectorDirAndUp params ["_v1", "_v2"]; From ec2920ed353631740cf1a8609805bf64f9da313a Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sun, 20 Mar 2016 22:24:30 -0300 Subject: [PATCH 149/337] Improve protractor accuracy. Close #3606 --- addons/advanced_ballistics/functions/fnc_displayProtractor.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf index 5ad6cb111e..8ff21e60cc 100644 --- a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf +++ b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf @@ -47,7 +47,7 @@ GVAR(Protractor) = true; __ctrl1 ctrlSetTextColor [1, 1, 1, 1]; __ctrl2 ctrlSetScale 1; - __ctrl2 ctrlSetPosition [SafeZoneX + 0.001, SafeZoneY + 0.001 - 0.0012 * (-58 max (asin((ACE_player weaponDirection currentWeapon ACE_player) select 2)) min 58), 0.2, 0.2 * 4/3]; + __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 ctrlSetTextColor [1, 1, 1, 1]; From d6e9890b1b612186692c10bb74c24217c9a258ce Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Mon, 21 Mar 2016 18:25:38 +0100 Subject: [PATCH 150/337] 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 81880a4265..3123e9270d 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 a9050b83bd..c0922b786c 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 e2f2b5b4fe..e1b14fa37c 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 0000000000..2e1942d6b8 --- /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 0000000000..4e33857637 --- /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 0000000000..25f9fc4150 --- /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 47f80014f8..8a1407d2d6 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; +_trench setVariable [QGVAR(placeData), [_basePos, _vecDirAndUp], true]; -// 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); - -// 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 48a768427f..b9a8bae52a 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 0000000000..1259d8bb9c --- /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 3bb65ab0a6..432308fa51 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 617a604457..44c628de69 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 151/337] 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 3123e9270d..68f4a7552a 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 c0922b786c..2e671acb85 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 8b172b2b9e..a7feade1c3 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 9dc5e29017..0cbed2d9b7 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 25f9fc4150..04a2377f21 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 8a1407d2d6..7c3be2d901 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 b9a8bae52a..35a6706d30 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 1259d8bb9c..dd51bbbae5 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 0000000000..49c1efdaae --- /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 152/337] 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 68f4a7552a..8e1eb41fd0 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 04a2377f21..223dc42df6 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 cdcde46a7da6e5a2ff61f5fe7a21fb38e6d178a9 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Tue, 22 Mar 2016 13:05:47 +0100 Subject: [PATCH 153/337] Fix double displayName in medical settings --- addons/medical/ACE_Settings.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index e029f86d00..a785c2cad5 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -260,7 +260,6 @@ class ACE_Settings { category = CSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName); description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description); - displayName = CSTRING(healHitPointAfterAdvBandage); typeName = "BOOL"; value = 0; }; @@ -268,7 +267,6 @@ class ACE_Settings { category = CSTRING(Category_Medical); displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName); description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description); - displayName = CSTRING(painIsOnlySuppressed); typeName = "BOOL"; value = 1; }; From 9b1b4a46fa8a3c00efa5cffa011c9bb2dd6ab427 Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Wed, 23 Mar 2016 17:17:16 +0100 Subject: [PATCH 154/337] 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 44c628de69..5af459f7f8 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 86ad2ab415e0e3bf30c7ea4331a7182ed80c3e2b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 24 Mar 2016 11:53:55 -0500 Subject: [PATCH 155/337] Only warn for weapon compat if AB is on --- addons/advanced_ballistics/XEH_postInit.sqf | 15 +++++++++++++++ addons/main/CfgDependencies.hpp | 11 ++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index a541d30ce8..246529299c 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -33,6 +33,21 @@ if (!hasInterface) exitWith {}; ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); ["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); + //Add warnings for missing compat PBOs (only if AB is on) + { + _x params ["_modPBO", "_compatPBO"]; + if ((isClass (configFile >> "CfgPatches" >> _modPBO)) && {!isClass (configFile >> "CfgPatches" >> _compatPBO)}) then { + ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO); + }; + } forEach [ + ["RH_acc","ace_compat_rh_acc"], + ["RH_de_cfg","ace_compat_rh_de"], + ["RH_m4_cfg","ace_compat_rh_m4"], + ["RH_PDW","ace_compat_rh_pdw"], + ["RKSL_PMII","ace_compat_rksl_pm_ii"], + ["iansky_opt","ace_compat_sma3_iansky"], + ["R3F_Armes","ace_compat_r3f"] + ]; }] call EFUNC(common,addEventHandler); #ifdef DEBUG_MODE_FULL diff --git a/addons/main/CfgDependencies.hpp b/addons/main/CfgDependencies.hpp index 6dd58fb60b..3414bc80b6 100644 --- a/addons/main/CfgDependencies.hpp +++ b/addons/main/CfgDependencies.hpp @@ -4,18 +4,11 @@ class CfgSettings { class ACE { class dependencies { //ACE will hard exit if this is missing - CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "true"}; + CBA[] = {"cba_main", REQUIRED_CBA_VERSION, "(true)"}; - //Warnings for missing compat pbos - compat_r3f[] = {"ace_compat_r3f", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'R3F_Armes')"}; - compat_rh_acc[] = {"ace_compat_rh_acc", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_acc')"}; - compat_rh_de[] = {"ace_compat_rh_de", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_de_cfg')"}; - compat_rh_m4[] = {"ace_compat_rh_m4", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_m4_cfg')"}; - compat_rh_pdw[] = {"ace_compat_rh_pdw", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RH_PDW')"}; + //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')"}; - compat_rksl_pm_ii[] = {"ace_compat_rksl_pm_ii", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'RKSL_PMII')"}; - compat_sma3_iansky[] = {"ace_compat_sma3_iansky", {VERSION_AR}, "isClass (configFile >> 'CfgPatches' >> 'iansky_opt')"}; }; }; }; From e90609d04352f6c12bc67f1ce5451e48216985d0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 24 Mar 2016 12:23:48 -0500 Subject: [PATCH 156/337] Fix AB Terrain Extension --- addons/advanced_ballistics/XEH_postInit.sqf | 4 +++- .../functions/fnc_initializeTerrainExtension.sqf | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index a541d30ce8..ef451ff937 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -21,7 +21,6 @@ if (!GVAR(extensionAvailable)) exitWith { }; }; */ -[] call FUNC(initializeTerrainExtension); if (!hasInterface) exitWith {}; @@ -29,6 +28,9 @@ if (!hasInterface) exitWith {}; //If not enabled, dont't add PFEH if (!GVAR(enabled)) exitWith {}; + //Run the terrain processor + [] call FUNC(initializeTerrainExtension); + // Register fire event handler ["firedPlayer", DFUNC(handleFired)] call EFUNC(common,addEventHandler); ["firedPlayerNonLocal", DFUNC(handleFired)] call EFUNC(common,addEventHandler); diff --git a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf index 02468d0349..25562a71d0 100644 --- a/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf +++ b/addons/advanced_ballistics/functions/fnc_initializeTerrainExtension.sqf @@ -24,7 +24,7 @@ _mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize"); if (("ace_advanced_ballistics" callExtension format["init:%1:%2", worldName, _mapSize]) == "Terrain already initialized") exitWith { #ifdef DEBUG_MODE_FULL systemChat "AdvancedBallistics: Terrain already initialized"; - #endIf + #endif }; _mapGrids = ceil(_mapSize / 50) + 1; From e5a7578f92b0fec25ee7ce2822d9f30a3cf2c56b Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sun, 27 Mar 2016 21:20:15 +0200 Subject: [PATCH 157/337] Translation: IT completed (no BOM) --- addons/advanced_ballistics/stringtable.xml | 2 +- addons/aircraft/stringtable.xml | 2 +- addons/attach/stringtable.xml | 2 +- addons/captives/stringtable.xml | 2 +- addons/cargo/stringtable.xml | 2 +- addons/common/stringtable.xml | 2 +- addons/concertina_wire/stringtable.xml | 2 +- addons/dagr/stringtable.xml | 2 +- addons/dragging/stringtable.xml | 2 +- addons/explosives/stringtable.xml | 10 ++++++++-- addons/fastroping/stringtable.xml | 11 ++++++++++- addons/finger/stringtable.xml | 2 +- addons/flashlights/stringtable.xml | 2 +- addons/frag/stringtable.xml | 2 +- addons/gestures/stringtable.xml | 2 +- addons/hearing/stringtable.xml | 5 +++-- addons/interact_menu/stringtable.xml | 2 +- addons/interaction/stringtable.xml | 6 ++++-- addons/inventory/stringtable.xml | 2 +- addons/main/stringtable.xml | 2 +- addons/map/stringtable.xml | 2 +- addons/map_gestures/stringtable.xml | 2 +- addons/medical/stringtable.xml | 17 ++++++++++++++-- addons/medical_menu/stringtable.xml | 2 +- addons/microdagr/stringtable.xml | 2 +- addons/missileguidance/stringtable.xml | 2 +- addons/mk6mortar/stringtable.xml | 23 +++++++++++++++++++++- addons/nightvision/stringtable.xml | 2 +- addons/optionsmenu/stringtable.xml | 2 +- addons/overheating/stringtable.xml | 9 +++++++-- addons/parachute/stringtable.xml | 2 +- addons/rearm/stringtable.xml | 2 +- addons/refuel/stringtable.xml | 2 +- addons/repair/stringtable.xml | 2 +- addons/respawn/stringtable.xml | 2 +- addons/scopes/stringtable.xml | 2 +- addons/sitting/stringtable.xml | 2 +- addons/slideshow/stringtable.xml | 2 +- addons/spectator/stringtable.xml | 2 +- addons/switchunits/stringtable.xml | 2 +- addons/tacticalladder/stringtable.xml | 5 +++-- addons/tagging/stringtable.xml | 17 ++++++++++++++-- addons/trenches/stringtable.xml | 2 +- addons/tripod/stringtable.xml | 2 +- addons/viewdistance/stringtable.xml | 2 +- addons/yardage450/stringtable.xml | 2 +- addons/zeus/stringtable.xml | 2 +- 47 files changed, 125 insertions(+), 54 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 718057a5b4..371ef67fea 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index 5480cb9740..3dec20b5f0 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index 462e3d725c..a374c42802 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 4044723c4a..59c7ca7165 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 57daacd207..630f903ca2 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 32a979653f..a3c593cc2b 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index 616879f31e..100a5ed2df 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index 01b43391ab..90aaffaaba 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index b0334f3ca2..393638e0c5 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index e3ba902a9b..fe41b24e74 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -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 (base) 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) + 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) 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, a pressione) 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 (interrato, a pressione) 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 piccolo (urbano, a pressione) 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 piccolo (interrato, a pressione) 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 f6c0f34826..96c4626de1 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -7,6 +7,7 @@ Wyposaż FRIES Equiper le FRIES Equipar FRIES + Equipaggia la FRIES Equips compatible helicopters with a Fast Rope Insertion Extraction System. @@ -14,6 +15,7 @@ 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. Equipar helicoptero compatible con un Sistema de Inserción Extracción Fast Rope. + Equipagga l'elicottero compatibile con il Fast Rope Insertion Exstraction System Prepare fast roping system @@ -21,6 +23,7 @@ Przygotuj system zjazdu na linach Préparer le système de corde lisse Preparar el sistema fast roping + Prepara le corde Deploy ropes @@ -28,6 +31,7 @@ Wypuść liny Déployer les cordes Desplegar cuerdas + Srotola le corde Fast rope @@ -35,6 +39,7 @@ Zjedź na linie Descendre à la corde Descender por la cuerda + Scendi sulla corda Cut ropes @@ -42,6 +47,7 @@ Odetnij liny Détacher les cordes Cortar cuerdas + Taglia le corde Equip helicopter with FRIES @@ -49,6 +55,7 @@ Wyposaż helikopter w FRIES Equiper l'hélicoptère avec le FRIED Equipar helicoptero con FRIES + Equipaggia l'elicottero con FRIES Equips the selected helicopter with a Fast Rope Insertion Extraction System @@ -56,10 +63,12 @@ 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 el helicoptero seleccionado con un Sistema de Inserción Extracción Fast Rope + Equipaggia l'elicottero selezionato con il Fast Rope Insertion Extraction System LET UNITS FAST ROPE EINHEITEN ABSEILEN LASSEN + SCENDI DALLE CORDE - + \ No newline at end of file diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 3f68d337f2..f335c12f0a 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index dad3158b38..56b967e2d4 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 4191a405d3..4bdf513aff 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 1f008ddae9..a5af13cd1e 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 1777c08e4f..1d40dca8ae 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -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 les acouphènes quand le joueur prend des dommages auditifs. + Quando il giocatore riceve danni all'udito, non fa sentire i fischi nelle orecchie Hearing @@ -208,4 +209,4 @@ Ajouter l'item "ACE_EarPlugs" à toutes les unités qui ont des armes lourdes. Peut être desactivé si des équipements personnels sont utilisés. - + \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index aac120ddbc..00118adee9 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b847a66aa6..05df33e043 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -711,6 +711,7 @@ Włącz Encender Allumer + Accendi Turn off @@ -718,6 +719,7 @@ Wyłącz Apagar Eteindre + Spegni Pass magazine @@ -775,4 +777,4 @@ Montrer l'interaction "donner un chargeur". - + \ No newline at end of file diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 6384c11641..cb4aee728d 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 985bfb4836..f49394a68c 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 73bf0cc774..42a0145d0b 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index e89d6c07a3..464dcaf352 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 7091de6b6e..00cde86765 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -55,6 +55,7 @@ Inyectar Adenosina Wstrzyknij adenozynę Injecter de l'adénosine + Inietta andenosina Inject Atropine @@ -254,6 +255,7 @@ Inyectando Adenosina... Wstrzykiwanie adenozyny... Injection d'adénosine... + Inietto l'andenosina Injecting Atropine... @@ -969,6 +971,7 @@ Asenosina auto-inyectable Autostrzykawka z adenozyną Auto-injécteur d'adénosine + Autoiniettore di adenosina Used to counter effects of Epinephrine @@ -976,6 +979,7 @@ Utilizada para contrarrestar los effectos de la Epinefrina 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 A drug used to counter the effects of Epinephrine @@ -983,6 +987,7 @@ 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. Un composé utilisé pour contrer les effets de l'adrénaline + Medicamento usato per contrastare l'effetto dell'epinefrina Atropine autoinjector @@ -3199,6 +3204,7 @@ Podstawowe ustawienia medyczne Ajustes médicos básicos [ACE] Réglages du système médical basic [ACE] + Impostazioni Mediche Di Base [ACE] Advanced Medical Settings [ACE] @@ -3314,6 +3320,7 @@ Permitir Epinefrina Ograniczenia adrenaliny Autoriser l'adrénaline + Permette epinefrina Who can use Epinephrine for full heal? (Basic medical only) @@ -3321,6 +3328,7 @@ 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) 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) Allow PAK @@ -3412,6 +3420,7 @@ Ubicaciones epinefrina Ograniczenia adrenaliny Position des adrénalines + Ubicazione epinefrina Where can the Epinephrine be used? (Basic Medical) @@ -3419,6 +3428,7 @@ Configura donde puede usarse Epinefrina (Solo sistema médico básico) 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) Locations PAK @@ -3664,6 +3674,7 @@ Configure las opciones de tratamiento del sistema médico básico de ACE Skonfiguruj ustawienia leczenia podstawowego systemu medycznego ACE Configure les réglages de traitement dans ACE médical basique + Configura le impostazioni trattamenti per ACE Medical di base Configure the treatment settings from ACE Advanced Medical @@ -4125,12 +4136,14 @@ 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. Delay cease fire of AI for 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 + Ritarda il cessate il fuoco dell'IA quando si è svenuti - + \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index f825882be6..a55bb575cd 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index c20ea7aede..fcc38b8f7c 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index ff14fea9f7..1f188db453 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 5daa29a0f6..e77a771b38 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -150,6 +150,7 @@ Usar manejo de munición. Aktywuj obsługę amunicji Utiliser la gestion des munitions + Utilizza la gestione delle munizioni Removes mortar magazines, requiring individual rounds to be loaded by the gunner or loader. Does not affect AI mortars. @@ -157,6 +158,7 @@ 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. Enlever les chargeurs de mortier, requiert des obus individuels qui doivent être chargés par le tireur ou le servant. N'affect pas les mortiers IA. + Toglie i proiettili dal mortaio. I colpi singoli devono essere caricati dall'operatore. Non cambia quado l'IA spara. Remove Round @@ -164,6 +166,7 @@ Extraer ronda Wyładuj pocisk Enlever l'obus + Togli proiettile Load Mortar @@ -171,6 +174,7 @@ Cargar mortero Załaduj moździerz Charger le mortier + Carica mortaio Unloading Round @@ -178,6 +182,7 @@ Descargando ronda Rozładowywanie moździerza Déchargement de l'obus + Scarica proiettile Preparing Round @@ -185,6 +190,7 @@ Preparando ronda Przygotowywanie pocisku Praparation de l'obus + Prepara il proiettile Load HE @@ -192,6 +198,7 @@ Cargar HE Załaduj pocisk wybuchowy Charger HE + Carica proiettile esplosivo ad alto potenziale (HE) Load Smoke @@ -199,6 +206,7 @@ Cargar Humo Załaduj pocisk dymny Charger Fumigène + Carica fumogeno Load Illumination @@ -206,6 +214,7 @@ Cargar Iluminación Załaduj pocisk oświetlający Charger Eclairante + Carica illuminante Load Guided HE @@ -213,6 +222,7 @@ Cagar HE Guiada Załaduj kierowany pocisk wybuchowy Charger HE guidé + Carica HE guidata Load Laser Guided HE @@ -220,6 +230,7 @@ Cargar HE Guiada por Laser Załaduj laserowo napr. pocisk wybuchowy Charger HE guidé au laser + Carica HE a guida laser 82mm HE Round @@ -227,6 +238,7 @@ Ronda 82mm HE Pocisk wybuchowy kal. 82mm Obus de 82mm HE + Proiettile da 82mm HE 82mm Smoke Round @@ -234,6 +246,7 @@ Ronda 82mm Humo Pocisk dymny kal. 82mm Obus de 82mm fumigène + Proiettile Fumogeno da 82mm 82mm Illumination Round @@ -241,6 +254,7 @@ Ronda 82mm Iluminación Pocisk oświetlający kal. 82mm Obus de 82mm éclairant + Proiettile illuminante da 82mm 82mm Guided HE Round @@ -248,6 +262,7 @@ Ronda 82mm Guiada Kierowany pocisk wybuchowy kal. 82mm Obus de 82mm HE guidé + Proiettile HE guidato 82mm Laser Guided HE Round @@ -255,6 +270,7 @@ Ronda 82mm Guiada por Laser Laserowo napr. pocisk wybuchowy kal. 82mm Obus de 82mm HE guidé au laser + Proiettile HE a guida laser Used in Mk6 mortar @@ -262,6 +278,7 @@ Usada en el mortero Mk6 Używany w moździerzu Mk6 Utilisé dans le mortier Mk6 + Usato nel mortaio Mk6 [ACE] 82mm HE Rounds Box @@ -269,6 +286,7 @@ [ACE] Caja de municiones 82mm HE [ACE] Skrzynka amunicji wybuchowej 82mm [ACE] Obus de 82mm HE + [ACE] Scatola proiettili espolisvi ad alto potenziale (HE) da 82mm [ACE] 82mm Smoke Rounds Box @@ -276,6 +294,7 @@ [ACE] Caja de municiones 82mm Humo [ACE] Skrzynka amunicji dymnej 82mm [ACE] Obus de 82mm fumigène + [ACE] Scatola fumogeni da 82mm [ACE] 82mm Illumination Rounds Box @@ -283,6 +302,7 @@ [ACE] Caja de municiones 82mm Iluminacion [ACE] Skrzynka amunicji oświetlającej 82mm [ACE] Obus de 82mm éclairants + [ACE] Scatola illuminanti da 82mm [ACE] 82mm Default Loadout Box @@ -290,6 +310,7 @@ [ACE] Caja de municiones 82mm por defecto [ACE] Skrzynka amunicji standardowej 82mm [ACE] Obus de 82mm par défaut + [ACE] Scatola proiettili 82mm standard \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index 708860d134..abc0218908 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index b051e3f219..66ad0dd00b 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 23a1b0253a..f17ee88670 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -79,6 +79,7 @@ Desencasquillar el arma al recargar. Usuń zacięcie przy przeładowaniu Des-enrayer l'arme au rechargement. + Disinceppa l'arma quando si ricarica Reloading clears a weapon jam. @@ -86,6 +87,7 @@ Recargar el arma la desencasquilla. Przeładowywanie usuwa zacięcie Recharger vide la chambre de l'arme + L'arma si disinceppa quando si ricarica Chance of unjam failing @@ -93,6 +95,7 @@ Probabilidad de falla al desencasquillar. Szansa na porażkę usuw. zacięcia Chance de rater le des-enrayement + Probabilità di sbagliare a disinceppare l'arma Probability that an unjam action might fail, requiring to be repeated. @@ -100,6 +103,7 @@ 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. Probabilité qu'une action de des-enrayement échoue, nécessitant de recommencer. + Probabilità che si possa sbagliare a caso a disinceppare l'arma. Richiede di ripetere. Spare barrel @@ -167,6 +171,7 @@ Falló el desencasquillado Porażka przy usuwaniu zacięcia Toujours enrayé ! + Non si è disinceppata! Swap barrel @@ -253,4 +258,4 @@ Температура - + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index 880cc55e5f..db21b182d1 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index 7806735c57..b7da05d989 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index 2df51ea540..df30ac2380 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index fb505f4f4e..2af94c1ef2 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index e0d04aabfa..716679d0d0 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index 8dc7a9eba0..2e7918cb7d 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index f7c7b84b93..2231ff5145 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 4c45399ba6..5459adeea7 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index b78febbef7..3ec849658f 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 60d7fb0ecd..bd4fe13a56 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 1e2c037f20..ab1ffbed9b 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -57,6 +57,7 @@ +Ctrl naklonit +Ctrl inclinar +Ctrl incliner + +Ctrl per inclinare Position ladder @@ -83,4 +84,4 @@ Pegar escada - + \ No newline at end of file diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 392de0d24f..41964c9b13 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -7,6 +7,7 @@ Marcar en negro Oznakuj na czarno Tag noir + Marca nero Tag red @@ -14,6 +15,7 @@ Marcar en rojo Oznakuj na czerwono Tag rouge + Marca rosso Tag green @@ -21,6 +23,7 @@ Marcar en verde Oznakuj na zielono Tag vert + Marca verde Tag blue @@ -28,6 +31,7 @@ Marcar en azul Oznakuj na niebiesko Tag bleu + Marca blu Tag ground black @@ -35,6 +39,7 @@ Oznakuj ziemię na czarno Marcar suelo en negro Tag fond noir + Segna nero a terra Tag ground red @@ -42,6 +47,7 @@ Oznakuj ziemię na czerwono Marcar suelo en rojo Tag fond rouge + Segna rosso a terra Tag ground green @@ -49,6 +55,7 @@ Oznakuj ziemię na zielono Marcar suelo en verde Tag fond vert + Segna verde a terra Tag ground blue @@ -56,6 +63,7 @@ Oznakuj ziemię na niebiesko Marcar suelo en azul Tag font bleu + Segna blu a terra Black spray paint @@ -63,6 +71,7 @@ Pintura negra Czarna farba w sprayu Peinture pulvérisée noire + Bomboletta spray nera Red spray paint @@ -70,6 +79,7 @@ Pintura roja Czerwona farba w sprayu Peinture pulvérisée rouge + Bomboletta spray rossa Green spray paint @@ -77,6 +87,7 @@ Pintura verde Zielona farba w sprayu Peinture pulvérisée verte + Bomboletta spray verde Blue spray paint @@ -84,6 +95,7 @@ Pintura azul Niebieska farba w sprayu Peinture pulvérisée bleue + Bomboletta spray blu A can of spray paint for tagging walls. @@ -91,6 +103,7 @@ Lata de pintura en aerosol para marcar. 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. - + \ No newline at end of file diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index 617a604457..a6b922a00f 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index a57c6ca51d..c2abcff8bc 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index a0f2bceb68..518f673455 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index c9f1c94b1b..4fdc0dfe72 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index c07d4f7f84..8ef47b9b27 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,4 +1,4 @@ - + From e97c7c0f65721e9957e968193134ed462efd451a Mon Sep 17 00:00:00 2001 From: Alessandro Foresi Date: Sun, 27 Mar 2016 21:22:15 +0200 Subject: [PATCH 158/337] Translation: IT completed (with BOM) --- addons/advanced_ballistics/stringtable.xml | 2 +- addons/aircraft/stringtable.xml | 2 +- addons/atragmx/stringtable.xml | 2 +- addons/attach/stringtable.xml | 2 +- addons/ballistics/stringtable.xml | 2 +- addons/captives/stringtable.xml | 2 +- addons/cargo/stringtable.xml | 2 +- addons/common/stringtable.xml | 2 +- addons/concertina_wire/stringtable.xml | 2 +- addons/dagr/stringtable.xml | 2 +- addons/disarming/stringtable.xml | 2 +- addons/disposable/stringtable.xml | 2 +- addons/dragging/stringtable.xml | 2 +- addons/explosives/stringtable.xml | 2 +- addons/fastroping/stringtable.xml | 2 +- addons/fcs/stringtable.xml | 2 +- addons/finger/stringtable.xml | 2 +- addons/flashlights/stringtable.xml | 2 +- addons/flashsuppressors/stringtable.xml | 2 +- addons/frag/stringtable.xml | 2 +- addons/gestures/stringtable.xml | 2 +- addons/goggles/stringtable.xml | 2 +- addons/grenades/stringtable.xml | 2 +- addons/hearing/stringtable.xml | 2 +- addons/huntir/stringtable.xml | 2 +- addons/interact_menu/stringtable.xml | 2 +- addons/interaction/stringtable.xml | 2 +- addons/inventory/stringtable.xml | 2 +- addons/javelin/stringtable.xml | 2 +- addons/kestrel4500/stringtable.xml | 2 +- addons/laser/stringtable.xml | 2 +- addons/laser_selfdesignate/stringtable.xml | 2 +- addons/laserpointer/stringtable.xml | 2 +- addons/logistics_uavbattery/stringtable.xml | 2 +- addons/logistics_wirecutter/stringtable.xml | 2 +- addons/magazinerepack/stringtable.xml | 2 +- addons/main/stringtable.xml | 2 +- addons/map/stringtable.xml | 2 +- addons/map_gestures/stringtable.xml | 2 +- addons/maptools/stringtable.xml | 2 +- addons/markers/stringtable.xml | 2 +- addons/medical/stringtable.xml | 2 +- addons/medical_menu/stringtable.xml | 2 +- addons/microdagr/stringtable.xml | 2 +- addons/missileguidance/stringtable.xml | 2 +- addons/missionmodules/stringtable.xml | 2 +- addons/mk6mortar/stringtable.xml | 2 +- addons/movement/stringtable.xml | 2 +- addons/mx2a/stringtable.xml | 2 +- addons/nametags/stringtable.xml | 2 +- addons/nightvision/stringtable.xml | 2 +- addons/optics/stringtable.xml | 2 +- addons/optionsmenu/stringtable.xml | 2 +- addons/overheating/stringtable.xml | 2 +- addons/parachute/stringtable.xml | 2 +- addons/rangecard/stringtable.xml | 2 +- addons/realisticnames/stringtable.xml | 2 +- addons/rearm/stringtable.xml | 2 +- addons/refuel/stringtable.xml | 2 +- addons/reload/stringtable.xml | 2 +- addons/reloadlaunchers/stringtable.xml | 2 +- addons/repair/stringtable.xml | 2 +- addons/respawn/stringtable.xml | 2 +- addons/safemode/stringtable.xml | 2 +- addons/sandbag/stringtable.xml | 2 +- addons/scopes/stringtable.xml | 2 +- addons/sitting/stringtable.xml | 2 +- addons/slideshow/stringtable.xml | 2 +- addons/spectator/stringtable.xml | 2 +- addons/spottingscope/stringtable.xml | 2 +- addons/switchunits/stringtable.xml | 2 +- addons/tacticalladder/stringtable.xml | 2 +- addons/tagging/stringtable.xml | 2 +- addons/trenches/stringtable.xml | 2 +- addons/tripod/stringtable.xml | 2 +- addons/vector/stringtable.xml | 2 +- addons/vehiclelock/stringtable.xml | 2 +- addons/vehicles/stringtable.xml | 2 +- addons/viewdistance/stringtable.xml | 2 +- addons/weaponselect/stringtable.xml | 2 +- addons/weather/stringtable.xml | 2 +- addons/winddeflection/stringtable.xml | 2 +- addons/yardage450/stringtable.xml | 2 +- addons/zeus/stringtable.xml | 2 +- 84 files changed, 84 insertions(+), 84 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 371ef67fea..718057a5b4 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/aircraft/stringtable.xml b/addons/aircraft/stringtable.xml index 3dec20b5f0..5480cb9740 100644 --- a/addons/aircraft/stringtable.xml +++ b/addons/aircraft/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml index a8e23ffbda..3790fb1f2d 100644 --- a/addons/atragmx/stringtable.xml +++ b/addons/atragmx/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index a374c42802..462e3d725c 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 39bbac1726..b51303fa6d 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 59c7ca7165..4044723c4a 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 630f903ca2..57daacd207 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index a3c593cc2b..32a979653f 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index 100a5ed2df..616879f31e 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index 90aaffaaba..01b43391ab 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/disarming/stringtable.xml b/addons/disarming/stringtable.xml index 61eaf9af59..dfa030273a 100644 --- a/addons/disarming/stringtable.xml +++ b/addons/disarming/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml index acdc79473c..ac2b76ee7f 100644 --- a/addons/disposable/stringtable.xml +++ b/addons/disposable/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index 393638e0c5..b0334f3ca2 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index fe41b24e74..4cabe2ce06 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 96c4626de1..1a03e59409 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml index 035d9d7a36..8750d2a4e3 100644 --- a/addons/fcs/stringtable.xml +++ b/addons/fcs/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index f335c12f0a..3f68d337f2 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index 56b967e2d4..dad3158b38 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/flashsuppressors/stringtable.xml b/addons/flashsuppressors/stringtable.xml index 5f6a0ebc86..f075f1aa34 100644 --- a/addons/flashsuppressors/stringtable.xml +++ b/addons/flashsuppressors/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 4bdf513aff..4191a405d3 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index a5af13cd1e..1f008ddae9 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml index 6b5a623715..ce337760d7 100644 --- a/addons/goggles/stringtable.xml +++ b/addons/goggles/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index a05f6635cd..44d9e7ad47 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 1d40dca8ae..e92229cdd4 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/huntir/stringtable.xml b/addons/huntir/stringtable.xml index 2331c3855c..8648f58ea9 100644 --- a/addons/huntir/stringtable.xml +++ b/addons/huntir/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 00118adee9..aac120ddbc 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 05df33e043..0e1afa21a1 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index cb4aee728d..6384c11641 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml index 385abf586e..dcc03dca91 100644 --- a/addons/javelin/stringtable.xml +++ b/addons/javelin/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml index defb44c2dc..3ad9e8824f 100644 --- a/addons/kestrel4500/stringtable.xml +++ b/addons/kestrel4500/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index f51b9cd127..4a478096d0 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/laser_selfdesignate/stringtable.xml b/addons/laser_selfdesignate/stringtable.xml index 17c562a2bb..cdd7439200 100644 --- a/addons/laser_selfdesignate/stringtable.xml +++ b/addons/laser_selfdesignate/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml index afd11addb1..1e4b150c3d 100644 --- a/addons/laserpointer/stringtable.xml +++ b/addons/laserpointer/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/logistics_uavbattery/stringtable.xml b/addons/logistics_uavbattery/stringtable.xml index c38c3daae3..6ff6e4b52d 100644 --- a/addons/logistics_uavbattery/stringtable.xml +++ b/addons/logistics_uavbattery/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/logistics_wirecutter/stringtable.xml b/addons/logistics_wirecutter/stringtable.xml index ef5d0522e3..1f9955f4be 100644 --- a/addons/logistics_wirecutter/stringtable.xml +++ b/addons/logistics_wirecutter/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 1fc873f0c3..b89b4b587d 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index f49394a68c..985bfb4836 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 42a0145d0b..73bf0cc774 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 464dcaf352..e89d6c07a3 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index cde1096170..3db0d4d972 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index 9d015b0403..44d64eb1e0 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 00cde86765..a3953be23b 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index a55bb575cd..f825882be6 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index fcc38b8f7c..c20ea7aede 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 1f188db453..ff14fea9f7 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 4fc1cd08b7..1043d99f64 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index e77a771b38..f545bc8a35 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml index 4ab3d1253b..af5ce71af4 100644 --- a/addons/movement/stringtable.xml +++ b/addons/movement/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index ad46cebfde..e2c7ed2dc7 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index a945339ead..5f048eeb4e 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index abc0218908..708860d134 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/optics/stringtable.xml b/addons/optics/stringtable.xml index 4fafdb1996..a6818a90d3 100644 --- a/addons/optics/stringtable.xml +++ b/addons/optics/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 66ad0dd00b..b051e3f219 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index f17ee88670..3269d9cf7e 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index db21b182d1..880cc55e5f 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index 0bd1160b87..e97a31195e 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index ad8338b0f1..b9f6c85b93 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index b7da05d989..7806735c57 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index df30ac2380..2df51ea540 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml index f7412e1d2e..647322e8e6 100644 --- a/addons/reload/stringtable.xml +++ b/addons/reload/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/reloadlaunchers/stringtable.xml b/addons/reloadlaunchers/stringtable.xml index 5e38ce4009..72193d48e2 100644 --- a/addons/reloadlaunchers/stringtable.xml +++ b/addons/reloadlaunchers/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 2af94c1ef2..fb505f4f4e 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 716679d0d0..e0d04aabfa 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/safemode/stringtable.xml b/addons/safemode/stringtable.xml index a6847c17c8..9717ba4dae 100644 --- a/addons/safemode/stringtable.xml +++ b/addons/safemode/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/sandbag/stringtable.xml b/addons/sandbag/stringtable.xml index a1d7a46938..99be2bddf1 100644 --- a/addons/sandbag/stringtable.xml +++ b/addons/sandbag/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index 2e7918cb7d..8dc7a9eba0 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 2231ff5145..f7c7b84b93 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 5459adeea7..4c45399ba6 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 3ec849658f..b78febbef7 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/spottingscope/stringtable.xml b/addons/spottingscope/stringtable.xml index a562e31c8c..3a0b89b857 100644 --- a/addons/spottingscope/stringtable.xml +++ b/addons/spottingscope/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index bd4fe13a56..60d7fb0ecd 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index ab1ffbed9b..7a60933ceb 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index 41964c9b13..2b1f38ba68 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index a6b922a00f..617a604457 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index c2abcff8bc..a57c6ca51d 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/vector/stringtable.xml b/addons/vector/stringtable.xml index 9d1936304e..80135294d4 100644 --- a/addons/vector/stringtable.xml +++ b/addons/vector/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 9b8b06fd40..32e9c762d0 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/vehicles/stringtable.xml b/addons/vehicles/stringtable.xml index dcf2348175..005bba53a3 100644 --- a/addons/vehicles/stringtable.xml +++ b/addons/vehicles/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 518f673455..a0f2bceb68 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index 4a273a6cf3..c9a8e43f60 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index f2e9027e68..0b0ed8fd17 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 8e8ad27e7a..6cb4858d21 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index 4fdc0dfe72..c9f1c94b1b 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -1,4 +1,4 @@ - + diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 8ef47b9b27..c07d4f7f84 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,4 +1,4 @@ - + From bcde9f8ed64cf4c7e6425c211df283b8a4e01c3c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 28 Mar 2016 01:15:58 -0500 Subject: [PATCH 159/337] Filter minor falling damage to non-leg hitpoints --- addons/medical/functions/fnc_handleDamage_caching.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index cc969ce961..c1cf726399 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -58,6 +58,7 @@ if (_unit getVariable [QGVAR(isFalling), false]) then { } else { _newDamage = _newDamage * 0.5; }; + if (_newDamage < 0.075) then {_newDamage = 0;}; //Filter minor falling damage to non-leg hitpoints } else { if (_selectionName == "") then { _selectionName = selectRandom ["leg_l", "leg_r"]; From dc1af390cdf70459f284a44860b7b531c0e3390b Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 28 Mar 2016 18:44:30 +0200 Subject: [PATCH 160/337] 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 602ee41d33..ac0b82147c 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 fdb2cd08b0..81758f8bdb 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 2c03d97fd0..9dbb65f68e 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 fa8d1795bf..dee9261e1e 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 9b6485f4e8..85b24f7b92 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 161/337] 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 ac0b82147c..af4daf6799 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 eb29d5a9e3..f8a8598cd7 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 4c8f0c750a..b77473f25b 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 81758f8bdb..924fc5582c 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 0000000000..f7f6d7e5e2 --- /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 9dbb65f68e..3bd559f702 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 dee9261e1e..0000000000 --- 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 85b24f7b92..0000000000 --- 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 bb94aae3ff..4836d2f209 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 392de0d24f..0bab4f29c1 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 666a4030b51ffbde67b160cda21084b8b97380b8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 29 Mar 2016 13:21:13 +0200 Subject: [PATCH 162/337] make FUNC(scriptedExplosive) work in scheduled env, ref #3621 --- addons/explosives/functions/fnc_scriptedExplosive.sqf | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/explosives/functions/fnc_scriptedExplosive.sqf b/addons/explosives/functions/fnc_scriptedExplosive.sqf index b4abb204b3..6a554ac09c 100644 --- a/addons/explosives/functions/fnc_scriptedExplosive.sqf +++ b/addons/explosives/functions/fnc_scriptedExplosive.sqf @@ -4,7 +4,7 @@ * detonate editor-placed explosives. * * Arguments: - * 0: Explosives objects to detonate + * 0: Explosives objects to detonate * 1: Fuze delay (for each explosive; use negative number for random time up to value) * * Return Value: @@ -18,10 +18,13 @@ */ #include "script_component.hpp" -params ["_explosiveArr",["_fuzeTime",0]]; +params [["_explosiveArr", [], [[], objNull]], ["_fuzeTime", 0, [0]]]; + +if (_explosiveArr isEqualType objNull) then { + _explosiveArr = [_explosiveArr]; +}; -private _detTime; { - _detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime}; + private _detTime = if (_fuzeTime < 0) then {random abs _fuzeTime} else {_fuzeTime}; [objNull, -1, [_x, _detTime]] call FUNC(detonateExplosive); } forEach _explosiveArr; From 1f6f90a5b23069938e728bf350e1c22de462961e Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 29 Mar 2016 13:59:07 +0200 Subject: [PATCH 163/337] fixerrornoname --- addons/common/CfgEventHandlers.hpp | 2 +- addons/common/functions/fnc_setName.sqf | 8 +------- addons/common/script_component.hpp | 2 ++ 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 2c4f3922bc..6340402639 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 {_this call FUNC(setName)};); + init = QUOTE(if (local (_this select 0)) then {[ARR_3(FUNC(setName), _this, DELAY_SETNAME)] call FUNC(waitAndExecute)};); }; class GVAR(muteUnit) { init = QUOTE(_this call FUNC(muteUnitHandleInitPost)); diff --git a/addons/common/functions/fnc_setName.sqf b/addons/common/functions/fnc_setName.sqf index b9ecbdc3a6..1b2b515ec2 100644 --- a/addons/common/functions/fnc_setName.sqf +++ b/addons/common/functions/fnc_setName.sqf @@ -19,13 +19,7 @@ if (isNull _unit || {!alive _unit}) exitWith {}; if (_unit isKindOf "CAManBase") then { private _sanitizedName = [name _unit, true] call FUNC(sanitizeString); private _rawName = [name _unit, false] call FUNC(sanitizeString); - - //Debug Testing Code (with html tags): - // private _sanitizedName = ["Name", true] call FUNC(sanitizeString); - // private _rawName = ["Name", false] call FUNC(sanitizeString); - - //if (_name != _unit getVariable ["ACE_Name", ""]) then { + _unit setVariable ["ACE_Name", _sanitizedName, true]; _unit setVariable ["ACE_NameRaw", _rawName, true]; - //}; }; diff --git a/addons/common/script_component.hpp b/addons/common/script_component.hpp index 4e941943fa..3b915f2c24 100644 --- a/addons/common/script_component.hpp +++ b/addons/common/script_component.hpp @@ -19,3 +19,5 @@ #define VERSION_CONFIG_COMMON VERSION_CONFIG;\ versionDesc = "ACE 3";\ versionAct = QUOTE(call COMPILE_FILE(init_versionTooltip)) + +#define DELAY_SETNAME 1 From 4e1b2dd24a97481bf822145c12cc20994a034459 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 29 Mar 2016 15:32:05 +0200 Subject: [PATCH 164/337] just delay setName one frame --- addons/common/CfgEventHandlers.hpp | 2 +- addons/common/script_component.hpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/common/CfgEventHandlers.hpp b/addons/common/CfgEventHandlers.hpp index 6340402639..6e8528cf03 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_3(FUNC(setName), _this, DELAY_SETNAME)] call FUNC(waitAndExecute)};); + init = QUOTE(if (local (_this select 0)) then {[ARR_2(FUNC(setName),_this)] call FUNC(execNextFrame)};); }; class GVAR(muteUnit) { init = QUOTE(_this call FUNC(muteUnitHandleInitPost)); diff --git a/addons/common/script_component.hpp b/addons/common/script_component.hpp index 3b915f2c24..4e941943fa 100644 --- a/addons/common/script_component.hpp +++ b/addons/common/script_component.hpp @@ -19,5 +19,3 @@ #define VERSION_CONFIG_COMMON VERSION_CONFIG;\ versionDesc = "ACE 3";\ versionAct = QUOTE(call COMPILE_FILE(init_versionTooltip)) - -#define DELAY_SETNAME 1 From c24c1b9dc0d427469350d0c917fd48ad96b9b188 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 29 Mar 2016 15:39:32 +0200 Subject: [PATCH 165/337] Fix inverted Stop and Freeze - prone Stop will still be freeze due to BI animation being wrong --- addons/gestures/CfgVehicles.hpp | 12 ++++---- .../anim/{ace_stop.rtm => ace_freeze.rtm} | Bin ...wered.rtm => ace_freeze_stand_lowered.rtm} | Bin addons/gestures/cfgMovesBasic.hpp | 16 +++++------ addons/gestures/key.sqf | 2 +- addons/gestures/stringtable.xml | 26 +++++++++--------- 6 files changed, 28 insertions(+), 28 deletions(-) rename addons/gestures/anim/{ace_stop.rtm => ace_freeze.rtm} (100%) rename addons/gestures/anim/{ace_stop_stand_lowered.rtm => ace_freeze_stand_lowered.rtm} (100%) diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index d3c7b5ca21..17dbfc0846 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -46,10 +46,10 @@ class CfgVehicles { showDisabled = 1; priority = 1.3; }; - class GVAR(Freeze) { - displayName = CSTRING(BIgestureFreeze); + class GVAR(Stop) { + displayName = CSTRING(stop); condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureFreeze';); + statement = QUOTE(_target playActionNow 'gestureFreeze';); // BI animation - is actualls "stop" in all stances but prone showDisabled = 1; priority = 1.2; }; @@ -67,10 +67,10 @@ class CfgVehicles { showDisabled = 1; priority = 1.8; }; - class GVAR(Stop) { - displayName = CSTRING(stop); + class GVAR(Freeze) { + displayName = CSTRING(freeze); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); - statement = QUOTE(QUOTE(QGVAR(stop)) call FUNC(playSignal)); + statement = QUOTE(QUOTE(QGVAR(freeze)) call FUNC(playSignal)); showDisabled = 1; priority = 1.7; }; diff --git a/addons/gestures/anim/ace_stop.rtm b/addons/gestures/anim/ace_freeze.rtm similarity index 100% rename from addons/gestures/anim/ace_stop.rtm rename to addons/gestures/anim/ace_freeze.rtm diff --git a/addons/gestures/anim/ace_stop_stand_lowered.rtm b/addons/gestures/anim/ace_freeze_stand_lowered.rtm similarity index 100% rename from addons/gestures/anim/ace_stop_stand_lowered.rtm rename to addons/gestures/anim/ace_freeze_stand_lowered.rtm diff --git a/addons/gestures/cfgMovesBasic.hpp b/addons/gestures/cfgMovesBasic.hpp index a708787fd5..50a835abe6 100644 --- a/addons/gestures/cfgMovesBasic.hpp +++ b/addons/gestures/cfgMovesBasic.hpp @@ -1,7 +1,7 @@ class CfgMovesBasic { class ManActions { GVAR(forward) = QGVAR(forward); - GVAR(stop) = QGVAR(stop); + GVAR(freeze) = QGVAR(freeze); GVAR(cover) = QGVAR(cover); GVAR(regroup) = QGVAR(regroup); GVAR(engage) = QGVAR(engage); @@ -10,7 +10,7 @@ class CfgMovesBasic { GVAR(warning) = QGVAR(warningS); GVAR(forwardStandLowered) = QGVAR(forwardStandLowered); - GVAR(stopStandLowered) = QGVAR(stopStandLowered); + GVAR(freezeStandLowered) = QGVAR(freezeStandLowered); GVAR(coverStandLowered) = QGVAR(coverStandLowered); GVAR(regroupStandLowered) = QGVAR(regroupStandLowered); GVAR(engageStandLowered) = QGVAR(engageStandLowered); @@ -22,7 +22,7 @@ class CfgMovesBasic { class Actions { class NoActions: ManActions { GVAR(forward)[] = {QGVAR(forward), "Gesture"}; - GVAR(stop)[] = {QGVAR(stop), "Gesture"}; + GVAR(freeze)[] = {QGVAR(freeze), "Gesture"}; GVAR(cover)[] = {QGVAR(cover), "Gesture"}; GVAR(regroup)[] = {QGVAR(regroup), "Gesture"}; GVAR(engage)[] = {QGVAR(engage), "Gesture"}; @@ -31,7 +31,7 @@ class CfgMovesBasic { GVAR(warning)[] = {QGVAR(warning), "Gesture"}; GVAR(forwardStandLowered)[] = {QGVAR(forwardStandLowered), "Gesture"}; - GVAR(stopStandLowered)[] = {QGVAR(stopStandLowered), "Gesture"}; + GVAR(freezeStandLowered)[] = {QGVAR(freezeStandLowered), "Gesture"}; GVAR(coverStandLowered)[] = {QGVAR(coverStandLowered), "Gesture"}; GVAR(regroupStandLowered)[] = {QGVAR(regroupStandLowered), "Gesture"}; GVAR(engageStandLowered)[] = {QGVAR(engageStandLowered), "Gesture"}; @@ -134,13 +134,13 @@ class CfgGesturesMale { file = QUOTE(PATHTOF(anim\ace_forward_stand_lowered.rtm)); }; - class GVAR(stop): GVAR(forward) { - file = QUOTE(PATHTOF(anim\ace_stop.rtm)); + class GVAR(freeze): GVAR(forward) { + file = QUOTE(PATHTOF(anim\ace_freeze.rtm)); speed = 0.6; }; - class GVAR(stopStandLowered): GVAR(stop) { - file = QUOTE(PATHTOF(anim\ace_stop_stand_lowered.rtm)); + class GVAR(freezeStandLowered): GVAR(freeze) { + file = QUOTE(PATHTOF(anim\ace_freeze_stand_lowered.rtm)); }; class GVAR(cover): GVAR(forward) { diff --git a/addons/gestures/key.sqf b/addons/gestures/key.sqf index 54d6d50c0c..589f116f5b 100644 --- a/addons/gestures/key.sqf +++ b/addons/gestures/key.sqf @@ -25,7 +25,7 @@ false } count [ - ["stop", DIK_NUMPAD2], + ["freeze", DIK_NUMPAD2], ["cover", DIK_NUMPAD3], ["forward", DIK_NUMPAD4], ["regroup", DIK_NUMPAD5], diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 1f008ddae9..7ad0e4eaa6 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -97,19 +97,6 @@ Apontar Puntare a - - Freeze - Keine Bewegung - Alto - Stać - Stát - Halte - Замереть - Állj - Alto - Fermi - - Stop Stop @@ -121,6 +108,19 @@ Stop Detenerse + + + Freeze + Keine Bewegung + Alto + Stać + Stát + Halte + Замереть + Állj + Alto + Fermi + Cover From 3489dd48bb4851ecb895e21ed08976b737ec4795 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 29 Mar 2016 15:51:51 +0200 Subject: [PATCH 166/337] Remove unused gestures, Improve stringtabling and remove duplicate --- addons/gestures/ACE_Settings.hpp | 6 +-- addons/gestures/CfgVehicles.hpp | 55 ++++++---------------- addons/gestures/key.sqf | 37 ++++++++------- addons/gestures/stringtable.xml | 80 +++++++------------------------- 4 files changed, 54 insertions(+), 124 deletions(-) diff --git a/addons/gestures/ACE_Settings.hpp b/addons/gestures/ACE_Settings.hpp index a9e77807c0..8ed8aedb6b 100644 --- a/addons/gestures/ACE_Settings.hpp +++ b/addons/gestures/ACE_Settings.hpp @@ -4,8 +4,8 @@ class ACE_Settings { typeName = "SCALAR"; isClientSettable = 1; category = ECSTRING(interact_menu,Category_InteractionMenu); - displayName = CSTRING(showOnInteractionMenu_displayName); - description = CSTRING(showOnInteractionMenu_description); - values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(justKeybinds), CSTRING(keysAndInteractionMenu)}; + displayName = CSTRING(ShowOnInteractionMenu_displayName); + description = CSTRING(ShowOnInteractionMenu_description); + values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(JustKeybinds), CSTRING(KeysAndInteractionMenu)}; }; }; diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 17dbfc0846..4bf98f4978 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -12,131 +12,104 @@ class CfgVehicles { icon = PATHTOF(UI\gestures_ca.paa); class GVAR(Advance) { - displayName = CSTRING(BIgestureAdvance); + displayName = CSTRING(Advance); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureAdvance';); showDisabled = 1; priority = 1.9; }; class GVAR(Go) { - displayName = CSTRING(BIgestureGo); + displayName = CSTRING(Go); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow ([ARR_2('gestureGo','gestureGoB')] select floor random 2);); showDisabled = 1; priority = 1.8; }; class GVAR(Follow) { - displayName = CSTRING(BIgestureFollow); + displayName = CSTRING(Follow); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureFollow';); showDisabled = 1; priority = 1.7; }; class GVAR(Up) { - displayName = CSTRING(BIgestureUp); + displayName = CSTRING(Up); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureUp';); showDisabled = 1; priority = 1.5; }; class GVAR(CeaseFire) { - displayName = CSTRING(BIgestureCeaseFire); + displayName = CSTRING(CeaseFire); condition = QUOTE(canStand _target); statement = QUOTE(_target playActionNow 'gestureCeaseFire';); showDisabled = 1; priority = 1.3; }; class GVAR(Stop) { - displayName = CSTRING(stop); + displayName = CSTRING(Stop); condition = QUOTE(canStand _target); 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); + displayName = CSTRING(Forward); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(forward)) call FUNC(playSignal)); showDisabled = 1; priority = 1.9; }; class GVAR(Regroup) { - displayName = CSTRING(regroup); + displayName = CSTRING(Regroup); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(regroup)) call FUNC(playSignal)); showDisabled = 1; priority = 1.8; }; class GVAR(Freeze) { - displayName = CSTRING(freeze); + displayName = CSTRING(Freeze); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(freeze)) call FUNC(playSignal)); showDisabled = 1; priority = 1.7; }; class GVAR(Cover) { - displayName = CSTRING(cover); + displayName = CSTRING(Cover); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(cover)) call FUNC(playSignal)); showDisabled = 1; priority = 1.6; }; class GVAR(Point) { - displayName = CSTRING(point); + displayName = CSTRING(Point); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(point)) call FUNC(playSignal)); showDisabled = 1; priority = 1.5; }; class GVAR(Engage) { - displayName = CSTRING(engage); + displayName = CSTRING(Engage); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(engage)) call FUNC(playSignal)); showDisabled = 1; priority = 1.4; }; class GVAR(Hold) { - displayName = CSTRING(hold); + displayName = CSTRING(Hold); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(hold)) call FUNC(playSignal)); showDisabled = 1; priority = 1.3; }; class GVAR(Warning) { - displayName = CSTRING(warning); + displayName = CSTRING(Warning); condition = QUOTE(canStand _target && GVAR(ReloadMutex)); statement = QUOTE(QUOTE(QGVAR(warning)) call FUNC(playSignal)); showDisabled = 1; priority = 1.2; }; - /* - class class GVAR(Yes) { - displayName = ECSTRING(common,Yes); - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); - showDisabled = 1; - priority = 1.1; - }; - - class class GVAR(No) { - displayName = ECSTRING(common,No); - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow 'gestureNo';); - showDisabled = 1; - priority = 1.0; - }; - - class class GVAR(Hi) { - displayName = CSTRING(Hi); - condition = QUOTE(canStand _target); - statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3);); - showDisabled = 1; - priority = 0.9; - }; - */ - }; - }; }; }; diff --git a/addons/gestures/key.sqf b/addons/gestures/key.sqf index 589f116f5b..98c21d4862 100644 --- a/addons/gestures/key.sqf +++ b/addons/gestures/key.sqf @@ -4,19 +4,20 @@ _x params ["_currentName","_key"]; private _signalName = format [QGVAR(%1), _currentName]; - if (_currentName select [0,2] == "BI") then { - //Don't add "ace_gestures_" prefix to BI gestures + + //Don't add "ace_gestures_" prefix to BI gestures + if (_key == -1) then { _signalName = _currentName; }; - private _code = (compile format [QUOTE('%1' call FUNC(playSignal);), _signalName]); + private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key); [ "ACE3 Gestures", _currentName, - localize format[LSTRING(%1), _currentName], + localize format [LSTRING(%1), _currentName], _code, {false}, [_key, [false, (_key != -1), false]], @@ -25,18 +26,18 @@ false } count [ - ["freeze", DIK_NUMPAD2], - ["cover", DIK_NUMPAD3], - ["forward", DIK_NUMPAD4], - ["regroup", DIK_NUMPAD5], - ["engage", DIK_NUMPAD6], - ["point", DIK_NUMPAD7], - ["hold", DIK_NUMPAD8], - ["warning", DIK_NUMPAD9], - ["BIgestureGo", -1], - ["BIgestureAdvance", -1], - ["BIgestureFollow", -1], - ["BIgestureUp", -1], - ["BIgestureFreeze", -1], - ["BIgestureCeaseFire", -1] + ["Freeze", DIK_NUMPAD2], + ["Cover", DIK_NUMPAD3], + ["Forward", DIK_NUMPAD4], + ["Regroup", DIK_NUMPAD5], + ["Engage", DIK_NUMPAD6], + ["Point", DIK_NUMPAD7], + ["Hold", DIK_NUMPAD8], + ["Warning", DIK_NUMPAD9], + ["Go", -1], + ["Advance", -1], + ["Follow", -1], + ["Up", -1], + ["Stop", -1], + ["CeaseFire", -1] ]; diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index 7ad0e4eaa6..56b77e97e9 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -25,7 +25,7 @@ Gestos Gesti - + Advance Vordringen Avanzar @@ -37,7 +37,7 @@ Avançar Avanzare - + Go Los Adelante @@ -49,7 +49,7 @@ Mover-se Muoversi - + Follow Folgen Seguirme @@ -61,7 +61,7 @@ Seguir Seguire - + Up Aufstehen Arriba @@ -73,7 +73,7 @@ Acima Alzarsi - + Cease Fire Feuer einstellen Alto el fuego @@ -85,19 +85,7 @@ Cessar Fogo Cessare il Fuoco - - Point - Zeigen - Señalar - Wskazać - Ukázat - Pointer - Показать направление - Mutat - Apontar - Puntare a - - + Stop Stop Halt @@ -108,8 +96,7 @@ Stop Detenerse - - + Freeze Keine Bewegung Alto @@ -121,8 +108,7 @@ Alto Fermi - - + Cover Deckung Cubrirse @@ -134,8 +120,7 @@ Proteger-se Copertura - - + Rally up Regroupement Sammeln @@ -146,8 +131,7 @@ Raggruppare Reunirse - - + Move forward En avant Vorwärts Bewegen @@ -158,8 +142,7 @@ Muovere avanti Avanzar - - + Engage Angriff Engager @@ -170,8 +153,7 @@ Ingaggiare Atacar - - + Point Pointer Zeigen @@ -182,8 +164,7 @@ Puntare Señalar - - + Hold Tenir Anhalten @@ -194,8 +175,7 @@ Mantenere Esperar - - + Warning Attention Achtung @@ -206,31 +186,7 @@ Attenzione Atención - - Hi - Hallo - Hola - Witaj - Ahoj - Salut - Привет - Helló - Olá - Ciao - - - Attack - Angreifen - Atacar - Do ataku - Zaútočit - Attaquer - Атаковать - Támadás - Atacar - Attaccare - - + Show Gestures On Interaction Menu Zeige Gesten im Interaktionsmenü Zobrazit posunky v interakčním menu @@ -239,7 +195,7 @@ Mostrar gestos en el menú de interacción Afficher les gestes au menu d'interaction. - + Show gestures on the self interaction menu, or just use keybinds, or disable completely Zeige Gesten im Selbst-Interkationsmenü, lege sie auf Schnelltasten, oder deaktiviere sie vollständig. Zobrazit posunky pro vlastní interakční menu, nebo prostě použít klávesové zkratky, nebo to zakázat úplně @@ -248,7 +204,7 @@ Muestror los gestos en el menú de interacción propia, utilizar solo combinación de teclas o desactivarlos completamente Afficher les gestes dans le menu d'interaction personnel, ou seulement utiliser les touches, ou desactiver complètement. - + Just Keybinds Nur Schnelltasten Pouze klávesové zkratky @@ -257,7 +213,7 @@ Solo mediante teclas Seulement les touches - + Keybinds + Interaction Menu Schnelltasten+ Interaktionsmenü Klávesové zkratky + interakční menu From 330977a709858636f27275463e0fdc7b7fe0f8e6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 29 Mar 2016 16:03:41 +0200 Subject: [PATCH 167/337] Remove including DIK KeyCodes definitions, use decimal codes, Improve BI gesture handling even further --- addons/gestures/XEH_postInit.sqf | 42 ++++++++++++++++++++++++++++++- addons/gestures/key.sqf | 43 -------------------------------- 2 files changed, 41 insertions(+), 44 deletions(-) delete mode 100644 addons/gestures/key.sqf diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index 3b4a92164e..ea63e2a388 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -5,4 +5,44 @@ if (!hasInterface) exitWith {}; // reload mutex, you can't play signal while reloading GVAR(ReloadMutex) = true; -#include "key.sqf" +{ + _x params ["_currentName", "_key", ["_vanillaKey", ""] ]; + + private _signalName = format [QGVAR(%1), _currentName]; + + // Don't add "ace_gestures_" prefix to BI gestures + if (_vanillaKey == "BI") then { + _signalName = _currentName; + }; + + private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; + + TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key); + + [ + "ACE3 Gestures", + _currentName, + localize format [LSTRING(%1), _currentName], + _code, + {false}, + [_key, [false, (_key != -1), false]], + false + ] call CBA_fnc_addKeybind; + + false +} count [ + ["Freeze", 80], // Numpad 2 + ["Cover", 81], // Numpad 3 + ["Forward", 75], // Numpad 4 + ["Regroup", 76], // Numpad 5 + ["Engage", 77], // Numpad 6 + ["Point", 71], // Numpad 7 + ["Hold", 72], // Numpad 8 + ["Warning", 73], // Numpad 9 + ["Go", -1, "BI"], + ["Advance", -1, "BI"], + ["Follow", -1, "BI"], + ["Up", -1, "BI"], + ["Stop", -1, "BI"], + ["CeaseFire", -1, "BI"] +]; diff --git a/addons/gestures/key.sqf b/addons/gestures/key.sqf deleted file mode 100644 index 98c21d4862..0000000000 --- a/addons/gestures/key.sqf +++ /dev/null @@ -1,43 +0,0 @@ -#include "\a3\editor_f\Data\Scripts\dikCodes.h" - -{ - _x params ["_currentName","_key"]; - - private _signalName = format [QGVAR(%1), _currentName]; - - //Don't add "ace_gestures_" prefix to BI gestures - if (_key == -1) then { - _signalName = _currentName; - }; - - private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; - - TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key); - - [ - "ACE3 Gestures", - _currentName, - localize format [LSTRING(%1), _currentName], - _code, - {false}, - [_key, [false, (_key != -1), false]], - false - ] call CBA_fnc_addKeybind; - - false -} count [ - ["Freeze", DIK_NUMPAD2], - ["Cover", DIK_NUMPAD3], - ["Forward", DIK_NUMPAD4], - ["Regroup", DIK_NUMPAD5], - ["Engage", DIK_NUMPAD6], - ["Point", DIK_NUMPAD7], - ["Hold", DIK_NUMPAD8], - ["Warning", DIK_NUMPAD9], - ["Go", -1], - ["Advance", -1], - ["Follow", -1], - ["Up", -1], - ["Stop", -1], - ["CeaseFire", -1] -]; From 2d22b0615094623b33de88b18230b3158ec367ac Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 29 Mar 2016 16:08:33 +0200 Subject: [PATCH 168/337] Add README.md to gestures and update author URL --- addons/gestures/README.md | 11 +++++++++++ addons/gestures/config.cpp | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 addons/gestures/README.md diff --git a/addons/gestures/README.md b/addons/gestures/README.md new file mode 100644 index 0000000000..e224ff6d69 --- /dev/null +++ b/addons/gestures/README.md @@ -0,0 +1,11 @@ +ace_gestures +======== + +Gestures system in interaction menu and keybinds. + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [jokoho48](https://github.com/jokoho48) diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index 39cb8f0951..ce60d26545 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -7,7 +7,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interact_menu"}; author[] = {"joko // Jonas", "Emperias", "Zigomarvin"}; - authorUrl = "https://github.com/commy2/"; + authorUrl = "https://github.com/jokoho48"; VERSION_CONFIG; }; }; From ec2be36e81bd763c6a51e2940793fbb792f2cca7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 29 Mar 2016 16:25:55 +0200 Subject: [PATCH 169/337] Use boolean --- addons/gestures/XEH_postInit.sqf | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/gestures/XEH_postInit.sqf b/addons/gestures/XEH_postInit.sqf index ea63e2a388..b764aeb176 100644 --- a/addons/gestures/XEH_postInit.sqf +++ b/addons/gestures/XEH_postInit.sqf @@ -5,14 +5,14 @@ if (!hasInterface) exitWith {}; // reload mutex, you can't play signal while reloading GVAR(ReloadMutex) = true; +// Add keybinds { - _x params ["_currentName", "_key", ["_vanillaKey", ""] ]; - - private _signalName = format [QGVAR(%1), _currentName]; + _x params ["_currentName", "_key", ["_vanillaKey", false] ]; // Don't add "ace_gestures_" prefix to BI gestures - if (_vanillaKey == "BI") then { - _signalName = _currentName; + private _signalName = _currentName; + if (!_vanillaKey) then { + _signalName = format [QGVAR(%1), _currentName]; }; private _code = compile format [QUOTE('%1' call FUNC(playSignal)), _signalName]; @@ -39,10 +39,10 @@ GVAR(ReloadMutex) = true; ["Point", 71], // Numpad 7 ["Hold", 72], // Numpad 8 ["Warning", 73], // Numpad 9 - ["Go", -1, "BI"], - ["Advance", -1, "BI"], - ["Follow", -1, "BI"], - ["Up", -1, "BI"], - ["Stop", -1, "BI"], - ["CeaseFire", -1, "BI"] + ["Go", -1, true], + ["Advance", -1, true], + ["Follow", -1, true], + ["Up", -1, true], + ["Stop", -1, true], + ["CeaseFire", -1, true] ]; From a4c848a090bfa25b0007482344dbaca78076a2f1 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 29 Mar 2016 17:00:54 +0200 Subject: [PATCH 170/337] formating --- addons/advanced_ballistics/XEH_postInit.sqf | 14 +++++++------- .../main/{CfgDependencies.hpp => CfgSettings.hpp} | 1 + addons/main/config.cpp | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) rename addons/main/{CfgDependencies.hpp => CfgSettings.hpp} (99%) diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 246529299c..7f4fc9341f 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -40,13 +40,13 @@ if (!hasInterface) exitWith {}; ACE_LOGWARNING_2("Weapon Mod [%1] missing ace compat pbo [%2] (from @ace\optionals)",_modPBO,_compatPBO); }; } forEach [ - ["RH_acc","ace_compat_rh_acc"], - ["RH_de_cfg","ace_compat_rh_de"], - ["RH_m4_cfg","ace_compat_rh_m4"], - ["RH_PDW","ace_compat_rh_pdw"], - ["RKSL_PMII","ace_compat_rksl_pm_ii"], - ["iansky_opt","ace_compat_sma3_iansky"], - ["R3F_Armes","ace_compat_r3f"] + ["RH_acc","ace_compat_rh_acc"], + ["RH_de_cfg","ace_compat_rh_de"], + ["RH_m4_cfg","ace_compat_rh_m4"], + ["RH_PDW","ace_compat_rh_pdw"], + ["RKSL_PMII","ace_compat_rksl_pm_ii"], + ["iansky_opt","ace_compat_sma3_iansky"], + ["R3F_Armes","ace_compat_r3f"] ]; }] call EFUNC(common,addEventHandler); diff --git a/addons/main/CfgDependencies.hpp b/addons/main/CfgSettings.hpp similarity index 99% rename from addons/main/CfgDependencies.hpp rename to addons/main/CfgSettings.hpp index 3414bc80b6..661108c53a 100644 --- a/addons/main/CfgDependencies.hpp +++ b/addons/main/CfgSettings.hpp @@ -1,3 +1,4 @@ + class CfgSettings { class CBA { class Versioning { diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 3181df1dea..7b15f0c8f0 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -586,6 +586,6 @@ class CfgMods { }; }; -#include "CfgDependencies.hpp" +#include "CfgSettings.hpp" #include "CfgModuleCategories.hpp" #include "CfgVehicleClasses.hpp" From ada519a59c2ad2fb371364be2064067fe507b802 Mon Sep 17 00:00:00 2001 From: bux578 Date: Tue, 29 Mar 2016 20:35:34 +0200 Subject: [PATCH 171/337] sort people --- AUTHORS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index c79206137c..46a5e50457 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -75,6 +75,7 @@ Gianmarco Varriale (TeamNuke) GieNkoV GitHawk gpgpgpgp +Grey-Soldierman Grzegorz Hamburger SV Harakhti @@ -119,4 +120,3 @@ voiper VyMajoris(W-Cephei) Winter zGuba -Grey-Soldierman From 6f412c312aaa7097cb049318b908794455d8e0f8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 30 Mar 2016 10:26:33 -0500 Subject: [PATCH 172/337] Delay calling addCuratorEditableObjects for a frame Fixes createVehicle not always being added on dedicated server. --- addons/zeus/functions/fnc_addObjectToCurator.sqf | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/zeus/functions/fnc_addObjectToCurator.sqf b/addons/zeus/functions/fnc_addObjectToCurator.sqf index 897f51532d..085fff09d1 100644 --- a/addons/zeus/functions/fnc_addObjectToCurator.sqf +++ b/addons/zeus/functions/fnc_addObjectToCurator.sqf @@ -13,12 +13,13 @@ #include "script_component.hpp" -if (!isServer) exitWith {}; - params ["_object"]; if (!(_object getVariable [QGVAR(addObject), GVAR(autoAddObjects)])) exitWith {}; -{ - _x addCuratorEditableObjects [[_object], true]; -}forEach allCurators; +[{ + TRACE_1("Delayed addCuratorEditableObjects",_this); + { + _x addCuratorEditableObjects [[_this], true]; + } forEach allCurators; +}, _object] call EFUNC(common,execNextFrame); From 6038ab89c9095aacb21244a65d24c1a3431b1730 Mon Sep 17 00:00:00 2001 From: Joko Date: Wed, 30 Mar 2016 23:02:52 +0200 Subject: [PATCH 173/337] improve Code to String --- addons/common/functions/fnc_codeToString.sqf | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/addons/common/functions/fnc_codeToString.sqf b/addons/common/functions/fnc_codeToString.sqf index b2817cd2b8..b4fe37db35 100644 --- a/addons/common/functions/fnc_codeToString.sqf +++ b/addons/common/functions/fnc_codeToString.sqf @@ -12,12 +12,11 @@ */ #include "script_component.hpp" -params ["_function"]; +params ["_code"]; +if (_code isEqualType "") exitWith {_code}; -if (_function isEqualType "") exitWith {_function}; +_code = str(_code); +_code = _code select [1, count _code - 2]; -_function = toArray str _function; -_function deleteAt 0; -_function deleteAt (count _function - 1); +_code -toString _function // return From 28468bec820670da5e0318440dca4e0d12872889 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 31 Mar 2016 00:57:04 +0200 Subject: [PATCH 174/337] specify helicopter cargo spaces, fix #3591 --- addons/cargo/CfgVehicles.hpp | 63 ++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index e1750d8aad..83fb9c1c00 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -194,12 +194,70 @@ class CfgVehicles { GVAR(hasCargo) = 1; }; - class Heli_Transport_02_base_F; - class I_Heli_Transport_02_F: Heli_Transport_02_base_F { + class Helicopter_Base_H; + class Heli_Light_01_base_F: Helicopter_Base_H { + GVAR(space) = 0; + GVAR(hasCargo) = 0; + }; + + class Heli_Light_02_base_F: Helicopter_Base_H { + GVAR(space) = 4; + }; + + class Helicopter_Base_F; + class Heli_light_03_base_F: Helicopter_Base_F { + GVAR(space) = 4; + }; + + class Heli_Transport_01_base_F: Helicopter_Base_H { + GVAR(space) = 8; + }; + + class Heli_Transport_02_base_F: Helicopter_Base_H { + GVAR(space) = 20; + }; + + class Heli_Transport_03_base_F: Helicopter_Base_H { + GVAR(space) = 40; + }; + + class Heli_Transport_04_base_F: Helicopter_Base_H { + GVAR(space) = 0; + GVAR(hasCargo) = 0; + }; + + class O_Heli_Transport_04_box_F: Heli_Transport_04_base_F { GVAR(space) = 20; GVAR(hasCargo) = 1; }; + class O_Heli_Transport_04_repair_F: Heli_Transport_04_base_F { + GVAR(space) = 12; + GVAR(hasCargo) = 1; + }; + + class O_Heli_Transport_04_ammo_F: Heli_Transport_04_base_F { + GVAR(space) = 8; + GVAR(hasCargo) = 1; + }; + + class O_Heli_Transport_04_fuel_F: Heli_Transport_04_base_F {}; + + class O_Heli_Transport_04_medevac_F: Heli_Transport_04_base_F { + GVAR(space) = 8; + GVAR(hasCargo) = 1; + }; + + class Heli_Attack_01_base_F: Helicopter_Base_F { + GVAR(space) = 0; + GVAR(hasCargo) = 0; + }; + + class Heli_Attack_02_base_F: Helicopter_Base_F { + GVAR(space) = 0; + GVAR(hasCargo) = 0; + }; + // jets class Plane: Air { GVAR(space) = 0; @@ -207,7 +265,6 @@ class CfgVehicles { }; // autonomus - class Helicopter_Base_F; class UAV_01_base_F: Helicopter_Base_F { GVAR(space) = 0; GVAR(hasCargo) = 0; From 92af6ffe2eb070005200963ec2c3e6f79df23c79 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 31 Mar 2016 01:03:40 +0200 Subject: [PATCH 175/337] add cargo space to csat attack heli (can transport 8 troops) --- addons/cargo/CfgVehicles.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 83fb9c1c00..a098c7a2b3 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -254,8 +254,7 @@ class CfgVehicles { }; class Heli_Attack_02_base_F: Helicopter_Base_F { - GVAR(space) = 0; - GVAR(hasCargo) = 0; + GVAR(space) = 4; }; // jets From c998ab622ec0ae1dcb808adca19efde150d5e197 Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Thu, 31 Mar 2016 14:41:09 +0200 Subject: [PATCH 176/337] fnc_getMGRSdata update1 fnc_getMGRSdata update1 --- addons/common/functions/fnc_getMGRSdata.sqf | 27 +++++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index ee6d1e11dc..c6ab86358c 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -22,27 +22,38 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude"); private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); -if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; }; +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 ["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", "Abbottabad"]) then { _lat = 30; _altitude = 1000; }; +if (_map in ["fata"]) then { _lat = 33; _altitude = 1347; }; +if (_map in ["Abbottabad"]) then { _lat = 34; _altitude = 0; }; if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; if (_map in ["Bornholm"]) then { _lat = 55; _altitude = 0; }; -if (_map in ["Imrali"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["bozcaada", "imrali", "imralispring"]) 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 ["Clafghan"]) then { _lat = 34; _altitude = 640; }; if (_map in ["Sangin", "hellskitchen"]) then { _lat = 32; _altitude = 0; }; -if (_map in ["Sara"]) then { _lat = 40; _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"]) then { _lat = -4; _altitude = 0; }; -if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; }; -if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; }; +if (_map in ["lingor", "lingor3"]) then { _lat = -4; _altitude = 0; }; +if (_map in ["panthera3"]) then { _lat = 46; _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 ["mef_alaska"]) then { _lat = 60; _altitude = 5; }; +if (_map in ["australia"]) then { _lat = -25; _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; }; private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM; private _easting = _UTM select 0; From d4a7d864aa3dfc2020f0705ab83306d6c2753f4b Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Thu, 31 Mar 2016 18:54:38 +0200 Subject: [PATCH 177/337] fnc_getMGRSdata update1 --- addons/common/functions/fnc_getMGRSdata.sqf | 27 +++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index c6ab86358c..b19f17a0e7 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -22,25 +22,26 @@ private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude"); private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); -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; }; +_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 = 0; }; +if (_map in ["abbottabad"]) then { _lat = 34; _altitude = 0; }; if (_map in ["sfp_wamako"]) then { _lat = 14; _altitude = 0; }; if (_map in ["sfp_sturko"]) then { _lat = 56; _altitude = 0; }; -if (_map in ["Bornholm"]) then { _lat = 55; _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 ["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 ["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 ["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 ["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 ["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 ["kunduz"]) then { _lat = 37; _altitude = 0; }; From fbaae2beb39805197cfc26f8a879f41f54bcead0 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 1 Apr 2016 21:25:00 +0200 Subject: [PATCH 178/337] 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 c19e00b46c..1849206963 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 179/337] 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 af4daf6799..4425b646ad 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 84c5a0d26620dd0078e6f92de7c21b5ca5d24ddf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 1 Apr 2016 21:51:22 -0500 Subject: [PATCH 180/337] FCS - Minor firedEH optimization --- addons/fcs/functions/fnc_firedEH.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index a9f4975780..4c9b7d8b85 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -16,10 +16,11 @@ TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret); private _FCSMagazines = _vehicle getVariable [format ["%1_%2", QGVAR(Magazines), _turret], []]; -private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; if !(_magazine in _FCSMagazines) exitWith {}; +private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; + // GET ELEVATION OFFSET OF CURRENT MAGAZINE private _offset = 0; From 4576ea019401ca7aca6a7ae5d3c038849c485068 Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Sat, 2 Apr 2016 09:50:50 +0200 Subject: [PATCH 181/337] abbottabad altitude fix altitude 0 for altitude 1256 --- 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 b19f17a0e7..8da838848a 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -29,7 +29,7 @@ if (_map in ["takistan", "zargabad", "mountains_acr"]) then { _lat = 35; _altitu 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 = 0; }; +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 ["bornholm"]) then { _lat = 55; _altitude = 0; }; From fed46628849cce47cf85a7ac426a4630bc53b1db Mon Sep 17 00:00:00 2001 From: nomisum Date: Sat, 2 Apr 2016 15:36:21 +0200 Subject: [PATCH 182/337] 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 1cdf993adc..97479ecafb 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 1b41404299..8074a5d494 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 183/337] fixed logic problem --- .../functions/fnc_fastRopeLocalPFH.sqf | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf b/addons/fastroping/functions/fnc_fastRopeLocalPFH.sqf index 8074a5d494..8334e07929 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"]; + + if (isNull (attachedTo _unit)) exitWith { + [_idPFH] call CBA_fnc_removePerFrameHandler; + }; + + playSound QGVAR(Rope); + }, 1, [_unit]] call CBA_fnc_addPerFrameHandler; }; -[{ - 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 { From caf06f58c8ceb182a6921841be9ccfe6b67376ca Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 2 Apr 2016 18:53:34 +0200 Subject: [PATCH 184/337] Add map altitude to GPS - fix #3650 --- addons/maptools/functions/fnc_openMapGpsUpdate.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf index 092f0720c2..4a77f4a6c3 100644 --- a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf +++ b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf @@ -6,15 +6,15 @@ private ["_mapGpsDisplay", "_ctrl"]; if ((!("ItemGPS" in assigneditems ACE_player)) || {isNull (uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull])}) exitWith { - ("RscACE_MapGps" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; //close GPS RSC - [(_this select 1)] call CBA_fnc_removePerFrameHandler; //remove frameHandler + ("RscACE_MapGps" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; // Close GPS RSC + [(_this select 1)] call CBA_fnc_removePerFrameHandler; // Remove frameHandler }; disableSerialization; _mapGpsDisplay = uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull]; _ctrl = _mapGpsDisplay displayCtrl 913590; -_ctrl ctrlSetText str(round(getDir ACE_player)); //set Heading +_ctrl ctrlSetText str (round (getDir ACE_player)); // Set Heading _ctrl = _mapGpsDisplay displayCtrl 913591; -_ctrl ctrlSetText str(round((getPosASL ACE_player) select 2)); //set Altitude +_ctrl ctrlSetText str (round ((getPosASL ACE_player) select 2) + EGVAR(common,mapAltitude)); // Set Altitude _ctrl = _mapGpsDisplay displayCtrl 913592; -_ctrl ctrlSetText mapGridPosition ACE_player; //set grid cords +_ctrl ctrlSetText mapGridPosition ACE_player; // Set grid cords From a9fd7c4d6fd18cf508e92505b9341ad100f9cb75 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 3 Apr 2016 02:27:23 +0200 Subject: [PATCH 185/337] 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 62925a6066..edab37dbcb 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 186/337] 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 edab37dbcb..af1b224cbb 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 187/337] 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 391c3a662d..ff4a88693e 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 LandVehicle { class ADDON { init = QUOTE(_this call DFUNC(initVehicle)); }; }; - class Tank { - class ADDON { - init = QUOTE(_this call DFUNC(initVehicle)); - }; - }; - class Helicopter { - 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 c0b312146b..7e19b0acd0 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 f8b46e859caaa23a3d3373b15218f4232d153b1c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 Apr 2016 23:36:38 -0500 Subject: [PATCH 188/337] Wait until postInit to install playerChanged event --- addons/common/XEH_postInit.sqf | 6 ------ addons/common/XEH_preInit.sqf | 19 +------------------ 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 8eeed526f5..ae1014ddc8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -332,12 +332,6 @@ GVAR(OldVisibleMap) = false; GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this GVAR(OldIsCamera) = false; -// clean up playerChanged eventhandler from preinit and put it in the same PFH as the other events to reduce overhead and guarantee advantageous execution order -if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { - [GVAR(PreInit_playerChanged_PFHID)] call CBA_fnc_removePerFrameHandler; - GVAR(PreInit_playerChanged_PFHID) = nil; -}; - // PFH to raise varios events [{ BEGIN_COUNTER(stateChecker); diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 20b3692b9f..16e0a65159 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -47,29 +47,12 @@ GVAR(statusEffect_Names) = []; GVAR(statusEffect_isGlobal) = []; ////////////////////////////////////////////////// -// Set up PlayerChanged eventhandler for pre init +// 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; -}; - - ////////////////////////////////////////////////// // Time handling ////////////////////////////////////////////////// From f409ce8248282e4ec8461330a63df3374be26018 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Thu, 7 Apr 2016 19:51:12 +0200 Subject: [PATCH 189/337] Add config style validation --- .travis.yml | 1 + addons/dagr/Dialog.hpp | 606 +++++++++++++------------- addons/dagr/RscTitles.hpp | 176 ++++---- addons/hearing/CfgSounds.hpp | 8 +- addons/huntir/CfgAmmo.hpp | 16 +- addons/realisticnames/CfgVehicles.hpp | 4 +- addons/tripod/CfgWeapons.hpp | 16 +- tools/config_style_checker.py | 157 +++++++ 8 files changed, 571 insertions(+), 413 deletions(-) create mode 100644 tools/config_style_checker.py diff --git a/.travis.yml b/.travis.yml index 1d2a49e2e6..3828300d7f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ before_script: fi script: - python3 tools/sqf_validator.py +- python3 tools/config_style_checker.py - if [ -n "${GH_TOKEN}" ] && [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then python3 tools/deploy.py; fi diff --git a/addons/dagr/Dialog.hpp b/addons/dagr/Dialog.hpp index 17c065f830..8511829e5e 100644 --- a/addons/dagr/Dialog.hpp +++ b/addons/dagr/Dialog.hpp @@ -76,349 +76,349 @@ class RscText; class DAGR_Button { - idc = -1; - type = CT_BUTTON; - style = ST_LEFT; - font = "RobotoCondensed"; - sizeEx = 0.02; - colorText[] = { 0, 1, 0, 1 }; - colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state - colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state - colorBackground[] = { 0, 0, 0, 0 }; - colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state - colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state - offsetX = 0; - offsetY = 0; - offsetPressedX = 0; - offsetPressedY = 0; - colorShadow[] = { 0, 0, 0, 0 }; - colorBorder[] = { 0, 0, 0, 0 }; - borderSize = 0; - soundEnter[] = { "", 0, 1 }; // no sound - soundPush[] = { "", 0, 1 }; - soundClick[] = { "", 0, 1 }; // no sound - soundEscape[] = { "", 0, 1 }; // no sound - x = 0.5; - y = 0.5; - w = 0.07; - h = 0.05; - text = ""; - action = ""; + idc = -1; + type = CT_BUTTON; + style = ST_LEFT; + font = "RobotoCondensed"; + sizeEx = 0.02; + colorText[] = { 0, 1, 0, 1 }; + colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state + colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state + colorBackground[] = { 0, 0, 0, 0 }; + colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state + colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state + offsetX = 0; + offsetY = 0; + offsetPressedX = 0; + offsetPressedY = 0; + colorShadow[] = { 0, 0, 0, 0 }; + colorBorder[] = { 0, 0, 0, 0 }; + borderSize = 0; + soundEnter[] = { "", 0, 1 }; // no sound + soundPush[] = { "", 0, 1 }; + soundClick[] = { "", 0, 1 }; // no sound + soundEscape[] = { "", 0, 1 }; // no sound + x = 0.5; + y = 0.5; + w = 0.07; + h = 0.05; + text = ""; + action = ""; }; class DAGR_Menu_Pic { - type = 0; - idc = -1; - style = 48; - x = 0; - y = 0; - w = 0.7; - h = 1.4; - text = ""; - colorBackground[] = {}; - colorText[] = {}; - font = "RobotoCondensed"; - sizeEx = 0.04; - waitForLoad = 0; + type = 0; + idc = -1; + style = 48; + x = 0; + y = 0; + w = 0.7; + h = 1.4; + text = ""; + colorBackground[] = {}; + colorText[] = {}; + font = "RobotoCondensed"; + sizeEx = 0.04; + waitForLoad = 0; }; class DAGR_Menu_Text { - type = 0; - idc = -1; - style = 0x00; - x = 0.5; - y = 0.5; - w = 0.15; - h = 0.15; - colorBackground[] = { 0, 0, 0, 0 }; - colorText[] = { 0.239, 0.216, 0.153, 1 }; - font = "RobotoCondensed"; - sizeEx = 0.03; - waitForLoad = 0; - text = ""; + type = 0; + idc = -1; + style = 0x00; + x = 0.5; + y = 0.5; + w = 0.15; + h = 0.15; + colorBackground[] = { 0, 0, 0, 0 }; + colorText[] = { 0.239, 0.216, 0.153, 1 }; + font = "RobotoCondensed"; + sizeEx = 0.03; + waitForLoad = 0; + text = ""; }; class DAGR_Menu { - idd = 266860; - movingEnable = false; - duration = 100000; - fadein = 0; - fadeout = 0; - name = "Dagr_Menu"; - onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]"; + idd = 266860; + movingEnable = false; + duration = 100000; + fadein = 0; + fadeout = 0; + name = "Dagr_Menu"; + onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]"; onUnload = QUOTE(GVAR(PWR) = true); // Simulate pressing the power button - controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button", - "DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0", - "DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2", - "DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3", - "DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"}; + controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button", + "DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0", + "DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2", + "DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3", + "DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"}; - class DAGR_MENU_UI : DAGR_Menu_Pic { - idc = 266861; - x = 0.175; - y = -0.173; - text = QUOTE(PATHTOF(UI\dagr_menu.paa)); - sizeEx = 0.1; - }; + class DAGR_MENU_UI : DAGR_Menu_Pic { + idc = 266861; + x = 0.175; + y = -0.173; + text = QUOTE(PATHTOF(UI\dagr_menu.paa)); + sizeEx = 0.1; + }; - class DAGR_PWR_Button : DAGR_Button { - idc = 266863; - action = QUOTE(GVAR(PWR) = true); - x = 0.40; - y = 0.65; - }; + class DAGR_PWR_Button : DAGR_Button { + idc = 266863; + action = QUOTE(GVAR(PWR) = true); + x = 0.40; + y = 0.65; + }; - class DAGR_UP_Button : DAGR_Button { - idc = 266864; - action = QUOTE(GVAR(UP) = true); - x = 0.50; - y = 0.675; - }; + class DAGR_UP_Button : DAGR_Button { + idc = 266864; + action = QUOTE(GVAR(UP) = true); + x = 0.50; + y = 0.675; + }; - class DAGR_DOWN_Button : DAGR_Button { - idc = 266865; - action = QUOTE(GVAR(DOWN) = true); - x = 0.50; - y = 0.81; - }; + class DAGR_DOWN_Button : DAGR_Button { + idc = 266865; + action = QUOTE(GVAR(DOWN) = true); + x = 0.50; + y = 0.81; + }; - class DAGR_LEFT_Button : DAGR_Button { - idc = 266866; - action = QUOTE(GVAR(LEFT) = true); - x = 0.40; - y = 0.735; - w = 0.05; - h = 0.07; - }; + class DAGR_LEFT_Button : DAGR_Button { + idc = 266866; + action = QUOTE(GVAR(LEFT) = true); + x = 0.40; + y = 0.735; + w = 0.05; + h = 0.07; + }; - class DAGR_RIGHT_Button : DAGR_Button { - idc = 266867; - action = QUOTE(GVAR(RIGHT) = true); - x = 0.62; - y = 0.735; - w = 0.05; - h = 0.07; - }; + class DAGR_RIGHT_Button : DAGR_Button { + idc = 266867; + action = QUOTE(GVAR(RIGHT) = true); + x = 0.62; + y = 0.735; + w = 0.05; + h = 0.07; + }; - class DAGR_NEXT_Button : DAGR_Button { - idc = 266868; - action = QUOTE(DAGR_NEXT = true); - x = 0.60; - y = 0.65; - }; + class DAGR_NEXT_Button : DAGR_Button { + idc = 266868; + action = QUOTE(DAGR_NEXT = true); + x = 0.60; + y = 0.65; + }; - class DAGR_SEL_Button : DAGR_Button { - idc = 266869; - action = QUOTE(GVAR(SEL) = true); - x = 0.54; - y = 0.735; - w = 0.06; - h = 0.06; - }; + class DAGR_SEL_Button : DAGR_Button { + idc = 266869; + action = QUOTE(GVAR(SEL) = true); + x = 0.54; + y = 0.735; + w = 0.06; + h = 0.06; + }; - class DAGR_MENU_Button : DAGR_Button { - idc = 266870; - action = QUOTE(GVAR(MENU_B) = true); - x = 0.46; - y = 0.735; - w = 0.06; - h = 0.06; - }; + class DAGR_MENU_Button : DAGR_Button { + idc = 266870; + action = QUOTE(GVAR(MENU_B) = true); + x = 0.46; + y = 0.735; + w = 0.06; + h = 0.06; + }; - class DAGR_F1_Button : DAGR_Button { - idc = 266871; - action = QUOTE(GVAR(F1) = true); - x = 0.40; - y = 0.575; - }; + class DAGR_F1_Button : DAGR_Button { + idc = 266871; + action = QUOTE(GVAR(F1) = true); + x = 0.40; + y = 0.575; + }; - class DAGR_F2_Button : DAGR_Button { - idc = 266872; - action = QUOTE(GVAR(F2) = true); - x = 0.495; - y = 0.575; - }; + class DAGR_F2_Button : DAGR_Button { + idc = 266872; + action = QUOTE(GVAR(F2) = true); + x = 0.495; + y = 0.575; + }; - class DAGR_F3_Button : DAGR_Button { - idc = 266873; - action = QUOTE(GVAR(F3) = true); - x = 0.59; - y = 0.575; - }; + class DAGR_F3_Button : DAGR_Button { + idc = 266873; + action = QUOTE(GVAR(F3) = true); + x = 0.59; + y = 0.575; + }; - class DAGR_F1_Text : DAGR_Menu_Text { - idc = 266874; - x = 0.388; - y = 0.38; - text = ""; - }; + class DAGR_F1_Text : DAGR_Menu_Text { + idc = 266874; + x = 0.388; + y = 0.38; + text = ""; + }; - class DAGR_F2_Text : DAGR_Menu_Text { - idc = 266875; - x = 0.506; - y = 0.38; - }; + class DAGR_F2_Text : DAGR_Menu_Text { + idc = 266875; + x = 0.506; + y = 0.38; + }; - class DAGR_F3_Text : DAGR_Menu_Text { - idc = 266876; - x = 0.612; - y = 0.38; - }; + class DAGR_F3_Text : DAGR_Menu_Text { + idc = 266876; + x = 0.612; + y = 0.38; + }; - class DAGR_MENU_OPTION0 : DAGR_Menu_Text { - idc = 2668777; - style = 0x02; - sizeEx = 0.035; - x = 0.43; - y = 0.19; - }; + class DAGR_MENU_OPTION0 : DAGR_Menu_Text { + idc = 2668777; + style = 0x02; + sizeEx = 0.035; + x = 0.43; + y = 0.19; + }; - class DAGR_MENU_OPTION1 : DAGR_Menu_Text { - idc = 2668778; - style = 0x02; - sizeEx = 0.035; - x = 0.43; - y = 0.225; - }; + class DAGR_MENU_OPTION1 : DAGR_Menu_Text { + idc = 2668778; + style = 0x02; + sizeEx = 0.035; + x = 0.43; + y = 0.225; + }; - class DAGR_MENU_OPTION2 : DAGR_Menu_Text { - idc = 2668779; - style = 0x02; - sizeEx = 0.035; - x = 0.43; - y = 0.26; - }; + class DAGR_MENU_OPTION2 : DAGR_Menu_Text { + idc = 2668779; + style = 0x02; + sizeEx = 0.035; + x = 0.43; + y = 0.26; + }; - class DAGR_MENU_OPTION3 : DAGR_Menu_Text { - idc = 2668780; - style = 0x02; - sizeEx = 0.035; - x = 0.43; - y = 0.295; - }; + class DAGR_MENU_OPTION3 : DAGR_Menu_Text { + idc = 2668780; + style = 0x02; + sizeEx = 0.035; + x = 0.43; + y = 0.295; + }; - class DAGR_MENU_OPTION4 : DAGR_Menu_Text { - idc = 2668781; - style = 0x02; - sizeEx = 0.035; - x = 0.43; - y = 0.33; - }; - class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic { - idc = 2668783; - x = 0.42; - y = 0.246; - w = 0.17; - h = 0.035; - sizeEx = 0.05; - }; + class DAGR_MENU_OPTION4 : DAGR_Menu_Text { + idc = 2668781; + style = 0x02; + sizeEx = 0.035; + x = 0.43; + y = 0.33; + }; + class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic { + idc = 2668783; + x = 0.42; + y = 0.246; + w = 0.17; + h = 0.035; + sizeEx = 0.05; + }; - class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic { - idc = 2668784; - x = 0.42; - y = 0.281; - w = 0.17; - h = 0.035; - sizeEx = 0.05; - }; + class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic { + idc = 2668784; + x = 0.42; + y = 0.281; + w = 0.17; + h = 0.035; + sizeEx = 0.05; + }; - class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic { - idc = 2668785; - x = 0.42; - y = 0.316; - w = 0.17; - h = 0.035; - sizeEx = 0.05; - }; + class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic { + idc = 2668785; + x = 0.42; + y = 0.316; + w = 0.17; + h = 0.035; + sizeEx = 0.05; + }; - class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic { - idc = 2668786; - x = 0.42; - y = 0.351; - w = 0.17; - h = 0.035; - sizeEx = 0.05; - }; + class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic { + idc = 2668786; + x = 0.42; + y = 0.351; + w = 0.17; + h = 0.035; + sizeEx = 0.05; + }; - class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic { - idc = 2668787; - x = 0.42; - y = 0.386; - w = 0.17; - h = 0.035; - sizeEx = 0.05; - }; + class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic { + idc = 2668787; + x = 0.42; + y = 0.386; + w = 0.17; + h = 0.035; + sizeEx = 0.05; + }; - class DAGR_MENU_Main_Text : DAGR_Menu_Text { - idc = 2668782; - style = ST_CENTER; - x = 0.38; - y = 0.32; - w = 0.25; - h = 0.035; - sizeEx = 0.04; - }; + class DAGR_MENU_Main_Text : DAGR_Menu_Text { + idc = 2668782; + style = ST_CENTER; + x = 0.38; + y = 0.32; + w = 0.25; + h = 0.035; + sizeEx = 0.04; + }; - class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic { - idc = 2668788; - x = 0.451; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic { + idc = 2668788; + x = 0.451; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic { - idc = 2668789; - x = 0.465; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic { + idc = 2668789; + x = 0.465; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic { - idc = 2668790; - x = 0.479; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic { + idc = 2668790; + x = 0.479; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic { - idc = 2668791; - x = 0.493; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic { + idc = 2668791; + x = 0.493; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic { - idc = 2668792; - x = 0.507; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic { + idc = 2668792; + x = 0.507; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic { - idc = 2668793; - x = 0.521; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic { + idc = 2668793; + x = 0.521; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic { - idc = 2668794; - x = 0.535; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic { + idc = 2668794; + x = 0.535; + y = 0.352; + w = 0.01; + h = 0.003; + }; - class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic { - idc = 2668795; - x = 0.549; - y = 0.352; - w = 0.01; - h = 0.003; - }; + class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic { + idc = 2668795; + x = 0.549; + y = 0.352; + w = 0.01; + h = 0.003; + }; }; diff --git a/addons/dagr/RscTitles.hpp b/addons/dagr/RscTitles.hpp index 9ab34ee86f..ab70517c9a 100644 --- a/addons/dagr/RscTitles.hpp +++ b/addons/dagr/RscTitles.hpp @@ -1,95 +1,95 @@ class RscTitles { - class DAGR_Text { - type = 0; - idc = -1; - style = 0x01; - x = 0; - y = 0; - w = 0.15; - h = 0.050; - text = ""; - colorBackground[] = { 0, 0, 0, 0 }; - colorText[] = { 0.239, 0.216, 0.153, 1 }; - font = "RobotoCondensed"; - sizeEx = 0.04; - waitForLoad = 0; - }; - class DAGR_Pic { - type = 0; - idc = -1; - style = 48; - x = 0; - y = 0; - w = 0.50; - h = 0.50; - text = ""; - colorBackground[] = {}; - colorText[] = {}; - font = "RobotoCondensed"; - sizeEx = 0.02; - waitForLoad = 0; - }; + class DAGR_Text { + type = 0; + idc = -1; + style = 0x01; + x = 0; + y = 0; + w = 0.15; + h = 0.050; + text = ""; + colorBackground[] = { 0, 0, 0, 0 }; + colorText[] = { 0.239, 0.216, 0.153, 1 }; + font = "RobotoCondensed"; + sizeEx = 0.04; + waitForLoad = 0; + }; + class DAGR_Pic { + type = 0; + idc = -1; + style = 48; + x = 0; + y = 0; + w = 0.50; + h = 0.50; + text = ""; + colorBackground[] = {}; + colorText[] = {}; + font = "RobotoCondensed"; + sizeEx = 0.02; + waitForLoad = 0; + }; - class DAGR_Display { - idd = 266850; - movingEnable = false; - duration = 100000; - fadein = 0; - fadeout = 0; - name = "Dagr_Display"; - onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]"; - controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"}; + class DAGR_Display { + idd = 266850; + movingEnable = false; + duration = 100000; + fadein = 0; + fadeout = 0; + name = "Dagr_Display"; + onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]"; + controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"}; - class DAGR_UI : DAGR_Pic { - idc = 266856; - x = "(SafeZoneW + SafeZoneX) - 0.45"; - y = "(SafeZoneH + SafeZoneY) - 0.47"; - }; + class DAGR_UI : DAGR_Pic { + idc = 266856; + x = "(SafeZoneW + SafeZoneX) - 0.45"; + y = "(SafeZoneH + SafeZoneY) - 0.47"; + }; - class DAGR_Grid : DAGR_Text { - idc = 266851; - x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830 - y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845 - w = 0.25; - h = 0.06; - sizeEx = 0.07; - }; - class DAGR_Speed : DAGR_Text { - idc = 266852; - x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812 - y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 - }; - class DAGR_Elevation : DAGR_Text { - idc = 266853; - x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930 - y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 - }; - class DAGR_Heading : DAGR_Text { - idc = 266854; - x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 - y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656 - }; - class DAGR_Time : DAGR_Text { - idc = 266855; - x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925 - y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 - }; + class DAGR_Grid : DAGR_Text { + idc = 266851; + x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830 + y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845 + w = 0.25; + h = 0.06; + sizeEx = 0.07; + }; + class DAGR_Speed : DAGR_Text { + idc = 266852; + x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812 + y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 + }; + class DAGR_Elevation : DAGR_Text { + idc = 266853; + x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930 + y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 + }; + class DAGR_Heading : DAGR_Text { + idc = 266854; + x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 + y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656 + }; + class DAGR_Time : DAGR_Text { + idc = 266855; + x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925 + y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 + }; - class DAGR_WP : DAGR_Text { - idc = 266857; - x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965 - y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 - }; + class DAGR_WP : DAGR_Text { + idc = 266857; + x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965 + y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 + }; - class DAGR_Bearing : DAGR_Text { - idc = 266858; - x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 - y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 - }; - class DAGR_DIST : DAGR_Text { - idc = 266859; - x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935 - y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 - }; - }; + class DAGR_Bearing : DAGR_Text { + idc = 266858; + x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787 + y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914 + }; + class DAGR_DIST : DAGR_Text { + idc = 266859; + x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935 + y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965 + }; + }; }; diff --git a/addons/hearing/CfgSounds.hpp b/addons/hearing/CfgSounds.hpp index 7afdae88cb..0a1bc82ed1 100644 --- a/addons/hearing/CfgSounds.hpp +++ b/addons/hearing/CfgSounds.hpp @@ -27,8 +27,8 @@ class CfgSounds { sound[] = {QUOTE(PATHTOF(sounds\deafness_noring.ogg)),3,1}; titles[] = {}; }; - class ACE_Ring_Backblast { - sound[] = {QUOTE(PATHTOF(sounds\backblast_ring.ogg)),1,1}; - titles[] = {}; - }; + class ACE_Ring_Backblast { + sound[] = {QUOTE(PATHTOF(sounds\backblast_ring.ogg)),1,1}; + titles[] = {}; + }; }; diff --git a/addons/huntir/CfgAmmo.hpp b/addons/huntir/CfgAmmo.hpp index fac4d6fe60..86f73e9755 100644 --- a/addons/huntir/CfgAmmo.hpp +++ b/addons/huntir/CfgAmmo.hpp @@ -33,13 +33,13 @@ class CfgAmmo { soundFakeFall2[] = {"",3.16228,1,1000}; soundFakeFall3[] = {"",3.16228,1,1000}; soundFakeFall[] = {}; - hit = 0; - indirectHit = 0; - indirectHitRange = 0; - explosive = 1; - model = "\A3\weapons_f\empty"; - airFriction = 0; - timeToLive = 1; - explosionTime = 0.001; + hit = 0; + indirectHit = 0; + indirectHitRange = 0; + explosive = 1; + model = "\A3\weapons_f\empty"; + airFriction = 0; + timeToLive = 1; + explosionTime = 0.001; }; }; diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index 61864a8259..4ecbbe1b89 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -642,6 +642,6 @@ class CfgVehicles { class Item_Base_F; class Item_acc_flashlight: Item_Base_F { - displayName="UTG Defender 126"; - }; + displayName="UTG Defender 126"; + }; }; diff --git a/addons/tripod/CfgWeapons.hpp b/addons/tripod/CfgWeapons.hpp index 5ae0ee84d2..adc14912c2 100644 --- a/addons/tripod/CfgWeapons.hpp +++ b/addons/tripod/CfgWeapons.hpp @@ -2,16 +2,16 @@ class CfgWeapons { class ACE_ItemCore; class InventoryItem_Base_F; - class ACE_Tripod: ACE_ItemCore { - author[] = {"Rocko", "Scubaman3D"}; - scope = 2; - displayName = CSTRING(DisplayName); - descriptionShort = ""; - model = PATHTOF(data\w_sniper_tripod.p3d); - picture = PATHTOF(UI\w_sniper_tripod_ca.paa); + class ACE_Tripod: ACE_ItemCore { + author[] = {"Rocko", "Scubaman3D"}; + scope = 2; + displayName = CSTRING(DisplayName); + 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/tools/config_style_checker.py b/tools/config_style_checker.py new file mode 100644 index 0000000000..65bd57a449 --- /dev/null +++ b/tools/config_style_checker.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python3 + +import fnmatch +import os +import re +import ntpath +import sys +import argparse + +def check_config_style(filepath): + bad_count_file = 0 + def pushClosing(t): + closingStack.append(closing.expr) + closing << Literal( closingFor[t[0]] ) + + def popClosing(): + closing << closingStack.pop() + + with open(filepath, 'r', encoding='utf-8', errors='ignore') as file: + content = file.read() + + # Store all brackets we find in this file, so we can validate everything on the end + brackets_list = [] + + # To check if we are in a comment block + isInCommentBlock = False + checkIfInComment = False + # Used in case we are in a line comment (//) + ignoreTillEndOfLine = False + # Used in case we are in a comment block (/* */). This is true if we detect a * inside a comment block. + # If the next character is a /, it means we end our comment block. + checkIfNextIsClosingBlock = False + + # We ignore everything inside a string + isInString = False + # Used to store the starting type of a string, so we can match that to the end of a string + inStringType = ''; + + lastIsCurlyBrace = False + checkForSemiColumn = False + + # Extra information so we know what line we find errors at + lineNumber = 0 + + indexOfCharacter = 0 + # Parse all characters in the content of this file to search for potential errors + for c in content: + if (lastIsCurlyBrace): + lastIsCurlyBrace = False + if c == '\n': # Keeping track of our line numbers + lineNumber += 1 # so we can print accurate line number information when we detect a possible error + if (isInString): # while we are in a string, we can ignore everything else, except the end of the string + if (c == inStringType): + isInString = False + # if we are not in a comment block, we will check if we are at the start of one or count the () {} and [] + elif (isInCommentBlock == False): + + # This means we have encountered a /, so we are now checking if this is an inline comment or a comment block + if (checkIfInComment): + checkIfInComment = False + if c == '*': # if the next character after / is a *, we are at the start of a comment block + isInCommentBlock = True + elif (c == '/'): # Otherwise, will check if we are in an line comment + ignoreTillEndOfLine = True # and an line comment is a / followed by another / (//) We won't care about anything that comes after it + + if (isInCommentBlock == False): + if (ignoreTillEndOfLine): # we are in a line comment, just continue going through the characters until we find an end of line + if (c == '\n'): + ignoreTillEndOfLine = False + else: # validate brackets + if (c == '"' or c == "'"): + isInString = True + inStringType = c + elif (c == '/'): + checkIfInComment = True + elif (c == '('): + brackets_list.append('(') + elif (c == ')'): + if (len(brackets_list) > 0 and brackets_list[-1] in ['{', '[']): + print("ERROR: Possible missing round bracket ')' detected at {0} Line number: {1}".format(filepath,lineNumber)) + bad_count_file += 1 + brackets_list.append(')') + elif (c == '['): + brackets_list.append('[') + elif (c == ']'): + if (len(brackets_list) > 0 and brackets_list[-1] in ['{', '(']): + print("ERROR: Possible missing square bracket ']' detected at {0} Line number: {1}".format(filepath,lineNumber)) + bad_count_file += 1 + brackets_list.append(']') + elif (c == '{'): + brackets_list.append('{') + elif (c == '}'): + lastIsCurlyBrace = True + if (len(brackets_list) > 0 and brackets_list[-1] in ['(', '[']): + print("ERROR: Possible missing curly brace '}}' detected at {0} Line number: {1}".format(filepath,lineNumber)) + bad_count_file += 1 + brackets_list.append('}') + elif (c== '\t'): + print("ERROR: Tab detected at {0} Line number: {1}".format(filepath,lineNumber)) + bad_count_file += 1 + + else: # Look for the end of our comment block + if (c == '*'): + checkIfNextIsClosingBlock = True; + elif (checkIfNextIsClosingBlock): + if (c == '/'): + isInCommentBlock = False + elif (c != '*'): + checkIfNextIsClosingBlock = False + indexOfCharacter += 1 + + if brackets_list.count('[') != brackets_list.count(']'): + print("ERROR: A possible missing square bracket [ or ] in file {0} [ = {1} ] = {2}".format(filepath,brackets_list.count('['),brackets_list.count(']'))) + bad_count_file += 1 + if brackets_list.count('(') != brackets_list.count(')'): + print("ERROR: A possible missing round bracket ( or ) in file {0} ( = {1} ) = {2}".format(filepath,brackets_list.count('('),brackets_list.count(')'))) + bad_count_file += 1 + if brackets_list.count('{') != brackets_list.count('}'): + print("ERROR: A possible missing curly brace {{ or }} in file {0} {{ = {1} }} = {2}".format(filepath,brackets_list.count('{'),brackets_list.count('}'))) + bad_count_file += 1 + return bad_count_file + +def main(): + + print("Validating Config Style") + + sqf_list = [] + bad_count = 0 + + parser = argparse.ArgumentParser() + parser.add_argument('-m','--module', help='only search specified module addon folder', required=False, default="") + args = parser.parse_args() + + # Allow running from root directory as well as from inside the tools directory + rootDir = "../addons" + if (os.path.exists("addons")): + rootDir = "addons" + + for root, dirnames, filenames in os.walk(rootDir + '/' + args.module): + for filename in fnmatch.filter(filenames, '*.cpp'): + sqf_list.append(os.path.join(root, filename)) + for filename in fnmatch.filter(filenames, '*.hpp'): + sqf_list.append(os.path.join(root, filename)) + + for filename in sqf_list: + bad_count = bad_count + check_config_style(filename) + + print("------\nChecked {0} files\nErrors detected: {1}".format(len(sqf_list), bad_count)) + if (bad_count == 0): + print("Config validation PASSED") + else: + print("Config validation FAILED") + + return bad_count + +if __name__ == "__main__": + sys.exit(main()) From 85b436636827561f7193fac7a91001353df26149 Mon Sep 17 00:00:00 2001 From: jonpas Date: Fri, 8 Apr 2016 20:34:50 +0200 Subject: [PATCH 190/337] 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 27ccb2377b..804a6e9236 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 8ff21e60cc..62663c843b 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 620d895d9e..6411085b24 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 cc4a7880fe..6e8a136a03 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 42d1e56ae2..af5e1a9955 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 07b93eb2da..0990d87aca 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 51d2338292..94704e8132 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 f85cac82b4..7ba8cebbc5 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 e462c0cefa..1e0c0f3e71 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 dfea64678d..cc50b3be5e 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 d9b16eec10..0ce3950de1 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 a8215c0cdc..2afa1cfea4 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 7092962519..1b65a0a4bf 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 dfeab3b017..008762653f 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 dc8db802e5..f740d0e371 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 c1cd541e9c..337baa4235 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 de1f7f7cf4..1e958027be 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 22075e2903..488d4210c4 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 416eef2c77..ce012fc3aa 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 c51b3bd454..1552bc8bc5 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 7aef3f4786..ce0d005a14 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 dd18c07209..01f128bbea 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 7f0a7f6cff..89bfd8af4e 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 9fcd903cdd..b6601e094c 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 8511829e5e..52e3a8f683 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 e4fb341537..59a77909b4 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 63350c71a3..a981514e54 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 ef93a53d8a..23996c46b4 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 204a5ef556..2d1aee4d4e 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 66bd08190e..c233eaff6a 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 b4a1a4c7dd..1d04bb157c 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 404ef4aa76..4e7122ba41 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 d26d5ecea2..d9ad0508db 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 280906432f..145ae0804e 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 b651903f59..075bb87325 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 5f81bde127..fb724e830a 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 cd900b2da3..a3f3b32d4c 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 45582a8564..cf97794d8f 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 94f3fe51f0..b978539432 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 a9f5ebfbad..5bced23b49 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 4c4da2a7cb..f3303c28ff 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 74229968e4..8125e7f2f5 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 61c8f077ab..e8a1035583 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 09fe70d764..84edac6c85 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 963a35fa8e..80c8114624 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 4bf98f4978..00e04f23a4 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 50a835abe6..30e2d4d2dd 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 0812200a87..7ac4048748 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 5aa33284c8..a5971044f9 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 16dd9929ff..d1d9127fa4 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 0a1bc82ed1..6df1b39193 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 17dec1641b..760ed95a03 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 af7b7d4cb3..c063c0e896 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 86f73e9755..e822e76389 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 c11f81a98c..62ae785333 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 3b6486aaf7..cd5054a2da 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 6ff271d604..ac57491e77 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 ca1e85466b..745bef8dc3 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 117a828b0b..5c4379cc3e 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 0b71ebb4e1..2939cb6ad5 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 d03d3e0f36..71070b1715 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 8ee95b7eb9..7b8ad69ee0 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 1cd527089d..17cf03a689 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 75aaf7c332..8e489bfaa2 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 ea1e12626c..e2f097d89a 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 9ca6510928..ccc4fa3bd2 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 c31b736ac6..8b318994a2 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 7046918935..276e8c4392 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 64d06fea1c..348c6306e1 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 5793d36976..0807284ed6 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 530c5b86a9..3cf83715ba 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 a6f2db786f..2daa8c8011 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 46120f7c3d..8beedff39b 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 9958190ec1..598e72255b 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 2b365cc8e6..0674c44f1a 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 e28ff17db6..f926a53e01 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 1390397e5e..a189c18b9c 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 78af19bcfe..0bf4833bf0 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 a64c8e014d..e45f041ffa 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 df52756eee..16eba79cb2 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 d4c88883e6..5593d66181 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 5cec99bfb0..dc7a7046dd 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 170f0d1620..c5b230f163 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 5d11c6a6e9..530d213773 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 5934203333..900e6cb26c 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 54a8ba60f5..fca025adcb 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 6b5fa48344..9cc5faedf9 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 86ad45296b..fb64aa07e5 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 4bd5452794..7d9a273c6c 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 02e5985297..f36a87855b 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 520a431d7b..76c1da46c0 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 1122c2e942..6a5138def8 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 d2bbf55fd1..1918511566 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 c443819caa..16c79e7c6a 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 3fcf92beaa..cf596c9762 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 6fa84b6e7b..92ace96c53 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 c918bcf454..c11019cafb 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 dba6b54f18..9b461d6b64 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 a8fbb8f83f..c60201b34e 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 ebf0b04f66..c53398905f 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 fa6667f874..75b0277192 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 f535840e99..cb5454321d 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 6bf0e51619..c719dd7ee4 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 679539e1a2..a726bc5a9f 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 2d921973d4..916b626969 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 6f590e2ed4..7ff5943a88 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 7ca13b5aeb..6b8b8956ae 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 6aeb24fc5a..ef3706cd32 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 95c3f5228b..f031882da7 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 8b489ad64f..8e119eabd0 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 8a053a3262..72be31d8cf 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 3bbd6b62bc..42a2326a0e 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 1be66d3aa2..3a810ebe26 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 9ea038f877..82602842ca 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 c32fc02abf..bd2831eeb6 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 ec4b868b84..9d7eee58b8 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 f59c4d7911..12cfe6e498 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 9c62e77f21..99d0f9794b 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 ff9196ca60..db673db100 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 4ca785a1ea..b5dad94425 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 c6f41a7362..277db4d2f9 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 9e0793e36b..e7df701409 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 7195c0a008..dfc643fa47 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 c4da1862ca..9db5a44dee 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 8bee12de85..c13218e472 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 665d217d39..078dccea37 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 7a9552cfe3..c826948fa2 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 0a1d6f55dc..13379b865b 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 4650e8ffbe..103fab0537 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 64d62ad424..86eee7be4f 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 1a26fc78d4..870ce9c78d 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 9063c7f730..2da106d79b 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 81756249e1..8a17384933 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 7aec20458c..1a4bcc99c3 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 d92d92fc49..a93e780c84 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 98c9aba99f..4c449bac52 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 7e82d48ffc..af3108eb59 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 f6869462ac..268aabbef5 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 418eea5a15..ef5f1e1c3e 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 9b5825572b..f167b9df7e 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 f0549cb00e..1e12cc03d6 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 ed0ed0eb8c..2fa00d2790 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 602ee41d33..d458f7dd06 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 a805a75679..1984b3b14a 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 81880a4265..520779c877 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 5b20e9e4c1..9f9049360a 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 418b32e550..f3f11a2824 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 adc14912c2..03b2e92075 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 019d774da8..86704c3218 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 a028012cec..b94c2edf64 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 ea0d054e5e..eb39febfe8 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 6141e40fa8..7a77a3aab8 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 1293e1286d..4870b10a69 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 73453961c1..27f9063794 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 d44adfb68d..bcd565774f 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 68dbe9d642..f9d85d84e3 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 62c6fdcec2..28cb00717a 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 873c875f09..5906f05f79 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 0895988737..1d72a5538d 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 f98a1e50f5..ab3d408fdc 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 f81384c1b0..5ea69c59a0 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 c52949e1fc..866a00d9c1 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 54e15401a6..382a6d09fc 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 0013355370..947c8edb66 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 191/337] 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 e45f041ffa..dd870e6e49 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 192/337] 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 a64c8e014d..6879a922d5 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 193/337] 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 72816f2c3f..b4c57457af 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 ff5813434a..7c54141d4a 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 b651903f59..6f5e23e8ac 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 a9f5ebfbad..005ea2f85f 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 afe4bc1931..3a02d2bd04 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 9ed43ae14f..03484438eb 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 86ad45296b..6a3a06b6c0 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 ebf0b04f66..073fad95ba 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 8b489ad64f..c10b03ebd8 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 024ee76c29..24554ba4eb 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 194/337] 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 38184808d2..ee6f86f388 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 195/337] 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 ee6f86f388..b6cacdbea3 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 196/337] 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 d0b14e4f90..e7d5584938 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 197/337] 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 f561806eaa..4bf80641e3 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 198/337] 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 | 29 ++++++---------------- addons/fastroping/CfgVehicles.hpp | 4 +++ 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ae1014ddc8..4c05b1cf7a 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 3071ffbd47..6c728134d1 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"]; +private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F"], 10]; -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; - }; - }; +{ + 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 a9f5ebfbad..dcd399508b 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 199/337] 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 dcd399508b..609e386e68 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 ccfa2c3e56..3770bfe0d4 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 200/337] 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 ae1014ddc8..c10246212c 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 c3c8daad16..9f6d20ae97 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 f7c3f60a8a..6027a34fd5 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 25e58151c5..f5b7d8cbfc 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 fb505f4f4e..ee79a1d427 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 201/337] 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 9f6d20ae97..9ee40529e7 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 202/337] 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 f7155fd87b..c3b0dc3f34 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 203/337] 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 | 31 ++++++--------- addons/viewdistance/script_component.hpp | 5 +++ 9 files changed, 64 insertions(+), 81 deletions(-) diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 86d906bfce..4c6639370c 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 fea5de5a4f..c040baf334 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 45b86d944d..dfcfd7e405 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 f1ea7121b2..87b6232e99 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; -if (!_land_vehicle && !_air_vehicle) exitWith { - [GVAR(viewDistanceOnFoot),_show_prompt] call FUNC(changeViewDistance); +private _landVehicle = _vehicle isKindOf "LandVehicle" || _vehicle isKindOf "Ship_F"; +private _airVehicle = _vehicle isKindOf "Air"; + +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 28bba29b67..c5f39ff2f8 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 90c70b810c..257dca2995 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 7224292fa4..35c0894520 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 bcde34316a..4a57747d97 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 - setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); - } else { - setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10); - }; - 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)); + if ((vehicle ACE_player) isKindOf "Air") then { + setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); + } else { + 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 dfd04bbf9d..f5cd31f8ce 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 204/337] 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 87b6232e99..4816ee946e 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 205/337] 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 ffd75a38bc..3de22a2da4 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 206/337] 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 3de22a2da4..06647d8dd5 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 207/337] 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 4bf80641e3..67e337291b 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 208/337] 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 5fa31478e2..4f83196524 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 3bd559f702..43e951629e 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 209/337] 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 dd18c07209..88975ea7e9 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 ac59798d10..1af3f93151 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 210/337] 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 9646f065d4..aa6922946a 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 e4fb341537..471150dd1c 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 019d774da8..a28321bdc8 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 e2a52b47ef..e4cdf9a55b 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 ff4e5fc6ad..b76fe0ad0c 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 babef0819c..0d4bb59d27 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 80135294d4..fd8d73858c 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 211/337] 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 7b2c195f10..bf4a679bdc 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 212/337] 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 0000000000..617adb21da --- /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 1d3d8dac05..d7ef509174 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 23abe8e826..d1df112606 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 0000000000..50311c3a06 --- /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 dd569781e7..dc6f11ee39 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 0000000000..ee57af2f86 --- /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 213/337] 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 617adb21da..dbe6dec13a 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 214/337] 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 aa6922946a..c73cbda3d7 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 471150dd1c..54cb4467c5 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 b76fe0ad0c..517cf3ea37 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 0d4bb59d27..5b099235da 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 215/337] 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 c73cbda3d7..7844e8a53a 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 216/337] 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 4bf98f4978..8294f43759 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 b764aeb176..5aa1de9874 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 217/337] 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 5aa1de9874..6d9e057e29 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 218/337] 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 5f81bde127..d5e7e5c968 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 219/337] 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 d5e7e5c968..3db6546208 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 220/337] 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 24340db031..391b3627eb 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 97cc3e026b..d228696fc0 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 92cc981065..b94b0f9a22 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 221/337] 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 705415e65d..712cc2be1c 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 c635de2bd3..93d8bd6426 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 17682c72de..5ac9ee427e 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 222/337] 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 ecad382cb5..29bca9c81a 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 223/337] 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 605af2fa85..9d6c062ac2 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 f8fe21d760..db8151dbd7 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 0964e419bc..126bb6a957 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 126bf0b70f..23803acdd1 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 4ed8107330..c752d1eba2 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 224/337] 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 dfeab3b017..3b2239019d 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 225/337] 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 a07afe8e22..f6cd923845 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"]; +params ["_target", "_unit"]; +TRACE_2("params",_target,_unit); -_unit = _this select 1; -_target = _this select 0; -_parameters = _this select 2; // ??? +//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); + [] +}; -private ["_actions", "_weapon", "_loadableMissiles"]; +private _actions = []; -_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 5bbfe4dd87..116a900092 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 e75d826513..f466490b64 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 ce7b743df5..db010b5e47 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 fc802a025c..2aec180d22 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 226/337] 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 db010b5e47..9f0b36ce8d 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 227/337] 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 57daacd207..e3cb368362 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 32a979653f..820712189f 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 4cabe2ce06..c49d09502f 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 1a03e59409..7b0e4ad1f8 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 ee57af2f86..f5d5f1b12d 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 0e1afa21a1..812964bbb7 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 a3953be23b..ef0ccc68a2 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 f825882be6..e9812128f4 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 ff14fea9f7..35b947ce97 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 f545bc8a35..1de69ece38 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 3269d9cf7e..abbf9533e7 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 ee79a1d427..0bce5cd685 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 b78febbef7..bdb88a2675 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 1849206963..bf4056df49 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 617a604457..440b3537ba 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 42e7932411..74cd89e93b 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 228/337] 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 528f77375c..0a86535231 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 229/337] 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 ba19d58c65..bc7da07960 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 230/337] 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 8aa5d3173e..2c3701b8e0 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 26a4605910..a6868033e6 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 97dad6e7b6..625cd68deb 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 4b61a28551..8d4907523b 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 869ce8d098..839cba8b69 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 7c5abac47e..8fe89dc4fe 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 07b93eb2da..791374c9d0 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 5e1cdfa453..a3c45a977d 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 3d44c14b53..b3457793b9 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 4f46932a0b..ec61edd1f4 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 2e66b5ea7b..b3cf1b4393 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 a433153c0e..b342072018 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 0f42f9637c..14a0a276cc 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 ce761c2216..87e973c7c0 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 0fd4b913b8..f3eb814da7 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 1cc1f9338b..e5dbf54bd5 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 059bc7e40b..7d8b7a0239 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 738a154d17..96c31459b2 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 0e9f702383..5372b205d0 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 90fefbf37e..2cfa2f8df5 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 d13ef4fb2e..83d2daa95f 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 5b88a6cfce..4d1680d195 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 d084754959..e8c910ca74 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 bb708efaab..2b6ca29e23 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 e368381333..931a6c2309 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 3f6835bbba..4c0495decf 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 484151853b..e0d3ae8fa6 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 327a9814d1..e5af2454cb 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 bdc4588b05..afb71b423a 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 66bd08190e..1a2f25ac4d 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 31928e8621..1529d39319 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 9013c812cc..7e68c9016f 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 352dc2c83a..c2389fdaf5 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 394c0cfd3b..94a22d7224 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 41734d2806..916949bab2 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 7702e34fd5..64d8ede26d 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 ac95957ad4..494a2af727 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 feb79f5370..8f20c690ef 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 6c1b9870b6..5544b9b132 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 86f73e9755..33328094b2 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 6ff271d604..6d74cbfba9 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 0b71ebb4e1..6b6e0e69b0 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 6e48c1ec2a..ab23701760 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 3053cf1fa1..80111d9484 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 1cd527089d..74863ef08f 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 75aaf7c332..1e32752145 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 ea1e12626c..d3fff71db0 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 5793d36976..581ab1a1ae 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 d8976ac204..780107fdf7 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 70a25e6f85..6dff36a4e8 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 d87136c960..08f0a794be 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 84613cd988..7899ec1253 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 6d993b07de..8726ce4201 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 22287f1342..45b60a69c1 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 661108c53a..58cb824a6f 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 9e98d0efea..01cd9427e8 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 00e9e737cf..f3b3ba6106 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 bc6746f46e..836b483a20 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 78bfae43af..018edf68d9 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 08c078c4f5..2de05575f7 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 98a4cf8c51..e6624507d1 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 4b609085a8..5042cbac97 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 f3434fef9b..96e417a7e8 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 31f4739417..a7e729cf32 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 5069556078..16b4b87767 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 b9a3502035..171e169651 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 081ab16353..bd300effe8 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 7fc77fdd56..26f8d14c6e 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 0b8cc67842..8f0c430db2 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 615916de7f..18c434f4c6 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 17cb92f9cc..5a6714a374 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 341da388ca..616feb8660 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 c4da1862ca..bc4101c483 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 ea86d9986e..e1659016bb 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 3e886eb97a..ea085ed5b1 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 04317d46d7..a7b0b996e2 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 4ecbbe1b89..db42e693bf 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 d47773cd83..6e5eac4fa8 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 1a26fc78d4..5f8ef61315 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 442d4c39d0..eb1d8400a2 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 50ee1a4f71..5b0c6d11a6 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 a167e0fea5..e15017d715 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 9b5825572b..3b550f9f5d 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 d29e75b6a4..5d7eac6f1a 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 adc14912c2..6322ef1906 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 b457e10cad..4166247505 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 b344ad2bdf..e1b56f2ed2 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 4c88f59f95..ddd314c0c6 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 3ea28d6a44..66a351096c 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 8fa18500e8..9146b266b3 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 1d89bf5971..a7e56e815d 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 5f123b8cb2..1cb20e71b6 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 578f55ee40..9ad3005d28 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 0013355370..c7ea7b6ec8 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 231/337] 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 65bd57a449..03d8f222fe 100644 --- a/tools/config_style_checker.py +++ b/tools/config_style_checker.py @@ -40,7 +40,7 @@ def check_config_style(filepath): 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 232/337] 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 7414d7d715..7a905a3315 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -50,7 +50,7 @@ def check_sqf_syntax(filepath): 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 233/337] 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 8e465970eb..04913f7670 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 806823f4c4..d9179a912a 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 0000000000..28fea8f697 --- /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 0000000000..5d71c58df4 --- /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 234/337] 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 28fea8f697..3928d1c822 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 235/337] 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 a4601c6f95..481d36cf30 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 0000000000..d472bb0d5c --- /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 ea6ba555d5..bc4f197c07 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 236/337] 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 6e8528cf03..5d55e40f2d 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 0b125af1aa..3dea56a98d 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 22257e3cb5..a6b952062e 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 0000000000..829ad5bb49 --- /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 237/337] 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 6e3bdbe774..767e4b6c88 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 bd4da5569b..1bd364eafb 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 3d557f9a2e..75601002a3 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 238/337] 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 839cba8b69..e71658f490 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 e1659016bb..b921b71ff8 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 239/337] 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 0867b486c6..c373b84615 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 b0e0b1ff34..656cb8dc81 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 ef9ef0d02b..c2b1faf9cf 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 240/337] 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 b94b0f9a22..64b716ee29 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 241/337] 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 9f0b36ce8d..db18e7edaa 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 242/337] 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 | 101 ++++++++++-------- .../functions/fnc_swapBarrelCallback.sqf | 2 +- ...c_updateSpareBarrelsTemperaturesThread.sqf | 2 +- addons/overheating/stringtable.xml | 10 +- 7 files changed, 77 insertions(+), 64 deletions(-) diff --git a/addons/overheating/ACE_Settings.hpp b/addons/overheating/ACE_Settings.hpp index 6cff3268ff..abf08c9874 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 492230513f..5da5fd0dc2 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 0a86535231..23a2b613f5 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 96d518ac9f..e4935b8831 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); +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 - // Keep track of the temperature of stored spare barrels - GVAR(storedSpareBarrels) = [] call CBA_fnc_hashCreate; + if !(GVAR(enabled) && {[ACE_player] call FUNC(canUnjam)}) exitWith {false}; - // 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); + // 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; - -// Add keybinds -["ACE3 Weapons", QGVAR(unjamWeapon), localize LSTRING(UnjamWeapon), -{ - // Conditions: canInteract - if !([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false}; - // Conditions: specific - - if !([ACE_player] call FUNC(canUnjam)) exitWith {false}; - - // Statement - [ACE_player, currentMuzzle ACE_player, false] call FUNC(clearJam); - true -}, -{false}, -[19, [true, false, false]], false] call CBA_fnc_addKeybind; //SHIFT + R Key - - -// Schedule cool down calculation of player weapons at (infrequent) regular intervals -[] call FUNC(updateTemperatureThread); - ["SettingsInitialized", { + TRACE_1("SettingsInitialized eh", GVAR(enabled)); + if (!GVAR(enabled)) 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); + + // Keep track of the temperature of stored spare barrels + 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); + + // Schedule cool down calculation of stored spare barrels + [] call FUNC(updateSpareBarrelsTemperaturesThread); + }; + + if !(hasInterface) exitWith {}; + + GVAR(cacheWeaponData) = call CBA_fnc_createNamespace; + GVAR(cacheAmmoData) = call CBA_fnc_createNamespace; + GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; + + //Add Take EH (for reload) + ["CAManBase", "Take", {_this call FUNC(handleTakeEH);}] call CBA_fnc_addClassEventHandler; + // 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 339b6627b1..403989deca 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 852cb1c580..d6b74f6769 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 3eb67701de..e49ad433fc 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 243/337] 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 57cbecba75..fe12a88b7f 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 244/337] 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 a19e000332..9c32634060 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 0b0ed8fd17..571fa9c25a 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 245/337] 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 d6226fd0ab..2d8a5d7a27 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 e842590f35..6129f14a65 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 ceb6b62d25..e103b6e018 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 3e1c83839b..4dfa172bb3 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 dcae85fa25..2fb2a46211 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 075408499b..a36d3dd98d 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 1cb8b747ef..e95947ec75 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 0b7b2d4628..940af87d15 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 6ff2e1e867..b04c7b39b3 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 0038027e3b..3730c08c58 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 9c53a84a7c..0a88948a7f 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 637584178c..f1e7595b74 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 abf08c9874..fc3237da0f 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 7b60527449..72d26b46cf 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 9ee40529e7..46228e2e44 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 86083d6d07..7f0c4f9d96 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 fe15e63e87..e3fc653cb2 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 fabc8b94ad..f8a431410f 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 2214451247..5b58659f6e 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 246/337] 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 4b1f653223..43c812d1a2 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 ce9428cea4..1f010962b5 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 247/337] 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 1be66d3aa2..2089a1dc80 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 eb1d8400a2..cd87167f22 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 248/337] 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 9e15e42446..0253c6ed4b 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 0adcb624d8..4c4d11ecf6 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 249/337] 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 ff9196ca60..4127bad166 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 42ad18b304..55e887f3e6 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 250/337] 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 7bd375a58b..2366081ec1 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 390ff658e0..5c19f8f12d 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 251/337] 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 bf2730efc7..adeb536362 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 ed78d43592..2ebffe680e 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 252/337] 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 916949bab2..cd6cc64cfd 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 926cbaab0c..2fed1630f2 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 0000000000..1323639621 --- /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 ead78866c1..3a00fdea68 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 253/337] 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 | 81 +++++++++++++++------ 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index 8da838848a..04c063ac79 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 ["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"]) then { _lat = 40; _altitude = 0; }; +if (_map in ["caribou"]) then { _lat = 68; _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 ["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 ["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 ["bornholm"]) then { _lat = 55; _altitude = 0; }; -if (_map in ["bozcaada", "imrali", "imralispring"]) 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 ["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 ["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 254/337] 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 2611d10b38..2ed50c5d0e 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 255/337] Add downloads count shield --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ead78c57f..37b5f2a626 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 256/337] 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 6280fc4731..0000000000 --- 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 a65d31f1a5..0000000000 --- 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 4aefb4570a..0000000000 --- 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 34784706a0..0000000000 --- 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 b6f387b02f..0000000000 --- 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 257/337] 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 0b9c0f8dd8..0f3d720599 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 258/337] 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 332f13d982..fbf63930c4 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 259/337] 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 085fff09d1..176b55dfdc 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 505fa0d7737007ed03b4ee24924fb3e8daaf33f4 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 10 May 2016 11:50:59 +0200 Subject: [PATCH 260/337] 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 3f6835bbba..b2c6728a37 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 261/337] 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 04c063ac79..2087b0c4bf 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 262/337] 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 46a5e50457..42923c77e5 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 037f1df2f3..f748d222de 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 a74abeb3b8..7275741f40 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 adeb536362..17991c538e 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 8334e07929..03df460f55 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 263/337] 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 0000000000..49fcf00960 --- /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 264/337] 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 2087b0c4bf..2747752ce1 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 265/337] 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 d75a01f2e3..e252d879f9 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 e7b7bb80ec..73e5897236 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, [""]]]; + +if (isNil "_weapon") then { + _weapon = currentWeapon _unit; +}; + +private _attachments = [_unit weaponAccessories _weapon] param [0, ["","","",""]]; private _muzzles = _weapon call FUNC(getWeaponMuzzles); -private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0); - // get loaded magazines and ammo -private _magazines = []; -private _ammo = []; - -{ - _magazines pushBack ""; - _ammo pushBack 0; - false -} count _muzzles; +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 266/337] 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 3928d1c822..a79b2ab917 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 11dd8c4ee6..b64abc3623 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 5d71c58df4..13a7b77f9a 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 267/337] 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 4bd5452794..235e3c154b 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 268/337] =?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 2747752ce1..44fc204638 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 269/337] 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 a8a607d537..ea20d0fcdd 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 270/337] 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 ea20d0fcdd..381f64505c 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 271/337] 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 272/337] 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 75601002a3..87a212cd44 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 02a9660bdd..f05018d3e8 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 273/337] 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 6b6e0e69b0..b1c1cf852f 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 06647d8dd5..f10cccba3a 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 0a1d6f55dc..da5f42e9a8 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 274/337] 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 f10cccba3a..2d8f54b725 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 275/337] 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 06647d8dd5..a2f9587524 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 74ea0d4c10..3d7247fcaa 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 276/337] 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 2d8f54b725..f38dc21d23 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 277/337] 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 a2f9587524..6ec3a2cefd 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 278/337] 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 6b6e0e69b0..5a81d0b6fc 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 71facedc3f..be6158cdd5 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 0000000000..478c89ca45 --- /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 9a6c86a18e..bdeaf29012 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 279/337] 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 c899a56127..0000000000 --- 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 d61b2cf200..0000000000 --- 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 f2c95b8ca2..0000000000 --- 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 08bba0bcb1..0000000000 --- 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 e8737f0ab6..0000000000 --- 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 3a73a661d5..0000000000 --- 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 718356494d..0000000000 --- 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 280/337] 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 235e3c154b..1c752c2aea 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 281/337] 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 3e55f7b7ce..77a48c9340 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 282/337] use 'getUnitLoadout' instead of 'FUNC(getAllGear)' and deprecate it --- addons/common/XEH_postInit.sqf | 4 +- .../common/functions/fnc_assignedItemFix.sqf | 38 +++----------- 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 | 49 ++++++++++--------- addons/scopes/XEH_postInit.sqf | 5 +- 12 files changed, 55 insertions(+), 74 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index a6b952062e..2b5637a78f 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 d93409ce7c..3f454f83ff 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; + _assignedItems = _assignedItems param [9, ["","","","","",""]]; // ["ItemMap","ItemGPS","ItemRadio","ItemCompass","ItemWatch","NVGoggles"] - 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); + 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 715966b176..716793f7bd 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 152eb4fd60..6334991796 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 832c961178..3a038ed923 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 5d29d22cec..8d8911a6bf 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 5a6714a374..96badd59af 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 598661a3da..ad4044e6e5 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 cd1ad33491..2b9509f39d 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 ab5ecedbda..3b1ae1c86f 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 af3acb7fb4..a035bdd52d 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 (currentWeapon _unit != "") then { - private _index = 0; - - while { - _index < 100 && {currentWeaponMode _unit != _activeWeaponMode} - } do { - _unit action ["SwitchWeapon", _unit, _unit, _index]; - _index = _index + 1; + 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; + + 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 8f2adeb0b7..625f963f33 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 283/337] 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 2b5637a78f..0eac9a3e63 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 284/337] 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 0eac9a3e63..14e09e2c5b 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 285/337] 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 14e09e2c5b..e75841cb8e 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 3e55f7b7ce..77a48c9340 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 286/337] 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 3dea56a98d..d8a25211b3 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 0000000000..fc23b0e57f --- /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 287/337] 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 d92d92fc49..f7b1c9c197 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 e15017d715..f681a3df8d 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 288/337] 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 fc23b0e57f..21905e8e4e 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 f681a3df8d..60b50c4d09 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 289/337] 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 2b5637a78f..82cf0da2ea 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 290/337] 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 716793f7bd..cebcc489f1 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 291/337] 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 3f454f83ff..18dd6b4e0c 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 3a038ed923..37edd7184b 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 292/337] 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 17991c538e..e3bd21482f 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 03df460f55..3a1e8d5707 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 52b2cc11f9..29a1d559b4 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 ac102d5d59..4b7577e931 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 77a48c9340..5be2510c78 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 c9df4c6e91..0c05c91970 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 08cb85083c..7887a87ce6 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 d6b74f6769..31ffbf0b59 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 293/337] 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 4886512525..3a9fe12683 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 294/337] 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 3a9fe12683..69a52da367 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 295/337] 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 8922da7c6f..88012a7884 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 296/337] 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 3a00fdea68..0ab559f96c 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 87d8673cd8..34effc0a58 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 b830d5e564..930976bf33 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 c49b9bc5e4..8ef39bd666 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 297/337] 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 f6f543d35a..bed9389716 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 9908832824..6d489de006 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 91b49554c2..1dcd1ca49e 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 919ac3a58e..4fbd247d16 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 908d8064f0..05f58a5922 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 625f963f33..cc1d9e9c5c 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 e33c54337d..a7feade1c3 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 0000000000..b5cc729cbb --- /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 d28c0dee7e..07eadb5620 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 298/337] 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 4fbd247d16..113d369a3c 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 299/337] 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 1dcd1ca49e..3899584788 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 05f58a5922..908d8064f0 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 cc1d9e9c5c..1763bb7a32 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 b5cc729cbb..0000000000 --- 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 300/337] 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 | 56 +++++++++---------- 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, 39 insertions(+), 62 deletions(-) diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 16e0a65159..dea4e64538 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 2366081ec1..5b1e7a5a3a 100644 --- a/addons/common/functions/fnc_setHearingCapability.sqf +++ b/addons/common/functions/fnc_setHearingCapability.sqf @@ -5,48 +5,44 @@ * 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; - -{ - if (_id == _x select 0) exitWith { - _exists = true; - if (_add) then { - _x set [1, _settings]; - } else { - _map set [_forEachIndex, 0]; - _map = _map - [0]; - }; - }; -} forEach _map; - -if (!_exists && _add) then { - _map pushBack [_id, _settings]; -}; - -missionNamespace setVariable [QGVAR(setHearingCapabilityMap), _map]; - -// find lowest volume private _lowestVolume = 1; -{ - _lowestVolume = (_x select 1) min _lowestVolume; - false -} count _map; +GVAR(setHearingCapabilityMap) = GVAR(setHearingCapabilityMap) select { + _x params ["_xID", "_xSetting"]; + if (_id == _xID) then { + _exists = true; + if (_add) then { + _x set [1, _setting]; + _lowestVolume = _lowestVolume min _setting; + true + } else { + false + }; + } else { + _lowestVolume = _lowestVolume min _xSetting; + true + }; +}; + +if (!_exists && _add) then { + _lowestVolume = _lowestVolume min _setting; + GVAR(setHearingCapabilityMap) pushBack [_id, _setting]; +}; // in game sounds 0 fadeSound _lowestVolume; diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp index 352f802435..aa8dbf5134 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 cbae40dee0..fdd61ccfde 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 799de52320..76c6707de5 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 f583ab0050..46bbee4fae 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 58eedc7b39..2212bd6222 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 8d8911a6bf..f0d3b907f6 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 301/337] 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 60b50c4d09..7efb38d41e 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 302/337] 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 e73795e148..3e7f09215f 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 6161f5c4cc..49002cc40e 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 6f59798cc6..4a26e2c03d 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 229f3ab1f7..0479580764 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 8c471824cf..5c36e20197 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 408a5529d5..ef2a1278dc 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 303/337] 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 3e7f09215f..30860652cc 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 49002cc40e..fb4d4cff2e 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 4a26e2c03d..666e70f3c9 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 5c36e20197..5fc5bd159b 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 ef2a1278dc..7dcaff4221 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 304/337] 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 7a905a3315..8827aaa4ba 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -8,7 +8,7 @@ import sys 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 check_sqf_syntax(filepath): 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 305/337] 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 30860652cc..3e7f09215f 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 fb4d4cff2e..49002cc40e 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 666e70f3c9..4a26e2c03d 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 5fc5bd159b..5c36e20197 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 7dcaff4221..ef2a1278dc 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 306/337] 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 8827aaa4ba..c824b35268 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -8,7 +8,7 @@ import sys 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 307/337] 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 88012a7884..c3cda091d8 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 f447d126af..991b4e11f9 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 d88969b059..e462a4bbf8 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 c8d2ef7e2b..6df60cf24d 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 2525f81c95..ca4ba69f5d 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 07bd443a06..7b1fbca291 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 fe12a88b7f..f81cef5f79 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 84d7274069..ed5a419e3c 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 44ca157b0c..a18e19fe37 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 024ee76c29..c486ed50a0 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 22be7b86ac..dc112b388e 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 2b9509f39d..aa53c6741a 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 43c812d1a2..ea3e6a5510 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 4584a1fc3c..fde8ef05ad 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 926ac008dc..0b2caa2c70 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 5928804d7b..d5020391e6 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 a26b2d474a..64cc77c221 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 308/337] 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 7b3f034c6d..289093c5b6 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 6f282ba656..fe26fdc16f 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 bbc6c540fe..ad33bd6140 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 309/337] 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 305c3c0960..42bfe44dbc 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 05c625b374..0cf5c78082 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 aeb75c00d4..9f811197e0 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 d9f469eee2..dd173c4125 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 06c5473c88..69ab31122b 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 5aada0950f..567a107697 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 dcb59ff2a1..9d3079262a 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 29659b351e..a15d2e4165 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 d4f84730e6..58291d0689 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 ffc3c35081..8a902536e0 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 5d55e40f2d..beb07e35e7 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 f447d126af..6d786aebf4 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 c51b3bd454..3c20195e48 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 3c68327535..8dae6b2816 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 c0cf7b93e7..3b3b16a9f9 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 bf6b35a862..1cfba0a422 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 ff5813434a..326eb92548 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 88975ea7e9..0a746ac1e0 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 6e8ae8f4f5..50429c054b 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 dffa15b609..0bca28c3cf 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 be2f932028..e80d12a9c6 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 24a279e7a7..39a2f06045 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 e744af6bce..fc494a5fad 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 a01f181635..b7f4893e52 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 44addcda9f..6bfeac8595 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 709ea688d5..6dd1094c6a 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 84d7274069..35333ecc17 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 ca219ed13c..1f529d9765 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 0cd0ca3234..38a2cad8c6 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 dcabda56ba..d619a24297 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 dd4bfe4e71..843f23cdb5 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 eaf603f938..6d714611be 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 404f94e9d8..004c176b65 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 5e8bf931bb..37eb6c7eb8 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 4896259014..e4bce8458c 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 3756bb1416..09008c97cb 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 17ddf32557..856f361d3a 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 37edd7184b..0bce24060f 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 944b98f127..0e3bfe67cc 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 bc8d0bafbf..7a883ab7e7 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 e7d5584938..f1622c8680 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 74360e39b9..be2b4ce952 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 c708f3a3cf..0d0779ccef 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 284c573c2e..e603dd8743 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 551b9975b6..d0aa60cf22 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 e06ada87ea..14be9f3a5a 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 ab23701760..0e1daa4a52 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 61e4b12b10..5ae49049fe 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 2de05575f7..549a89730d 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 5b0783b454..d3f52413be 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 f0d3b907f6..b6839bfff1 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 85232498bd..a5dc596ba2 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 a11cc4689f..1969e3ff74 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 52b2cc11f9..5b4e3e4421 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 03c1234713..af17ffcd34 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 84ffa01258..49c5ab35f3 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 971342affb..f26387ea08 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 b46ffcf1ad..4cf237e949 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 868b07fbf4..504135c204 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 ac102d5d59..d5ddb8c224 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 6d89675d8a..00ef00a82c 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 6dae7ab276..38b967b03e 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 77a48c9340..5c254422b1 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 061a28c081..52974a878d 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 25bc8aacb5..1584509a2b 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 d7f80edc35..dfb0584e9f 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 c9df4c6e91..46497c88ee 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 92e2af341f..c39ef99ca6 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 67e295e22e..92260ff75e 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 2d921973d4..0c9031137e 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 8e09608e07..43c17cd619 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 bef61b73e7..42157f230f 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 fd2ac5f56c..0fb600f83a 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 086e7dce43..7011385c02 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 b6cacdbea3..4e42f769f7 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 d6b74f6769..e12a495f04 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 76a332e480..476ff3e352 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 d6b599b771..a124a331d5 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 b0581a143a..8edfd172c0 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 d472bb0d5c..8ff14e209a 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 dba1ae5d0a..c24ec29232 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 f5b982f0ea..3c3c02b3c9 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 fa8aae40a5..f004a1e844 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 64d62ad424..eb40ccfb07 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 c560bc15ba..c37e0ed0d9 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 7e04d047fd..fd4560fdec 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 4c31c4ff6a..d54d629b66 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 792905db0f..42d1498b88 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 381f64505c..3a69bb1383 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 c32961024c..f51c922b8e 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 1f010962b5..83ed864219 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 926ac008dc..4c6b22160d 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 81c9bc10a5..cdcc78bea3 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 09f756c109..21560f948f 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 ed0ed0eb8c..814329e87d 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 43e951629e..c2b4a6601a 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 0e3bb8075d..ead21f8d91 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 8e1eb41fd0..3a54901044 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 223dc42df6..954eed1ca3 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 dd51bbbae5..53059f34bf 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 418b32e550..01118ac62b 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 886aa5087e..9a291480ad 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 3168703f31..64dc0786e8 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 be23dc8dd9..7cc7cac5f7 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 27577e4dbe..99e822d53d 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 5ac9ee427e..fb8972ef1d 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 176b55dfdc..d727bb6826 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 d10d36b839..a27730be1d 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 310/337] 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 1496cfa2b9..f5287f8716 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 6186ad6bff..d11c19d5fb 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 d3eb511949..e35fe67b00 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 311/337] 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 b5f4f0558e..bece5bfbc2 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 cebcc489f1..de6ea62dff 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 487295ccc3..af013dfc42 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 312/337] 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 88012a7884..bedec4f3aa 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 289093c5b6..c1c4b81592 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 fe26fdc16f..1ac0d3f54d 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 ad33bd6140..76f3d22ce1 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 313/337] 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 bece5bfbc2..aacac7c142 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 af013dfc42..4f1e0fcdd6 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 314/337] 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 f5287f8716..34aaa03172 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 d11c19d5fb..92a6d43a42 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 e35fe67b00..eb5015e20a 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 ccbd52e811a23012ee6563d79980cdf25c00a4cd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 23 May 2016 15:51:09 -0500 Subject: [PATCH 315/337] 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 d9be666426..42f9dc3dd5 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 cfb3d7f0a90bd183b45ff34d425531e332ec648f Mon Sep 17 00:00:00 2001 From: gpgpgpgp Date: Wed, 25 May 2016 09:17:19 +0800 Subject: [PATCH 316/337] 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 33328094b2..cb40f4a53a 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 52ea640c4b473afc9593364b4b85b2109cd4f6da Mon Sep 17 00:00:00 2001 From: voiperr Date: Fri, 27 May 2016 10:16:15 -0700 Subject: [PATCH 317/337] 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 01cd9427e8..82ff6841cb 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 0000000000..bd69f9acbf --- /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 0000000000..1dc9b4c993 --- /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 f3b3ba6106..18bc8793cc 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 6d6b4030ec..e8a38d1222 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 011489f321..799b99e3d2 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 318/337] 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 0000000000..55c01af3d5 --- /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 0000000000..32d4deb076 --- /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 0000000000..fe88f128fd --- /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 0000000000..d77dcf562e --- /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 0000000000..0b879124aa --- /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 0000000000..4b2da4eadb --- /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 0000000000..bd91b18fa3 --- /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 319/337] 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 88bd0d6d52..8e766ce0e3 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 320/337] 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 dba1ae5d0a..70475dedc2 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 321/337] 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 6c40f4ce1c..d431ab2b3c 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 322/337] Flashsuppressors - use next CBA's JM configs (#3709) #3700 --- addons/flashsuppressors/CfgWeapons.hpp | 127 +++++++++++++++++-------- 1 file changed, 88 insertions(+), 39 deletions(-) diff --git a/addons/flashsuppressors/CfgWeapons.hpp b/addons/flashsuppressors/CfgWeapons.hpp index ae957ba4b0..e807dc2ae9 100644 --- a/addons/flashsuppressors/CfgWeapons.hpp +++ b/addons/flashsuppressors/CfgWeapons.hpp @@ -29,32 +29,73 @@ 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 { - - /* MX */ - - class Rifle; - class Rifle_Base_F: Rifle { + class Rifle_Base_F; + + class Rifle_Long_Base_F: Rifle_Base_F { class WeaponSlotsInfo; }; - class arifle_MX_Base_F: Rifle_Base_F { + /* MX */ + class arifle_MX_Base_F: Rifle_Base_F { + class WeaponSlotsInfo; + }; + + 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; + }; + }; + }; + }; + class arifle_MXM_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; + }; }; }; }; @@ -62,41 +103,49 @@ class CfgWeapons { /* Katiba */ - class arifle_katiba_Base_F: Rifle_Base_F { + class arifle_Katiba_Base_F: Rifle_Base_F { + class WeaponSlotsInfo; + }; + class arifle_Katiba_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_C_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 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; + }; }; }; }; /* Other */ - - class Rifle_Long_Base_F: Rifle_Base_F { - class WeaponSlotsInfo; - }; - - class DMR_01_base_F: Rifle_Long_Base_F { - class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_B"}; - }; - }; - }; - class LMG_Mk200_F: Rifle_Long_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { - class MuzzleSlot: MuzzleSlot { - compatibleItems[] += {"ACE_muzzle_mzls_H"}; - }; - }; - }; - - class LMG_Zafir_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 323/337] 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 69c01b9e59..43412b7b72 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 1529d39319..ba4ff87186 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 dae66a9558..dd6ca32de6 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 c13218e472..44b7fe38af 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 078dccea37..6774140cc7 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -480,18 +480,22 @@ 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 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)[] = {{-1.49,1.41,-.3}}; + GVAR(fuelCargo) = 10000; + }; + + class Slingload_01_Base_F: Slingload_base_F {}; class B_Slingload_01_Fuel_F: Slingload_01_Base_F { transportFuel = 0; //3k MACRO_REFUEL_ACTIONS @@ -506,13 +510,6 @@ class CfgVehicles { 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 { - transportFuel = 0; //3k - MACRO_REFUEL_ACTIONS - GVAR(hooks)[] = {{-1.49,1.41,-.3}}; - GVAR(fuelCargo) = 10000; - }; class StorageBladder_base_F: NonStrategic { class ACE_Actions { From fa9384ffb45b1c9868c9d478f524644b83baba3e Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 31 May 2016 20:35:38 +0200 Subject: [PATCH 324/337] 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 fa99f40424..2446e166bc 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 325/337] 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 0c518dfcea..038cd62051 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 326/337] 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 9a122c3f61..b7e8c2a010 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 327/337] 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 3f974b18df..5ba098d2ce 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 fdcb6afe9d..17c83542a5 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 2ce2d0dc10..0f79bc4388 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 089f4bffe0..da1da4b665 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 3abe32ba34..9085ea9948 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 0ecc37788a..29fb605ddb 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 ddc7639921..92d8850cda 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 768ba63e02..5b3513627d 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 c87408b341..ab8a31688b 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 1aefa49616..bcd243cf7b 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 cbe5c5df6a..ccfc806eeb 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 06b7bf5d86..a360d2c51b 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 9f46660aaa..c03bfb7a1a 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 00f8204b09..f67a73b840 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 0f256824d7..b06edfdee6 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 0c9cfb3c43..ec3ad9735f 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 3fc047fa6a..990b5bf209 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 7275741f40..d143979e3f 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 12edf02ba3..1a2b0b5ce3 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 2cc3be5ddd..324db481dd 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 b34c4b8000..75796d5ab5 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 b8e0c1e120..3bb1982940 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 f37dba286c..cfab6fa047 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 16af88bfc4..38b6d3f93e 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 ce60d26545..5cdf759ced 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 d431ab2b3c..9b79a0adce 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 7ac4048748..99e1aeee7d 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 2f9e631fe1..570fa921a4 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 5d130e589a..74bbe22de9 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 77b68b77f5..c25787f3a2 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 5fb106ad2d..3b33482e4b 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 8909c3d685..a0f1841dd0 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 2413256bf4..65f88e4504 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 f0982a46b4..fe1f7b2447 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 95a533fd9f..668ed6252b 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 cbb3105696..e9dce0955c 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 c6123e590f..01997428fe 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 d83cff4035..9cf52a8a22 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 47c0ac889c..d469485832 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 7b15f0c8f0..8c49885de6 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 e8a38d1222..d6da648435 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 72e7f82078..0987a1a987 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 1e82cd2269..5e5f3c4af6 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 24d3c778d8..50ece64a01 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 d40fb9e6a6..63c96b12b6 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 27e0db03b9..192b142a0e 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 7a39df8980..3f05a6786e 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 c373b84615..5bedf91f67 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 102875a195..7d4113b4a1 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 d25e193d32..75267bf6e9 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 8ea42fbf0c..d7496ab70f 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 45b1643ed2..0d56e4e3e9 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 a2d38254f1..a1e3653c97 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 1edeca6e5b..171424001b 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 3c2ac1a9d6..e90c35897a 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 86697535f8..73a90b7a8c 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 3477258612..a779fe160c 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 79f71842ee..b172bc963e 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 4acfef321f..be3e9e043b 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 673edcf77f..152c344d88 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 0524f6e4c9..c2d17d7c42 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 3671177e28..675ad064b5 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 abe4e859f2..ba02625deb 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 6a8ea59290..14b3962961 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 c15721c9df..cefed5b242 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 5b8002bc37..7076914f92 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 6140cefe8c..7d6585eedb 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 86ba809a93..0deed18d3c 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 6a04f6339a..7fff403502 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 d377342adf..39bc0c152c 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 4a23d1f650..1ce01c3a72 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 8371e7f35f..52f85d10e0 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 6b7ce1a456..053b87f775 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 42be283044..fc055ca703 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 96d3edab7b..a44c36293b 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 3af3bd5354..b196022d9b 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 e5731df7b3..ba2864c8f0 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 6e32ed0413..e402899a23 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 c3541eed39..c74fa182ff 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 22a4924709..c862982522 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 02740639fe..9b42afab16 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 dcd1fb845d..6b0fa41348 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 07d19d1b50..076de59335 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 e1b14fa37c..bb38fecf7f 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 80379019c3..a94c85408f 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 d6fbed61ae..b0aa8386da 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 e4cdf9a55b..b54b1ef554 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 9ee1343bc8..5ee673e5da 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 a3641a7b5b..ce7e00c493 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 2de8b2c954..887013ef16 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 231d167cd0..78314a6063 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 50e2f8ace0..d8d3c68078 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 a7bedbb9ef..46d25b3707 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 4d0f820aed..714c16420a 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 f41769e727..58db862e44 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 a7b7bae6df..81dd262f9b 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 0b879124aa..d3d50d3575 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 d5dbc8e68c..1c12205347 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 9f563bd157..7bff1dbb18 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 3d82eab05a..b444be8f2d 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 9c28be4f89..578f01620c 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 4aed0e6241..11ba26b62a 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 82873b01e2..d253199607 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 ef173ad1c6..a6de7d414b 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 c3ed720f8b..201a306e7b 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 4dfda50805..80054babce 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 763665660b..3a6627712f 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 9cfcb35012..58ac3af104 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 7ea5992f14..08e955e596 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 328/337] 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 5ba098d2ce..e214875f5c 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 17c83542a5..1db145a894 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 0f79bc4388..4e25a1fb10 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 da1da4b665..8d78ca2de3 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 9085ea9948..37e5e63d6c 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 29fb605ddb..573bc699ba 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 92d8850cda..07b456b223 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 5b3513627d..6f09728ade 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 ab8a31688b..b38b90ab23 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 bcd243cf7b..02fa224a1a 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 ccfc806eeb..89af49afd8 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 a360d2c51b..1824889d63 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 c03bfb7a1a..30b0e033cd 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 f67a73b840..04690860dc 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 b06edfdee6..bc8a3eedfd 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 ec3ad9735f..cd67eb4c11 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 990b5bf209..4419c5e2e0 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 d143979e3f..478ac20b33 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 1a2b0b5ce3..1c98a210ef 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 324db481dd..16fe62ff25 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 75796d5ab5..1a1e84e9b6 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 3bb1982940..688a9c1eb1 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 cfab6fa047..5d7ec5cffc 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 38b6d3f93e..07f6208c4f 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 5cdf759ced..f3c1c37f40 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 9b79a0adce..5a8c7cfc36 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 99e1aeee7d..cc1d5f1a43 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 570fa921a4..480e654835 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 74bbe22de9..ae9d7477b9 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 c25787f3a2..5308b36a8f 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 3b33482e4b..9257d14cd0 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 a0f1841dd0..fb7383a038 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 65f88e4504..653980c9d8 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 fe1f7b2447..1ad08febbf 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 668ed6252b..093fcdaa9a 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 e9dce0955c..c99397c02e 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 01997428fe..ed64ebf85f 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 9cf52a8a22..4301b16e29 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 d469485832..011414814b 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 8c49885de6..d579dd6fca 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 1f86448c94..07905e5d98 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 d6da648435..60f0cde1f6 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 0987a1a987..85f9f8e202 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 5e5f3c4af6..464aa2da67 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 50ece64a01..567636e9c2 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 63c96b12b6..9f37821276 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 192b142a0e..b63599e8f3 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 3f05a6786e..14012f5579 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 5bedf91f67..9fae3f432f 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 7d4113b4a1..90c8b69e5f 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 75267bf6e9..e8a64bc902 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 d7496ab70f..8ba6420ee0 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 0d56e4e3e9..c7ddacce07 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 a1e3653c97..650aee347c 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 171424001b..2e715e501a 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 e90c35897a..8cad5cb5f5 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 73a90b7a8c..0b47a8fcf6 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 a779fe160c..364ee7180c 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 b172bc963e..e44b5738d9 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 be3e9e043b..cd57c7756d 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 152c344d88..b6f1d25aa8 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 c2d17d7c42..d5418775c4 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 675ad064b5..38a962f208 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 ba02625deb..ffcb904669 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 14b3962961..bb7406468b 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 cefed5b242..9e8ae31aa8 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 7076914f92..dd2da4a576 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 7d6585eedb..4d141e27ce 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 0deed18d3c..4d17d17d55 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 7fff403502..23c78048c1 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 39bc0c152c..11e3bf2fa1 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 1ce01c3a72..71cfc116bd 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 52f85d10e0..6e95b219d3 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 053b87f775..2e23313db1 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 fc055ca703..48f22cdc46 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 a44c36293b..a7fa677204 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 ba2864c8f0..279726ef5b 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 e402899a23..522d412190 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 c74fa182ff..d90a852f1a 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 c862982522..3966e7a74e 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 9b42afab16..08edb1a9c6 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 6b0fa41348..c666c6afbc 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 076de59335..06a2e90594 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 bb38fecf7f..d8c7f70ba4 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 a94c85408f..83c012f39a 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 b0aa8386da..9aa3eab942 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 b54b1ef554..6f3e71fb68 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 5ee673e5da..22c914d767 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 ce7e00c493..3c405d0791 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 887013ef16..d93e811ca0 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 78314a6063..ecaf0bacee 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 d8d3c68078..7be9d32bc5 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 46d25b3707..9f9cb21b07 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 714c16420a..6dbdd9707b 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 58db862e44..2c1fff347a 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 81dd262f9b..c4ee9dd344 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 d3d50d3575..a0c1f28cb2 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 1c12205347..0e8549c030 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 7bff1dbb18..069af9ebd4 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 b444be8f2d..9c5b7137d8 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 578f01620c..6d33ba132c 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 11ba26b62a..23a7323745 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 d253199607..9a8fbb54a6 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 a6de7d414b..9a1858ecef 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 201a306e7b..46922f1afc 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 80054babce..241e188d1a 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 3a6627712f..02390a6863 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 58ac3af104..97a53c88b6 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 08e955e596..54c0ef769c 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 329/337] 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 e214875f5c..07228c4f47 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 1db145a894..e1ef138f61 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 4e25a1fb10..ab3550f447 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 8d78ca2de3..3e64a5e7a9 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 37e5e63d6c..6b37cd415f 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 573bc699ba..548ad5cc46 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 07b456b223..bb29a43094 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 6f09728ade..5f63f6991b 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 b38b90ab23..75026788cf 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 02fa224a1a..4796ef0179 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 89af49afd8..54c12f3192 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 1824889d63..b660bc0db8 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 30b0e033cd..a29fdc6892 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 04690860dc..89f33f445b 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 bc8a3eedfd..a9e0fadc4b 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 cd67eb4c11..768a4aeeae 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 4419c5e2e0..38bbe2c989 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 478ac20b33..56bfb9974c 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 1c98a210ef..7571e541b0 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 16fe62ff25..564e61bf08 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 1a1e84e9b6..797ee5d711 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 688a9c1eb1..0516744ef6 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 5d7ec5cffc..de6f757017 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 07f6208c4f..5475549e64 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 f3c1c37f40..beeec12d26 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 5a8c7cfc36..37284c2a0c 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 cc1d5f1a43..8bcc493157 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 480e654835..1c62b9f722 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 ae9d7477b9..0b2d9ab79f 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 5308b36a8f..dc5aef1a31 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 9257d14cd0..88b4a0b124 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 fb7383a038..1b60c9324f 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 653980c9d8..a18ba4f09d 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 1ad08febbf..d97eeec34f 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 093fcdaa9a..a10a58c52e 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 c99397c02e..f110fe990d 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 ed64ebf85f..97d47fa124 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 4301b16e29..edba6b868a 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 011414814b..5b88dc3488 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 d579dd6fca..4154fadc17 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 07905e5d98..42bbdc0bde 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 60f0cde1f6..97a8ea9e59 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 85f9f8e202..ee3ba097a4 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 464aa2da67..9920fcc6bb 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 567636e9c2..e35e5b5d2f 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 9f37821276..9ee521aefb 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 b63599e8f3..9b63d09b0e 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 14012f5579..d277168534 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 9fae3f432f..c0c12861cf 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 90c8b69e5f..15c38add4e 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 e8a64bc902..e985dc66f4 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 8ba6420ee0..4c3df52554 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 c7ddacce07..f8fcd40191 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 650aee347c..30aa979898 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 2e715e501a..eb17737b9d 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 8cad5cb5f5..ddad0f3d48 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 0b47a8fcf6..976e77082b 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 364ee7180c..5819166e06 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 e44b5738d9..443fc00bcd 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 cd57c7756d..c310b34b91 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 b6f1d25aa8..22cbaad405 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 d5418775c4..a8bfa8981c 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 38a962f208..caf346444e 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 ffcb904669..c7e4c4835c 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 bb7406468b..4cfb49c491 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 9e8ae31aa8..4580b0541a 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 dd2da4a576..44cb67e716 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 4d141e27ce..9d218a4dbd 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 4d17d17d55..62f9e8ec46 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 23c78048c1..9aa2d5993a 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 11e3bf2fa1..b097e5b396 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 71cfc116bd..d2472a273c 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 6e95b219d3..4356bc522a 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 2e23313db1..937e18404c 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 48f22cdc46..0b079d8139 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 a7fa677204..190cf32aec 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 279726ef5b..b4d1aa1347 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 522d412190..0079fa63d7 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 d90a852f1a..c6280d9b61 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 3966e7a74e..246a0ba981 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 08edb1a9c6..f347b722e4 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 c666c6afbc..844620bc04 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 06a2e90594..1e13cc7e2a 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 d8c7f70ba4..a2730f4408 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 83c012f39a..3411c70534 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 9aa3eab942..78b36a5b4f 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 6f3e71fb68..f3b6d1681f 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 22c914d767..3c8bd3225d 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 3c405d0791..e88a822a8a 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 d93e811ca0..37ba9ce9e9 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 ecaf0bacee..2cad4a87b8 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 7be9d32bc5..1b8a59de5d 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 9f9cb21b07..0e38d83a5d 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 6dbdd9707b..04c2835293 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 2c1fff347a..4492594892 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 c4ee9dd344..6770afa780 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 a0c1f28cb2..9f140ec3c6 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 0e8549c030..514014abf3 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 069af9ebd4..cbc41663fe 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 9c5b7137d8..c4188b7916 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 6d33ba132c..c53a22adf3 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 23a7323745..4edc231231 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 9a8fbb54a6..f619ad9166 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 9a1858ecef..4b1da527a7 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 46922f1afc..f5d9d43e2b 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 241e188d1a..1ed555e9ad 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 02390a6863..77b38a3e62 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 97a53c88b6..df1ae77b3f 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 54c0ef769c..0a221be541 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 330/337] 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 42bbdc0bde..a81104f124 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 9b63d09b0e..dfd87020a2 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 331/337] 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 0deca3d2ab..5822f71d1d 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 07228c4f47..692a9391a0 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 e1ef138f61..504c8b6e3c 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 ab3550f447..f989749383 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 3e64a5e7a9..3a4743f1ac 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 6b37cd415f..db1b85b761 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 548ad5cc46..4c06adc3eb 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 bb29a43094..278e3ac452 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 5f63f6991b..59c29f0a7f 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 75026788cf..a73b604fb2 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 4796ef0179..860eff0d99 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 54c12f3192..2cf6dd4ec9 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 b660bc0db8..5333c83bb5 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 a29fdc6892..1f440744f4 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 89f33f445b..6bf3397106 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 a9e0fadc4b..e240206938 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 768a4aeeae..a3e87c5824 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 38bbe2c989..5eb92848c7 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 56bfb9974c..c451a1b0dd 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 7571e541b0..1d7c263f1e 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 564e61bf08..fa953b4298 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 797ee5d711..08349be0a7 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 0516744ef6..378858d71c 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 de6f757017..dc6b4c705f 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 5475549e64..1727570003 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 beeec12d26..660c1eeff5 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 37284c2a0c..58f11020eb 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 8bcc493157..6a20daaee7 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 1c62b9f722..7d98e13a24 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 0b2d9ab79f..3a52c369d8 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 dc5aef1a31..d6146a6b29 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 88b4a0b124..ce4b10bab1 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 1b60c9324f..f84fea7ef9 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 a18ba4f09d..5a21e452e3 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 d97eeec34f..adef451644 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 8dfc970902..b789bfea01 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 a10a58c52e..74e2f18f19 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 ad368cdc2d..3ba439f047 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 597500caf6..60595e2d0d 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 f110fe990d..63ac154471 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 97d47fa124..5197a899e3 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 edba6b868a..910dcdc9bb 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 5b88dc3488..c660b44ca7 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 4154fadc17..9969e52447 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 a81104f124..1d9a8f2b6b 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 985bfb4836..4648225f9f 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 97a8ea9e59..78bf2340b7 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 ee3ba097a4..52f333c717 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 9920fcc6bb..6fedff6302 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 e35e5b5d2f..658a3ab370 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 9ee521aefb..911c9bd125 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 dfd87020a2..bdc9bf1f25 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 d277168534..d8823d0dc0 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 591a4f1c5e..365bd18327 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 c0c12861cf..2f58f5c42f 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 15c38add4e..c445bd0a32 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 e985dc66f4..aeb097fdff 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 4c3df52554..a1d9b25be4 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 f8fcd40191..c59dc43dd3 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 30aa979898..b02dfa9297 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 eb17737b9d..9397740e61 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 ddad0f3d48..b0792486f7 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 976e77082b..0781a4a15e 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 5819166e06..2b670e0db1 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 443fc00bcd..c63049356c 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 c310b34b91..0e564535b9 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 22cbaad405..2c48191810 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 a8bfa8981c..1839dc3ee1 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 caf346444e..dec722ea96 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 c7e4c4835c..fd39a3a523 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 4cfb49c491..d85fe9771d 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 4580b0541a..bd0a4980e2 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 44cb67e716..e6eee4a9af 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 9d218a4dbd..2ace24fb92 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 62f9e8ec46..940820ccba 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 9aa2d5993a..0ff68c0c9c 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 b097e5b396..e23eeeaea0 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 d2472a273c..5305232543 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 4356bc522a..05510a53a5 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 937e18404c..18f09c3970 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 0b079d8139..fb1f0274ca 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 190cf32aec..bf38435f22 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 b196022d9b..3a2e757e6a 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 b4d1aa1347..5b211fa37e 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 0079fa63d7..5907e7c3e1 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 c6280d9b61..a92f91ec50 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 246a0ba981..1bdec70729 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 f347b722e4..11f15ac934 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 844620bc04..a4161c1862 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 1e13cc7e2a..b4ad00f41c 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 a2730f4408..d6afd2f9d1 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 3411c70534..1ee297e0e0 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 78b36a5b4f..84b7f7001c 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 f3b6d1681f..66b2a5c7ea 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 3c8bd3225d..942c3959f2 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 e88a822a8a..9d2cd3caac 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 37ba9ce9e9..bf3dd29d24 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 2cad4a87b8..b6a98e6d88 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 1b8a59de5d..d2d8764ead 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 0e38d83a5d..2faf536423 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 04c2835293..18779bd5be 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 4492594892..6b066c8efb 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 6770afa780..f78545d212 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 9f140ec3c6..aca323c98c 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 514014abf3..c7e42c35ad 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 cbc41663fe..b66be68593 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 c4188b7916..77dc828105 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 c53a22adf3..4bacb9dedf 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 4edc231231..e3c5d15a07 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 f619ad9166..bf36181ce8 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 4b1da527a7..e218f77d2e 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 f5d9d43e2b..ca0a7189f2 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 1ed555e9ad..5611c2d4af 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 77b38a3e62..77e0457643 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 df1ae77b3f..ab354fa4d8 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 0a221be541..32f1bfbb2d 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 332/337] 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 0bce24060f..2885f8e4a6 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 4c995d4c5c6d49d84216465f89ae5f947613cceb Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 2 Jun 2016 14:32:39 +0200 Subject: [PATCH 333/337] 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 e5af2454cb..32bc0b698f 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 0000000000..ca35779f36 --- /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 1d7c263f1e..a38cee5d7d 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 0000000000..6dae3e5147 --- /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 940820ccba..1e97fa70f1 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 09993faaa4..eece5acec7 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 89ddc8d35d..e6c3e5e496 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 0000000000..008d97db9b --- /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 391b3627eb..0b1cc9b2a9 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 d228696fc0..72a754a28e 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 4a5638fc03..8646227653 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 84b7f7001c..0b680ca136 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 10f18f94f3..6bfe29392f 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 2ef88d5868..3f087d8974 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 b019c4c081..8fbe4cf294 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 64b716ee29..877489aba4 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 a7410a49b8..d57697867c 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 74cd89e93b..61dcc18ee7 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 334/337] 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 33adaa9712..0c2922ea64 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 1d9a8f2b6b..cda38b0458 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 be771f7a3a..dd2c187bf7 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 335/337] 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 70e8989031..d339f80794 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 336/337] 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 508d53d54c..a9b4594b66 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 d8885fddf9..ca315d68ec 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 337/337] 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 becf395052..e1f9294767 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 67344454ec..c6ad5c6ba2 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 0000000000..662f6f80c0 --- /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 215cd72580..dc186a6c61 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 41f0f30a0d..6fd9aabd89 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); +};