Arsenal – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (→‎Blacklisting Items: Add direct link)
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{TOC|side}}
[[File:a3 arsenal.png|center|400px]]
[[File:a3 arsenal.png|center|400px]]




Arsenal is, essentially, a character, equipment and weapon viewer which has been added to [[Arma 3]] in the Bootcamp update. This tool offers an overview of the available content, and enables customized loadouts to be exported to script, which can be used in the editor, other game modes, such as [[Zeus]], and by community scenarios/mods.
Arsenal is, essentially, a character, equipment and weapon viewer which has been added to {{GameCategory|arma3|link= y}} in the Bootcamp update.
This tool offers an overview of the available content, and enables customized loadouts to be exported to script, which can be used in the editor, other game modes, such as [[Arma 3 Zeus|Zeus]], and by community scenarios/mods.
 
You can access it from the main menu by clicking on '''LEARN > VIRTUAL ARSENAL'''.


You can access it from the main menu by locking on '''LEARN > VIRTUAL ARSENAL'''


== Using ==
== Using ==
===Export ===


====Export to SQF====
=== Export ===
Clicking on EXPORT button or pressing Ctrl + C will copy the current loadout to clipboard in [[SQF]] format. You can paste it to soldier's init field or use it in a script.
 
==== Export to SQF ====
Clicking on EXPORT button or pressing {{Controls|Ctrl|C}} will copy the current loadout to clipboard in [[SQF Syntax|SQF]] format. You can paste it to soldier's init field or use it in a script.


You can take the same code and import it (Ctrl + V) back to Arsenal. Use this to share loadouts with other players.
You can take the same code and import it ''via'' {{Controls|Ctrl|V}} back to Arsenal. Use this to share loadouts with other players.


'''Example:'''
'''Example:'''
[[comment]] "Exported from Arsenal by DavidArmstrong85";
<spoiler>
<sqf>
comment "Remove existing items";
comment "Exported from Arsenal by DavidArmstrong85";
[[removeAllWeapons]] [[this]];
 
[[removeAllItems]] this;
comment "Remove existing items";
[[removeAllAssignedItems]] this;
removeAllWeapons this;
[[removeUniform]] this;
removeAllItems this;
[[removeVest]] this;
removeAllAssignedItems this;
[[removeBackpack]] this;
removeUniform this;
[[removeHeadgear]] this;
removeVest this;
[[removeGoggles]] this;
removeBackpack this;
removeHeadgear this;
comment "Add containers";
removeGoggles this;
this [[forceAddUniform]] "U_I_CombatUniform";
[[for]] "_i" [[from]] 1 to 4 do {this [[addItemToUniform]] "30Rnd_556x45_Stanag";};
this [[addItemToUniform]] "16Rnd_9x21_Mag";
this [[addVest]] "V_PlateCarrierIA2_dgtl";
for "_i" from 1 to 4 do {this [[addItemToVest]] "FirstAidKit";};
for "_i" from 1 to 6 do {this addItemToVest "HandGrenade";};
for "_i" from 1 to 3 do {this addItemToVest "16Rnd_9x21_Mag";};
this [[addBackpack]] "B_TacticalPack_oli";
for "_i" from 1 to 2 do {this [[addItemToBackpack]] "SatchelCharge_Remote_Mag";};
for "_i" from 1 to 4 do {this addItemToBackpack "DemoCharge_Remote_Mag";};
this [[addHeadgear]] "H_Cap_headphones";
this [[addGoggles]] "G_Bandanna_oli";
comment "Add weapons";
this [[addWeapon]] "arifle_Mk20C_F";
this [[addPrimaryWeaponItem]] "muzzle_snds_M";
this addPrimaryWeaponItem "acc_flashlight";
this addPrimaryWeaponItem "optic_MRCO";
this addWeapon "hgun_P07_F";
comment "Add items";
this [[linkItem]] "ItemMap";
this linkItem "ItemCompass";
this linkItem "ItemWatch";
this linkItem "ItemRadio";
this linkItem "ItemGPS";
comment "Set identity";
this [[setFace]] "GreekHead_A3_03";
this [[setSpeaker]] "Male03GRE";
[this,"TFAegis"] [[call]] bis_fnc_setUnitInsignia;


