From 4f1ce4a36fdd8e3b96e767d6df5834d76aa8b49c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 27 Feb 2019 12:59:01 -0600 Subject: [PATCH 01/19] Prep 3.12.6 Build 41 --- README.md | 2 +- VERSION | 2 +- addons/main/script_version.hpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2fcce1d1fd..74e32e1fac 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/VERSION b/VERSION index 69499073cf..5ff7b13781 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.12.5.40 +3.12.6.41 diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index f046b3d4ef..fd222b7d36 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 #define MINOR 12 -#define PATCHLVL 5 -#define BUILD 40 +#define PATCHLVL 6 +#define BUILD 41 From 792a3b42fbc7e3203855f57b0aa15e164aa61c3a Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 9 Mar 2019 16:44:29 +0100 Subject: [PATCH 02/19] Add mharis001 to ACE3 maintainers list --- docs/team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/team.md b/docs/team.md index 4998330e97..034fac4227 100644 --- a/docs/team.md +++ b/docs/team.md @@ -58,6 +58,7 @@ This lists all the maintainers responsible for project management and the overal - [Kieran](https://github.com/kieran-s){:target="_blank"} - [Giallustio](https://github.com/Giallustio){:target="_blank"} - [654wak654](https://github.com/654wak654){:target="_blank"} +- [mharis001](https://github.com/mharis001){:target="_blank"} ## Contributors From 51dfc081ac59cd07b63f3d08805027912d482424 Mon Sep 17 00:00:00 2001 From: Dedmen Miller Date: Sun, 10 Mar 2019 03:19:58 +0100 Subject: [PATCH 03/19] Fix M84 lods (#6854) --- addons/grenades/models/ACE_M84.p3d | Bin 1086805 -> 1086805 bytes addons/grenades/models/ACE_M84_thrown.p3d | Bin 767660 -> 767660 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/grenades/models/ACE_M84.p3d b/addons/grenades/models/ACE_M84.p3d index e24ff3788090bd798ab4991ac53864bb81de8b01..f3e411987387d0dbe54a2fb561ff5da9b70d313a 100644 GIT binary patch delta 45870 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 WWRF{>w&ec;HdotMWans~Zueh?=Q{rY diff --git a/addons/grenades/models/ACE_M84_thrown.p3d b/addons/grenades/models/ACE_M84_thrown.p3d index 0b206cfada4b6bb3bbdf0c1d7dec43d85bf30f18..20f322c643f9fc5a9b6fc6de6963a4ac94c0b3fd 100644 GIT binary patch delta 34462 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 delta 33326 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 A@c;k- From 56f9d76d0fdb0329734e7d239c5d7848bd202efc Mon Sep 17 00:00:00 2001 From: Dystopian Date: Mon, 11 Mar 2019 06:40:28 +0400 Subject: [PATCH 04/19] UI - Fix selective UI in cargo (#6585) * UI - Fix selective UI in cargo * Add FFV not in cargo check --- .../ui/functions/fnc_setAdvancedElement.sqf | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/addons/ui/functions/fnc_setAdvancedElement.sqf b/addons/ui/functions/fnc_setAdvancedElement.sqf index 0b5a174c5a..4e2ececf6c 100644 --- a/addons/ui/functions/fnc_setAdvancedElement.sqf +++ b/addons/ui/functions/fnc_setAdvancedElement.sqf @@ -6,7 +6,7 @@ * Arguments: * 0: Element Name * 1: Show/Hide Element - * 2: Show Hint + * 2: Show Hint (default: false) * 3: Force change even when disallowed (default: false) * * Return Value: @@ -18,12 +18,13 @@ * Public: No */ -params ["_element", "_show", ["_showHint", false, [true]], ["_force", false, [true]] ]; +params ["_element", "_show", ["_showHint", false, [true]], ["_force", false, [true]]]; private _cachedElement = GVAR(configCache) getVariable _element; -if (isNil "_cachedElement") exitWith {}; +if (isNil "_cachedElement") exitWith {TRACE_1("nil element",_this)}; if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { + TRACE_1("not allowed",_this); [LSTRING(Disallowed), 2] call EFUNC(common,displayTextStructured); false }; @@ -31,8 +32,14 @@ if (!_force && {!GVAR(allowSelectiveUI)}) exitWith { _cachedElement params ["_idd", "_elements", "_location", "_conditions"]; // Exit if main vehicle type condition not fitting -private _canUseWeapon = ACE_player call CBA_fnc_canUseWeapon; -if ((_canUseWeapon && {_location == 2}) || {!_canUseWeapon && {_location == 1}}) exitWith {false}; +private _canUseWeaponOrInCargo = ACE_player call CBA_fnc_canUseWeapon || {-1 < vehicle ACE_player getCargoIndex ACE_player}; +if ( + (_canUseWeaponOrInCargo && {_location == VEHICLE_ONLY}) + || {!_canUseWeaponOrInCargo && {_location == GROUND_ONLY}} +) exitWith { + TRACE_3("skip location",_this,_canUseWeaponOrInCargo,_location); + false +}; // Get setting from config API { @@ -59,7 +66,7 @@ if (!_force) then { }; }; -_show = [1, 0] select _show; +private _fade = [1, 0] select _show; // Disable/Enable elements private _success = false; @@ -69,9 +76,9 @@ 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_4("Setting Element Visibility",_element,_fade,_idd,_idc); - (_x displayCtrl _idc) ctrlSetFade _show; + (_x displayCtrl _idc) ctrlSetFade _fade; (_x displayCtrl _idc) ctrlCommit 0; _success = true; From 24d2aa647e2706dbcdea1df765640929016442d9 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Mon, 11 Mar 2019 06:41:06 +0400 Subject: [PATCH 05/19] Repair - Fix Typhoon rear wheel change (#6207) --- addons/repair/CfgVehicles.hpp | 23 ++++++++++++++++--- .../repair/functions/fnc_addRepairActions.sqf | 12 ++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 7f0255d2a5..a41c2db501 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -456,8 +456,7 @@ class CfgVehicles { GVAR(hitpointPositions)[] = {{"HitTurret", {0,-2,0}}}; }; - class Car_F; - class Offroad_01_base_F: Car_F {}; + class Offroad_01_base_F; class Offroad_01_repair_base_F: Offroad_01_base_F { GVAR(canRepair) = 1; transportRepair = 0; @@ -483,7 +482,25 @@ class CfgVehicles { GVAR(canRepair) = 0; }; - class Truck_03_base_F; + class Car_F: Car { + class HitPoints; + }; + class Truck_F: Car_F { + class HitPoints: HitPoints { + class HitLBWheel; + class HitRBWheel; + }; + }; + class Truck_03_base_F: Truck_F { + class HitPoints: HitPoints { + class HitLBWheel: HitLBWheel { + name = "wheel_1_4_steering"; // return original values back to fix double wheel hitpoint + }; + class HitRBWheel: HitRBWheel { + name = "wheel_2_4_steering"; + }; + }; + }; class O_Truck_03_repair_F: Truck_03_base_F { GVAR(canRepair) = 1; transportRepair = 0; diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf index 5761206b3e..c409591911 100644 --- a/addons/repair/functions/fnc_addRepairActions.sqf +++ b/addons/repair/functions/fnc_addRepairActions.sqf @@ -34,7 +34,7 @@ if (_type in _initializedClasses) exitWith {}; private _hitPointsAddedNames = []; private _hitPointsAddedStrings = []; private _hitPointsAddedAmount = []; -private _processedHitpoints = []; +private _processedSelections = []; private _icon = ["a3\ui_f\data\igui\cfg\actions\repair_ca.paa", "#FFFFFF"]; // Custom position can be defined via config for associated hitpoint @@ -47,7 +47,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR private _hitpoint = toLower (_hitPoints select _forEachIndex); if (_selection in _wheelHitSelections) then { // Wheels should always be unique - if (_hitpoint in _processedHitpoints) exitWith {TRACE_3("Duplicate Wheel",_hitpoint,_forEachIndex,_selection);}; + if (_selection in _processedSelections) exitWith {TRACE_3("Duplicate Wheel",_hitpoint,_forEachIndex,_selection);}; private _position = compile format ["_target selectionPosition ['%1', 'HitPoints'];", _selection]; @@ -68,13 +68,15 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR _statement = {[_this select 1, _this select 0, _this select 2 select 0, "ReplaceWheel"] call DFUNC(repair)}; _action = [_name, _text, _icon, _statement, _condition, {}, [_hitpoint], _position, 2] call EFUNC(interact_menu,createAction); [_type, 0, [], _action] call EFUNC(interact_menu,addActionToClass); + + _processedSelections pushBack _selection; } else { // Empty selections don't exist if (_selection isEqualTo "") exitWith { TRACE_3("Skipping Empty Sel",_hitpoint,_forEachIndex,_selection); }; // Empty hitpoints don't contain enough information if (_hitpoint isEqualTo "") exitWith { TRACE_3("Skipping Empty Hit",_hitpoint,_forEachIndex,_selection); }; // Ignore glass hitpoints - if ((_hitPoint find "glass") != -1) exitWith { TRACE_3("Skipping Glass",_hitpoint,_forEachIndex,_selection); }; + if ((_hitpoint find "glass") != -1) exitWith { TRACE_3("Skipping Glass",_hitpoint,_forEachIndex,_selection); }; // Ignore hitpoints starting with # (seems to be lights) if ((_hitpoint select [0,1]) == "#") exitWith { TRACE_3("Skipping # hit",_hitpoint,_forEachIndex,_selection); }; // Ignore ERA/Slat armor (vanilla uses hitera_/hitslat_, pre-1.82 RHS uses era_) @@ -125,7 +127,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR if (_hitpoint in TRACK_HITPOINTS) then { // Tracks should always be unique - if (_hitpoint in _processedHitpoints) exitWith {TRACE_3("Duplicate Track",_hitpoint,_forEachIndex,_selection);}; + if (_selection in _processedSelections) exitWith {TRACE_3("Duplicate Track",_hitpoint,_forEachIndex,_selection);}; _position = compile format ["private _return = _target selectionPosition ['%1', 'HitPoints']; _return set [1, 0]; _return", _selection]; TRACE_4("Adding RepairTrack",_hitpoint,_forEachIndex,_selection,_text); private _condition = {[_this select 1, _this select 0, _this select 2 select 0, "RepairTrack"] call DFUNC(canRepair)}; @@ -145,7 +147,7 @@ private _hitpointGroups = getArray(configFile >> "CfgVehicles" >> _type >> QGVAR }; }; - _processedHitPoints pushBack _hitpoint; + _processedSelections pushBack _selection; }; } forEach _hitSelections; From 564fc8aa99ebe850c7acd3b472a27e353c8fedae Mon Sep 17 00:00:00 2001 From: Dedmen Miller Date: Mon, 11 Mar 2019 03:42:08 +0100 Subject: [PATCH 06/19] Trivial code fixes (#6858) --- addons/arsenal/functions/fnc_scanConfig.sqf | 2 +- addons/dagr/functions/fnc_menuInit.sqf | 12 ++++++------ addons/gforces/functions/fnc_pfhUpdateGForces.sqf | 4 ++-- addons/hearing/functions/fnc_putInEarplugs.sqf | 4 ++-- include/x/cba/addons/main/$PBOPREFIX$ | 1 + include/x/cba/addons/xeh/$PBOPREFIX$ | 1 + 6 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 include/x/cba/addons/main/$PBOPREFIX$ create mode 100644 include/x/cba/addons/xeh/$PBOPREFIX$ diff --git a/addons/arsenal/functions/fnc_scanConfig.sqf b/addons/arsenal/functions/fnc_scanConfig.sqf index fdb73c72ef..2bddbf4c5c 100644 --- a/addons/arsenal/functions/fnc_scanConfig.sqf +++ b/addons/arsenal/functions/fnc_scanConfig.sqf @@ -57,7 +57,7 @@ private _configCfgWeapons = configFile >> "CfgWeapons"; //Save this lookup in va case (_itemInfoType == TYPE_HEADGEAR): { (_cargo select 3) pushBackUnique _className; }; - /* Uniform */\ + /* Uniform */ case (_itemInfoType == TYPE_UNIFORM): { (_cargo select 4) pushBackUnique _className; }; diff --git a/addons/dagr/functions/fnc_menuInit.sqf b/addons/dagr/functions/fnc_menuInit.sqf index 0425f1f4d2..c535ac1349 100644 --- a/addons/dagr/functions/fnc_menuInit.sqf +++ b/addons/dagr/functions/fnc_menuInit.sqf @@ -347,7 +347,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor (GVAR(wp0) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor (GVAR(wp0) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor (GVAR(wp0) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor (GVAR(wp0) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor (GVAR(wp0) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor (GVAR(wp0) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; case 1: { @@ -357,7 +357,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor (GVAR(wp1) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor (GVAR(wp1) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor (GVAR(wp1) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor (GVAR(wp1) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor (GVAR(wp1) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor (GVAR(wp1) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; case 2: { @@ -367,7 +367,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor (GVAR(wp2) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor (GVAR(wp2) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor (GVAR(wp2) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor (GVAR(wp2) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor (GVAR(wp2) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor (GVAR(wp2) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; case 3: { @@ -377,7 +377,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor (GVAR(wp3) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor (GVAR(wp3) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor (GVAR(wp3) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor (GVAR(wp3) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor (GVAR(wp3) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor (GVAR(wp3) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; case 4: { @@ -387,7 +387,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor (GVAR(wp4) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor (GVAR(wp4) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor (GVAR(wp4) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor (GVAR(wp4) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor (GVAR(wp4) / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor (GVAR(wp4) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; }; @@ -457,7 +457,7 @@ GVAR(menuRun) = true; GVAR(digit4) = floor(_gridVector / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000); GVAR(digit5) = floor(_gridVector / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000); GVAR(digit6) = floor(_gridVector / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000); - GVAR(digit7) = floor(_gridVector / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); + GVAR(digit7) = floor(_gridVector / 10 - GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000); GVAR(digit8) = floor(_gridVector - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000); }; if (GVAR(F3)) then { diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index a5aee2d18e..4921bd42d9 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -80,14 +80,14 @@ GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0, if !(ACE_player getVariable ["ACE_isUnconscious", false]) then { if (_average > 0.30 * _gBlackOut) then { private _strength = ((_average - 0.30 * _gBlackOut) / (0.70 * _gBlackOut)) max 0; - GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2*(1-_strength),2*(1-_strength),0,0,0,0.1,0.5]]; + GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2 * (1 - _strength),2 * (1 - _strength),0,0,0,0.1,0.5]]; addCamShake [_strength, 1, 15]; } else { private _gRedOut = MINVIRTUALG / _classCoef; if (_average < -0.30 * _gRedOut) then { private _strength = ((abs _average - 0.30 * _gRedOut) / (0.70 * _gRedOut)) max 0; - GVAR(GForces_CC) ppEffectAdjust [1,1,0,[1,0.2,0.2,1],[0,0,0,0],[1,1,1,1],[2*(1-_strength),2*(1-_strength),0,0,0,0.1,0.5]]; + GVAR(GForces_CC) ppEffectAdjust [1,1,0,[1,0.2,0.2,1],[0,0,0,0],[1,1,1,1],[2 * (1 - _strength),2 * ( 1 -_strength),0,0,0,0.1,0.5]]; addCamShake [_strength / 1.5, 1, 15]; }; }; diff --git a/addons/hearing/functions/fnc_putInEarplugs.sqf b/addons/hearing/functions/fnc_putInEarplugs.sqf index 7292c86f85..954dc4dee1 100644 --- a/addons/hearing/functions/fnc_putInEarplugs.sqf +++ b/addons/hearing/functions/fnc_putInEarplugs.sqf @@ -29,7 +29,7 @@ _player setVariable ["ACE_hasEarPlugsIn", true, true]; //Force an immediate fast volume update: [[true]] call FUNC(updateVolume); -/*// No Earplugs in inventory, telling user -[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured);*/ +// No Earplugs in inventory, telling user +//[localize LSTRING(NoPlugs)] call EFUNC(common,displayTextStructured); [] call FUNC(updateHearingProtection); diff --git a/include/x/cba/addons/main/$PBOPREFIX$ b/include/x/cba/addons/main/$PBOPREFIX$ new file mode 100644 index 0000000000..835b0c9a07 --- /dev/null +++ b/include/x/cba/addons/main/$PBOPREFIX$ @@ -0,0 +1 @@ +x\cba\addons\main \ No newline at end of file diff --git a/include/x/cba/addons/xeh/$PBOPREFIX$ b/include/x/cba/addons/xeh/$PBOPREFIX$ new file mode 100644 index 0000000000..45339387f4 --- /dev/null +++ b/include/x/cba/addons/xeh/$PBOPREFIX$ @@ -0,0 +1 @@ +x\cba\addons\xeh \ No newline at end of file From 842f9e5d3bedf18d69974950908c328ddb10bcb0 Mon Sep 17 00:00:00 2001 From: Matsuo Yutani Date: Mon, 11 Mar 2019 12:12:14 -0300 Subject: [PATCH 07/19] Update stringtable.xml (#6860) Updated values for the Saline quantity. --- addons/medical/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 65e2719f5b..6898c48a79 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1653,7 +1653,7 @@ Kochsalzlösung (500ml) 0,9%-os sósvíz-infúzió (500ml) Soluzione salina EV (500ml) - Soro IV (1000ml) + Soro IV (500ml) Fyziologický roztok (500ml) 生理食塩水 IV (500ml) 생리식염수 IV (500ml) @@ -1669,7 +1669,7 @@ Kochsalzlösung (250ml) 0,9%-os sósvíz-infúzió (250ml) Soluzione salina EV (250ml) - Soro IV (1000ml) + Soro IV (250ml) Fyziologický roztok (250ml) 生理食塩水 IV (250ml) 생리식염수 IV (250ml) From 2ff614c3a267b0df86ffd7da6fd6a894185ace1f Mon Sep 17 00:00:00 2001 From: Dystopian Date: Tue, 12 Mar 2019 20:26:20 +0400 Subject: [PATCH 08/19] Safe Mode - Fix disabled laser on safety switch (#6639) * Fix disabled laser on safety switch * Add workaround for switching to primary weapon * Add UGL check --- addons/safemode/functions/fnc_lockSafety.sqf | 12 ++++++++++++ addons/safemode/functions/fnc_unlockSafety.sqf | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/addons/safemode/functions/fnc_lockSafety.sqf b/addons/safemode/functions/fnc_lockSafety.sqf index e3c1b71f30..c3ce5a8b86 100644 --- a/addons/safemode/functions/fnc_lockSafety.sqf +++ b/addons/safemode/functions/fnc_lockSafety.sqf @@ -60,7 +60,19 @@ if (_unit getVariable [QGVAR(actionID), -1] == -1) then { }; if (_muzzle isEqualType "") then { + private _laserEnabled = _unit isIRLaserOn _weapon || {_unit isFlashlightOn _weapon}; + _unit selectWeapon _muzzle; + + if ( + _laserEnabled + && { + _muzzle == primaryWeapon _unit // prevent UGL switch + || {"" == primaryWeapon _unit} // Arma switches to primary weapon if exists + } + ) then { + {_unit action [_x, _unit]} forEach ["GunLightOn", "IRLaserOn"]; + }; }; // play fire mode selector sound diff --git a/addons/safemode/functions/fnc_unlockSafety.sqf b/addons/safemode/functions/fnc_unlockSafety.sqf index 5a787277e4..3194de6f14 100644 --- a/addons/safemode/functions/fnc_unlockSafety.sqf +++ b/addons/safemode/functions/fnc_unlockSafety.sqf @@ -30,8 +30,20 @@ if (_safedWeapons isEqualTo []) then { _unit setVariable [QGVAR(actionID), -1]; }; +private _laserEnabled = _unit isIRLaserOn _weapon || {_unit isFlashlightOn _weapon}; + _unit selectWeapon _muzzle; +if ( + _laserEnabled + && { + _muzzle == primaryWeapon _unit // prevent UGL switch + || {"" == primaryWeapon _unit} // Arma switches to primary weapon if exists + } +) then { + {_unit action [_x, _unit]} forEach ["GunLightOn", "IRLaserOn"]; +}; + if (inputAction "nextWeapon" > 0) then { // switch to the last mode to roll over to first after the default nextWeapon action // get weapon modes From 695416dfe774580df62995728fe932ef05091a97 Mon Sep 17 00:00:00 2001 From: mharis001 <34453221+mharis001@users.noreply.github.com> Date: Tue, 12 Mar 2019 12:26:40 -0400 Subject: [PATCH 09/19] Arsenal - Improvements to 3DEN attribute (#6849) * Improvements to arsenal 3DEN attribute * Better alignment of button * Remove magazineGroups copy --- addons/arsenal/Cfg3DEN.hpp | 41 +++++++++- addons/arsenal/XEH_PREP.hpp | 3 + addons/arsenal/defines.hpp | 2 + .../functions/fnc_attributeAddCompatible.sqf | 75 +++++++++++++++++++ .../functions/fnc_attributeCategory.sqf | 32 ++++++++ .../arsenal/functions/fnc_attributeImport.sqf | 49 ++++++++++++ .../arsenal/functions/fnc_attributeLoad.sqf | 6 +- addons/arsenal/stringtable.xml | 9 +++ 8 files changed, 213 insertions(+), 4 deletions(-) create mode 100644 addons/arsenal/functions/fnc_attributeAddCompatible.sqf create mode 100644 addons/arsenal/functions/fnc_attributeCategory.sqf create mode 100644 addons/arsenal/functions/fnc_attributeImport.sqf diff --git a/addons/arsenal/Cfg3DEN.hpp b/addons/arsenal/Cfg3DEN.hpp index 8e79b726b4..8b40f77bfe 100644 --- a/addons/arsenal/Cfg3DEN.hpp +++ b/addons/arsenal/Cfg3DEN.hpp @@ -55,7 +55,7 @@ class Cfg3DEN { }; class Category: ctrlToolboxPictureKeepAspect { idc = IDC_ATTRIBUTE_CATEGORY; - onToolBoxSelChanged = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems)); + onToolBoxSelChanged = QUOTE([ARR_2(ctrlParentControlsGroup (_this select 0), _this select 1)] call FUNC(attributeCategory)); x = QUOTE(5 * ATTRIBUTE_W); y = QUOTE(15 * ATTRIBUTE_H); w = QUOTE(125 * ATTRIBUTE_W); @@ -129,7 +129,14 @@ class Cfg3DEN { }; class SearchButton: ctrlButtonPicture { idc = IDC_ATTRIBUTE_SEARCH_BUTTON; - onButtonClick = QUOTE(((ctrlParentControlsGroup (_this select 0)) controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR) ctrlSetText ''; [ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems)); + onButtonClick = QUOTE( \ + params ['_searchButton']; \ + private _controlsGroup = ctrlParentControlsGroup _searchButton; \ + private _searchBar = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_SEARCHBAR; \ + _searchBar ctrlSetText ''; \ + ctrlSetFocus _searchBar; \ + [_controlsGroup] call FUNC(attributeAddItems); \ + ); text = "\a3\Ui_f\data\GUI\RscCommon\RscButtonSearch\search_start_ca.paa"; x = QUOTE(5 * ATTRIBUTE_W); y = QUOTE(101.83 * ATTRIBUTE_H); @@ -140,9 +147,16 @@ class Cfg3DEN { class SearchBar: ctrlEdit { idc = IDC_ATTRIBUTE_SEARCHBAR; onKeyUp = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddItems)); + onMouseButtonClick = QUOTE( \ + params [ARR_2('_searchBar','_button')]; \ + if (_button != 1) exitWith {}; \ + _searchBar ctrlSetText ''; \ + ctrlSetFocus _searchBar; \ + [ctrlParentControlsGroup _searchBar] call FUNC(attributeAddItems); \ + ); x = QUOTE(11 * ATTRIBUTE_W); y = QUOTE(101.83 * ATTRIBUTE_H); - w = QUOTE(55 * ATTRIBUTE_W); + w = QUOTE(40 * ATTRIBUTE_W); h = QUOTE(5 * ATTRIBUTE_H); }; class ClearButton: ctrlButton { @@ -162,6 +176,27 @@ class Cfg3DEN { tooltip = CSTRING(AttributeExport_Tooltip); x = QUOTE(79 * ATTRIBUTE_W); }; + class ImportButton: ClearButton { + idc = IDC_ATTRIBUTE_IMPORT_BUTTON; + onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeImport)); + text = CSTRING(buttonImportText); + tooltip = CSTRING(AttributeImport_Tooltip); + x = QUOTE(53 * ATTRIBUTE_W); + }; + class AddCompatible: ctrlButton { + idc = IDC_ATTRIBUTE_ADD_COMPATIBLE; + style = ST_CENTER; + onButtonClick = QUOTE([ctrlParentControlsGroup (_this select 0)] call FUNC(attributeAddCompatible)); + text = CSTRING(AttributeAddCompatible_DisplayName); + tooltip = CSTRING(AttributeAddCompatible_Tooltip); + font = "RobotoCondensedLight"; + x = QUOTE(98.75 * ATTRIBUTE_W); + y = QUOTE(10.5 * ATTRIBUTE_H); + w = QUOTE(31.25 * ATTRIBUTE_W); + h = QUOTE(4 * ATTRIBUTE_H); + sizeEx = QUOTE(4 * ATTRIBUTE_H); + colorBackground[] = {0, 0, 0, 0.5}; + }; }; }; }; diff --git a/addons/arsenal/XEH_PREP.hpp b/addons/arsenal/XEH_PREP.hpp index 3e64d3654e..656fc5b1d5 100644 --- a/addons/arsenal/XEH_PREP.hpp +++ b/addons/arsenal/XEH_PREP.hpp @@ -2,9 +2,12 @@ PREP(addDefaultLoadout); PREP(addListBoxItem); PREP(addStat); PREP(addVirtualItems); +PREP(attributeAddCompatible); PREP(attributeAddItems); +PREP(attributeCategory); PREP(attributeClear); PREP(attributeDblClick); +PREP(attributeImport); PREP(attributeInit); PREP(attributeKeyDown); PREP(attributeLoad); diff --git a/addons/arsenal/defines.hpp b/addons/arsenal/defines.hpp index 9210ed9b2e..35d2edc461 100644 --- a/addons/arsenal/defines.hpp +++ b/addons/arsenal/defines.hpp @@ -162,6 +162,8 @@ #define IDC_ATTRIBUTE_SEARCHBAR 8106 #define IDC_ATTRIBUTE_CLEAR_BUTTON 8107 #define IDC_ATTRIBUTE_EXPORT_BUTTON 8108 +#define IDC_ATTRIBUTE_IMPORT_BUTTON 8109 +#define IDC_ATTRIBUTE_ADD_COMPATIBLE 8110 #define SYMBOL_ITEM_NONE "−" #define SYMBOL_ITEM_REMOVE "×" diff --git a/addons/arsenal/functions/fnc_attributeAddCompatible.sqf b/addons/arsenal/functions/fnc_attributeAddCompatible.sqf new file mode 100644 index 0000000000..4f84f9624c --- /dev/null +++ b/addons/arsenal/functions/fnc_attributeAddCompatible.sqf @@ -0,0 +1,75 @@ +#include "script_component.hpp" +#include "..\defines.hpp" +/* + * Author: mharis001 + * Adds compatible attachments or magazines for all weapons in 3DEN attribute. + * + * Arguments: + * 0: Attribute controls group + * + * Return Value: + * None + * + * Example: + * [CONTROL] call ace_arsenal_fnc_attributeAddCompatible + * + * Public: No + */ + +params ["_controlsGroup"]; + +private _category = lbCurSel (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY); + +// Exit if selected category is not attachments or magazines +if !(_category in [4, 5, 6, 7, 8]) exitWith {}; + +private _configItems = +(uiNamespace getVariable [QGVAR(configItems), []]); +private _attributeValue = uiNamespace getVariable [QGVAR(attributeValue), [[], 0]]; +_attributeValue params ["_attributeItems"]; + +// Get list of all weapons in attribute items +(_configItems select 0) params ["_primaryWeapons", "_secondaryWeapons", "_handgunWeapons"]; +private _attributeWeapons = _attributeItems select {_x in _primaryWeapons || {_x in _secondaryWeapons} || {_x in _handgunWeapons}}; + +// Add compatible attachments or magazines to attribute +private _cfgWeapons = configFile >> "CfgWeapons"; +private _itemsToAdd = []; + +if (_category == 8) then { + private _magazineGroups = uiNamespace getVariable QGVAR(magazineGroups); + private _cfgMagazines = configFile >> "CfgMagazines"; + + { + private _weaponConfig = _cfgWeapons >> _x; + + { + private _muzzleConfig = if (_x == "this") then {_weaponConfig} else {_weaponConfig >> _x}; + + // Only add existent magazines and ensure correct classname case + private _magazines = getArray (_muzzleConfig >> "magazines") select {isClass (_cfgMagazines >> _x)}; + _magazines = _magazines apply {configName (_cfgMagazines >> _x)}; + _itemsToAdd append _magazines; + + { + _itemsToAdd append ([_magazineGroups, toLower _x] call CBA_fnc_hashGet); + } forEach getArray (_muzzleConfig >> "magazineWell"); + } forEach getArray (_weaponConfig >> "muzzles"); + } forEach _attributeWeapons; +} else { + private _attachmentCategory = _category - 4; + private _filter = ["optic", "pointer", "muzzle", "bipod"] select _attachmentCategory; + + { + _itemsToAdd append ([_x, _filter] call CBA_fnc_compatibleItems); + } forEach _attributeWeapons; + + // Only add items with scope of 2 and ensure correct classname case + _itemsToAdd = _itemsToAdd select {getNumber (_cfgWeapons >> _x >> "scope") == 2}; + _itemsToAdd = _itemsToAdd apply {configName (_cfgWeapons >> _x)}; +}; + +_attributeItems append _itemsToAdd; +_attributeValue set [0, _attributeItems arrayIntersect _attributeItems]; + +// Refresh the list for new items +[_controlsGroup] call FUNC(attributeAddItems); diff --git a/addons/arsenal/functions/fnc_attributeCategory.sqf b/addons/arsenal/functions/fnc_attributeCategory.sqf new file mode 100644 index 0000000000..e0c0468f8a --- /dev/null +++ b/addons/arsenal/functions/fnc_attributeCategory.sqf @@ -0,0 +1,32 @@ +#include "script_component.hpp" +#include "..\defines.hpp" +/* + * Author: mharis001 + * Handles changing the category in 3DEN attribute. + * + * Arguments: + * 0: Attribute controls group + * 1: Category + * + * Return Value: + * None + * + * Example: + * [CONTROL, 0] call ace_arsenal_fnc_attributeCategory + * + * Public: No + */ + +params ["_controlsGroup", "_category"]; + +// Store selected category +uiNamespace setVariable [QGVAR(attributeCategory), _category]; + +// Show add compatible items button when category is attachments or magazines +private _compatibleButton = _controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_ADD_COMPATIBLE; +private _enable = _category in [4, 5, 6, 7, 8]; +_compatibleButton ctrlEnable _enable; +_compatibleButton ctrlShow _enable; + +// Refresh the list for selected category +[_controlsGroup] call FUNC(attributeAddItems); diff --git a/addons/arsenal/functions/fnc_attributeImport.sqf b/addons/arsenal/functions/fnc_attributeImport.sqf new file mode 100644 index 0000000000..ec56df4b56 --- /dev/null +++ b/addons/arsenal/functions/fnc_attributeImport.sqf @@ -0,0 +1,49 @@ +#include "script_component.hpp" +/* + * Author: mharis001 + * Handles importing items list from clipboard into 3DEN attribute. + * + * Arguments: + * 0: Attribute controls group + * + * Return Value: + * None + * + * Example: + * [CONTROL] call ace_arsenal_fnc_attributeImport + * + * Public: No + */ + +params ["_controlsGroup"]; + +private _importList = call compile copyFromClipboard; + +// Verify import list is in correct format +if (isNil "_importList" || {!(_importList isEqualType [])} || {!(_importList isEqualTypeAll "")}) exitWith { + playSound ["3DEN_notificationWarning", true]; +}; + +// Ensure imported items are in scanned config array and classname case is correct +private _configItems = +(uiNamespace getVariable [QGVAR(configItems), []]); +private _configItemsFlat = _configItems select [2, 16]; +_configItemsFlat append (_configItems select 0); +_configItemsFlat append (_configItems select 1); + +private _filteredList = []; + +{ + private _item = _x; + { + private _index = _x findIf {_x == _item}; + if (_index > -1) then { + _filteredList pushBackUnique (_x select _index); + }; + } forEach _configItemsFlat; +} forEach _importList; + +private _attributeValue = uiNamespace getVariable [QGVAR(attributeValue), [[], 0]]; +_attributeValue set [0, _filteredList]; + +// Refresh the list for new items +[_controlsGroup] call FUNC(attributeAddItems); diff --git a/addons/arsenal/functions/fnc_attributeLoad.sqf b/addons/arsenal/functions/fnc_attributeLoad.sqf index 439ec2ff36..355d5e113a 100644 --- a/addons/arsenal/functions/fnc_attributeLoad.sqf +++ b/addons/arsenal/functions/fnc_attributeLoad.sqf @@ -34,4 +34,8 @@ if (_value select 1 > 0) then { (_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_LIST_RIGHT) ctrlSetText SYMBOL_ITEM_REMOVE; }; -[_controlsGroup] call FUNC(attributeAddItems); +// Trigger category selection for last selected category to populate list +private _category = uiNamespace getVariable [QGVAR(attributeCategory), 0]; +(_controlsGroup controlsGroupCtrl IDC_ATTRIBUTE_CATEGORY) lbSetCurSel _category; + +[_controlsGroup, _category] call FUNC(attributeCategory); diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 564770cb58..617d467fce 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -866,6 +866,15 @@ Esporta l'attuale lista di elementi come un array, per essere usati negli script Eksportuj obecną listę przedmiotów jako tablicę do wykorzystania w skryptach + + Import items list array from clipboard (should be the same format as export) + + + Add Compatible Items + + + Will automatically add compatible attachments or magazines (based on selected category) for all weapons in current items list + Time to live Durée de vie From 187b2f38ce912d5d4aa77d963b3bf69afe8fa7df Mon Sep 17 00:00:00 2001 From: Dedmen Miller Date: Tue, 12 Mar 2019 17:26:56 +0100 Subject: [PATCH 10/19] Add rksl pm II 5-25x56 compat (#6845) * Add rksl pm II 5-25x56 compat * Combine into existing compat * Update ace_ScopeAdjus values --- optionals/compat_rksl_pm_ii/CfgWeapons.hpp | 28 +++++++++++++++++----- optionals/compat_rksl_pm_ii/config.cpp | 4 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/optionals/compat_rksl_pm_ii/CfgWeapons.hpp b/optionals/compat_rksl_pm_ii/CfgWeapons.hpp index 705d6b10e2..dcf9fe569b 100644 --- a/optionals/compat_rksl_pm_ii/CfgWeapons.hpp +++ b/optionals/compat_rksl_pm_ii/CfgWeapons.hpp @@ -3,13 +3,13 @@ class CfgWeapons { class ItemCore; class InventoryOpticsItem_Base_F; - class RKSL_optic_PMII_312 : ItemCore { + class RKSL_optic_PMII_312: ItemCore { ACE_ScopeHeightAboveRail = 4.2235; - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Vertical[] = { -1, 12 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; - class ItemInfo : InventoryOpticsItem_Base_F { + class ItemInfo: InventoryOpticsItem_Base_F { class OpticsModes { class Snip { discreteDistance[] = { 100 }; @@ -19,13 +19,29 @@ class CfgWeapons { }; }; - class RKSL_optic_PMII_312_sunshade : ItemCore { + class RKSL_optic_PMII_312_sunshade: ItemCore { ACE_ScopeHeightAboveRail = 4.2235; - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Vertical[] = { -1, 12 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; ACE_ScopeAdjust_VerticalIncrement = 0.1; ACE_ScopeAdjust_HorizontalIncrement = 0.1; - class ItemInfo : InventoryOpticsItem_Base_F { + class ItemInfo: InventoryOpticsItem_Base_F { + class OpticsModes { + class Snip { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + + class RKSL_optic_PMII_525: ItemCore { + ACE_ScopeHeightAboveRail = 4.2235; + ACE_ScopeAdjust_Vertical[] = { 0, 26 }; + 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 }; diff --git a/optionals/compat_rksl_pm_ii/config.cpp b/optionals/compat_rksl_pm_ii/config.cpp index 8cb36802b1..1242f7d0a6 100644 --- a/optionals/compat_rksl_pm_ii/config.cpp +++ b/optionals/compat_rksl_pm_ii/config.cpp @@ -6,9 +6,9 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"RKSL_PMII"}; + requiredAddons[] = {"RKSL_PMII", "RKSL_PMII_525"}; author = ECSTRING(common,ACETeam); - authors[] = {"Ruthberg"}; + authors[] = {"Ruthberg", "Dedmen"}; url = ECSTRING(main,URL); VERSION_CONFIG; }; From 28b96e3efd81d5b3a7c1433658289025c26cae3d Mon Sep 17 00:00:00 2001 From: ace3mod Date: Tue, 12 Mar 2019 17:32:11 +0100 Subject: [PATCH 11/19] [Docs] Update component dependencies Automatically committed through Travis CI. [ci skip] --- docs/_includes/dependencies_list.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_includes/dependencies_list.md b/docs/_includes/dependencies_list.md index 9509316a03..7e516cdb68 100644 --- a/docs/_includes/dependencies_list.md +++ b/docs/_includes/dependencies_list.md @@ -483,7 +483,7 @@ {% endif %} {% if include.component == "compat_rksl_pm_ii" %} -`RKSL_PMII` +`RKSL_PMII`, `RKSL_PMII_525` {% endif %} {% if include.component == "compat_sma3_iansky" %} From 129cc26438e2eec7268c47c9eb1c57a4eed1d0b9 Mon Sep 17 00:00:00 2001 From: xrufix Date: Tue, 12 Mar 2019 19:32:47 +0100 Subject: [PATCH 12/19] Add magazines with different tracer colors for some vanilla weapons (#6658) * Add magazines for some vanilla weapons with different tracer colors * Removed obsolete comment * unified naming of tracer magazines * Add CfgMagazineWells * Add 5.8mm mags * Add Minimi boxes * Added 5.56 Drum mags * Add Katiba and 7.62x51 mags * Remove magazine macro to make config easier to read and edit. * Add pictures available in arma files * Add magazines to vanilla magazinWells * Fix wrong base class for Katiba tracer mags * Removed duplicate strings * delete blank lines in stringtable --- optionals/tracers/CfgAmmo.hpp | 6 + optionals/tracers/CfgMagazineWells.hpp | 156 +++++++++++++++ optionals/tracers/CfgMagazines.hpp | 245 +++++++++++++++++++++++ optionals/tracers/config.cpp | 26 +-- optionals/tracers/stringtable.xml | 259 +++++++++++++++++++++++++ 5 files changed, 668 insertions(+), 24 deletions(-) create mode 100644 optionals/tracers/CfgMagazineWells.hpp create mode 100644 optionals/tracers/CfgMagazines.hpp create mode 100644 optionals/tracers/stringtable.xml diff --git a/optionals/tracers/CfgAmmo.hpp b/optionals/tracers/CfgAmmo.hpp index c1d83fcbdf..c74d6ac708 100644 --- a/optionals/tracers/CfgAmmo.hpp +++ b/optionals/tracers/CfgAmmo.hpp @@ -33,6 +33,8 @@ class CfgAmmo { // class B_556x45_Ball_Tracer_White: B_556x45_Ball {model = PATHTOF(ace_TracerWhite2.p3d);}; //New class for testing class B_580x42_Ball_F: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);}; + class ACE_580x42_Ball_Tracer_Red: B_580x42_Ball_F {model = PATHTOF(ace_TracerRed2.p3d);}; + class ACE_580x42_Ball_Tracer_Yellow: B_580x42_Ball_F {model = PATHTOF(ace_TracerYellow2.p3d);}; class B_65x39_Caseless: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red class B_65x39_Caseless_green: B_65x39_Caseless {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green @@ -86,10 +88,14 @@ class CfgAmmo { class B_338_Ball: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red class B_338_NM_Ball: BulletBase {model = PATHTOF(ace_TracerRed2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_red + class ACE_338_NM_Ball_red : B_338_NM_Ball {model = PATHTOF(ace_TracerRed2.p3d);}; + class ACE_338_NM_Ball_yellow : B_338_NM_Ball {model = PATHTOF(ace_TracerYellow2.p3d);}; class B_127x54_Ball: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green class B_93x64_Ball: BulletBase {model = PATHTOF(ace_TracerGreen2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_green + class ACE_93x64_Ball_tracer_red : B_93x64_Ball {model = PATHTOF(ace_TracerRed2.p3d);}; + class ACE_93x64_Ball_tracer_yellow : B_93x64_Ball {model = PATHTOF(ace_TracerYellow2.p3d);}; //Autocannon class B_19mm_HE: BulletBase {model = PATHTOF(ace_TracerWhite2.p3d);}; //Replaces \A3\Weapons_f\Data\bullettracer\tracer_white diff --git a/optionals/tracers/CfgMagazineWells.hpp b/optionals/tracers/CfgMagazineWells.hpp new file mode 100644 index 0000000000..4d0b0d5788 --- /dev/null +++ b/optionals/tracers/CfgMagazineWells.hpp @@ -0,0 +1,156 @@ +class CfgMagazineWells { + class STANAG_556x45_Large { + ADDON[] = { + "ACE_150Rnd_556x45_Drum_green", + "ACE_150Rnd_556x45_Drum_yellow", + "ACE_150Rnd_556x45_Drum_tracer_green", + "ACE_150Rnd_556x45_Drum_tracer_yellow" + }; + }; + class CBA_556x45_STANAG_2D_XL { + ADDON[] = { + "ACE_150Rnd_556x45_Drum_green", + "ACE_150Rnd_556x45_Drum_yellow", + "ACE_150Rnd_556x45_Drum_tracer_green", + "ACE_150Rnd_556x45_Drum_tracer_yellow" + }; + }; + class M249_556x45 { + ADDON[] = { + "ACE_200Rnd_556x45_Box_green", + "ACE_200Rnd_556x45_Box_tracer_green" + }; + }; + class CBA_556x45_MINIMI { + ADDON[] = { + "ACE_200Rnd_556x45_Box_green", + "ACE_200Rnd_556x45_Box_tracer_green" + }; + }; + class CTAR_580x42 { + ADDON[] = { + "ACE_30Rnd_580x42_Mag_red", + "ACE_30Rnd_580x42_Mag_yellow", + "ACE_30Rnd_580x42_Mag_tracer_red", + "ACE_30Rnd_580x42_Mag_tracer_yellow" + }; + }; + class CBA_580x42_TYPE95 { + ADDON[] = { + "ACE_30Rnd_580x42_Mag_red", + "ACE_30Rnd_580x42_Mag_yellow", + "ACE_30Rnd_580x42_Mag_tracer_red", + "ACE_30Rnd_580x42_Mag_tracer_yellow" + }; + }; + class CTAR_580x42_Large { + ADDON[] = { + "ACE_100Rnd_580x42_Drum_red", + "ACE_100Rnd_580x42_Drum_yellow", + "ACE_100Rnd_580x42_Drum_tracer_red", + "ACE_100Rnd_580x42_Drum_tracer_yellow" + }; + }; + class CBA_580x42_TYPE95_XL { + ADDON[] = { + "ACE_100Rnd_580x42_Drum_red", + "ACE_100Rnd_580x42_Drum_yellow", + "ACE_100Rnd_580x42_Drum_tracer_red", + "ACE_100Rnd_580x42_Drum_tracer_yellow" + }; + }; + class MX_65x39 { + ADDON[] = { + "ACE_30Rnd_65x39_mx_green", + "ACE_30Rnd_65x39_mx_yellow", + "ACE_30Rnd_65x39_mx_tracer_green", + "ACE_30Rnd_65x39_mx_tracer_yellow" + }; + }; + class CBA_65x39_MX { + ADDON[] = { + "ACE_30Rnd_65x39_mx_green", + "ACE_30Rnd_65x39_mx_yellow", + "ACE_30Rnd_65x39_mx_tracer_green", + "ACE_30Rnd_65x39_mx_tracer_yellow" + }; + }; + class CBA_65x39_MX_XL { + ADDON[] = { + "ACE_100Rnd_65x39_mx_green", + "ACE_100Rnd_65x39_mx_yellow", + "ACE_100Rnd_65x39_mx_tracer_green", + "ACE_100Rnd_65x39_mx_tracer_yellow" + }; + }; + class Katiba_65x39 { + ADDON[] = { + "ACE_30Rnd_65x39_katiba_red", + "ACE_30Rnd_65x39_katiba_yellow", + "ACE_30Rnd_65x39_katiba_tracer_red", + "ACE_30Rnd_65x39_katiba_tracer_yellow" + }; + }; + class CBA_65x39_Katiba { + ADDON[] = { + "ACE_30Rnd_65x39_katiba_red", + "ACE_30Rnd_65x39_katiba_yellow", + "ACE_30Rnd_65x39_katiba_tracer_red", + "ACE_30Rnd_65x39_katiba_tracer_yellow" + }; + }; + class Mk200_65x39 { + ADDON[] = { + "ACE_200Rnd_65x39_cased_Box_green", + "ACE_200Rnd_65x39_cased_Box_red", + "ACE_200Rnd_65x39_cased_Box_tracer_green", + "ACE_200Rnd_65x39_cased_Box_tracer_red" + }; + }; + class CBA_65x39_Mk200 { + ADDON[] = { + "ACE_200Rnd_65x39_cased_Box_green", + "ACE_200Rnd_65x39_cased_Box_red", + "ACE_200Rnd_65x39_cased_Box_tracer_green", + "ACE_200Rnd_65x39_cased_Box_tracer_red" + }; + }; + class CBA_762x51_HK417 { + ADDON[] = { + "ACE_20Rnd_762x51_Mag_tracer_green", + "ACE_20Rnd_762x51_Mag_tracer_yellow" + }; + }; + class CBA_762x51_M14 { + ADDON[] = { + "ACE_20Rnd_762x51_Mag_Tracer_green", + "ACE_20Rnd_762x51_Mag_Tracer_yellow" + }; + }; + class CBA_762x51_G3 { + ADDON[] = { + "ACE_20Rnd_762x51_Mag_Tracer_green", + "ACE_20Rnd_762x51_Mag_Tracer_yellow" + }; + }; + class CBA_762x54R_LINKS { + ADDON[] = { + "ACE_150Rnd_762x54_Box_red", + "ACE_150Rnd_762x54_Box_yellow", + "ACE_150Rnd_762x54_Box_tracer_red", + "ACE_150Rnd_762x54_Box_tracer_yellow" + }; + }; + class CBA_93x64_LINKS { + ADDON[] = { + "ACE_150Rnd_93x64_Mag_red", + "ACE_150Rnd_93x64_Mag_yellow" + }; + }; + class CBA_338NM_LINKS { + ADDON[] = { + "ACE_130Rnd_338_Mag_green", + "ACE_130Rnd_338_Mag_yellow" + }; + }; +}; diff --git a/optionals/tracers/CfgMagazines.hpp b/optionals/tracers/CfgMagazines.hpp new file mode 100644 index 0000000000..a8d822696e --- /dev/null +++ b/optionals/tracers/CfgMagazines.hpp @@ -0,0 +1,245 @@ +#define STRINGS(magazine) author = ECSTRING(common,ACETeam); displayName = CSTRING(magazine) + +class CfgMagazines { + + // 5.56mm + class 150Rnd_556x45_Drum_Mag_F; + class ACE_150Rnd_556x45_Drum_green : 150Rnd_556x45_Drum_Mag_F { + ammo = "B_556x45_Ball_tracer_green"; + STRINGS(150Rnd_556x45_Drum_green); + }; + class ACE_150Rnd_556x45_Drum_yellow : 150Rnd_556x45_Drum_Mag_F { + ammo = "B_556x45_Ball_tracer_yellow"; + STRINGS(150Rnd_556x45_Drum_yellow); + }; + + class 150Rnd_556x45_Drum_Mag_tracer_F; + class ACE_150Rnd_556x45_Drum_tracer_green : 150Rnd_556x45_Drum_Mag_tracer_F { + ammo = "B_556x45_Ball_tracer_green"; + STRINGS(150Rnd_556x45_Drum_tracer_green); + descriptionShort = CSTRING(150Rnd_556x45_Drum_tracer_green_description); + }; + class ACE_150Rnd_556x45_Drum_tracer_yellow : 150Rnd_556x45_Drum_Mag_tracer_F { + ammo = "B_556x45_Ball_tracer_yellow"; + STRINGS(150Rnd_556x45_Drum_tracer_yellow); + descriptionShort = CSTRING(150Rnd_556x45_Drum_tracer_green_description); + }; + + class 200Rnd_556x45_Box_F; + class ACE_200Rnd_556x45_Box_green : 200Rnd_556x45_Box_F { + ammo = "B_556x45_Ball_tracer_green"; + STRINGS(200Rnd_556x45_Box_green); + }; + class 200Rnd_556x45_Box_tracer_F; + class ACE_200Rnd_556x45_Box_tracer_green : 200Rnd_556x45_Box_tracer_F { + ammo = "B_556x45_Ball_tracer_green"; + STRINGS(200Rnd_556x45_Box_tracer_green); + descriptionShort = CSTRING(200Rnd_556x45_Box_tracer_green_description); + }; + + // 5.8mm + class 30Rnd_580x42_Mag_F; + class ACE_30Rnd_580x42_Mag_red : 30Rnd_580x42_Mag_F { + ammo = "ACE_580x42_Ball_tracer_red"; + STRINGS(30Rnd_580x42_Mag_red); + }; + class ACE_30Rnd_580x42_Mag_yellow : 30Rnd_580x42_Mag_F { + ammo = "ACE_580x42_Ball_tracer_yellow"; + STRINGS(30Rnd_580x42_Mag_yellow); + }; + + class 30Rnd_580x42_Mag_tracer_F; + class ACE_30Rnd_580x42_Mag_tracer_red : 30Rnd_580x42_Mag_tracer_F { + ammo = "ACE_580x42_Ball_tracer_red"; + STRINGS(30Rnd_580x42_Mag_tracer_red); + descriptionShort = CSTRING(30Rnd_580x42_Mag_tracer_red_description); + }; + class ACE_30Rnd_580x42_Mag_tracer_yellow : 30Rnd_580x42_Mag_tracer_F { + ammo = "ACE_580x42_Ball_tracer_yellow"; + STRINGS(30Rnd_580x42_Mag_tracer_yellow); + descriptionShort = CSTRING(30Rnd_580x42_Mag_tracer_yellow_description); + }; + + class 100Rnd_580x42_Mag_F; + class ACE_100Rnd_580x42_Drum_red : 100Rnd_580x42_Mag_F { + ammo = "ACE_580x42_Ball_tracer_red"; + STRINGS(100Rnd_580x42_Drum_red); + }; + class ACE_100Rnd_580x42_Drum_yellow : 100Rnd_580x42_Mag_F { + ammo = "ACE_580x42_Ball_tracer_yellow"; + STRINGS(100Rnd_580x42_Drum_yellow); + }; + + class 100Rnd_580x42_Mag_tracer_F; + class ACE_100Rnd_580x42_Drum_tracer_red : 100Rnd_580x42_Mag_tracer_F { + ammo = "ACE_580x42_Ball_tracer_red"; + STRINGS(100Rnd_580x42_Drum_tracer_red); + descriptionShort = CSTRING(100Rnd_580x42_Drum_tracer_red_description); + }; + class ACE_100Rnd_580x42_Drum_tracer_yellow : 100Rnd_580x42_Mag_tracer_F { + ammo = "ACE_580x42_Ball_tracer_yellow"; + STRINGS(100Rnd_580x42_Drum_tracer_yellow); + descriptionShort = CSTRING(100Rnd_580x42_Drum_tracer_yellow_description); + }; + + // 6.5mm Caseless MX + class 30Rnd_65x39_caseless_mag; + class ACE_30Rnd_65x39_mx_green : 30Rnd_65x39_caseless_mag { + ammo = "B_65x39_Caseless_green"; + STRINGS(30Rnd_65x39_mx_green); + descriptionShort = CSTRING(30Rnd_65x39_mx_green_description); + }; + class ACE_30Rnd_65x39_mx_yellow : 30Rnd_65x39_caseless_mag { + ammo = "B_65x39_Caseless_yellow"; + STRINGS(30Rnd_65x39_mx_yellow); + descriptionShort = CSTRING(30Rnd_65x39_mx_yellow_description); + }; + + class 30Rnd_65x39_caseless_mag_tracer; + class ACE_30Rnd_65x39_mx_tracer_green : 30Rnd_65x39_caseless_mag_tracer { + ammo = "B_65x39_Caseless_green"; + picture = "a3\weapons_f\Data\UI\m_30stanag_caseless_green_CA.paa"; + STRINGS(30Rnd_65x39_mx_tracer_green); + descriptionShort = CSTRING(30Rnd_65x39_mx_tracer_green_description); + }; + class ACE_30Rnd_65x39_mx_tracer_yellow : 30Rnd_65x39_caseless_mag_tracer { + ammo = "B_65x39_Caseless_yellow"; + picture = "a3\weapons_f\Data\UI\m_30stanag_caseless_yellow_CA.paa"; + STRINGS(30Rnd_65x39_mx_tracer_yellow); + descriptionShort = CSTRING(30Rnd_65x39_mx_tracer_yellow_description); + }; + + class 100Rnd_65x39_caseless_mag; + class ACE_100Rnd_65x39_mx_green : 100Rnd_65x39_caseless_mag { + ammo = "B_65x39_Caseless_green"; + STRINGS(100Rnd_65x39_mx_green); + }; + class ACE_100Rnd_65x39_mx_yellow : 100Rnd_65x39_caseless_mag { + ammo = "B_65x39_Caseless_yellow"; + STRINGS(100Rnd_65x39_mx_yellow); + }; + + class 100Rnd_65x39_caseless_mag_tracer; + class ACE_100Rnd_65x39_mx_tracer_green : 100Rnd_65x39_caseless_mag_tracer { + ammo = "B_65x39_Caseless_green"; + picture = "a3\weapons_f\Data\UI\M_100Rnd_65x39_green_CA.paa"; + STRINGS(100Rnd_65x39_mx_tracer_green); + descriptionShort = CSTRING(100Rnd_65x39_mx_tracer_green_description); + }; + class ACE_100Rnd_65x39_mx_tracer_yellow : 100Rnd_65x39_caseless_mag_tracer { + ammo = "B_65x39_Caseless_yellow"; + picture = "a3\weapons_f\Data\UI\M_100Rnd_65x39_yellow_CA.paa"; + STRINGS(100Rnd_65x39_mx_tracer_yellow); + descriptionShort = CSTRING(100Rnd_65x39_mx_tracer_yellow_description); + }; + + // 6.5mm Caseless Katiba + class 30Rnd_65x39_caseless_green; + class ACE_30Rnd_65x39_katiba_red : 30Rnd_65x39_caseless_green { + ammo = "B_65x39_Caseless"; + STRINGS(30Rnd_65x39_katiba_red); + }; + class ACE_30Rnd_65x39_katiba_yellow : 30Rnd_65x39_caseless_green { + ammo = "B_65x39_Caseless_yellow"; + STRINGS(30Rnd_65x39_katiba_yellow); + }; + + class 30Rnd_65x39_caseless_green_mag_Tracer; + class ACE_30Rnd_65x39_katiba_tracer_red : 30Rnd_65x39_caseless_green_mag_Tracer { + ammo = "B_65x39_Caseless"; + picture = "a3\weapons_f\Data\UI\m_20stanag_red_CA.paa"; + STRINGS(30Rnd_65x39_katiba_tracer_red); + descriptionShort = CSTRING(30Rnd_65x39_katiba_tracer_red_description); + }; + class ACE_30Rnd_65x39_katiba_tracer_yellow : 30Rnd_65x39_caseless_green_mag_Tracer { + ammo = "B_65x39_Caseless_yellow"; + picture = "a3\weapons_f\Data\UI\m_20stanag_yellow_CA.paa"; + STRINGS(30Rnd_65x39_katiba_tracer_yellow); + descriptionShort = CSTRING(30Rnd_65x39_katiba_tracer_yellow_description); + }; + + // 6.5mm Cased + class 200Rnd_65x39_cased_Box; + class ACE_200Rnd_65x39_cased_Box_green : 200Rnd_65x39_cased_Box { + ammo = "B_65x39_Case_green"; + STRINGS(200Rnd_65x39_cased_Box_green); + descriptionShort = CSTRING(200Rnd_65x39_cased_Box_green_description); + }; + class ACE_200Rnd_65x39_cased_Box_red : 200Rnd_65x39_cased_Box { + ammo = "B_65x39_Case"; + STRINGS(200Rnd_65x39_cased_Box_red); + descriptionShort = CSTRING(200Rnd_65x39_cased_Box_red_description); + }; + + class 200Rnd_65x39_cased_Box_tracer; + class ACE_200Rnd_65x39_cased_Box_tracer_green : 200Rnd_65x39_cased_Box_tracer { + ammo = "B_65x39_Case_green"; + picture = "a3\weapons_f\Data\UI\M_200Rnd_65x39_green_CA.paa"; + STRINGS(200Rnd_65x39_cased_Box_tracer_green); + descriptionShort = CSTRING(200Rnd_65x39_cased_Box_tracer_green_description); + }; + class ACE_200Rnd_65x39_cased_Box_tracer_red : 200Rnd_65x39_cased_Box_tracer { + ammo = "B_65x39_Case"; + picture = "a3\weapons_f\Data\UI\M_200Rnd_65x39_red_CA.paa"; + STRINGS(200Rnd_65x39_cased_Box_tracer_red); + descriptionShort = CSTRING(200Rnd_65x39_cased_Box_tracer_red_description); + }; + + // 7.62x51 (NATO) + class ACE_20Rnd_762x51_Mag_tracer; + class ACE_20Rnd_762x51_Mag_tracer_green : ACE_20Rnd_762x51_Mag_tracer { + ammo = "B_762x51_tracer_green"; + STRINGS(20Rnd_762x51_Mag_tracer_green); + descriptionShort = CSTRING(20Rnd_762x51_Mag_tracer_green_description); + }; + class ACE_20Rnd_762x51_Mag_tracer_yellow : ACE_20Rnd_762x51_Mag_tracer { + ammo = "B_762x51_tracer_yellow"; + STRINGS(20Rnd_762x51_Mag_tracer_yellow); + descriptionShort = CSTRING(20Rnd_762x51_Mag_tracer_green_description); + }; + + // 7.62x54 (Russian) + class 150Rnd_762x54_Box; + class ACE_150Rnd_762x54_Box_red : 150Rnd_762x54_Box { + ammo = "B_762x54_tracer_red"; + STRINGS(150Rnd_762x54_Box_red); + }; + class ACE_150Rnd_762x54_Box_yellow : 150Rnd_762x54_Box { + ammo = "B_762x54_tracer_yellow"; + STRINGS(150Rnd_762x54_Box_yellow); + }; + + class 150Rnd_762x54_Box_tracer; + class ACE_150Rnd_762x54_Box_tracer_red : 150Rnd_762x54_Box_tracer { + ammo = "B_762x54_tracer_red"; + STRINGS(150Rnd_762x54_Box_tracer_red); + descriptionShort = CSTRING(150Rnd_762x54_Box_tracer_red_description); + }; + class ACE_150Rnd_762x54_Box_tracer_yellow : 150Rnd_762x54_Box_tracer { + ammo = "B_762x54_tracer_yellow"; + STRINGS(150Rnd_762x54_Box_tracer_yellow); + descriptionShort = CSTRING(150Rnd_762x54_Box_tracer_yellow_description); + }; + + // 9.3x64 + class 150Rnd_93x64_Mag; + class ACE_150Rnd_93x64_Mag_red : 150Rnd_93x64_Mag { + ammo = "ACE_93x64_tracer_red"; + STRINGS(150Rnd_93x64_Mag_red); + }; + class ACE_150Rnd_93x64_Mag_yellow : 150Rnd_93x64_Mag { + ammo = "ACE_93x64_tracer_yellow"; + STRINGS(150Rnd_93x64_Mag_yellow); + }; + + // .338 NM + class 130Rnd_338_Mag; + class ACE_130Rnd_338_Mag_green : 130Rnd_338_Mag { + ammo = "ACE_338_NM_tracer_green"; + STRINGS(130Rnd_338_Mag_green); + }; + class ACE_130Rnd_338_Mag_yellow : 130Rnd_338_Mag { + ammo = "ACE_338_NM_tracer_yellow"; + STRINGS(130Rnd_338_Mag_yellow); + }; +}; diff --git a/optionals/tracers/config.cpp b/optionals/tracers/config.cpp index 200b24cf57..79e7f3364d 100644 --- a/optionals/tracers/config.cpp +++ b/optionals/tracers/config.cpp @@ -15,27 +15,5 @@ class CfgPatches { }; #include "CfgAmmo.hpp" - -// CfgMagazines and CfgWeapons are included for testing only and may be removed for release version. -// There is also an ammo class B_556x45_Ball_Tracer_White commented out in CfgAmmo -// this should also be uncommented when testing white tracers. -/* -class CfgMagazines { - class 200Rnd_556x45_Box_Tracer_F; - class 200Rnd_556x45_Box_Green_F : 200Rnd_556x45_Box_Tracer_F { - ammo = "B_556x45_Ball_Tracer_Green"; - displayName = "5.56 mm 200Rnd Tracer (Green) Box"; - }; - class 200Rnd_556x45_Box_White_F : 200Rnd_556x45_Box_Tracer_F { - ammo = "B_556x45_Ball_Tracer_White"; - displayName = "5.56 mm 200Rnd Tracer (White) Box"; - }; -}; - -class CfgWeapons { - class LMG_03_base_F; - class LMG_03_F : LMG_03_base_F { - magazines[] = {"200Rnd_556x45_Box_F","200Rnd_556x45_Box_Red_F","200Rnd_556x45_Box_Tracer_F","200Rnd_556x45_Box_Tracer_Red_F","200Rnd_556x45_Box_Green_F","200Rnd_556x45_Box_White_F"}; - }; -}; -*/ +#include "CfgMagazines.hpp" +#include "CfgMagazineWells.hpp" diff --git a/optionals/tracers/stringtable.xml b/optionals/tracers/stringtable.xml new file mode 100644 index 0000000000..acaaa60081 --- /dev/null +++ b/optionals/tracers/stringtable.xml @@ -0,0 +1,259 @@ + + + + + + 5.56 mm 150Rnd Reload Tracer (Green) Mag + 150 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Magazin + + + 5.56 mm 150Rnd Reload Tracer (Yellow) Mag + 150 Schuss 5,56 mm Nachlade-Leuchtspur (Gelb) Magazin + + + 5.56 mm 150Rnd Tracer (Green) Mag + 150 Schuss 5,56 mm Leuchtspur (Grün) Magazin + + + Caliber: 5.56x45 mm Tracer - Green<br />Rounds: 150<br />Used in: SPAR-16S + Kaliber: 5,56x45 mm Leuchtspur - grün<br />Schuss: 150<br />Verwendet in: SPAR-16S + + + 5.56 mm 150Rnd Tracer (Yellow) Mag + 150 Schuss 5,56 mm Leuchtspur (Gelb) Magazin + + + Caliber: 5.56x45 mm Tracer - Yellow<br />Rounds: 150<br />Used in: SPAR-16S + Kaliber: 5,56x45 mm Leuchtspur - gelb<br />Schuss: 150<br />Verwendet in: SPAR-16S + + + 5.56 mm 200Rnd Reload Tracer (Green) Box + 200 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Kasten + + + 5.56 mm 200Rnd Tracer (Green) Box + 200 Schuss 5,56 mm Nachlade-Leuchtspur (Grün) Kasten + + + Caliber: 5.56x45 mm Tracer - Green<br />Rounds: 200<br />Used in: LIM-85 + Kaliber: 5,56x45 mm Leuchtspur - grün<br />Schuss: 200<br />Verwendet in: LIM-85 + + + 5.8 mm 30Rnd Reload Tracer (Red) Mag + 30 Schuss 5,8 mm Nachlade-Leuchtspur (Rot) Magazin + + + 5.8 mm 30Rnd Reload Tracer (Yellow) Mag + 30 Schuss 5,8 mm Nachlade-Leuchtspur (Gelb) Magazin + + + 5.8 mm 30Rnd Tracer (Red) Mag + 30 Schuss 5,8 mm Leuchtspur (Rot) Magazin + + + Caliber: 5.8x42 mm Tracer - Red<br />Rounds: 30<br />Used in: CAR-95, CAR-95 GL + Kaliber: 5,8x42 mm Leuchtspur - rot<br />Schuss: 30<br />Verwendet in: CAR-95, CAR-95 GL + + + 5.8 mm 30Rnd Tracer (Yellow) Mag + 30 Schuss 5,8 mm Leuchtspur (Gelb) Magazin + + + Caliber: 5.8x42 mm Tracer - Yellow<br />Rounds: 30<br />Used in: CAR-95, CAR-95 GL + Kaliber: 5,8x42 mm Leuchtspur - gelb<br />Schuss: 30<br />Verwendet in: CAR-95, CAR-95 GL + + + 5.8 mm 100Rnd Reload Tracer (Red) Mag + 100 Schuss 5,8 mm Nachlade-Leuchtspur (Rot) Magazin + + + 5.8 mm 100Rnd Reload Tracer (Yellow) Mag + 100 Schuss 5,8 mm Nachlade-Leuchtspur (Gelb) Magazin + + + 5.8 mm 100Rnd Tracer (Red) Mag + 100 Schuss 5,8 mm Leuchtspur (Rot) Magazin + + + Caliber: 5.8x42 mm Tracer - Red<br />Rounds: 100<br />Used in: CAR-95-1 + Kaliber: 5,8x42 mm Leuchtspur - rot<br />Schuss: 100<br />Verwendet in: CAR-95-1 + + + 5.8 mm 100Rnd Tracer (Yellow) Mag + 100 Schuss 5,8 mm Leuchtspur (Gelb) Magazin + + + Caliber: 5.8x42 mm Tracer - Yellow<br />Rounds: 100<br />Used in: CAR-95-1 + Kaliber: 5,8x42 mm Leuchtspur - gelb<br />Schuss: 100<br />Verwendet in: CAR-95-1 + + + 6.5mm 30Rnd Reload Tracer (Green) Mag + 30 Schuss 6.5mm Nachlade-Leuchtspur (Grün) Magazin + + + Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6.5x39 mm Nachlade-Leuchtspur - Grün<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL + + + 6.5mm 30Rnd Reload Tracer (Yellow) Mag + 30 Schuss 6.5mm Nachlade-Leuchtspur (Gelb) Magazin + + + Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6.5x39 mm Nachlade-Leuchtspur - Gelb<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL + + + 6.5mm 30Rnd Tracer (Green) Mag + 30 Schuss 6.5mm Leuchtspur (Grün) Magazin + + + Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL + + + 6.5mm 30Rnd Tracer (Yellow) Mag + 30 Schuss 6.5mm Leuchtspur (Gelb) Magazin + + + Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6.5x39 mm Leuchtspur - Gelb<br />Patronen: 30<br />Verwendet in: MX/C/M/SW/3GL + + + 6.5mm 100Rnd Mixed Mag (Green) + 100 Schuss 6.5mm Magazin gemischt (grün) + + + 6.5mm 100Rnd Mixed Mag (Yellow) + 100 Schuss 6.5mm Magazin gemischt (gelb) + + + 6.5mm 100Rnd Mag Tracer (Green) + 100 Schuss 6.5mm Magazin Leuchtspur (Grün) + + + Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 100<br />Used in: MX SW + Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 100<br />Verwendet in: MX SW + + + 6.5mm 100Rnd Mag Tracer (Yellow) + 100 Schuss 6.5mm Magazin Leuchtspur (Gelb) + + + Caliber: 6.5x39 mm Tracer - Yellow<br />Rounds: 100<br />Used in: MX SW + Kaliber: 6.5x39 mm Leuchtspur - Gelb<br />Patronen: 100<br />Verwendet in: MX SW + + + 6.5mm 30Rnd Reload Tracer (Red) Mag + 30 Schuss 6.5mm Nachlade-Leuchtspur (Rot) Magazin + + + 6.5mm 30Rnd Reload Tracer (Yellow) Mag + 30 Schuss 6.5mm Nachlade-Leuchtspur (Gelb) Magazin + + + 6.5mm 30Rnd Tracer (Red) Mag + 30 Schuss 6.5mm Leuchtspur (Rot) Magazin + + + Caliber: 6.5x39 mm Tracer (Red) - Caseless<br />Rounds: 30<br />Used in: Katiba, Type 115 + Kaliber: 6,5x39mm Leuchtspur (Rot) ‒ hülsenlos<br />Patronen: 30<br />Eingesetzt von: Katiba, Typ 115 + + + 6.5mm 30Rnd Tracer (Yellow) Mag + 30 Schuss 6.5mm Leuchtspur (Gelb) Magazin + + + Caliber: 6.5x39 mm Tracer (Yellow) - Caseless<br />Rounds: 30<br />Used in: Katiba, Type 115 + Kaliber: 6,5x39mm Leuchtspur (Rot) ‒ hülsenlos<br />Patronen: 30<br />Eingesetzt von: Katiba, Typ 115 + + + 6.5 mm 200Rnd Belt Case Mixed (Green) + 6,5 mm 200-Schuss-Gurtkiste Gemischt (grün) + + + Caliber: 6.5x39 mm Mixed - Green<br />Rounds: 200<br />Used in: Mk200 + Kaliber: 6.5x39 mm Gemischt - Grün<br />Patronen: 200<br />Verwendet in: Mk200 + + + 6.5 mm 200Rnd Belt Case Mixed (Red) + 6,5 mm 200-Schuss-Gurtkiste Gemischt (grün) + + + Caliber: 6.5x39 mm Mixed - Red<br />Rounds: 200<br />Used in: Mk200 + Kaliber: 6.5x39 mm Mixed - Rot<br />Patronen: 200<br />Verwendet in: Mk200 + + + 6.5 mm 200Rnd Belt Case Tracer (Green) + 6,5 mm 200-Schuss-Gurtkiste Leuchtspur (grün) + + + Caliber: 6.5x39 mm Tracer - Green<br />Rounds: 200<br />Used in: Mk200 + Kaliber: 6.5x39 mm Leuchtspur - Grün<br />Patronen: 200<br />Verwendet in: Mk200 + + + 6.5 mm 200Rnd Belt Case Tracer (Red) + 6,5 mm 200-Schuss-Gurtkiste Leuchtspur (rot) + + + Caliber: 6.5x39 mm Tracer - Red<br />Rounds: 200<br />Used in: Mk200 + Kaliber: 6.5x39 mm Leuchtspur - Rot<br />Patronen: 200<br />Verwendet in: Mk200 + + + 7.62 mm 20Rnd Tracer (Green) Mag + 7,62 mm 20-Schuss-Magazin Leuchtspur (Grün) + + + Caliber: 7.62x51 mm NATO Tracer - Green<br />Rounds: 20<br />Used in: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17 + Kaliber: 7,62x51 mm NATO Leuchtspur - grün<br />Patronen: 20<br />Eingesetzt von: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17 + + + 7.62 mm 20Rnd Tracer (Yellow) Mag + 7,62 mm 20-Schuss-Magazin Leuchtspur (Gelb) + + + Caliber: 7.62x51 mm NATO Tracer - Yellow<br />Rounds: 20<br />Used in: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17 + Kaliber: 7,62x51 mm NATO Leuchtspur - gelb<br />Patronen: 20<br />Eingesetzt von: Mk18 ABR, Mk-I EMR, Mk14, SPAR-17 + + + 7.62mm 150Rnd Box Mixed (Red) + 7.62mm 150 Schuss Kiste Gemischt (rot) + + + 7.62mm 150Rnd Box Mixed (Yellow) + 7.62mm 150 Schuss Kiste Gemischt (gelb) + + + 7.62mm 150Rnd Box Tracer (Red) + 7.62mm 150 Schuss Kiste Leuchtspur (rot) + + + Caliber: 7.62x54 mm Tracer - Red<br />Rounds: 150<br />Used in: Zafir + Kaliber: 7.62x54 mm Leuchtspur - Rot<br />Patronen: 150<br />Verwendet in: Zafir + + + 7.62mm 150Rnd Box Tracer (Yellow) + 7.62mm 150 Schuss Kiste Leuchtspur (Rot) + + + Caliber: 7.62x54 mm Tracer - Yellow<br />Rounds: 150<br />Used in: Zafir + Kaliber: 7.62x54 mm Leuchtspur - Gelb<br />Patronen: 150<br />Verwendet in: Zafir + + + 9.3mm 150Rnd Belt Mixed (Yellow) + 9.3mm 150 Schuss Gurt gemischt (Gelb) + + + 9.3mm 150Rnd Belt Mixed (Red) + 9.3mm 150 Schuss Gurt gemischt (Rot) + + + .338 NM 130Rnd Belt Mixed (Yellow) + .338 NM 130 Schuss Gurt gemischt (gelb) + + + .338 NM 130Rnd Belt Mixed (Green) + .338 NM 130 Schuss Gurt gemischt (grün) + + + + From 373f11338d2ab2cfa87e3305d8efcfe3ab959b82 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 12 Mar 2019 13:35:51 -0500 Subject: [PATCH 13/19] Prep 3.12.6 Build 42 --- VERSION | 2 +- addons/main/script_version.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 5ff7b13781..fa3c808a00 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.12.6.41 +3.12.6.42 diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index fd222b7d36..fa752aa740 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 #define MINOR 12 #define PATCHLVL 6 -#define BUILD 41 +#define BUILD 42 From b4639ed7582bb0ef33590fa799b5ce22b7cbfdc8 Mon Sep 17 00:00:00 2001 From: markooff Date: Wed, 13 Mar 2019 06:18:33 +0100 Subject: [PATCH 14/19] tlumaczenie_12_03_2019 (#6865) Translations - Polish --- addons/arsenal/stringtable.xml | 8 ++++++-- addons/fastroping/stringtable.xml | 13 +++++++++++++ addons/markers/stringtable.xml | 1 + addons/medical/stringtable.xml | 5 +++++ addons/zeus/stringtable.xml | 2 ++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 617d467fce..a3bd8baa04 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -103,6 +103,7 @@ [Shift+Click to save to mission defaults] [Shift + クリック] でミッション標準として保存します + Shift + Klik aby zapisac jako domyślne dla misji Rename @@ -824,7 +825,7 @@ Whitelist - Biała lista + Biała lista (lista wybranych) Lista blanca Whitelist Seznam povolených @@ -842,7 +843,7 @@ Blacklist 禁止リスト Lista Nera - Czarna lista + Czarna lista (lista wykluczeń) Items @@ -868,12 +869,15 @@ Import items list array from clipboard (should be the same format as export) + Zaimportuj listę przedmiotów ze schowka (lista musi być w tym samym formacie jak przy exporcie) Add Compatible Items + Dodaj kompatybilne przedmioty Will automatically add compatible attachments or magazines (based on selected category) for all weapons in current items list + Automatycznie doda kompatybilne dodatki oraz magazynki (odpowiednio do każdej kategorii) dla wszystkich broni na liście Time to live diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 4401196769..71a2f17038 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -148,66 +148,79 @@ Deploy 12m ropes Déployer les cordes 12m 12m ロープを展開 + Wysuń linę o długości 12 m. Deploy 15m ropes Déployer les cordes 15m 15m ロープを展開 + Wysuń linę o długości 15 m. Deploy 18m ropes Déployer les cordes 18m 18m ロープを展開 + Wysuń linę o długości 18 m. Deploy 27m ropes Déployer les cordes 27m 27m ロープを展開 + Wysuń linę o długości 27 m. Deploy 36m ropes Déployer les cordes 36m 36m ロープを展開 + Wysuń linę o długości 36 m. [ACE] Ropes Supply crate [ACE] Caisse de Cordes [ACE] ロープ収納箱 + Skrzynia z linami ACE Used to do deploy ropes from a compatibile helicopter Utilisé pour déployer des cordes depuis un hélicoptère compatible 対応するヘリコプターからロープを展開する為に使用されます + Używane do opuszczania lin z kompatybilnych smigłowców Rope 12.2 meters Corde 12.2 mètres ロープ (12.2 メートル) + Lina, długość 12,2 m. Rope 15.2 meters Corde 15.2 mètres ロープ (15.2 メートル) + Lina, długość 15,2 m. Rope 18.3 meters Corde 18.3 mètres ロープ (18.3 メートル) + Lina, długość 18,3 m. Rope 27.4 meters Corde 27.4 mètres ロープ (27.4 メートル) + Lina, długość 27,4 m. Rope 36.6 meters Corde 36.6 mètres ロープ (36.6 メートル) + Lina, długość 36,6 m. Require rope item to deploy Exiger une corde pour déployer 展開にはロープ アイテムを必須に + Wymaga przedmiotu typu lina diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index a2615f0410..4c1e4d1c3b 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -101,6 +101,7 @@ Creator Ersteller 設置者 + Twórca diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6898c48a79..5979939451 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3180,10 +3180,12 @@ Show medical interaction for self 自分に治療インタラクションを表示 + Pokaż menu interakcji medycznej dla postaci Show the self interaction medical actions セルフ インタラクションに治療動作を表示します。 + Pokaż elementy menu interakcji medycznej dla postaci Selections (3d) @@ -5700,14 +5702,17 @@ Convert vanilla items 標準アイテムを変換 + Skonwertuj przedmioty z Army3 (vanilia) na przedmioty medyczne ACE3 Enables or disables whether vanilla medical items are converted to ACE medical items or just removed 有効化すると標準の治療アイテムを ACE 治療アイテムへ変換し、無効化すると削除します。 + Decyduje czy oryginalne przedmioty medyczne z Army 3 mają być skonwertowane na przedmioty medyczne ACE3 czy usunięte Just remove vanilla medical 標準の治療アイテムを削除 + Usuń przedmioty z Army 3 (vanilia) diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 33b6dbb8c1..0df5016f7d 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1522,10 +1522,12 @@ Paradrop Cargo カーゴを空中投下 + Zrzut ładunku (cargo) No cargo loaded カーゴは未積載 + Niczego nie załadowano do cargo From 57db905f7c40b9d123148766285deaff2c68f5a7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Mar 2019 09:17:34 -0500 Subject: [PATCH 15/19] Zeus Actions - Fix config code breaking during build (#6864) * Zeus Actions - Fix config code breaking during build * Update addons/rearm/XEH_preInit.sqf Co-Authored-By: PabstMirror * formating, add note --- addons/interaction/ACE_ZeusActions.hpp | 2 +- addons/interaction/XEH_preInit.sqf | 7 +++++++ addons/rearm/ACE_ZeusActions.hpp | 8 +------- addons/rearm/XEH_preInit.sqf | 9 +++++++++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/addons/interaction/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp index bdadfa5e63..9fad6c819a 100644 --- a/addons/interaction/ACE_ZeusActions.hpp +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -54,7 +54,7 @@ class ACE_ZeusActions { displayName = "$STR_repair"; icon = "\A3\ui_f\data\igui\cfg\actions\repair_ca.paa"; condition = QUOTE(ZEUS_ACTION_CONDITION && {-1 < (curatorSelected select 0) findIf {_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}}}); - statement = QUOTE({if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then {_x setDamage 0}} forEach (curatorSelected select 0)); + statement = QUOTE(call FUNC(repair_Statement)); }; }; diff --git a/addons/interaction/XEH_preInit.sqf b/addons/interaction/XEH_preInit.sqf index b47cf6628d..dbc37e2bb6 100644 --- a/addons/interaction/XEH_preInit.sqf +++ b/addons/interaction/XEH_preInit.sqf @@ -6,4 +6,11 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; +DFUNC(repair_Statement) = { // moved from config because of build problems + TRACE_1("repair_Statement",_this); + { + if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then { _x setDamage 0; }; + } forEach (curatorSelected select 0) +}; + ADDON = true; diff --git a/addons/rearm/ACE_ZeusActions.hpp b/addons/rearm/ACE_ZeusActions.hpp index 89fd4a6537..2d05e34a4c 100644 --- a/addons/rearm/ACE_ZeusActions.hpp +++ b/addons/rearm/ACE_ZeusActions.hpp @@ -4,13 +4,7 @@ class ACE_ZeusActions { displayName = CSTRING(Rearm); icon = QPATHTOF(ui\icon_rearm_interact.paa); condition = QUOTE(ZEUS_ACTION_CONDITION && {-1 < (curatorSelected select 0) findIf {_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}}}); - statement = QUOTE( \ - { \ - if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then { \ - [ARR_2(objNull,_x)] call ace_rearm_fnc_rearmEntireVehicleSuccess; \ - }; \ - } forEach (curatorSelected select 0); \ - ); + statement = QUOTE(call FUNC(rearm_statement)); }; }; }; diff --git a/addons/rearm/XEH_preInit.sqf b/addons/rearm/XEH_preInit.sqf index 9361d05015..10156a7d1c 100644 --- a/addons/rearm/XEH_preInit.sqf +++ b/addons/rearm/XEH_preInit.sqf @@ -8,4 +8,13 @@ PREP_RECOMPILE_END; #include "initSettings.sqf" +DFUNC(rearm_statement) = { // moved from config because of build problems + TRACE_1("rearm_statement",_this); + { + if (_x isKindOf 'AllVehicles' && {!(_x isKindOf 'Man')}) then { + [objNull, _x] call FUNC(rearmEntireVehicleSuccess); + }; + } forEach (curatorSelected select 0); +}; + ADDON = true; From fb4f05e276629d068e1ee648b0aa02330d0f21f8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Mar 2019 09:22:08 -0500 Subject: [PATCH 16/19] Prep 3.12.6 Build 43 --- VERSION | 2 +- addons/main/script_version.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index fa3c808a00..d87a10b470 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.12.6.42 +3.12.6.43 diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index fa752aa740..fe84527032 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 #define MINOR 12 #define PATCHLVL 6 -#define BUILD 42 +#define BUILD 43 From 7d9a4f47440bf42a6ec54801b96d43b8883fe77e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Mar 2019 09:31:19 -0500 Subject: [PATCH 17/19] Update wiki config.yml version numbers --- docs/_config.yml | 8 ++++---- docs/_config_dev.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 8db58136da..224559582d 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -9,16 +9,16 @@ ace: version: major: 3 minor: 12 - patch: 5 - build: 40 + patch: 6 + build: 43 acex: githubUrl: https://github.com/acemod/ACEX version: major: 3 minor: 4 - patch: 1 - build: 11 + patch: 2 + build: 13 markdown: kramdown diff --git a/docs/_config_dev.yml b/docs/_config_dev.yml index 28ce7d695a..a1d68d7786 100644 --- a/docs/_config_dev.yml +++ b/docs/_config_dev.yml @@ -9,16 +9,16 @@ ace: version: major: 3 minor: 12 - patch: 4 - build: 39 + patch: 6 + build: 43 acex: githubUrl: https://github.com/acemod/ACEX version: major: 3 minor: 4 - patch: 0 - build: 10 + patch: 2 + build: 13 markdown: kramdown From a06086f33cd36a92da938b118e1b0a3c809348e0 Mon Sep 17 00:00:00 2001 From: mharis001 <34453221+mharis001@users.noreply.github.com> Date: Thu, 14 Mar 2019 14:32:09 -0400 Subject: [PATCH 18/19] Wiki - Add field rations documentation (#6814) * Add field rations docs * Add newlines --- .../frameworkx/field-rations-framework.md | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 docs/wiki/frameworkx/field-rations-framework.md diff --git a/docs/wiki/frameworkx/field-rations-framework.md b/docs/wiki/frameworkx/field-rations-framework.md new file mode 100644 index 0000000000..c5080e230d --- /dev/null +++ b/docs/wiki/frameworkx/field-rations-framework.md @@ -0,0 +1,104 @@ +--- +layout: wiki +title: Field Rations Framework +description: Explains how to set-up ACEX Field Rations. +group: framework +parent: wiki +mod: acex +version: + major: 3 + minor: 4 + patch: 0 +--- + +## 1. Config Values + +### 1.1 Consumable Items + +Config Name | Type | Description +----------- | ---- | ----------- +`acex_field_rations_thirstQuenched` | Number | Amount of thirst quenched when item is consumed* +`acex_field_rations_hungerSatiated` | Number | Amount of hunger satiated when item is consumed* +`acex_field_rations_consumeTime` | Number | Time required to consume the item (in seconds) +`acex_field_rations_consumeText` | String | Progress bar text (OPTIONAL) +`acex_field_rations_consumeAnims` | Array | Animations to play when consuming item** (OPTIONAL) +`acex_field_rations_consumeSounds` | Array | Sounds to play when consuming item** (OPTIONAL) +`acex_field_rations_replacementItem` | String | Class name of replacement item to add on consumption (OPTIONAL) +`acex_field_rations_refillItem` | String | Makes an item refillable, class name of item added when refilled (OPTIONAL) +`acex_field_rations_refillAmount` | Number | Amount of water required to refill item (OPTIONAL) +`acex_field_rations_refillTime` | Number | Time required to refill item (in seconds) (OPTIONAL) + + +_* Value range is 0 to 100 and can be modified by the corresponding coefficient setting._ + +_** Array is in format: STAND, CROUCH, PRONE. If player is in vehicle, the first element is used._ + +### 1.2 Water Sources + +Config Name | Type | Description +----------- | ---- | ----------- +`acex_field_rations_waterSupply` | Number | Amount of water inside the object (-1 - disabled, -10 - infinite) (OPTIONAL) +`acex_field_rations_offset` | Array | Refill action offset relative to model (OPTIONAL) + +## 2. Events + +Event Name | Passed Parameter(s) | Locality | Description +---------- | ------------------- | -------- | ----------- +`acex_rationConsumed` | [_player, _consumeItem, _replacementItem, _thirstQuenched, _hungerSatiated] | Local | Item consumed +`acex_rationRefilled` | [_source, _player, _item, _refillItem, _refillAmount] | Local | Item refilled + +## 3. Scripting + +### 3.1 Getting water supply + +`acex_field_rations_fnc_getRemainingWater` + +```cpp +* Returns the remaining water in a source. +* +* Arguments: +* 0: Water source +* +* Return Value: +* Remaining water +* +* Example: +* [_source] call acex_field_rations_fnc_getRemainingWater +``` + +### 3.2 Setting water supply + +`acex_field_rations_fnc_setRemainingWater` + +```cpp +* Sets the remaining water supply for given water source. +* +* Arguments: +* 0: Water source +* 1: Amount (-10 - Infinite, -1 - Disabled) +* +* Return Value: +* None +* +* Example: +* [_source, 1000] call acex_field_rations_fnc_setRemainingWater +``` + +### 3.3 Adding a status modifier + +`acex_field_rations_fnc_addStatusModifier` + +```cpp +* Adds a status modifier. Should be called on all machines. +* Code must return a NUMBER which will be applied additively with other status changes. +* +* Arguments: +* 0: Status to modify (0 - Thirst, 1 - Hunger, 2 - Both) +* 1: Code (is passed the unit ) +* +* Return Value: +* None +* +* Example: +* [0, {random 1}] call acex_field_rations_fnc_addStatusModifier +``` From 9d5b936d7c3cb49c300f898845a8a87d45cb17ef Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 14 Mar 2019 13:32:39 -0500 Subject: [PATCH 19/19] Wiki - Add documentation for ace_interact_menu_newControllableObject (#6797) --- docs/wiki/framework/events-framework.md | 1 + .../framework/interactionMenu-framework.md | 29 +++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/wiki/framework/events-framework.md b/docs/wiki/framework/events-framework.md index 37214ba107..7a1481a299 100644 --- a/docs/wiki/framework/events-framework.md +++ b/docs/wiki/framework/events-framework.md @@ -46,6 +46,7 @@ MenuType: 0 = Interaction, 1 = Self Interaction |----------|---------|---------|---------|---------|---------| |`ace_interactMenuOpened` | [_menuType] | Local | Listen | Interaction Menu Opened |`ace_interactMenuClosed` | [_menuType] | Local | Listen | Interaction Menu Closed +|`ace_interact_menu_newControllableObject` | [_typeOf] | Local | Listen | New controlable object, only fires once per type (add self interactions) ### 2.4 Cargo (`ace_cargo`) diff --git a/docs/wiki/framework/interactionMenu-framework.md b/docs/wiki/framework/interactionMenu-framework.md index 44f4623ece..069baf351c 100644 --- a/docs/wiki/framework/interactionMenu-framework.md +++ b/docs/wiki/framework/interactionMenu-framework.md @@ -70,7 +70,7 @@ class CAManBase: Man { Two steps, creating an action (array) and then adding it to either a class or object. Important: `ace_common_fnc_canInteractWith` is not automatically checked and needs to be explicitly called. -### 2.1 fnc_createAction +### 3.1 fnc_createAction `ace_interact_menu_fnc_createAction` @@ -91,7 +91,7 @@ Important: `ace_common_fnc_canInteractWith` is not automatically checked and nee */ ``` -### 2.2 fnc_addActionToClass +### 3.2 fnc_addActionToClass `ace_interact_menu_fnc_addActionToClass` @@ -107,7 +107,7 @@ Important: `ace_common_fnc_canInteractWith` is not automatically checked and nee ``` By default this function will not use inheritance, so actions will only be added to the specific class. -### 2.3 fnc_addActionToObject +### 3.3 fnc_addActionToObject `ace_interact_menu_fnc_addActionToObject` @@ -121,7 +121,7 @@ By default this function will not use inheritance, so actions will only be added */ ``` -### 2.4 fnc_addActionToZeus +### 3.4 fnc_addActionToZeus `ace_interact_menu_fnc_addActionToZeus` @@ -133,7 +133,7 @@ By default this function will not use inheritance, so actions will only be added */ ``` -### 2.5 Examples +### 3.5 Examples External: @@ -177,7 +177,7 @@ _action = ["myMissionEvent1","Mission Event: Play Base Alarm","",_statement,{tru [["ACE_ZeusActions"], _action] call ace_interact_menu_fnc_addActionToZeus; ``` -### 2.6 Advanced Example +### 3.6 Advanced Example This adds an interaction to a unit that allows passing items that the player is carrying. @@ -221,3 +221,20 @@ _modifierFunc = { _action = ["GiveItems", "?","",_statement,_condition,_insertChildren,[123],"",4,[false, false, false, true, false], _modifierFunc] call ace_interact_menu_fnc_createAction; [q3, 0, ["ACE_MainActions"], _action] call ace_interact_menu_fnc_addActionToObject; ``` + +### 3.7 Using `ace_interact_menu_newControllableObject` event + +CBA event `ace_interact_menu_newControllableObject` fires only once the first time the player controls a new object (new man, vehicle or controlled UAV) +This is the ideal way to add self interaction actions, as adding them via `addActionToClass` will force self interaction actions to be compiled for classes that may never be used. + +```cpp +// Example: Add radio self-action to all civilian cars +["ace_interact_menu_newControllableObject", { + params ["_type"]; // string of the object's classname + if (!(_type isKindOf "Car")) exitWith {}; + if ((getNumber (configFile >> "CfgVehicles" >> _type >> "side")) != 3) exitWith {}; + + private _action = ["playRadio","Play Radio","",{playMusic "NeverGonnaGiveYouUp"},{true}] call ace_interact_menu_fnc_createAction; + [_type, 1, ["ACE_SelfActions"], _action, true] call ace_interact_menu_fnc_addActionToClass; +}] call CBA_fnc_addEventHandler; +```