See my Multiple OnMapSingleClick script to allow you to add multiple events to the onMapSingleClick event. Some minor editing of the scripts would be required to use them in Arma.
Description
Defines the action performed when user clicks in map by executing command string. The code is executed on every click, until the command is
- removed via
onMapSingleClick "", or - replaced by
onMapSingleClick "SomeOtherCommand(s)"
In Arma 3 the code should return true only if you wish to override default engine handling of the mouse click on map (see #Example 4).
For older games, when click is processed, code should ultimately return true back to the engine. If false is returned, default processing by the game engine is done. Return value of any other type (including Nothing) is an error. In such case default processing by the game engine is done, and error message may be displayed.
Note
Arma 3: Since Arma 3 v1.58 the stackable MapSingleClick Mission Event Handler is available and should be used instead.
Syntax
Syntax 1
onMapSingleClick command
Parameters:
command: String or Code - code executed on click. The following variables are available:- _pos: Position2D - clicked position
- _units: Array of Objects - units which were selected (via function keys) before opening the map (may be non-functional in Arma)
- _shift: Boolean - Whether Shift was pressed when clicking on the map
- _alt: Boolean - Whether Alt was pressed when clicking on the map
Returns: Nothing
Syntax 2
params onMapSingleClick command
Parameters:
params: Anythingcommand: String or Code - code executed on click. The following variables are available:- _this: Anything - Params passed to onMapSingleClick
- _pos: Position2D - clicked position
- _units: Array of Objects - units which were selected (via function keys) before opening the map (may be non-functional in Arma)
- _shift: Boolean - Whether Shift was pressed when clicking on the map
- _alt: Boolean - Whether Alt was pressed when clicking on the map
Returns: Nothing
Examples
Example 1
Armed Assault: Creates a soldier unit at the position clicked:
onMapSingleClick "'SoldierWB' createUnit [_pos, group player]; true";
Example 2
Armed Assault: Orders "grp1" to move to position clicked. Disables further map-click actions:
onMapSingleClick "grp1 move _pos; onMapSingleClick ''; true";
Example 3
Operation Flashpoint: Single quotes cannot be used for string definition, so two double-quotes have to be used instead:
onMapSingleClick "'SoldierWB' createUnit [_pos, group player]; true";
Example 4
// The following code will disable Shift+click waypoint marker creation
onMapSingleClick {_shift};
Example 5
// Pass params to onMapSingleClick code
player onMapSingleClick { hint ("Hello " + name _this) }; // Hello KK
Example 6
// Pass params to onMapSingleClick code -and- disable Shift+click waypoint marker creation
player onMapSingleClick "hint (""Hello "" + name _this); _shift"; // Hello KK
See also
Community notes
_units param is supposed to return what groupSelectedUnits returns. Player must be leader and some units in the group must be selected on the group bar. However selected units are connected with group orders menu, which interferes with map click. In other words, when you click on the main map, the map gets focus and group orders menu closes, deselecting any selected unit, so _units is [] pretty much all the time.