====Export to CPP====
comment "Add containers";
Pressing '''CTRL + SHIFT + C''' will export the loadout in '''config format''', which can then be used in [https://community.bistudio.com/wiki/Arma_3_Respawn CfgRespawnInventory].
this forceAddUniform "U_I_CombatUniform";
for "_i" from 1 to 4 do {this addItemToUniform "30Rnd_556x45_Stanag";};
this addItemToUniform "16Rnd_9x21_Mag";
this addVest "V_PlateCarrierIA2_dgtl";
for "_i" from 1 to 4 do {this addItemToVest "FirstAidKit";};
for "_i" from 1 to 6 do {this addItemToVest "HandGrenade";};
for "_i" from 1 to 3 do {this addItemToVest "16Rnd_9x21_Mag";};
this addBackpack "B_TacticalPack_oli";
for "_i" from 1 to 2 do {this addItemToBackpack "SatchelCharge_Remote_Mag";};
for "_i" from 1 to 4 do {this addItemToBackpack "DemoCharge_Remote_Mag";};
this addHeadgear "H_Cap_headphones";
this addGoggles "G_Bandanna_oli";


comment "Add weapons";
this addWeapon "arifle_Mk20C_F";
this addPrimaryWeaponItem "muzzle_snds_M";
this addPrimaryWeaponItem "acc_flashlight";
this addPrimaryWeaponItem "optic_MRCO";
this addWeapon "hgun_P07_F";
comment "Add items";
this linkItem "ItemMap";
this linkItem "ItemCompass";
this linkItem "ItemWatch";
this linkItem "ItemRadio";
this linkItem "ItemGPS";
comment "Set identity";
this setFace "GreekHead_A3_03";
this setSpeaker "Male03GRE";
[this, "TFAegis"] call BIS_fnc_setUnitInsignia;
</sqf>
</spoiler>
==== Export to CPP ====
Pressing {{Controls|Ctrl|Shift|C}} will export the loadout in '''config format''', which can then be used in [[Arma 3: Respawn|CfgRespawnInventory]].
'''Example:'''
'''Example:'''
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
// Exported from Arsenal by Revo
// Exported from Arsenal by R3vo
uniform = "U_B_CombatUniform_mcam_tshirt";
uniform = "U_B_CombatUniform_mcam_tshirt";
backpack = "B_AssaultPack_rgr_Medic";
backpack = "B_AssaultPack_rgr_Medic";
weapons[] = {"arifle_MX_F","hgun_P07_F","Throw","Put"};
weapons[] = { "arifle_MX_F", "hgun_P07_F", "Throw", "Put" };
magazines[] = {"30Rnd_65x39_caseless_mag","30Rnd_65x39_caseless_mag","Chemlight_green","30Rnd_65x39_caseless_mag",
magazines[] = { "30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag", "Chemlight_green", "30Rnd_65x39_caseless_mag",
"30Rnd_65x39_caseless_mag","30Rnd_65x39_caseless_mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","SmokeShell",
"30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "SmokeShell",
"SmokeShellGreen","SmokeShellBlue","SmokeShellOrange","Chemlight_green"};
"SmokeShellGreen", "SmokeShellBlue", "SmokeShellOrange", "Chemlight_green" };
items[] = {"FirstAidKit","Medikit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit","FirstAidKit"};
items[] = { "FirstAidKit", "Medikit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit" };
linkedItems[] = {"V_PlateCarrierSpec_rgr","H_HelmetB_light_desert","G_Combat","ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles"};
linkedItems[] = { "V_PlateCarrierSpec_rgr", "H_HelmetB_light_desert", "G_Combat", "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio", "NVGoggles" };
</syntaxhighlight>
</syntaxhighlight>
=== Zeus Ammo Box ===
=== Zeus Ammo Box ===
[[File:a3 ammobox infinite.jpg|200px|right]]
As Zeus, you can create virtual ammo box where players can endlessly resupply. Instead going through the classic inventory screen, they'll be able to access Arsenal and select any item you'll give them.
As Zeus, you can create virtual ammo box where players can endlessly resupply. Instead going through the classic inventory screen, they'll be able to access Arsenal and select any item you'll give them.
# Play a scenario as Zeus
# Play a scenario as Zeus
Line 83: Line 93:
# Click on the button once more. Number of items should now be infinite
# Click on the button once more. Number of items should now be infinite
# After confirming, players will be able to access Arsenal through a new action attached to the box.
# After confirming, players will be able to access Arsenal through a new action attached to the box.
[[File:a3 ammobox infinite.jpg|200px]]


=== Zeus Unit Arsenal ===


=== Zeus Unit Arsenal ===
[[File:a3 arsenal module.png|200px|right]]
Zeus can use '''Arsenal''' module to quickly customize gear of any AI soldier. It doesn't work on players, dead units or vehicles.
Zeus can use '''Arsenal''' module to quickly customize gear of any AI soldier. It doesn't work on players, dead units or vehicles.
# Play a scenario as Zeus
# Play a scenario as Zeus
Line 93: Line 103:
# Place the module on top of the unit
# Place the module on top of the unit
# Arsenal interface will be opened. You can either set specific items, or you can load previously saved loadout.
# Arsenal interface will be opened. You can either set specific items, or you can load previously saved loadout.
[[File:a3 arsenal module.png|200px]]


=== Zeus Respawn Loadouts ===


=== Zeus Respawn Loadouts ===
[[File:a3 arsenal loadout save.png|200px|right]]
Saved loadout can be given to players as respawn loadouts by Zeus. Works only in scenarios with [[Arma_3_Respawn#Respawn_Templates|MenuInventory]] respawn template enabled.
[[File:a3 arsenal loadout load.png|200px|right]]
Saved loadout can be given to players as respawn loadouts by Zeus. Works only in scenarios with [[Arma 3: Respawn#Respawn Templates|MenuInventory]] respawn template enabled.
# Save your loadout
# Save your loadout
# Play a scenario as Zeus
# Play a scenario as Zeus
Line 105: Line 116:
# Select the saved loadout.
# Select the saved loadout.
# After confirming, players of the given side will be able to respawn with your loadout.
# After confirming, players of the given side will be able to respawn with your loadout.
[[File:a3 arsenal loadout save.png|200px]]
[[File:a3 arsenal loadout load.png|200px]]


===Shortcuts===
=== Shortcuts ===
 
{| class="wikitable"
{| class="wikitable"
! Shortcut !! Description
|-
|-
! Shortcut                                      !! Description                   
| {{Controls|Ctrl|C}} || Exports current loadout in script format
|-
|-
| Ctrl + Shift + C                       || Copies current loadout in config format to the clipboard, can be used for CfgRespawnInventory
| {{Controls|Ctrl|Shift|C}} || Copies current loadout in config format to the clipboard, can be used for CfgRespawnInventory
|-
|-
| Ctrl + C                    || Exports current loadout in script format
| {{Controls|Ctrl|V}} || Applies loadout from clipboard to currently viewed unit
|-
|-
| Ctrl + V          || Applies loadout from clipboard to currently viewed unit
| {{Controls|Ctrl|O}} || Opens the Load interface
|-
|-
| ESC                    || Leave Arsenal
| {{Controls|Ctrl|S}} || Opens the Save interface
|-
|-
| Backspace         || Test current loadout
| {{Controls|Backspace}} || Hide UI
|-
|-
| Enter         || Start preview
| {{Controls|Enter}} || Start preview
|-
|-
| Ctrl + R                     || Randomise loadout
| {{Controls|Ctrl|R}} || Randomise loadout
|-
|-
| N         || Toggle view mode
| {{Controls|N}} || Toggle view mode (normal/night vision/thermals)
|-
|-
| {{Controls|Esc}} || Leave Arsenal
|}
|}


== Modding ==
== Modding ==
=== Blacklisting Items ===
You can prevent players from loading saved loadouts that contain unwanted items by blacklisting. This is possible by defining the {{Link|Description.ext#arsenalRestrictedItems|arsenalRestrictedItems}} property in [[Description.ext]].
<syntaxhighlight lang="cpp" inline>arsenalRestrictedItems[] = { /* unwanted classes */ };</syntaxhighlight>
=== Access ===
=== Access ===
You can use Arsenal in a scenario you're designing simply by calling the following [[Functions|function]]:
You can use Arsenal in a scenario you're designing simply by calling the following [[Functions|function]]:
[] [[spawn]] [[BIS_fnc_arsenal]];
<sqf>[] spawn BIS_fnc_arsenal;</sqf>
 
This version has several limitations as opposed to the Virtual one:
This version has several limitations as opposed to the Virtual one:
* Voice, Face and Insignia are not available (to avoid clashing with profile)
* Voice, Face and Insignia are not available (to avoid clashing with profile)
Line 140: Line 162:


To open Arsenal with full options, execute:
To open Arsenal with full options, execute:
["Open",true] spawn BIS_fnc_arsenal;
<sqf>["Open", true] spawn BIS_fnc_arsenal;</sqf>


=== Virtual Ammo Box ===
=== Virtual Ammo Box ===
You can also use Arsenal as virtual inventory, allowing players to get unlimited number of items of given types from an ammo box. Action to access the Arsenal will be added automatically on all clients, you don't need to use [[addAction]] to enable it.
You can also use Arsenal as virtual inventory, allowing players to get unlimited number of items of given types from an ammo box. Action to access the Arsenal will be added automatically on all clients, you don't need to use [[addAction]] to enable it.


'''Syntax''' (shared by all mentioned functions):
'''Syntax''' (shared by all mentioned functions):
["AmmoboxInit",<box>] spawn BIS_fnc_arsenal;
<sqf>["AmmoboxInit", ammoBox] spawn BIS_fnc_arsenal;</sqf>
or
or
["AmmoboxInit",[<box>,(<allowAll>,<condition>)]] spawn BIS_fnc_arsenal;
<sqf>["AmmoboxInit", [ammoBox, allowAll, condition]] spawn BIS_fnc_arsenal;</sqf>
*box: [[Object]] - ammo box on which the action will be added
 
*allowAll (Optional): [[Boolean]] - true to add all available weapons, magazines, items and backpacks in the box
* ammoBox: [[Object]] - ammo box on which the action will be added
* condition (Optional): Condition for showing the Arsenal action (default: {true})
* allowAll: [[Boolean]] - (Optional) true to add all available weapons, magazines, items and backpacks in the box
* condition: [[Code]] - (Optional, default <sqf inline>{ true }</sqf>) condition for showing the Arsenal action
** Passed arguments are the same as in [[addAction]] condition, i.e., ''_target'' - the box, ''_this'' - caller
** Passed arguments are the same as in [[addAction]] condition, i.e., ''_target'' - the box, ''_this'' - caller
'''Returned value:'''
'''Returned value:'''
Line 157: Line 181:


'''Example''' (paste it into init field of a box)
'''Example''' (paste it into init field of a box)
0 = ["AmmoboxInit",[this,true]] spawn BIS_fnc_arsenal;
<sqf>["AmmoboxInit", [this, true]] spawn BIS_fnc_arsenal;</sqf>
 


To set which specific items should be available, use functions mentioned below.
To set which specific items should be available, use functions mentioned below.
{{note|You can preview all functions in in-game Functions viewer (while in editor, press Functions button or Ctrl + F)}}
{{Feature|informative|You can preview all functions in in-game Functions viewer (while in editor, press Functions button or {{Controls|Ctrl|F}})}}


==== Add ====
==== Add ====
'''Functions:'''
Functions:
* [[BIS_fnc_addVirtualBackpackCargo]]
* [[BIS_fnc_addVirtualBackpackCargo]]
* [[BIS_fnc_addVirtualItemCargo]]
* [[BIS_fnc_addVirtualItemCargo]]
Line 171: Line 194:


'''Syntax''' (shared by all mentioned functions):
'''Syntax''' (shared by all mentioned functions):
[<target>,<classes>,(<isGlobal>,<addAction>)] call BIS_fnc_addVirtualWeaponCargo;
<sqf>[target, classes, isGlobal, doAddAction] call BIS_fnc_addVirtualWeaponCargo;</sqf>
*target: [[Object]] or [[Namespace]] - ammo box to which classes will be added. When [[missionNamespace]] is used, they will be available across all boxes.
* target: [[Object]] or [[Namespace]] - ammo box to which classes will be added. When [[missionNamespace]] is used, they will be available across all boxes.
*classes: [[Boolean]] or [[Array]] of [[String]]s - whitelisted classes. Alternatiovely, use [[true]] to whitelist everything of the given type
* classes: [[Boolean]] or [[Array]] of [[String]]s - whitelisted classes. Alternatiovely, use [[true]] to whitelist everything of the given type
*isGlobal (Optional): [[Boolean]] - [[true]] to add classes globally (default: [[false]])
* isGlobal: [[Boolean]] - (Optional, default [[false]]) [[true]] to add classes globally
*addAction (Optional): [[Boolean]] - true to add "Arsenal" action which players can access the Arsenal (default: true)
* doAddAction: [[Boolean]] - (Optional, default [[true]]) [[true]] to add "Arsenal" action which players can access the Arsenal


'''Returned value:'''
'''Returned value:'''
[[Array]] of Arrays: All virtual items within the target's space in format [<items>,<weapons>,<magazines>,<backpacks>]
[[Array]] of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]


'''Example:'''
'''Example:'''
[myBox,["arifle_MX_F","arifle_MX_SW_F","arifle_MXC_F"],true] call BIS_fnc_addVirtualWeaponCargo;
<sqf>[myBox, ["arifle_MX_F", "arifle_MX_SW_F", "arifle_MXC_F"], true] call BIS_fnc_addVirtualWeaponCargo;</sqf>
 
To add everything, use:
To add everything, use:
[myBox,true,true] call BIS_fnc_addVirtualWeaponCargo;
<sqf>
//or the equivalent:
[myBox, true, true] call BIS_fnc_addVirtualWeaponCargo;
[myBox,["%ALL"],true] call BIS_fnc_addVirtualWeaponCargo; //Note that %ALL is ALL CAPITAL LETTERS
// or the equivalent:
[myBox, ["%ALL"], true] call BIS_fnc_addVirtualWeaponCargo; // note that %ALL is ALL CAPITAL LETTERS
</sqf>


==== Remove ====
==== Remove ====
'''Functions:'''
Functions:
* [[BIS_fnc_removeVirtualBackpackCargo]]
* [[BIS_fnc_removeVirtualBackpackCargo]]
* [[BIS_fnc_removeVirtualItemCargo]]
* [[BIS_fnc_removeVirtualItemCargo]]
* [[BIS_fnc_removeVirtualMagazineCargo]]
* [[BIS_fnc_removeVirtualMagazineCargo]]
* [[BIS_fnc_removeVirtualWeaponCargo]]
* [[BIS_fnc_removeVirtualWeaponCargo]]
(Note: Only cargo specifically whitelisted can be removed via these commands e.g creating an arsenal container with a whitelist of true (<allowAll>) and then trying to remove "arifle_MX_ACO_pointer_F" will not work)
{{Feature|informative|Only specifically whitelisted cargo can be removed via these commands e.g creating an arsenal container with a whitelist of true (<allowAll>) and then trying to remove "arifle_MX_ACO_pointer_F" will not work.}}


'''Syntax''' (shared by all mentioned functions):
'''Syntax''' (shared by all mentioned functions):
[<target>,<classes>,(<isGlobal>)] call BIS_fnc_addVirtualWeaponCargo;
<sqf>[target, classes, isGlobal] call BIS_fnc_removeVirtualWeaponCargo;</sqf>
*target: [[Object]] or [[Namespace]] - ammo box from which classes will be removed.
* target: [[Object]] or [[Namespace]] - ammo box from which classes will be removed.
*classes: [[Array]] of [[Strings]]s - removed classes
* classes: [[Array]] of [[String]]ss - removed classes
*isGlobal (Optional): [[Boolean]] - [[true]] to remove classes globally (default: [[false]])
* isGlobal: [[Boolean]] - (Optional, default [[false]]) [[true]] to remove classes globally


'''Returned value:'''
'''Returned value:'''
[[Array]] of Arrays: All virtual items within the target's space in format [<items>,<weapons>,<magazines>,<backpacks>]
[[Array]] of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]


'''Example:'''
'''Example:'''
[myBox,["arifle_MXC_F"],true] call BIS_fnc_removeVirtualWeaponCargo;
<sqf>[myBox, ["arifle_MXC_F"], true] call BIS_fnc_removeVirtualWeaponCargo;</sqf>
If an arsenal container has been created by using true as the whitelist (<allowAll>) then a string of "%ALL" (ALL CAPITAL LETTERS) will be inserted into the category array. To remove this kind of whitelist instead use..
 
[myBox,true,true] call BIS_fnc_removeVirtualWeaponCargo;
If an arsenal container has been created by using true as the whitelist (<allowAll>) then a string of "%ALL" (ALL CAPITAL LETTERS) will be inserted into the category array. To remove this kind of whitelist instead use..
// or the equivalent:
<sqf>
[myBox,["%ALL"],true] call BIS_fnc_removeVirtualWeaponCargo; //Note that <tt>%ALL</tt> is ALL CAPITAL LETTERS
[myBox, true, true] call BIS_fnc_removeVirtualWeaponCargo;
// or the equivalent:
[myBox, ["%ALL"], true] call BIS_fnc_removeVirtualWeaponCargo; // note that %ALL is ALL CAPITAL LETTERS
</sqf>


==== Get ====
==== Get ====
'''Functions:'''
Functions:
* [[BIS_fnc_getVirtualBackpackCargo]]
* [[BIS_fnc_getVirtualBackpackCargo]]
* [[BIS_fnc_getVirtualItemCargo]]
* [[BIS_fnc_getVirtualItemCargo]]
Line 219: Line 248:


'''Syntax''' (shared by all mentioned functions):
'''Syntax''' (shared by all mentioned functions):
[<target>] call BIS_fnc_addVirtualWeaponCargo;
<sqf>[target] call BIS_fnc_getVirtualWeaponCargo;</sqf>
*target: [[Object]] or [[Namespace]]
*target: [[Object]] or [[Namespace]]


'''Returned value:'''
'''Returned value:'''
[[Array]] of Arrays: All virtual items within the target's space in format [<items>,<weapons>,<magazines>,<backpacks>]
[[Array]] of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]


'''Example:'''
'''Example:'''
myBox call BIS_fnc_getVirtualWeaponCargo;
<sqf>myBox call BIS_fnc_getVirtualWeaponCargo;</sqf>
 


[[Category:Arma 3: Editing]]
{{GameCategory|arma3|Editing}}

Latest revision as of 22:43, 16 April 2024

a3 arsenal.png


Arsenal is, essentially, a character, equipment and weapon viewer which has been added to Arma 3 in the Bootcamp update. This tool offers an overview of the available content, and enables customized loadouts to be exported to script, which can be used in the editor, other game modes, such as Zeus, and by community scenarios/mods.

You can access it from the main menu by clicking on LEARN > VIRTUAL ARSENAL.


Using

Export

Export to SQF

Clicking on EXPORT button or pressing Ctrl + C will copy the current loadout to clipboard in SQF format. You can paste it to soldier's init field or use it in a script.

You can take the same code and import it via Ctrl + V back to Arsenal. Use this to share loadouts with other players.

Example:

comment "Exported from Arsenal by DavidArmstrong85"; comment "Remove existing items"; removeAllWeapons this; removeAllItems this; removeAllAssignedItems this; removeUniform this; removeVest this; removeBackpack this; removeHeadgear this; removeGoggles this; comment "Add containers"; this forceAddUniform "U_I_CombatUniform"; for "_i" from 1 to 4 do {this addItemToUniform "30Rnd_556x45_Stanag";}; this addItemToUniform "16Rnd_9x21_Mag"; this addVest "V_PlateCarrierIA2_dgtl"; for "_i" from 1 to 4 do {this addItemToVest "FirstAidKit";}; for "_i" from 1 to 6 do {this addItemToVest "HandGrenade";}; for "_i" from 1 to 3 do {this addItemToVest "16Rnd_9x21_Mag";}; this addBackpack "B_TacticalPack_oli"; for "_i" from 1 to 2 do {this addItemToBackpack "SatchelCharge_Remote_Mag";}; for "_i" from 1 to 4 do {this addItemToBackpack "DemoCharge_Remote_Mag";}; this addHeadgear "H_Cap_headphones"; this addGoggles "G_Bandanna_oli"; comment "Add weapons"; this addWeapon "arifle_Mk20C_F"; this addPrimaryWeaponItem "muzzle_snds_M"; this addPrimaryWeaponItem "acc_flashlight"; this addPrimaryWeaponItem "optic_MRCO"; this addWeapon "hgun_P07_F"; comment "Add items"; this linkItem "ItemMap"; this linkItem "ItemCompass"; this linkItem "ItemWatch"; this linkItem "ItemRadio"; this linkItem "ItemGPS"; comment "Set identity"; this setFace "GreekHead_A3_03"; this setSpeaker "Male03GRE"; [this, "TFAegis"] call BIS_fnc_setUnitInsignia;

↑ Back to spoiler's top

Export to CPP

Pressing Ctrl + ⇧ Shift + C will export the loadout in config format, which can then be used in CfgRespawnInventory. Example:

// Exported from Arsenal by R3vo
uniform = "U_B_CombatUniform_mcam_tshirt";
backpack = "B_AssaultPack_rgr_Medic";
weapons[] = { "arifle_MX_F", "hgun_P07_F", "Throw", "Put" };
magazines[] = { "30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag", "Chemlight_green", "30Rnd_65x39_caseless_mag",
"30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag", "16Rnd_9x21_Mag", "16Rnd_9x21_Mag", "SmokeShell",
"SmokeShellGreen", "SmokeShellBlue", "SmokeShellOrange", "Chemlight_green" };
items[] = { "FirstAidKit", "Medikit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit", "FirstAidKit" };
linkedItems[] = { "V_PlateCarrierSpec_rgr", "H_HelmetB_light_desert", "G_Combat", "ItemMap", "ItemCompass", "ItemWatch", "ItemRadio", "NVGoggles" };

Zeus Ammo Box

a3 ammobox infinite.jpg

As Zeus, you can create virtual ammo box where players can endlessly resupply. Instead going through the classic inventory screen, they'll be able to access Arsenal and select any item you'll give them.

  1. Play a scenario as Zeus
  2. Place an ammo box (Units > Empty > Other > Ammo > [anything from the list])
  3. Select an item you want to make available in the Arsenal
  4. Decrease number of items to 0. Button on the left should change from '-' to '∞'
  5. Click on the button once more. Number of items should now be infinite
  6. After confirming, players will be able to access Arsenal through a new action attached to the box.

Zeus Unit Arsenal

a3 arsenal module.png

Zeus can use Arsenal module to quickly customize gear of any AI soldier. It doesn't work on players, dead units or vehicles.

  1. Play a scenario as Zeus
  2. Find a unit you want to customize
  3. Select Modules > Zeus > Arsenal
  4. Place the module on top of the unit
  5. Arsenal interface will be opened. You can either set specific items, or you can load previously saved loadout.

Zeus Respawn Loadouts

a3 arsenal loadout save.png
a3 arsenal loadout load.png

Saved loadout can be given to players as respawn loadouts by Zeus. Works only in scenarios with MenuInventory respawn template enabled.

  1. Save your loadout
  2. Play a scenario as Zeus
  3. Place Modules > Respawn > Loadouts
  4. Select side tab
  5. Expand Arsenal category
  6. Select the saved loadout.
  7. After confirming, players of the given side will be able to respawn with your loadout.

Shortcuts

Shortcut Description
Ctrl + C Exports current loadout in script format
Ctrl + ⇧ Shift + C Copies current loadout in config format to the clipboard, can be used for CfgRespawnInventory
Ctrl + V Applies loadout from clipboard to currently viewed unit
Ctrl + O Opens the Load interface
Ctrl + S Opens the Save interface
Hide UI
Enter ↵ Start preview
Ctrl + R Randomise loadout
N Toggle view mode (normal/night vision/thermals)
Esc Leave Arsenal


Modding

Blacklisting Items

You can prevent players from loading saved loadouts that contain unwanted items by blacklisting. This is possible by defining the arsenalRestrictedItems property in Description.ext.

arsenalRestrictedItems[] = { /* unwanted classes */ };

Access

You can use Arsenal in a scenario you're designing simply by calling the following function:

This version has several limitations as opposed to the Virtual one:

  • Voice, Face and Insignia are not available (to avoid clashing with profile)
  • Not all assets are automatically present, designer has to whitelist allowed classes. By default, only player's current equipment is available.

To open Arsenal with full options, execute:

Virtual Ammo Box

You can also use Arsenal as virtual inventory, allowing players to get unlimited number of items of given types from an ammo box. Action to access the Arsenal will be added automatically on all clients, you don't need to use addAction to enable it.

Syntax (shared by all mentioned functions):

["AmmoboxInit", ammoBox] spawn BIS_fnc_arsenal;

or

["AmmoboxInit", [ammoBox, allowAll, condition]] spawn BIS_fnc_arsenal;

  • ammoBox: Object - ammo box on which the action will be added
  • allowAll: Boolean - (Optional) true to add all available weapons, magazines, items and backpacks in the box
  • condition: Code - (Optional, default { true }) condition for showing the Arsenal action
    • Passed arguments are the same as in addAction condition, i.e., _target - the box, _this - caller

Returned value: Nothing

Example (paste it into init field of a box)

["AmmoboxInit", [this, true]] spawn BIS_fnc_arsenal;

To set which specific items should be available, use functions mentioned below.

You can preview all functions in in-game Functions viewer (while in editor, press Functions button or Ctrl + F)

Add

Functions:

Syntax (shared by all mentioned functions):

[target, classes, isGlobal, doAddAction] call BIS_fnc_addVirtualWeaponCargo;

  • target: Object or Namespace - ammo box to which classes will be added. When missionNamespace is used, they will be available across all boxes.
  • classes: Boolean or Array of Strings - whitelisted classes. Alternatiovely, use true to whitelist everything of the given type
  • isGlobal: Boolean - (Optional, default false) true to add classes globally
  • doAddAction: Boolean - (Optional, default true) true to add "Arsenal" action which players can access the Arsenal

Returned value: Array of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]

Example:

[myBox, ["arifle_MX_F", "arifle_MX_SW_F", "arifle_MXC_F"], true] call BIS_fnc_addVirtualWeaponCargo;

To add everything, use:

[myBox, true, true] call BIS_fnc_addVirtualWeaponCargo; // or the equivalent: [myBox, ["%ALL"], true] call BIS_fnc_addVirtualWeaponCargo; // note that %ALL is ALL CAPITAL LETTERS

Remove

Functions:

Only specifically whitelisted cargo can be removed via these commands e.g creating an arsenal container with a whitelist of true (<allowAll>) and then trying to remove "arifle_MX_ACO_pointer_F" will not work.

Syntax (shared by all mentioned functions):

[target, classes, isGlobal] call BIS_fnc_removeVirtualWeaponCargo;

Returned value: Array of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]

Example:

[myBox, ["arifle_MXC_F"], true] call BIS_fnc_removeVirtualWeaponCargo;

If an arsenal container has been created by using true as the whitelist (<allowAll>) then a string of "%ALL" (ALL CAPITAL LETTERS) will be inserted into the category array. To remove this kind of whitelist instead use..

[myBox, true, true] call BIS_fnc_removeVirtualWeaponCargo; // or the equivalent: [myBox, ["%ALL"], true] call BIS_fnc_removeVirtualWeaponCargo; // note that %ALL is ALL CAPITAL LETTERS

Get

Functions:

Syntax (shared by all mentioned functions):

Returned value: Array of Arrays: All virtual items within the target's space in format [<items>, <weapons>, <magazines>, <backpacks>]

Example: