From 74229224d6e7778e11c600402717caf0176979f6 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 21 Apr 2019 18:58:20 +0200 Subject: [PATCH 01/11] switch NLAW to CBA disposable system --- addons/disposable/CfgEventHandlers.hpp | 33 --------- addons/disposable/CfgMagazines.hpp | 14 +--- addons/disposable/CfgWeapons.hpp | 53 +++++++++++--- addons/disposable/XEH_PREP.hpp | 4 -- addons/disposable/XEH_postInit.sqf | 15 ---- addons/disposable/XEH_preInit.sqf | 9 --- addons/disposable/XEH_preStart.sqf | 3 - addons/disposable/config.cpp | 7 +- .../functions/fnc_replaceATWeapon.sqf | 69 ------------------- .../functions/fnc_takeLoadedATWeapon.sqf | 59 ---------------- .../functions/fnc_updateInventoryDisplay.sqf | 47 ------------- .../disposable/functions/script_component.hpp | 1 - 12 files changed, 51 insertions(+), 263 deletions(-) delete mode 100644 addons/disposable/CfgEventHandlers.hpp delete mode 100644 addons/disposable/XEH_PREP.hpp delete mode 100644 addons/disposable/XEH_postInit.sqf delete mode 100644 addons/disposable/XEH_preInit.sqf delete mode 100644 addons/disposable/XEH_preStart.sqf delete mode 100644 addons/disposable/functions/fnc_replaceATWeapon.sqf delete mode 100644 addons/disposable/functions/fnc_takeLoadedATWeapon.sqf delete mode 100644 addons/disposable/functions/fnc_updateInventoryDisplay.sqf delete mode 100644 addons/disposable/functions/script_component.hpp diff --git a/addons/disposable/CfgEventHandlers.hpp b/addons/disposable/CfgEventHandlers.hpp deleted file mode 100644 index a7c50f3247..0000000000 --- a/addons/disposable/CfgEventHandlers.hpp +++ /dev/null @@ -1,33 +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_DisplayLoad_EventHandlers { - class RscDisplayInventory { - ADDON = QUOTE([ARR_2(ACE_player, _this select 0)] call FUNC(updateInventoryDisplay)); - }; -}; - -// handle preloaded missile -class Extended_InitPost_EventHandlers { - class CAManBase { - class ADDON { - init = QUOTE([_this select 0] call FUNC(takeLoadedATWeapon)); - }; - }; -}; diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp index 6204b330e4..30d1810e61 100644 --- a/addons/disposable/CfgMagazines.hpp +++ b/addons/disposable/CfgMagazines.hpp @@ -1,15 +1,7 @@ class CfgMagazines { - class NLAW_F; - class ACE_PreloadedMissileDummy: NLAW_F { // The dummy magazine - author = ECSTRING(common,ACETeam); + class CA_LauncherMagazine; + class NLAW_F: CA_LauncherMagazine { scope = 1; - scopeArsenal = 1; - displayName = CSTRING(PreloadedMissileDummy); - picture = "\a3\ui_f\data\IGUI\Cfg\Targeting\Empty_ca.paa"; - weaponPoolAvailable = 0; - mass = 0; - }; - class ACE_FiredMissileDummy: ACE_PreloadedMissileDummy { - count = 0; + allowedSlots[] = {}; }; }; diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index 731910b704..46f3035f43 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -1,19 +1,52 @@ class CfgWeapons { - class Launcher_Base_F; - class launch_NLAW_F: Launcher_Base_F { - ACE_UsedTube = "ACE_launch_NLAW_Used_F"; // The class name of the used tube. - magazines[] = {"ACE_PreloadedMissileDummy"}; // The dummy magazine + class Launcher; + class Launcher_Base_F: Launcher { + class WeaponSlotsInfo; }; - class ACE_launch_NLAW_Used_F: launch_NLAW_F { // the used tube should be a sub class of the disposable launcher - EGVAR(nlaw,enabled) = 0; // disable guidance for the disposabled tube + + class launch_NLAW_F: Launcher_Base_F { + author = "$STR_BWA3_Author"; scope = 1; - ACE_isUsedLauncher = 1; + scopeArsenal = 1; + baseWeapon = "BWA3_PzF3"; + + magazineReloadTime = 0.1; + + class EventHandlers { + fired = "_this call CBA_fnc_firedDisposable"; // this weapon eventhandler is required! + }; + + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = LAUNCHER_MASS; + }; + }; + + class ACE_launch_NLAW_loaded_F: launch_NLAW_F { author = ECSTRING(common,ACETeam); + scope = 2; + scopeArsenal = 2; + baseWeapon = "ACE_launch_NLAW_loaded_F"; + + magazines[] = {"CBA_FakeLauncherMagazine"}; + + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = 180; // launcher 100, magazine 80 + }; + }; + + class ACE_launch_NLAW_used_F: launch_NLAW_F { + author = ECSTRING(common,ACETeam); + scope = 1; + scopeArsenal = 1; + baseWeapon = "ACE_launch_NLAW_used_F"; + displayName = CSTRING(UsedTube); descriptionShort = CSTRING(UsedTubeDescription); - magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again. - //picture = ""; @todo - //model = ""; @todo + magazines[] = {"CBA_FakeLauncherMagazine"}; weaponPoolAvailable = 0; + + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = LAUNCHER_MASS; + }; }; }; diff --git a/addons/disposable/XEH_PREP.hpp b/addons/disposable/XEH_PREP.hpp deleted file mode 100644 index 8319e582aa..0000000000 --- a/addons/disposable/XEH_PREP.hpp +++ /dev/null @@ -1,4 +0,0 @@ - -PREP(replaceATWeapon); -PREP(takeLoadedATWeapon); -PREP(updateInventoryDisplay); diff --git a/addons/disposable/XEH_postInit.sqf b/addons/disposable/XEH_postInit.sqf deleted file mode 100644 index 4b395c6a64..0000000000 --- a/addons/disposable/XEH_postInit.sqf +++ /dev/null @@ -1,15 +0,0 @@ -// by commy2 -#include "script_component.hpp" - -if (!hasInterface) exitWith {}; - -["loadout", { - params ["_unit"]; - [_unit] call FUNC(takeLoadedATWeapon); - [_unit] call FUNC(updateInventoryDisplay); -}] call CBA_fnc_addPlayerEventHandler; - -// Register fire event handler -// Only for the local player and for AI. Non-local players will handle it themselves -["ace_firedPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; -["ace_firedNonPlayer", DFUNC(replaceATWeapon)] call CBA_fnc_addEventHandler; diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf deleted file mode 100644 index b47cf6628d..0000000000 --- a/addons/disposable/XEH_preInit.sqf +++ /dev/null @@ -1,9 +0,0 @@ -#include "script_component.hpp" - -ADDON = false; - -PREP_RECOMPILE_START; -#include "XEH_PREP.hpp" -PREP_RECOMPILE_END; - -ADDON = true; diff --git a/addons/disposable/XEH_preStart.sqf b/addons/disposable/XEH_preStart.sqf deleted file mode 100644 index 022888575e..0000000000 --- a/addons/disposable/XEH_preStart.sqf +++ /dev/null @@ -1,3 +0,0 @@ -#include "script_component.hpp" - -#include "XEH_PREP.hpp" diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index 19b02871bc..f63fb463f6 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -4,7 +4,7 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; units[] = {}; - weapons[] = {}; + weapons[] = {"ACE_launch_NLAW_loaded_F","ACE_launch_NLAW_used_F"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); @@ -14,7 +14,10 @@ class CfgPatches { }; }; -#include "CfgEventHandlers.hpp" +class CBA_DisposableLaunchers { + launch_NLAW_F[] = {"ACE_launch_NLAW_loaded_F","ACE_launch_NLAW_used_F"}; +}; + #include "CfgWeapons.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" diff --git a/addons/disposable/functions/fnc_replaceATWeapon.sqf b/addons/disposable/functions/fnc_replaceATWeapon.sqf deleted file mode 100644 index dcb5d93c1d..0000000000 --- a/addons/disposable/functions/fnc_replaceATWeapon.sqf +++ /dev/null @@ -1,69 +0,0 @@ -#include "script_component.hpp" -/* - * Author: bux, commy2 - * Replace the disposable launcher with the used dummy. Called from the unified fired EH. - * - * Arguments: - * None. Parameters inherited from EFUNC(common,firedEH) - * - * Return Value: - * None - * - * Example: - * [fromBisFiredEH] call ace_disposable_fnc_replaceATWeapon; - * - * Public: No - */ - -//IGNORE_PRIVATE_WARNING ["_unit", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile", "_vehicle", "_gunner", "_turret"]; -TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret); - -if (!local _unit || {_weapon != secondaryWeapon _unit} || {_weapon != _muzzle}) exitWith {}; - -private _replacementTube = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_UsedTube"); -if (_replacementTube == "") exitWith {}; //If no replacement defined just exit - -// Save magazine of spotting muzzle (should be re-added to replacement weapon) -(((getUnitLoadout _unit) select 1) select 5) params [["_spottingMag", ""], ["_spottingRnds", 0]]; -if (_spottingMag != "") then { _unit addMagazine [_spottingMag, _spottingRnds]; }; -//Save array of items attached to launcher -private _items = secondaryWeaponItems _unit; -//Replace the orginal weapon with the 'usedTube' weapon -_unit addWeapon _replacementTube; -//Makes sure the used tube is still equiped -_unit selectWeapon _replacementTube; -//Re-add all attachments to the used tube -{ - if (_x != "") then {_unit addSecondaryWeaponItem _x}; -} count _items; - - -// AI - Remove the ai's missle launcher tube after the missle has exploded -if !([_unit] call EFUNC(common,isPlayer)) then { - [{ - params ["_args","_idPFH"]; - _args params ["_unit", "_tube", "_projectile"]; - - //don't do anything until projectile is null (exploded/max range) - if (isNull _projectile) then { - //Remove PFEH: - [_idPFH] call CBA_fnc_removePerFrameHandler; - - //If (tube is dropped) OR (is dead) OR (is player) just exit - if (secondaryWeapon _unit != _tube || {!alive _unit} || {[_unit] call EFUNC(common,isPlayer)}) exitWith {}; - - //private _items = secondaryWeaponItems _unit; - private _container = createVehicle ["GroundWeaponHolder", position _unit, [], 0, "CAN_COLLIDE"]; - _container setPosAsl (getPosAsl _unit); - _container addWeaponCargoGlobal [_tube, 1]; - - //This will duplicate attachements, because we will be adding a weapon that may already have attachments on it - //We either need a way to add a clean weapon, or a way to add a fully configured weapon to a container: - // { - // if (_x != "") then {_container addItemCargoGlobal [_x, 1];}; - // } forEach _items; - - _unit removeWeaponGlobal _tube; - }; - }, 1, [_unit, _replacementTube, _projectile]] call CBA_fnc_addPerFrameHandler; -}; diff --git a/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf b/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf deleted file mode 100644 index 3f12d610d3..0000000000 --- a/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf +++ /dev/null @@ -1,59 +0,0 @@ -#include "script_component.hpp" -/* - * Author: commy2 - * Handle the take event. Add a dummy magazine if a disposable rocket launcher is taken. - * - * Arguments: - * 0: unit - Object the event handler is assigned to - * - * Return Value: - * None - * - * Example: - * [fromTakeEH] call ace_disposable_fnc_takeLoadedATWeapon; - * - * Public: No - */ - -params ["_unit"]; -TRACE_1("params",_unit); - -if (!local _unit) exitWith {}; - -private _launcher = secondaryWeapon _unit; -private _config = configFile >> "CfgWeapons" >> _launcher; - -if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber (_config >> "ACE_isUsedLauncher") != 1} && {count secondaryWeaponMagazine _unit == 0}) then { - private _magazine = getArray (_config >> "magazines") select 0; - private _isLauncherSelected = currentWeapon _unit == _launcher; - - _unit removeMagazines _magazine; - - if (backpack _unit == "") then { - _unit addBackpack "ACE_FakeBackpack"; - _unit removeWeapon _launcher; - _unit addMagazine _magazine; - private _didAdd = _magazine in magazines _unit; - _unit addWeapon _launcher; - - if (!_didAdd) then { - TRACE_1("Failed To Add Disposable Magazine Normally, doing backup method (no backpack)",_unit); - _unit addSecondaryWeaponItem _magazine; - }; - removeBackpack _unit; - } else { - _unit removeWeapon _launcher; - _unit addMagazine _magazine; - private _didAdd = _magazine in magazines _unit; - _unit addWeapon _launcher; - - if (!_didAdd) then { - TRACE_2("Failed To Add Disposable Magazine Normally, doing backup method",_unit,(backpack _unit)); - _unit addSecondaryWeaponItem _magazine; - }; - }; - - if (_isLauncherSelected) then { - _unit selectWeapon _launcher; - }; -}; diff --git a/addons/disposable/functions/fnc_updateInventoryDisplay.sqf b/addons/disposable/functions/fnc_updateInventoryDisplay.sqf deleted file mode 100644 index 7ab2d18d75..0000000000 --- a/addons/disposable/functions/fnc_updateInventoryDisplay.sqf +++ /dev/null @@ -1,47 +0,0 @@ -#include "script_component.hpp" -/* - * Author: bux, commy2 - * Hide or show the secondary weapon magazine inventory slot to prevent unloading of dummy magazines. - * - * Arguments: - * 0: unit - Object the event handler is assigned to - * - * Return Value: - * None - * - * Example: - * [player] call ace_disposable_fnc_updateInventoryDisplay; - * - * Public: No - */ - -disableSerialization; -params ["_player", ["_display",(findDisplay 602),[displayNull]]]; -TRACE_2("params",_player,_display); - -_player removeMagazines "ACE_PreloadedMissileDummy"; -_player removeMagazines "ACE_FiredMissileDummy"; - -if (isNull _display) exitWith {}; - -private _launcher = secondaryWeapon _player; - -if (_launcher == "" || {getText (configFile >> "CfgWeapons" >> _launcher >> "ACE_UsedTube") == ""}) then { - private _control = _display displayCtrl 627; - private _config = configFile >> "RscDisplayInventory" >> "controls" >> "SlotSecondaryMagazine"; - _control ctrlSetPosition [getNumber (_config >> "x"), getNumber (_config >> "y"), getNumber (_config >> "w"), getNumber (_config >> "h")]; - _control ctrlCommit 0; - - _control = _display displayCtrl 1251; - _config = configFile >> "RscDisplayInventory" >> "controls" >> "BackgroundSlotSecondaryMagazine"; - _control ctrlSetPosition [getNumber (_config >> "x"), getNumber (_config >> "y"), getNumber (_config >> "w"), getNumber (_config >> "h")]; - _control ctrlCommit 0; -} else { - private _control = _display displayCtrl 627; - _control ctrlSetPosition [0, 0, 0, 0]; - _control ctrlCommit 0; - - _control = _display displayCtrl 1251; - _control ctrlSetPosition [0, 0, 0, 0]; - _control ctrlCommit 0; -}; diff --git a/addons/disposable/functions/script_component.hpp b/addons/disposable/functions/script_component.hpp deleted file mode 100644 index 035e8e6bcc..0000000000 --- a/addons/disposable/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\disposable\script_component.hpp" \ No newline at end of file From d3f9280e5db34c373c88842eac2c893234afed14 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 21 Apr 2019 19:03:42 +0200 Subject: [PATCH 02/11] fix some copy paste leftovers --- addons/disposable/CfgWeapons.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index 46f3035f43..ff15b216b3 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -5,10 +5,9 @@ class CfgWeapons { }; class launch_NLAW_F: Launcher_Base_F { - author = "$STR_BWA3_Author"; scope = 1; scopeArsenal = 1; - baseWeapon = "BWA3_PzF3"; + baseWeapon = "launch_NLAW_F"; magazineReloadTime = 0.1; From cfe40ccd3f0959c1e89bb818bc3ce80c84a8ec4a Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 25 Apr 2019 18:30:35 +0200 Subject: [PATCH 03/11] fix launchers in cargo --- addons/disposable/CfgVehicles.hpp | 224 +++++++++++++++++------------- addons/disposable/CfgWeapons.hpp | 36 ++--- addons/disposable/config.cpp | 2 +- 3 files changed, 144 insertions(+), 118 deletions(-) diff --git a/addons/disposable/CfgVehicles.hpp b/addons/disposable/CfgVehicles.hpp index 0ad3ff51c0..3c221bda0c 100644 --- a/addons/disposable/CfgVehicles.hpp +++ b/addons/disposable/CfgVehicles.hpp @@ -1,146 +1,172 @@ +/* +private _classes = "true" configClasses (configFile >> "CfgVehicles"); + +_classes = _classes select { + isClass (_x >> "TransportMagazines" >> "_xx_NLAW_F") && {(_x >> "TransportMagazines") in ("true" configClasses _x)} +}; + +private _config = ""; +private _parents = []; + +{ + private _class = configName _x; + private _parent = configName inheritsFrom _x; + + if (_parents pushBackUnique _parent != -1) then { + _config = _config + format ["class %1;%2", _parent, endl]; + }; + + _config = _config + format ["class %1: %2 {%3 MACRO_NONLAW;%3};%3%3", _class, _parent, endl]; + _parents pushBackUnique _class; +} forEach _classes; + +copyToClipboard _config; +*/ + class CfgVehicles { - #define MACRO_NONLAW \ - class TransportMagazines { \ - class _xx_NLAW_F { \ - count = 0; \ - }; \ + class Launcher_Base_F; + class Weapon_launch_NLAW_F: Launcher_Base_F { + class TransportMagazines { + class NLAW_F { + count = 0; + }; }; + }; + + #define MACRO_NONLAW class TransportMagazines {\ + class _xx_NLAW_F {\ + count = 0;\ + };\ + } + + class NATO_Box_Base; + class Box_NATO_Ammo_F: NATO_Box_Base { + MACRO_NONLAW; + }; + + class Box_NATO_WpsLaunch_F: NATO_Box_Base { + MACRO_NONLAW; + }; + + class IND_Box_Base; + class Box_IND_WpsLaunch_F: IND_Box_Base { + MACRO_NONLAW; + }; + + class Box_IND_Ammo_F: IND_Box_Base { + MACRO_NONLAW; + }; class ReammoBox_F; - class NATO_Box_Base: ReammoBox_F {}; - class Box_NATO_Ammo_F: NATO_Box_Base { - MACRO_NONLAW - }; - class Box_NATO_WpsLaunch_F: NATO_Box_Base { - MACRO_NONLAW - }; - - class IND_Box_Base: ReammoBox_F {}; - class Box_IND_WpsLaunch_F: IND_Box_Base { - MACRO_NONLAW - }; - class Box_IND_Ammo_F: IND_Box_Base { - MACRO_NONLAW - }; - class B_supplyCrate_F: ReammoBox_F { - MACRO_NONLAW + MACRO_NONLAW; }; + class I_supplyCrate_F: B_supplyCrate_F { - MACRO_NONLAW + MACRO_NONLAW; }; + class C_supplyCrate_F: ReammoBox_F { - MACRO_NONLAW + MACRO_NONLAW; }; class B_AssaultPack_rgr; class B_AssaultPack_rgr_LAT: B_AssaultPack_rgr { - MACRO_NONLAW + MACRO_NONLAW; }; + class B_AssaultPack_rgr_ReconLAT: B_AssaultPack_rgr { - MACRO_NONLAW + MACRO_NONLAW; }; class B_Carryall_mcamo; class B_AssaultPack_mcamo_Ammo: B_Carryall_mcamo { - MACRO_NONLAW + MACRO_NONLAW; }; + class B_Carryall_oli; class I_Fieldpack_oli_Ammo: B_Carryall_oli { - MACRO_NONLAW + MACRO_NONLAW; }; class B_AssaultPack_dgtl; class I_Fieldpack_oli_LAT: B_AssaultPack_dgtl { - MACRO_NONLAW - }; - - class CargoNet_01_ammo_base_F; - class B_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { - MACRO_NONLAW - }; - class I_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { - MACRO_NONLAW - }; - - class Slingload_01_Base_F; - class B_Slingload_01_Cargo_F: Slingload_01_Base_F { - MACRO_NONLAW + MACRO_NONLAW; }; class Tank_F; class APC_Tracked_01_base_F: Tank_F { - MACRO_NONLAW + MACRO_NONLAW; }; - /*class B_APC_Tracked_01_base_F: APC_Tracked_01_base_F { - MACRO_NONLAW + + class APC_Tracked_03_base_F: Tank_F { + MACRO_NONLAW; }; - class B_APC_Tracked_01_rcws_F: B_APC_Tracked_01_base_F { - MACRO_NONLAW - }; - class B_APC_Tracked_01_CRV_F: B_APC_Tracked_01_base_F { - MACRO_NONLAW - }; - class B_APC_Tracked_01_AA_F: B_APC_Tracked_01_base_F { - MACRO_NONLAW - };*/ class Car_F; class MRAP_01_base_F: Car_F { - MACRO_NONLAW + MACRO_NONLAW; }; - /*class MRAP_01_gmg_base_F: MRAP_01_base_F { - MACRO_NONLAW - }; - class MRAP_01_hmg_base_F: MRAP_01_gmg_base_F { - MACRO_NONLAW - }; - class B_MRAP_01_F: MRAP_01_base_F { - MACRO_NONLAW - }; - class B_MRAP_01_gmg_F: MRAP_01_gmg_base_F { - MACRO_NONLAW - }; - class B_MRAP_01_hmg_F: MRAP_01_hmg_base_F { - MACRO_NONLAW - };*/ class MRAP_03_base_F: Car_F { - MACRO_NONLAW + MACRO_NONLAW; }; - /*class MRAP_03_hmg_base_F: MRAP_03_base_F { - MACRO_NONLAW - }; - class MRAP_03_gmg_base_F: MRAP_03_hmg_base_F { - MACRO_NONLAW - }; - class I_MRAP_03_F: MRAP_03_base_F { - MACRO_NONLAW - }; - class I_MRAP_03_hmg_F: MRAP_03_hmg_base_F { - MACRO_NONLAW - }; - class I_MRAP_03_gmg_F: MRAP_03_gmg_base_F { - MACRO_NONLAW - };*/ - class Wheeled_APC_F: Car_F {}; - class APC_Wheeled_03_base_F: Wheeled_APC_F { - MACRO_NONLAW + class LSV_01_base_F: Car_F { + MACRO_NONLAW; }; + + class Wheeled_APC_F; class APC_Wheeled_01_base_F: Wheeled_APC_F { - MACRO_NONLAW + MACRO_NONLAW; }; - /*class B_APC_Wheeled_01_base_F: APC_Wheeled_01_base_F { - MACRO_NONLAW + + class APC_Wheeled_03_base_F: Wheeled_APC_F { + MACRO_NONLAW; }; - class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { - MACRO_NONLAW + + class CargoNet_01_ammo_base_F; + class B_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { + MACRO_NONLAW; }; - class I_APC_Wheeled_03_base_F: APC_Wheeled_03_base_F { - MACRO_NONLAW + + class I_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { + MACRO_NONLAW; + }; + + class Slingload_01_Base_F; + class B_Slingload_01_Cargo_F: Slingload_01_Base_F { + MACRO_NONLAW; + }; + + class B_T_LSV_01_armed_F; + class B_T_LSV_01_armed_CTRG_F: B_T_LSV_01_armed_F { + MACRO_NONLAW; + }; + + class B_T_LSV_01_unarmed_F; + class B_T_LSV_01_unarmed_CTRG_F: B_T_LSV_01_unarmed_F { + MACRO_NONLAW; + }; + + class LSV_01_light_base_F; + class B_CTRG_LSV_01_light_F: LSV_01_light_base_F { + MACRO_NONLAW; + }; + + class B_Carryall_oli_BTAmmo_F: B_Carryall_oli { + MACRO_NONLAW; + }; + + class B_AssaultPack_rgr_BTLAT_F: B_AssaultPack_rgr { + MACRO_NONLAW; + }; + + class B_AssaultPack_rgr_CTRGLAT_F: B_AssaultPack_rgr { + MACRO_NONLAW; + }; + + class C_T_supplyCrate_F: ReammoBox_F { + MACRO_NONLAW; }; - class I_APC_Wheeled_03_cannon_F: I_APC_Wheeled_03_base_F { - MACRO_NONLAW - };*/ }; diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index ff15b216b3..687ff9e8ca 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -5,31 +5,32 @@ class CfgWeapons { }; class launch_NLAW_F: Launcher_Base_F { - scope = 1; - scopeArsenal = 1; + scope = 2; + scopeArsenal = 2; baseWeapon = "launch_NLAW_F"; + magazines[] = {"CBA_FakeLauncherMagazine"}; magazineReloadTime = 0.1; + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = 180; // launcher 100, magazine 80 + }; + }; + + class ACE_launch_NLAW_ready_F: launch_NLAW_F { + author = ECSTRING(common,ACETeam); + scope = 1; + scopeArsenal = 1; + baseWeapon = "ACE_launch_NLAW_ready_F"; + + magazines[] = {"NLAW_F"}; + class EventHandlers { fired = "_this call CBA_fnc_firedDisposable"; // this weapon eventhandler is required! }; class WeaponSlotsInfo: WeaponSlotsInfo { - mass = LAUNCHER_MASS; - }; - }; - - class ACE_launch_NLAW_loaded_F: launch_NLAW_F { - author = ECSTRING(common,ACETeam); - scope = 2; - scopeArsenal = 2; - baseWeapon = "ACE_launch_NLAW_loaded_F"; - - magazines[] = {"CBA_FakeLauncherMagazine"}; - - class WeaponSlotsInfo: WeaponSlotsInfo { - mass = 180; // launcher 100, magazine 80 + mass = 100; }; }; @@ -41,11 +42,10 @@ class CfgWeapons { displayName = CSTRING(UsedTube); descriptionShort = CSTRING(UsedTubeDescription); - magazines[] = {"CBA_FakeLauncherMagazine"}; weaponPoolAvailable = 0; class WeaponSlotsInfo: WeaponSlotsInfo { - mass = LAUNCHER_MASS; + mass = 100; }; }; }; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index f63fb463f6..f1711339f0 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -15,7 +15,7 @@ class CfgPatches { }; class CBA_DisposableLaunchers { - launch_NLAW_F[] = {"ACE_launch_NLAW_loaded_F","ACE_launch_NLAW_used_F"}; + ACE_launch_NLAW_ready_F[] = {"launch_NLAW_F","ACE_launch_NLAW_used_F"}; }; #include "CfgWeapons.hpp" From 20853d2b2080f141f2b306bdd33a7c22cbd60886 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 26 Apr 2019 09:48:31 +0200 Subject: [PATCH 04/11] let cba replace mags --- addons/disposable/CfgVehicles.hpp | 166 +----------------------------- addons/disposable/CfgWeapons.hpp | 1 + 2 files changed, 2 insertions(+), 165 deletions(-) diff --git a/addons/disposable/CfgVehicles.hpp b/addons/disposable/CfgVehicles.hpp index 3c221bda0c..0b4d739dc6 100644 --- a/addons/disposable/CfgVehicles.hpp +++ b/addons/disposable/CfgVehicles.hpp @@ -1,172 +1,8 @@ -/* -private _classes = "true" configClasses (configFile >> "CfgVehicles"); - -_classes = _classes select { - isClass (_x >> "TransportMagazines" >> "_xx_NLAW_F") && {(_x >> "TransportMagazines") in ("true" configClasses _x)} -}; - -private _config = ""; -private _parents = []; - -{ - private _class = configName _x; - private _parent = configName inheritsFrom _x; - - if (_parents pushBackUnique _parent != -1) then { - _config = _config + format ["class %1;%2", _parent, endl]; - }; - - _config = _config + format ["class %1: %2 {%3 MACRO_NONLAW;%3};%3%3", _class, _parent, endl]; - _parents pushBackUnique _class; -} forEach _classes; - -copyToClipboard _config; -*/ - class CfgVehicles { class Launcher_Base_F; class Weapon_launch_NLAW_F: Launcher_Base_F { class TransportMagazines { - class NLAW_F { - count = 0; - }; + delete NLAW_F; }; }; - - #define MACRO_NONLAW class TransportMagazines {\ - class _xx_NLAW_F {\ - count = 0;\ - };\ - } - - class NATO_Box_Base; - class Box_NATO_Ammo_F: NATO_Box_Base { - MACRO_NONLAW; - }; - - class Box_NATO_WpsLaunch_F: NATO_Box_Base { - MACRO_NONLAW; - }; - - class IND_Box_Base; - class Box_IND_WpsLaunch_F: IND_Box_Base { - MACRO_NONLAW; - }; - - class Box_IND_Ammo_F: IND_Box_Base { - MACRO_NONLAW; - }; - - class ReammoBox_F; - class B_supplyCrate_F: ReammoBox_F { - MACRO_NONLAW; - }; - - class I_supplyCrate_F: B_supplyCrate_F { - MACRO_NONLAW; - }; - - class C_supplyCrate_F: ReammoBox_F { - MACRO_NONLAW; - }; - - class B_AssaultPack_rgr; - class B_AssaultPack_rgr_LAT: B_AssaultPack_rgr { - MACRO_NONLAW; - }; - - class B_AssaultPack_rgr_ReconLAT: B_AssaultPack_rgr { - MACRO_NONLAW; - }; - - class B_Carryall_mcamo; - class B_AssaultPack_mcamo_Ammo: B_Carryall_mcamo { - MACRO_NONLAW; - }; - - class B_Carryall_oli; - class I_Fieldpack_oli_Ammo: B_Carryall_oli { - MACRO_NONLAW; - }; - - class B_AssaultPack_dgtl; - class I_Fieldpack_oli_LAT: B_AssaultPack_dgtl { - MACRO_NONLAW; - }; - - class Tank_F; - class APC_Tracked_01_base_F: Tank_F { - MACRO_NONLAW; - }; - - class APC_Tracked_03_base_F: Tank_F { - MACRO_NONLAW; - }; - - class Car_F; - class MRAP_01_base_F: Car_F { - MACRO_NONLAW; - }; - - class MRAP_03_base_F: Car_F { - MACRO_NONLAW; - }; - - class LSV_01_base_F: Car_F { - MACRO_NONLAW; - }; - - class Wheeled_APC_F; - class APC_Wheeled_01_base_F: Wheeled_APC_F { - MACRO_NONLAW; - }; - - class APC_Wheeled_03_base_F: Wheeled_APC_F { - MACRO_NONLAW; - }; - - class CargoNet_01_ammo_base_F; - class B_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { - MACRO_NONLAW; - }; - - class I_CargoNet_01_ammo_F: CargoNet_01_ammo_base_F { - MACRO_NONLAW; - }; - - class Slingload_01_Base_F; - class B_Slingload_01_Cargo_F: Slingload_01_Base_F { - MACRO_NONLAW; - }; - - class B_T_LSV_01_armed_F; - class B_T_LSV_01_armed_CTRG_F: B_T_LSV_01_armed_F { - MACRO_NONLAW; - }; - - class B_T_LSV_01_unarmed_F; - class B_T_LSV_01_unarmed_CTRG_F: B_T_LSV_01_unarmed_F { - MACRO_NONLAW; - }; - - class LSV_01_light_base_F; - class B_CTRG_LSV_01_light_F: LSV_01_light_base_F { - MACRO_NONLAW; - }; - - class B_Carryall_oli_BTAmmo_F: B_Carryall_oli { - MACRO_NONLAW; - }; - - class B_AssaultPack_rgr_BTLAT_F: B_AssaultPack_rgr { - MACRO_NONLAW; - }; - - class B_AssaultPack_rgr_CTRGLAT_F: B_AssaultPack_rgr { - MACRO_NONLAW; - }; - - class C_T_supplyCrate_F: ReammoBox_F { - MACRO_NONLAW; - }; }; diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index 687ff9e8ca..f790db8905 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -11,6 +11,7 @@ class CfgWeapons { magazines[] = {"CBA_FakeLauncherMagazine"}; magazineReloadTime = 0.1; + reloadMagazineSound[] = {"",1,1}; class WeaponSlotsInfo: WeaponSlotsInfo { mass = 180; // launcher 100, magazine 80 From 6af3628e6ffd647586677628bb7c5388522146fe Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 26 Apr 2019 19:19:34 +0200 Subject: [PATCH 05/11] fix baseWeapon --- addons/disposable/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/disposable/CfgWeapons.hpp b/addons/disposable/CfgWeapons.hpp index f790db8905..2ec20f1d6f 100644 --- a/addons/disposable/CfgWeapons.hpp +++ b/addons/disposable/CfgWeapons.hpp @@ -22,7 +22,7 @@ class CfgWeapons { author = ECSTRING(common,ACETeam); scope = 1; scopeArsenal = 1; - baseWeapon = "ACE_launch_NLAW_ready_F"; + baseWeapon = "launch_NLAW_F"; magazines[] = {"NLAW_F"}; From 534abdede192511b8cab3c01e0f97f8a6393259f Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 26 Apr 2019 23:31:56 +0200 Subject: [PATCH 06/11] nlaw disposable realistic weight --- addons/realisticweights/CfgWeapons.hpp | 12 ++++++++++++ addons/realisticweights/config.cpp | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/addons/realisticweights/CfgWeapons.hpp b/addons/realisticweights/CfgWeapons.hpp index 25b83815b4..47b35410bb 100644 --- a/addons/realisticweights/CfgWeapons.hpp +++ b/addons/realisticweights/CfgWeapons.hpp @@ -218,6 +218,18 @@ class CfgWeapons { }; }; + class ACE_launch_NLAW_ready_F: launch_NLAW_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = 195; // 275 - 80 + }; + }; + + class ACE_launch_NLAW_used_F: launch_NLAW_F { + class WeaponSlotsInfo: WeaponSlotsInfo { + mass = 195; // 275 - 80 + }; + }; + // - RPG-32 --------------------------------------------------------------- class launch_RPG32_F: Launcher_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { diff --git a/addons/realisticweights/config.cpp b/addons/realisticweights/config.cpp index a26144aeca..91c1ea00aa 100644 --- a/addons/realisticweights/config.cpp +++ b/addons/realisticweights/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {"ace_common","ace_disposable"}; author = ECSTRING(common,ACETeam); authors[] = {"BaerMitUmlaut"}; url = ECSTRING(main,URL); From 6250cd65050b3f27e09989b73d6723dc969f1fbe Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 26 Apr 2019 16:41:42 -0500 Subject: [PATCH 07/11] Arsenal - Don't unload disposables --- addons/arsenal/functions/fnc_onSelChangedRight.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/arsenal/functions/fnc_onSelChangedRight.sqf b/addons/arsenal/functions/fnc_onSelChangedRight.sqf index a2d83dceba..d70813d6f8 100644 --- a/addons/arsenal/functions/fnc_onSelChangedRight.sqf +++ b/addons/arsenal/functions/fnc_onSelChangedRight.sqf @@ -42,6 +42,7 @@ private _fnc_selectItem = { case 19: { if (_item == "") then { + if (!isNil {cba_disposable_LoadedLaunchers getVariable secondaryWeapon GVAR(center)}) exitWith { TRACE_1("ignoring unload of disposable",secondaryWeapon GVAR(center)); }; GVAR(center) removeSecondaryWeaponItem ((GVAR(currentItems) select 19) select _itemIndex); private _secondaryMags = secondaryWeaponMagazine GVAR(center); GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + ([_secondaryMags + [""], _secondaryMags] select (count _secondaryMags > 1))]; @@ -70,7 +71,7 @@ private _fnc_selectItem = { [ _item, - 18 + ([IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun] find GVAR(currentLeftPanel)), + 18 + ([IDC_buttonPrimaryWeapon, IDC_buttonSecondaryWeapon, IDC_buttonHandgun] find GVAR(currentLeftPanel)), [IDC_buttonMuzzle, IDC_buttonItemAcc, IDC_buttonOptic, IDC_buttonBipod, IDC_buttonCurrentMag, IDC_buttonCurrentMag2] find GVAR(currentRightPanel) ] call _fnc_selectItem; From 9b57ef21117ea41f8b82d0330c40ac8dc82587f3 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 28 Apr 2019 09:56:42 +0200 Subject: [PATCH 08/11] adjustments for disposable enabled setting --- addons/disposable/CfgMagazines.hpp | 7 ------- addons/disposable/config.cpp | 1 - 2 files changed, 8 deletions(-) delete mode 100644 addons/disposable/CfgMagazines.hpp diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp deleted file mode 100644 index 30d1810e61..0000000000 --- a/addons/disposable/CfgMagazines.hpp +++ /dev/null @@ -1,7 +0,0 @@ -class CfgMagazines { - class CA_LauncherMagazine; - class NLAW_F: CA_LauncherMagazine { - scope = 1; - allowedSlots[] = {}; - }; -}; diff --git a/addons/disposable/config.cpp b/addons/disposable/config.cpp index f1711339f0..2cc4f4202c 100644 --- a/addons/disposable/config.cpp +++ b/addons/disposable/config.cpp @@ -19,5 +19,4 @@ class CBA_DisposableLaunchers { }; #include "CfgWeapons.hpp" -#include "CfgMagazines.hpp" #include "CfgVehicles.hpp" From 2cffe92848a49c37b50da8fae112a44a78a0d688 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 28 Apr 2019 10:04:42 +0200 Subject: [PATCH 09/11] don't disable remove mag if disposable replacement is disabled --- addons/arsenal/functions/fnc_onSelChangedRight.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/arsenal/functions/fnc_onSelChangedRight.sqf b/addons/arsenal/functions/fnc_onSelChangedRight.sqf index d70813d6f8..38e051b4e2 100644 --- a/addons/arsenal/functions/fnc_onSelChangedRight.sqf +++ b/addons/arsenal/functions/fnc_onSelChangedRight.sqf @@ -42,7 +42,7 @@ private _fnc_selectItem = { case 19: { if (_item == "") then { - if (!isNil {cba_disposable_LoadedLaunchers getVariable secondaryWeapon GVAR(center)}) exitWith { TRACE_1("ignoring unload of disposable",secondaryWeapon GVAR(center)); }; + if (cba_disposable_replaceDisposableLauncher && !isNil {cba_disposable_LoadedLaunchers getVariable secondaryWeapon GVAR(center)}) exitWith { TRACE_1("ignoring unload of disposable",secondaryWeapon GVAR(center)); }; GVAR(center) removeSecondaryWeaponItem ((GVAR(currentItems) select 19) select _itemIndex); private _secondaryMags = secondaryWeaponMagazine GVAR(center); GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + ([_secondaryMags + [""], _secondaryMags] select (count _secondaryMags > 1))]; From 37284bd0e82f5f0f9447173f1eb4f54aace5a335 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 17 Oct 2019 13:17:37 -0500 Subject: [PATCH 10/11] Update docs --- addons/disposable/README.md | 2 +- docs/wiki/feature/disposable.md | 2 +- docs/wiki/framework/disposables-framework.md | 33 ++++---------------- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/addons/disposable/README.md b/addons/disposable/README.md index 82281a3c52..b75ecb112d 100644 --- a/addons/disposable/README.md +++ b/addons/disposable/README.md @@ -1,7 +1,7 @@ ace_disposable ============== -Makes the NLAW a disposable one-shot weapon and provides disposable launchers framework for use by other mods. +Makes the NLAW a disposable one-shot weapon using the [CBA Disposable Framework](https://github.com/CBATeam/CBA_A3/wiki/Disposable-Launchers). ## Maintainers diff --git a/docs/wiki/feature/disposable.md b/docs/wiki/feature/disposable.md index acf7f78a40..a6da6e3775 100644 --- a/docs/wiki/feature/disposable.md +++ b/docs/wiki/feature/disposable.md @@ -14,7 +14,7 @@ version: ## 1. Overview -The NLAW is shoulder fired and disposable, firing just once before being needed to be disposed of. This feature makes the NLAW disposable and provides the tools for other addons to do the same. +The NLAW is shoulder fired and disposable, firing just once before being needed to be disposed of. This feature makes the NLAW disposable. ## 2. Dependencies diff --git a/docs/wiki/framework/disposables-framework.md b/docs/wiki/framework/disposables-framework.md index 21ee778824..d300d0bbf8 100644 --- a/docs/wiki/framework/disposables-framework.md +++ b/docs/wiki/framework/disposables-framework.md @@ -1,7 +1,7 @@ --- layout: wiki title: Disposables Framework -description: Explains how to set-up custom disposable launchers with the ACE3 disposables system. +description: Notes on old ace disposable framework and link to CBA's. group: framework order: 5 parent: wiki @@ -12,32 +12,11 @@ version: patch: 0 --- -
-
Note:
-

