Arma 3 Scripting

Command in Turrets

weaponsTurret

Also available as Markdown and JSON, or read the original wiki page.

Description

Returns all weapons of a given turret. Use turret path [-1] for driver's turret.

Syntax

vehicle weaponsTurret turretPath

Parameters:

Returns: Array of Strings

Examples

Example 1

_weapons = vehicle player weaponsTurret [0,0];

Example 2

_weapons = _tank weaponsTurret [0];

Example 3

_driverWeapon = _ka50pilot weaponsTurret [-1];

Example 4

_weaponsForAnyTurrentPosition = (vehicle player) weaponsTurret ((assignedVehicleRole player) select 1);

See also

addMagazineTurret · magazinesTurret · removeMagazinesTurret · removeMagazineTurret · weapons · assignedVehicleRole · addWeaponTurret · removeWeaponTurret · turretLocal

Community notes

.kju

Use assignedVehicleRole in combination to easily determine the weapons for any vehicle position. You need to check for -1 if the unit is in the driver/pilot position. See example 3 and 4.

DenV

Returns information (including the turrets paths) about all weapons on turrets

funcGetTurretsWeapons = {
    private ["_result", "_getAnyMagazines", "_findRecurse", "_class"];
    _result = [];
    _getAnyMagazines = {
        private ["_weapon", "_mags"];
        _weapon = configFile >> "CfgWeapons" >> _this;
        _mags = [];
        {
            _mags = _mags + getArray (
                (if (_x == "this") then { _weapon } else { _weapon >> _x }) >> "magazines"
            )
        } forEach getArray (_weapon >> "muzzles");
        _mags
    };
    _findRecurse = {
        private ["_root", "_class", "_path", "_currentPath"];
        _root = (_this select 0);
        _path = +(_this select 1);
        for "_i" from 0 to count _root -1 do {
            _class = _root select _i;
            if (isClass _class) then {
                _currentPath = _path + [_i];
                {
                    _result set [count _result, [_x, _x call _getAnyMagazines, _currentPath, str _class]];
                } forEach getArray (_class >> "weapons");
                _class = _class >> "turrets";
                if (isClass _class) then {
                    [_class, _currentPath] call _findRecurse;
                };
            };
        };
    };
    _class = (
        configFile >> "CfgVehicles" >> (
            switch (typeName _this) do {
                case "STRING" : {_this};
                case "OBJECT" : {typeOf _this};
                default {nil}
            }
        ) >> "turrets"
    );
    [_class, []] call _findRecurse;
    _result;
};

This call:

"M1A2_US_TUSK_MG_EP1" call funcGetTurretsWeapons;

will return all turrets weapons, their magazines and their paths:

[
    ["M256", ["20Rnd_120mmSABOT_M1A2", "20Rnd_120mmHE_M1A2"], [0], "bin\config.bin/CfgVehicles/M1A2_US_TUSK_MG_EP1/Turrets/MainTurret"],
    ["M240_veh", ["100Rnd_762x51_M240", "1200Rnd_762x51_M240"], [0], "bin\config.bin/CfgVehicles/M1A2_US_TUSK_MG_EP1/Turrets/MainTurret"],
    ["M2BC", ["100Rnd_127x99_M2"], [0, 0], "bin\config.bin/CfgVehicles/M1A2_US_TUSK_MG_EP1/Turrets/MainTurret/Turrets/CommanderOptics"],
    ["SmokeLauncher", ["SmokeLauncherMag"], [0, 0], "bin\config.bin/CfgVehicles/M1A2_US_TUSK_MG_EP1/Turrets/MainTurret/Turrets/CommanderOptics"],
    ["M240_veh_2", ["100Rnd_762x51_M240", "1200Rnd_762x51_M240"], [0, 1], "bin\config.bin/CfgVehicles/M1A2_US_TUSK_MG_EP1/Turrets/MainTurret/Turrets/LoaderTurret"]
]