---
name: "Arma 3: Communication Menu"
type: topic
aliases: ["Arma 3 Communication Menu"]
source: https://community.bistudio.com/wiki/Arma_3:_Communication_Menu
revid: 376531
updated: 2025-10-25T12:53:07Z
---

# Arma 3: Communication Menu

Communication menu is a commanding menu where support or mission requests are placed.

The player can access it using following means:

- Open the **quick command menu** <kbd>~</kbd> and select "Communication" item
- Press <kbd>8</kbd> then <kbd>1</kbd> (Reply - Communication)

> [!NOTE]
> **Arma 2:** For Arma 2 and additional information, see Arma 2: Custom Command Menu.

Available items are announced upon adding by a [notification](../topics/Notification.md) and remain visualized as icons next to the commanding menu.\
Communication menu and icons

### Configuration

#### Config

Communication menu items can be defined in config - global [Config.cpp](../topics/Config.cpp~2Fbin_File_Format.md), [Campaign Description.ext](../topics/Campaign_Description.ext.md) or mission [Description.ext](../topics/Description.ext.md) (searched in this order, the latter has the highest priority).

> [!NOTE]
> 'CfgCommunicationMenu' is purely scripted config which requires the use of scripted function [BIS_fnc_addCommMenuItem](../functions/BIS_fnc_addCommMenuItem.md). It will not work with [showCommandingMenu](../commands/showCommandingMenu.md) script command.

```cpp
class CfgCommunicationMenu
{
    class myArtillery
    {
        text = "Artillery Strike";        // Text displayed in the menu and in a notification
        submenu = "";                    // Submenu opened upon activation (expression is ignored when submenu is not empty.)
        expression = "player setVariable ['BIS_SUPP_request', ['Artillery', _pos]];";    // Code executed upon activation
        icon = "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\artillery_ca.paa";                // Icon displayed permanently next to the command menu
        cursor = "\a3\Ui_f\data\IGUI\Cfg\Cursors\iconCursorSupport_ca.paa";                // Custom cursor displayed when the item is selected
        enable = "1";                    // Simple expression condition for enabling the item
        removeAfterExpressionCall = 1;    // 1 to remove the item after calling
    };

    class menu_comms_1
    {
        text = "Menu Comms 1";
        submenu = "#USER:MENU_COMMS_1";    // will open submenu that is defined as global variable MENU_COMMS_1
        expression = "";
        icon = "";
        cursor = "";
        enable = "1";
        removeAfterExpressionCall = 0;
    };
};
```

Available default icons:

- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\artillery_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\attack_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\call_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\cas_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\casheli_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\defend_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\instructor_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\mortar_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\supplydrop_ca.paa"`
- `"\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\transport_ca.paa"`

You can also preview pre-defined items using the [Splendid™ Config Viewer](../functions/BIS_fnc_configViewer.md).

#### Simple expressions