This is just the necessary to make a launcher disposable, this is not a guide to make your own launcher.

-
- -## 1. Making a launcher disposable - -### 1.1 CfgWeapons +Support for the ace disposable framework will be dropped in 3.13! +Switch to the [CBA Disposable Framework](https://github.com/CBATeam/CBA_A3/wiki/Disposable-Launchers) +Old weapon configs that are no longer supported: ```cpp -class CfgWeapons { - class Launcher_Base_F; - class launch_banana: Launcher_Base_F { - ACE_UsedTube = "launch_banana_Used_F"; // The class name of the used tube - magazines[] = {"ACE_PreloadedMissileDummy"}; // The dummy magazine - }; - class launch_banana_Used_F: launch_banana { // The used tube should be a sub class of the disposable launcher - scope = 1; - ACE_isUsedLauncher = 1; - author = "grandBanana"; - displayName = "Used banana launcher"; - descriptionShort = "A used banana launcher"; - magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again - //picture = ""; // Not supported yet - //model = ""; // Not supported yet - weaponPoolAvailable = 0; - }; -}; + ACE_UsedTube = "launch_banana_Used_F"; + ACE_isUsedLauncher = 1; ``` From e76aeba45fdc3f8303d00f6e2eb8c7230a97e890 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 17 Oct 2019 13:28:05 -0500 Subject: [PATCH 11/11] Apply suggestions from code review Co-Authored-By: jonpas --- docs/wiki/framework/disposables-framework.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/wiki/framework/disposables-framework.md b/docs/wiki/framework/disposables-framework.md index d300d0bbf8..78f609e358 100644 --- a/docs/wiki/framework/disposables-framework.md +++ b/docs/wiki/framework/disposables-framework.md @@ -1,7 +1,7 @@ --- layout: wiki title: Disposables Framework -description: Notes on old ace disposable framework and link to CBA's. +description: Notes on old ACE3 disposable framework and link to CBA's. group: framework order: 5 parent: wiki @@ -12,11 +12,11 @@ version: patch: 0 --- -Support for the ace disposable framework will be dropped in 3.13! +Support for the ACE3 disposable framework will be dropped in 3.13.0! Switch to the [CBA Disposable Framework](https://github.com/CBATeam/CBA_A3/wiki/Disposable-Launchers) Old weapon configs that are no longer supported: ```cpp - ACE_UsedTube = "launch_banana_Used_F"; - ACE_isUsedLauncher = 1; +ACE_UsedTube = "launch_banana_Used_F"; +ACE_isUsedLauncher = 1; ```