{"name":"Arma 3: Communication Menu","title":"Arma 3: Communication Menu","type":"topic","url":"https://community.bistudio.com/wiki/Arma_3:_Communication_Menu","revid":376531,"updated":"2025-10-25T12:53:07Z","aliases":["Arma 3 Communication Menu"],"markdown":"Communication menu is a commanding menu where support or mission requests are placed.\n\nThe player can access it using following means:\n\n- Open the **quick command menu** <kbd>~</kbd> and select \"Communication\" item\n- Press <kbd>8</kbd> then <kbd>1</kbd> (Reply - Communication)\n\n> [!NOTE]\n> **Arma 2:** For Arma 2 and additional information, see Arma 2: Custom Command Menu.\n\nAvailable items are announced upon adding by a notification and remain visualized as icons next to the commanding menu.\nCommunication menu and icons\n\n### Configuration\n\n#### Config\n\nCommunication menu items can be defined in config - global Config.cpp, Campaign Description.ext or mission Description.ext (searched in this order, the latter has the highest priority).\n\n> [!NOTE]\n> 'CfgCommunicationMenu' is purely scripted config which requires the use of scripted function BIS_fnc_addCommMenuItem. It will not work with showCommandingMenu script command.\n\n```cpp\nclass CfgCommunicationMenu\n{\n    class myArtillery\n    {\n        text = \"Artillery Strike\";        // Text displayed in the menu and in a notification\n        submenu = \"\";                    // Submenu opened upon activation (expression is ignored when submenu is not empty.)\n        expression = \"player setVariable ['BIS_SUPP_request', ['Artillery', _pos]];\";    // Code executed upon activation\n        icon = \"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\artillery_ca.paa\";                // Icon displayed permanently next to the command menu\n        cursor = \"\\a3\\Ui_f\\data\\IGUI\\Cfg\\Cursors\\iconCursorSupport_ca.paa\";                // Custom cursor displayed when the item is selected\n        enable = \"1\";                    // Simple expression condition for enabling the item\n        removeAfterExpressionCall = 1;    // 1 to remove the item after calling\n    };\n\n    class menu_comms_1\n    {\n        text = \"Menu Comms 1\";\n        submenu = \"#USER:MENU_COMMS_1\";    // will open submenu that is defined as global variable MENU_COMMS_1\n        expression = \"\";\n        icon = \"\";\n        cursor = \"\";\n        enable = \"1\";\n        removeAfterExpressionCall = 0;\n    };\n};\n```\n\nAvailable default icons:\n\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\artillery_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\attack_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\call_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\cas_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\casheli_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\defend_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\instructor_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\mortar_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\supplydrop_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\transport_ca.paa\"`\n\nYou can also preview pre-defined items using the Splendid™ Config Viewer.\n\n#### Simple expressions\n\n| Expression | Effect | Tested |\n|---|---|---|\n| 1 | Always available | ✓ |\n| 0 | Always disabled | ✓ |\n| cursorOnGround | Only callable when pointing at a valid position | ✓ |\n| IsLeader | Player has to be the leader of his group | ✓ |\n| IsAlone |  | ✗ |\n| IsAloneInVehicle |  | ✗ |\n| IsCommander |  | ✗ |\n| VehicleCommander |  | ✗ |\n| CommandsToGunner |  | ✗ |\n| CommandsToPilot |  | ✗ |\n| NotEmpty |  | ✗ |\n| NotEmptySoldiers |  | ✗ |\n| NotEmptyCommanders |  | ✗ |\n| NotEmptyMainTeam |  | ✗ |\n| NotEmptyRedTeam |  | ✗ |\n| NotEmptyGreenTeam |  | ✗ |\n| NotEmptyBlueTeam |  | ✗ |\n| NotEmptyYellowTeam |  | ✗ |\n| NotEmptySubgroups |  | ✗ |\n| NotEmptyInVehicle |  | ✗ |\n| SelectedTeam |  | ✗ |\n| SelectedUnit |  | ✗ |\n| FuelLow |  | ✗ |\n| AmmoLow |  | ✗ |\n| Injured |  | ✗ |\n| Multiplayer |  | ✗ |\n| AreActions |  | ✗ |\n| CursorOnGroupMember |  | ✗ |\n| CursorOnHoldingFire |  | ✗ |\n| CursorOnEmptyVehicle |  | ✗ |\n| CursorOnVehicleCanGetIn |  | ✗ |\n| CursorOnFriendly |  | ✗ |\n| CursorOnEnemy |  | ✗ |\n| CursorOnGround |  | ✗ |\n| CanSelectUnitFromBar |  | ✗ |\n| CanDeselectUnitFromBar |  | ✗ |\n| CanSelectVehicleFromBar |  | ✗ |\n| CanDeselectVehicleFromBar |  | ✗ |\n| CanSelectTeamFromBar |  | ✗ |\n| CanDeselectTeamFromBar |  | ✗ |\n| FormationLine |  | ✗ |\n| FormationDiamond |  | ✗ |\n| SomeSelectedHoldingFire |  | ✗ |\n| PlayableLeader |  | ✗ |\n| PlayableSelected |  | ✗ |\n| IsWatchCommanded |  | ✗ |\n| IsSelectedToAdd |  | ✗ |\n| HCIsLeader |  | ✗ |\n| HCCursorOnIcon |  | ✗ |\n| HCCursorOnIconSelectable |  | ✗ |\n| HCCanSelectUnitFromBar |  | ✗ |\n| HCCanDeselectUnitFromBar |  | ✗ |\n| HCCanSelectTeamFromBar |  | ✗ |\n| HCCanDeselectTeamFromBar |  | ✗ |\n| HCNotEmpty |  | ✗ |\n| PlayerVehicleCanGetIn |  | ✗ |\n| IsXbox |  | ✗ |\n| IsTeamSwitch |  | ✗ |\n| CursorOnNotEmptySubgroups |  | ✗ |\n| SomeSelectedHaveTarget |  | ✗ |\n| CursorOnGroupMemberSelected |  | ✗ |\n| HCCursorOnIconSelectableSelected |  | ✗ |\n| HCCursorOnIconenemy |  | ✗ |\n| PlayerOwnRadio |  | ✗ |\n| CursorOnNeedFirstAID |  | ✗ |\n| CursorOnNeedHeal |  | ✗ |\n\n### Add Menu Item\n\nUse the following functions to add the item in your mission or system:\n\n- BIS_fnc_addCommMenuItem\n- BIS_fnc_removeCommMenuItem\n\nNumber of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports.\n\n> [!NOTE]\n> See all Communication Menu functions.\n\n#### Submenu\n\n##### Config\n\n```cpp\nsubmenu = \"#USER:MENU_COMMS_1\"; // \"MENU_COMMS_1\" is just a global variable, can be named anything\n```\n\n##### SQF\n\nA submenu is an array in format [menuInfo, item1, item2, ... itemX]:\n\n- menuInfo: Array format [menuName, hasInputFocus]:\n  - menuName: String\n  - hasInputFocus: Boolean - as of Arma 3 v1.05, if \"has input focus\" is false, custom icons are not displayed\n- itemX: Array format [itemName, assignedKey, submenuName, command, expression, isVisible, isActive, iconPath]:\n  - itemName: String - displayed title\n  - assignedKey: Array of Numbers (see DIK KeyCodes) - e.g 0 = no key, 1 = <kbd>Esc</kbd>, etc\n  - submenuName: String - user menu name string (e.g \"#USER:MY_SUBMENU_NAME\"), \"\" for script to execute.\n  - command: Number - for main menu, -1 = CMD_SEPARATOR, -2 = CMD_NOTHING, -3 = CMD_HIDE_MENU, -4 = CMD_BACK, -5 (custom menu only) = CMD_EXECUTE\n  - expression: Array of Strings format [type, codeString]:\n    - type: String - the `\"expression\"` string, always\n    - codeString: String - SQF code in string format (see e.g toString); the expression has predefined variables:\n      - _caller: Object - unit which called the item, usually player\n      - _pos: Array in format Position - cursor position\n      - _target: Object - cursor target\n      - _is3D: Boolean - true when in 3D scene, false when in map\n      - _id: String - item ID as returned by BIS_fnc_addCommMenuItem function\n  - isVisible: String - visibility condition; \"1\" for true, \"0\" for false, or optional argument string e.g \"CursorOnGround\"\n  - isActive: String - enabled condition; \"1\" for true, \"0\" for false, or optional argument string e.g \"CursorOnGround\"\n  - iconPath: String - (Optional, default \"\") cursor icon path for this menu item\n\n**Example**\n\n```sqf\nMENU_COMMS_1 =\n[\n    [\"MenuName\", false],\n    [\"Teleport\", [2], \"\", -5, [[\"expression\", \"player setPos _pos;\"]], \"1\", \"1\", \"\\A3\\ui_f\\data\\IGUI\\Cfg\\Cursors\\iconcursorsupport_ca.paa\"],\n    [\"Kill Target\", [3], \"\", -5, [[\"expression\", \"_target setDamage 1;\"]], \"1\", \"1\", \"\\A3\\ui_f\\data\\IGUI\\Cfg\\Cursors\\iconcursorsupport_ca.paa\"],\n    [\"Disabled\", [4], \"\", -5, [[\"expression\", \"\"]], \"1\", \"0\"],\n    [\"Submenu\", [5], \"#USER:MENU_COMMS_2\", -5, [], \"1\", \"1\"]\n];\n\nMENU_COMMS_2 =\n[\n    [\"Submenu\", false],\n    [\"Option 1\", [2], \"\", -5, [[\"expression\", \"hint 'Option 1';\"]], \"1\", \"1\"],\n    [\"Option 2\", [3], \"\", -5, [[\"expression\", \"hint 'Option 2';\"]], \"1\", \"1\"],\n    [\"Option 3\", [4], \"\", -5, [[\"expression\", \"hint 'Option 3';\"]], \"1\", \"1\"]\n];\n```\n\n```sqf\nshowCommandingMenu \"#USER:MENU_COMMS_1\"; // displays the custom menu\n```\n\n##### Existing Submenus\n\nSome of the existing submenus:\n\n| Menu | Menu Location |\n|---|---|\n| \"#User:BIS_fnc_addCommMenuItem_menu\" | Group/Reply communication menu /High Command Group reply menu |\n| \"#User:BIS_MENU_GroupCommunication\" | High Command/UAV Reply communication menu |\n| \"#USER:BIS_VR_commMenu_1\" | VR Training Mission menu |\n| \"#USER:HCWPWaitRadio\" | High Command/UAV Waypoints waitRadio menu |\n| \"#USER:HCWPWaitUntil\" | High Command/UAV Waypoints waitUnitl menu |\n| \"#USER:HC_Custom_0\" | High Command/UAV Action menu |\n| \"#USER:HC_Missions_0\" | High Command/UAV Missions menu |\n| \"#USER:HC_Targets_0\" | High Command/UAV Targets menu |\n| \"#USER:BIS_fnc_kbMenu_menu\" | Conversation menu |\n| \"#USER:BIS_MENU_SOM_SecOps\" | Communication menu |\n| \"#USER:BIS_MENU_SOM_Support\" | Communication Support menu |","sections":[{"heading":null,"level":1,"markdown":"Communication menu is a commanding menu where support or mission requests are placed.\n\nThe player can access it using following means:\n\n- Open the **quick command menu** <kbd>~</kbd> and select \"Communication\" item\n- Press <kbd>8</kbd> then <kbd>1</kbd> (Reply - Communication)\n\n> [!NOTE]\n> **Arma 2:** For Arma 2 and additional information, see Arma 2: Custom Command Menu.\n\nAvailable items are announced upon adding by a notification and remain visualized as icons next to the commanding menu.\nCommunication menu and icons"},{"heading":"Configuration","level":3,"markdown":""},{"heading":"Config","level":4,"markdown":"Communication menu items can be defined in config - global Config.cpp, Campaign Description.ext or mission Description.ext (searched in this order, the latter has the highest priority).\n\n> [!NOTE]\n> 'CfgCommunicationMenu' is purely scripted config which requires the use of scripted function BIS_fnc_addCommMenuItem. It will not work with showCommandingMenu script command.\n\n```cpp\nclass CfgCommunicationMenu\n{\n    class myArtillery\n    {\n        text = \"Artillery Strike\";        // Text displayed in the menu and in a notification\n        submenu = \"\";                    // Submenu opened upon activation (expression is ignored when submenu is not empty.)\n        expression = \"player setVariable ['BIS_SUPP_request', ['Artillery', _pos]];\";    // Code executed upon activation\n        icon = \"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\artillery_ca.paa\";                // Icon displayed permanently next to the command menu\n        cursor = \"\\a3\\Ui_f\\data\\IGUI\\Cfg\\Cursors\\iconCursorSupport_ca.paa\";                // Custom cursor displayed when the item is selected\n        enable = \"1\";                    // Simple expression condition for enabling the item\n        removeAfterExpressionCall = 1;    // 1 to remove the item after calling\n    };\n\n    class menu_comms_1\n    {\n        text = \"Menu Comms 1\";\n        submenu = \"#USER:MENU_COMMS_1\";    // will open submenu that is defined as global variable MENU_COMMS_1\n        expression = \"\";\n        icon = \"\";\n        cursor = \"\";\n        enable = \"1\";\n        removeAfterExpressionCall = 0;\n    };\n};\n```\n\nAvailable default icons:\n\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\artillery_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\attack_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\call_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\cas_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\casheli_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\defend_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\instructor_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\mortar_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\supplydrop_ca.paa\"`\n- `\"\\a3\\Ui_f\\data\\GUI\\Cfg\\CommunicationMenu\\transport_ca.paa\"`\n\nYou can also preview pre-defined items using the Splendid™ Config Viewer."},{"heading":"Simple expressions","level":4,"markdown":"| Expression | Effect | Tested |\n|---|---|---|\n| 1 | Always available | ✓ |\n| 0 | Always disabled | ✓ |\n| cursorOnGround | Only callable when pointing at a valid position | ✓ |\n| IsLeader | Player has to be the leader of his group | ✓ |\n| IsAlone |  | ✗ |\n| IsAloneInVehicle |  | ✗ |\n| IsCommander |  | ✗ |\n| VehicleCommander |  | ✗ |\n| CommandsToGunner |  | ✗ |\n| CommandsToPilot |  | ✗ |\n| NotEmpty |  | ✗ |\n| NotEmptySoldiers |  | ✗ |\n| NotEmptyCommanders |  | ✗ |\n| NotEmptyMainTeam |  | ✗ |\n| NotEmptyRedTeam |  | ✗ |\n| NotEmptyGreenTeam |  | ✗ |\n| NotEmptyBlueTeam |  | ✗ |\n| NotEmptyYellowTeam |  | ✗ |\n| NotEmptySubgroups |  | ✗ |\n| NotEmptyInVehicle |  | ✗ |\n| SelectedTeam |  | ✗ |\n| SelectedUnit |  | ✗ |\n| FuelLow |  | ✗ |\n| AmmoLow |  | ✗ |\n| Injured |  | ✗ |\n| Multiplayer |  | ✗ |\n| AreActions |  | ✗ |\n| CursorOnGroupMember |  | ✗ |\n| CursorOnHoldingFire |  | ✗ |\n| CursorOnEmptyVehicle |  | ✗ |\n| CursorOnVehicleCanGetIn |  | ✗ |\n| CursorOnFriendly |  | ✗ |\n| CursorOnEnemy |  | ✗ |\n| CursorOnGround |  | ✗ |\n| CanSelectUnitFromBar |  | ✗ |\n| CanDeselectUnitFromBar |  | ✗ |\n| CanSelectVehicleFromBar |  | ✗ |\n| CanDeselectVehicleFromBar |  | ✗ |\n| CanSelectTeamFromBar |  | ✗ |\n| CanDeselectTeamFromBar |  | ✗ |\n| FormationLine |  | ✗ |\n| FormationDiamond |  | ✗ |\n| SomeSelectedHoldingFire |  | ✗ |\n| PlayableLeader |  | ✗ |\n| PlayableSelected |  | ✗ |\n| IsWatchCommanded |  | ✗ |\n| IsSelectedToAdd |  | ✗ |\n| HCIsLeader |  | ✗ |\n| HCCursorOnIcon |  | ✗ |\n| HCCursorOnIconSelectable |  | ✗ |\n| HCCanSelectUnitFromBar |  | ✗ |\n| HCCanDeselectUnitFromBar |  | ✗ |\n| HCCanSelectTeamFromBar |  | ✗ |\n| HCCanDeselectTeamFromBar |  | ✗ |\n| HCNotEmpty |  | ✗ |\n| PlayerVehicleCanGetIn |  | ✗ |\n| IsXbox |  | ✗ |\n| IsTeamSwitch |  | ✗ |\n| CursorOnNotEmptySubgroups |  | ✗ |\n| SomeSelectedHaveTarget |  | ✗ |\n| CursorOnGroupMemberSelected |  | ✗ |\n| HCCursorOnIconSelectableSelected |  | ✗ |\n| HCCursorOnIconenemy |  | ✗ |\n| PlayerOwnRadio |  | ✗ |\n| CursorOnNeedFirstAID |  | ✗ |\n| CursorOnNeedHeal |  | ✗ |"},{"heading":"Add Menu Item","level":3,"markdown":"Use the following functions to add the item in your mission or system:\n\n- BIS_fnc_addCommMenuItem\n- BIS_fnc_removeCommMenuItem\n\nNumber of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports.\n\n> [!NOTE]\n> See all Communication Menu functions."},{"heading":"Submenu","level":4,"markdown":""},{"heading":"Config","level":5,"markdown":"```cpp\nsubmenu = \"#USER:MENU_COMMS_1\"; // \"MENU_COMMS_1\" is just a global variable, can be named anything\n```"},{"heading":"SQF","level":5,"markdown":"A submenu is an array in format [menuInfo, item1, item2, ... itemX]:\n\n- menuInfo: Array format [menuName, hasInputFocus]:\n  - menuName: String\n  - hasInputFocus: Boolean - as of Arma 3 v1.05, if \"has input focus\" is false, custom icons are not displayed\n- itemX: Array format [itemName, assignedKey, submenuName, command, expression, isVisible, isActive, iconPath]:\n  - itemName: String - displayed title\n  - assignedKey: Array of Numbers (see DIK KeyCodes) - e.g 0 = no key, 1 = <kbd>Esc</kbd>, etc\n  - submenuName: String - user menu name string (e.g \"#USER:MY_SUBMENU_NAME\"), \"\" for script to execute.\n  - command: Number - for main menu, -1 = CMD_SEPARATOR, -2 = CMD_NOTHING, -3 = CMD_HIDE_MENU, -4 = CMD_BACK, -5 (custom menu only) = CMD_EXECUTE\n  - expression: Array of Strings format [type, codeString]:\n    - type: String - the `\"expression\"` string, always\n    - codeString: String - SQF code in string format (see e.g toString); the expression has predefined variables:\n      - _caller: Object - unit which called the item, usually player\n      - _pos: Array in format Position - cursor position\n      - _target: Object - cursor target\n      - _is3D: Boolean - true when in 3D scene, false when in map\n      - _id: String - item ID as returned by BIS_fnc_addCommMenuItem function\n  - isVisible: String - visibility condition; \"1\" for true, \"0\" for false, or optional argument string e.g \"CursorOnGround\"\n  - isActive: String - enabled condition; \"1\" for true, \"0\" for false, or optional argument string e.g \"CursorOnGround\"\n  - iconPath: String - (Optional, default \"\") cursor icon path for this menu item\n\n**Example**\n\n```sqf\nMENU_COMMS_1 =\n[\n    [\"MenuName\", false],\n    [\"Teleport\", [2], \"\", -5, [[\"expression\", \"player setPos _pos;\"]], \"1\", \"1\", \"\\A3\\ui_f\\data\\IGUI\\Cfg\\Cursors\\iconcursorsupport_ca.paa\"],\n    [\"Kill Target\", [3], \"\", -5, [[\"expression\", \"_target setDamage 1;\"]], \"1\", \"1\", \"\\A3\\ui_f\\data\\IGUI\\Cfg\\Cursors\\iconcursorsupport_ca.paa\"],\n    [\"Disabled\", [4], \"\", -5, [[\"expression\", \"\"]], \"1\", \"0\"],\n    [\"Submenu\", [5], \"#USER:MENU_COMMS_2\", -5, [], \"1\", \"1\"]\n];\n\nMENU_COMMS_2 =\n[\n    [\"Submenu\", false],\n    [\"Option 1\", [2], \"\", -5, [[\"expression\", \"hint 'Option 1';\"]], \"1\", \"1\"],\n    [\"Option 2\", [3], \"\", -5, [[\"expression\", \"hint 'Option 2';\"]], \"1\", \"1\"],\n    [\"Option 3\", [4], \"\", -5, [[\"expression\", \"hint 'Option 3';\"]], \"1\", \"1\"]\n];\n```\n\n```sqf\nshowCommandingMenu \"#USER:MENU_COMMS_1\"; // displays the custom menu\n```"},{"heading":"Existing Submenus","level":5,"markdown":"Some of the existing submenus:\n\n| Menu | Menu Location |\n|---|---|\n| \"#User:BIS_fnc_addCommMenuItem_menu\" | Group/Reply communication menu /High Command Group reply menu |\n| \"#User:BIS_MENU_GroupCommunication\" | High Command/UAV Reply communication menu |\n| \"#USER:BIS_VR_commMenu_1\" | VR Training Mission menu |\n| \"#USER:HCWPWaitRadio\" | High Command/UAV Waypoints waitRadio menu |\n| \"#USER:HCWPWaitUntil\" | High Command/UAV Waypoints waitUnitl menu |\n| \"#USER:HC_Custom_0\" | High Command/UAV Action menu |\n| \"#USER:HC_Missions_0\" | High Command/UAV Missions menu |\n| \"#USER:HC_Targets_0\" | High Command/UAV Targets menu |\n| \"#USER:BIS_fnc_kbMenu_menu\" | Conversation menu |\n| \"#USER:BIS_MENU_SOM_SecOps\" | Communication menu |\n| \"#USER:BIS_MENU_SOM_Support\" | Communication Support menu |"}],"categories":["Arma 3: Editing"],"groups":["General"]}