Communication Menu – Arma 3
Lou Montana (talk | contribs) m (Text replacement - "[[Arma 3 " to "[[Arma 3: ") |
Lou Montana (talk | contribs) (Fix Expression Arguments and Submenus) |
||
| Line 203: | Line 203: | ||
== | == Add Menu Item == | ||
Use following functions to add the item in your mission or system: | Use the following functions to add the item in your mission or system: | ||
* [[BIS_fnc_addCommMenuItem]] | * [[BIS_fnc_addCommMenuItem]] | ||
* [[BIS_fnc_removeCommMenuItem]] | * [[BIS_fnc_removeCommMenuItem]] | ||
| Line 211: | Line 211: | ||
Number of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports. | Number of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports. | ||
{{Feature|informative|See all {{Link|Category:Function Group: Communication Menu|Communication Menu}} functions.}} | |||
=== Submenu === | === Submenu === | ||
< | ==== Config ==== | ||
<syntaxhighlight lang="cpp"> | |||
submenu = "#USER:MENU_COMMS_1"; // "MENU_COMMS_1" is just a global variable, can be named anything | |||
</syntaxhighlight> | |||
==== SQF ==== | |||
A submenu is an array in format [menuInfo, item1, item2, ... itemX]: | |||
* menuInfo: [[Array]] format [menuName, hasInputFocus]: | |||
** menuName: [[String]] | |||
** hasInputFocus: [[Boolean]] - as of {{arma3}} v1.05, if "has input focus" is false, custom icons are not displayed | |||
* itemX: [[Array]] format [itemName, assignedKey, submenuName, command, expression, isVisible, isActive, iconPath]: | |||
** itemName: [[String]] - displayed title | |||
** assignedKey: [[Array]] of [[Number]]s (see [[DIK KeyCodes]]) - e.g 0 = no key, 1 = {{Controls|Esc}}, etc | |||
** submenuName: [[String]] - user menu name string (e.g "#USER:MY_SUBMENU_NAME"), "" for script to execute. | |||
** command: [[Number]] - for main menu, -1 = CMD_SEPARATOR, -2 = CMD_NOTHING, -3 = CMD_HIDE_MENU, -4 = CMD_BACK, -5 (custom menu only) = CMD_EXECUTE | |||
** expression: [[Array]] of [[String]]s format [type, codeString]: | |||
*** type: [[String]] - the <sqf inline>"expression"</sqf> string, always | |||
*** codeString: [[String]] - {{Link|SQF Syntax|SQF}} code in string format (see e.g {{Link|toString#Syntax_2|toString}}); the expression has predefined variables: | |||
**** _caller: [[Object]] - unit which called the item, usually [[player]] | |||
**** _pos: [[Array]] in format [[Position]] - cursor position | |||
**** _target: [[Object]] - cursor target | |||
**** _is3D: [[Boolean]] - [[true]] when in 3D scene, [[false]] when in map | |||
**** _id: [[String]] - item ID as returned by [[BIS_fnc_addCommMenuItem]] function | |||
** isVisible: [[String]] - visibility condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround" | |||
** isActive: [[String]] - enabled condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround" | |||
** iconPath: [[String]] - (Optional, default "") cursor icon path for this menu item | |||
; Example | |||
<sqf> | <sqf> | ||
MENU_COMMS_1 = | MENU_COMMS_1 = | ||
[ | [ | ||
["MenuName", false], | ["MenuName", false], | ||
["Teleport", [2], "", -5, [["expression", "player setPos _pos;"]], "1", "1", "\A3\ui_f\data\IGUI\Cfg\Cursors\iconcursorsupport_ca.paa"], | ["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"], | ["Kill Target", [3], "", -5, [["expression", "_target setDamage 1;"]], "1", "1", "\A3\ui_f\data\IGUI\Cfg\Cursors\iconcursorsupport_ca.paa"], | ||
| Line 259: | Line 261: | ||
]; | ]; | ||
</sqf> | </sqf> | ||
<sqf>showCommandingMenu "#USER:MENU_COMMS_1"; // displays the custom menu</sqf> | |||
==== Existing Submenus ==== | ==== Existing Submenus ==== | ||
Some of the existing submenus | Some of the existing submenus: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Latest revision as of 13:53, 25 October 2025
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 ~ and select "Communication" item
- Press 8 then 1 (Reply - Communication)
Available items are announced upon adding by a notification and remain visualized as icons next to the commanding menu.
Configuration
Config
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).
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.
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:
Number of slots is limited to 10, no pagination is implemented. Larger number is an edge case, no mission should need as many supports.
Config
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 format [menuName, hasInputFocus]:
- itemX: Array format [itemName, assignedKey, submenuName, command, expression, isVisible, isActive, iconPath]:
- itemName: String - displayed title
- assignedKey: Array of Numbers (see DIK KeyCodes) - e.g 0 = no key, 1 = Esc, etc
- submenuName: String - user menu name string (e.g "#USER:MY_SUBMENU_NAME"), "" for script to execute.
- command: Number - for main menu, -1 = CMD_SEPARATOR, -2 = CMD_NOTHING, -3 = CMD_HIDE_MENU, -4 = CMD_BACK, -5 (custom menu only) = CMD_EXECUTE
- expression: Array of Strings format [type, codeString]:
- isVisible: String - visibility condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround"
- isActive: String - enabled condition; "1" for true, "0" for false, or optional argument string e.g "CursorOnGround"
- iconPath: String - (Optional, default "") cursor icon path for this menu item
- Example
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 |