| Expression | Effect | Tested |
|---|---|---|
| 1 | Always available | ✓ |
| 0 | Always disabled | ✓ |
| cursorOnGround | Only callable when pointing at a valid position | ✓ |
| IsLeader | Player has to be the leader of his group | ✓ |
| IsAlone |  | ✗ |
| IsAloneInVehicle |  | ✗ |
| IsCommander |  | ✗ |
| VehicleCommander |  | ✗ |
| CommandsToGunner |  | ✗ |
| CommandsToPilot |  | ✗ |
| NotEmpty |  | ✗ |
| NotEmptySoldiers |  | ✗ |
| NotEmptyCommanders |  | ✗ |
| NotEmptyMainTeam |  | ✗ |
| NotEmptyRedTeam |  | ✗ |
| NotEmptyGreenTeam |  | ✗ |
| NotEmptyBlueTeam |  | ✗ |
| NotEmptyYellowTeam |  | ✗ |
| NotEmptySubgroups |  | ✗ |
| NotEmptyInVehicle |  | ✗ |
| SelectedTeam |  | ✗ |
| SelectedUnit |  | ✗ |
| FuelLow |  | ✗ |
| AmmoLow |  | ✗ |
| Injured |  | ✗ |
| Multiplayer |  | ✗ |
| AreActions |  | ✗ |
| CursorOnGroupMember |  | ✗ |
| CursorOnHoldingFire |  | ✗ |
| CursorOnEmptyVehicle |  | ✗ |
| CursorOnVehicleCanGetIn |  | ✗ |
| CursorOnFriendly |  | ✗ |
| CursorOnEnemy |  | ✗ |
| CursorOnGround |  | ✗ |
| CanSelectUnitFromBar |  | ✗ |
| CanDeselectUnitFromBar |  | ✗ |
| CanSelectVehicleFromBar |  | ✗ |
| CanDeselectVehicleFromBar |  | ✗ |
| CanSelectTeamFromBar |  | ✗ |
| CanDeselectTeamFromBar |  | ✗ |
| FormationLine |  | ✗ |
| FormationDiamond |  | ✗ |
| SomeSelectedHoldingFire |  | ✗ |
| PlayableLeader |  | ✗ |
| PlayableSelected |  | ✗ |
| IsWatchCommanded |  | ✗ |
| IsSelectedToAdd |  | ✗ |
| HCIsLeader |  | ✗ |
| HCCursorOnIcon |  | ✗ |
| HCCursorOnIconSelectable |  | ✗ |
| HCCanSelectUnitFromBar |  | ✗ |
| HCCanDeselectUnitFromBar |  | ✗ |
| HCCanSelectTeamFromBar |  | ✗ |
| HCCanDeselectTeamFromBar |  | ✗ |
| HCNotEmpty |  | ✗ |
| PlayerVehicleCanGetIn |  | ✗ |
| IsXbox |  | ✗ |
| IsTeamSwitch |  | ✗ |
| CursorOnNotEmptySubgroups |  | ✗ |
| SomeSelectedHaveTarget |  | ✗ |
| CursorOnGroupMemberSelected |  | ✗ |
| HCCursorOnIconSelectableSelected |  | ✗ |
| HCCursorOnIconenemy |  | ✗ |
| PlayerOwnRadio |  | ✗ |
| CursorOnNeedFirstAID |  | ✗ |
| CursorOnNeedHeal |  | ✗ |

### Add Menu Item

Use the following functions to add the item in your mission or system:

- [BIS_fnc_addCommMenuItem](../functions/BIS_fnc_addCommMenuItem.md)
- [BIS_fnc_removeCommMenuItem](../functions/BIS_fnc_removeCommMenuItem.md)

Number of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports.

> [!NOTE]
> See all Communication Menu functions.

#### Submenu

##### Config

```cpp
submenu = "#USER:MENU_COMMS_1"; // "MENU_COMMS_1" is just a global variable, can be named anything
```

##### SQF

A submenu is an array in format [menuInfo, item1, item2, ... itemX]:

- menuInfo: [Array](../topics/Array.md) format [menuName, hasInputFocus]:
  - menuName: [String](../topics/String.md)
  - hasInputFocus: [Boolean](../topics/Boolean.md) - as of Arma 3 v1.05, if "has input focus" is false, custom icons are not displayed
