Arma 3 Scripting

Command in Unit Inventory

setUnitLoadout

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

Description

Creates a loadout from given inventory structure and applies it to a unit. When String for class name is supplied, the command will search CfgVehicles for the given class in order to extract the loadout from config. If Config is given, it will search given config (including mission config) for the loadout information. In either case, the config should contain the following entries, which is standard for any unit class, for example:

class MyLoadout
{
    uniformClass = "U_B_CombatUniform_mcam";
    backpack = "B_AssaultPack_mcamo";
    linkedItems[] = { "V_PlateCarrier1_rgr", "H_HelmetB", "ItemCompass", "ItemWatch", "ItemRadio", "NVGoggles" };
    weapons[] = { "arifle_MX_ACO_pointer_F", "hgun_P07_F" };
    items[] = { "FirstAidKit", "FirstAidKit", "FirstAidKit" };
    magazines[] = {
        "30Rnd_65x39_caseless_mag", "16Rnd_9x21_Mag", "SmokeShell",
        "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade",
        "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade",
        "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade",
        "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade",
        "HandGrenade", "HandGrenade", "HandGrenade", "HandGrenade"
    };
};

Important

Since Arma 3 v2.20 if the command is executed while the unit is in the process of switching weapon, the command will be aborted. To check if unit is switching weapon use isSwitchingWeapon.

Syntax

Syntax 1

unit setUnitLoadout loadout

Parameters:

Returns: Nothing

Syntax 2

unit setUnitLoadout [loadout, fullMagazines]

Parameters:

Returns: Nothing

Syntax 3

unit setUnitLoadout name

Parameters:

Returns: Nothing

Syntax 4

unit setUnitLoadout config

Parameters:

Returns: Nothing

Examples

Example 1

_unit setUnitLoadout "B_Soldier_F";                                        // by class name
_unit setUnitLoadout (configFile >> "CfgVehicles" >> "B_Soldier_F");    // by config entry
_unit setUnitLoadout (missionConfigFile >> "MyLoadout");                // (also works for mission config)
_unit setUnitLoadout getUnitLoadout _otherUnit;                            // by loadout array

Example 2

player_2 setUnitLoadout (getUnitLoadout player_1);            // Copies loadout from player_1 and applies it to player_2
player_2 setUnitLoadout [getUnitLoadout player_1, true];    // Copies loadout from player_1 and applies it to player_2 while topping up all magazines

Example 3

Strip unit of everything:

_unit setUnitLoadout (configFile >> "EmptyLoadout");

Example 4

Make sure the unit is not switching weapon:

player spawn 
{
    waitUntil {!isSwitchingWeapon _this};
    _this setUnitLoadout (configFile >> "EmptyLoadout");
};

Problems

Important

If this command is used on the player, it makes the inventory window bug (if opened) - vest and backpack tabs disappear. Closing and re-opening the inventory solves the issue.

See also

getUnitLoadout · isSwitchingWeapon

Community notes

Demellion

Empty or used magazines in loadouts will be refilled under specific circumstance, even if the refill argument is false. This seems to happen if amount of used magazines is 2 or more.

player setUnitLoadout [
    ["arifle_MX_ACO_pointer_F", "", "acc_pointer_IR", "optic_Aco", [], [], ""],
    [],
    ["hgun_P07_F", "", "", "", ["16Rnd_9x21_Mag", 16], [], ""],
    ["U_B_CombatUniform_mcam", [["30Rnd_65x39_caseless_mag", 1, 1]]],
    ["V_PlateCarrier1_rgr", []],
    ["B_AssaultPack_mcamo_Ammo", []],
    "H_HelmetB_grass", "", [], ["ItemMap", "", "ItemRadio", "ItemCompass", "ItemWatch", "NVGoggles"]
];

Will result in 30Rnd magazine with one bullet in it.

player setUnitLoadout [
    ["arifle_MX_ACO_pointer_F", "", "acc_pointer_IR", "optic_Aco", [], [], ""],
    [],
    ["hgun_P07_F", "", "", "", ["16Rnd_9x21_Mag", 16], [], ""],
    ["U_B_CombatUniform_mcam", [["30Rnd_65x39_caseless_mag", 2, 1]]],
    ["V_PlateCarrier1_rgr", []],
    ["B_AssaultPack_mcamo_Ammo", []],
    "H_HelmetB_grass", "", [], ["ItemMap", "", "ItemRadio", "ItemCompass", "ItemWatch", "NVGoggles"]
];

Will result in 2 magazines but full, 30 rounds in it. This applies to any magazines count >2. They will never be with specified amount of rounds, even if you force the refill argument to false.

Andrew_S90

Here is a command I wrote up that provides a fix for the ammo bug described by Demellion above. https://pastebin.com/SHX41Jkk Pass a loadout to your compiled command and it will provide one back that will not refill ammo.