- itemX: [Array](../topics/Array.md) format [itemName, assignedKey, submenuName, command, expression, isVisible, isActive, iconPath]:
  - itemName: [String](../topics/String.md) - displayed title
  - assignedKey: [Array](../topics/Array.md) of [Numbers](../topics/Number.md) (see [DIK KeyCodes](../topics/DIK_KeyCodes.md)) - e.g 0 = no key, 1 = <kbd>Esc</kbd>, etc
  - submenuName: [String](../topics/String.md) - user menu name string (e.g "#USER:MY_SUBMENU_NAME"), "" for script to execute.
  - command: [Number](../topics/Number.md) - for main menu, -1 = CMD_SEPARATOR, -2 = CMD_NOTHING, -3 = CMD_HIDE_MENU, -4 = CMD_BACK, -5 (custom menu only) = CMD_EXECUTE
  - expression: [Array](../topics/Array.md) of [Strings](../topics/String.md) format [type, codeString]:
    - type: [String](../topics/String.md) - the `"expression"` string, always
    - codeString: [String](../topics/String.md) - [SQF](../topics/SQF_Syntax.md) code in string format (see e.g [toString](../commands/toString.md#syntax-2)); the expression has predefined variables:
      - _caller: [Object](../topics/Object.md) - unit which called the item, usually [player](../commands/player.md)
      - _pos: [Array](../topics/Array.md) in format [Position](../topics/Position.md) - cursor position
      - _target: [Object](../topics/Object.md) - cursor target
      - _is3D: [Boolean](../topics/Boolean.md) - [true](../commands/true.md) when in 3D scene, [false](../commands/false.md) when in map
      - _id: [String](../topics/String.md) - item ID as returned by [BIS_fnc_addCommMenuItem](../functions/BIS_fnc_addCommMenuItem.md) function
  - isVisible: [String](../topics/String.md) - visibility condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround"
  - isActive: [String](../topics/String.md) - enabled condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround"
  - iconPath: [String](../topics/String.md) - (Optional, default "") cursor icon path for this menu item

**Example**

```sqf
MENU_COMMS_1 =
[
    ["MenuName", false],
    ["Teleport", [2], "", -5, [["expression", "player setPos _pos;"]], "1", "1", "\A3\ui_f\data\IGUI\Cfg\Cursors\iconcursorsupport_ca.paa"],
    ["Kill Target", [3], "", -5, [["expression", "_target setDamage 1;"]], "1", "1", "\A3\ui_f\data\IGUI\Cfg\Cursors\iconcursorsupport_ca.paa"],
    ["Disabled", [4], "", -5, [["expression", ""]], "1", "0"],
    ["Submenu", [5], "#USER:MENU_COMMS_2", -5, [], "1", "1"]
];

MENU_COMMS_2 =
[
    ["Submenu", false],
    ["Option 1", [2], "", -5, [["expression", "hint 'Option 1';"]], "1", "1"],
    ["Option 2", [3], "", -5, [["expression", "hint 'Option 2';"]], "1", "1"],
    ["Option 3", [4], "", -5, [["expression", "hint 'Option 3';"]], "1", "1"]
];
```

```sqf
showCommandingMenu "#USER:MENU_COMMS_1"; // displays the custom menu
```

##### Existing Submenus

Some of the existing submenus:

| Menu | Menu Location |
|---|---|
| "#User:BIS_fnc_addCommMenuItem_menu" | Group/Reply communication menu /High Command Group reply menu |
| "#User:BIS_MENU_GroupCommunication" | High Command/UAV Reply communication menu |
| "#USER:BIS_VR_commMenu_1" | VR Training Mission menu |
| "#USER:HCWPWaitRadio" | High Command/UAV Waypoints waitRadio menu |
| "#USER:HCWPWaitUntil" | High Command/UAV Waypoints waitUnitl menu |
| "#USER:HC_Custom_0" | High Command/UAV Action menu |
| "#USER:HC_Missions_0" | High Command/UAV Missions menu |
| "#USER:HC_Targets_0" | High Command/UAV Targets menu |
| "#USER:BIS_fnc_kbMenu_menu" | Conversation menu |
| "#USER:BIS_MENU_SOM_SecOps" | Communication menu |
| "#USER:BIS_MENU_SOM_Support" | Communication Support menu |

<sub>Source: [BI Community Wiki — Arma 3: Communication Menu](https://community.bistudio.com/wiki/Arma_3:_Communication_Menu) (revision 376531).</sub>
