createMarker: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\[\[Category:[ _]?Scripting[ _]Commands[ _]Arma[ _]2(\|.*)]]" to "{{GameCategory|arma2|Scripting Commands}}")
(Another drive-by edit. Reworked description and parameters.)
Line 11: Line 11:
____________________________________________________________________________________________
____________________________________________________________________________________________


| Creates a new map marker at the given position. '''The marker will be created for every player on network as well as JIP'''. The marker name has to be unique, if a marker with the given name exists, the command will be ignored. Use [[deleteMarker]] to delete global marker.
| Creates a new map marker at the given position. The marker will be created for every connected player as well as all JIP players. The marker name has to be unique; the command will be ignored if a marker with the given name already exists.
{{Important|The marker will be visible once at least [[markerType]] has been defined:
 
<div><code>_markerName {{=}} [[createMarker]] ["markername", [[player]]];
{{Important|The marker will be visible only once at least [[markerType]] has been defined:
_markerName [[setMarkerType]] "hd_dot";</code></div>}}
<div><code>_marker <nowiki>=</nowiki> [[createMarker]] ["markername", [[player]]]; {{cc|Not visible yet.}}
{{Informative|If position is given in 3D format, the <tt>z</tt> coordinate is stored with the marker and will be used when marker is passed to commands like [[createVehicle]], [[createUnit]], [[createAgent]], [[createMine]], [[setVehiclePosition]] for example. When marker is manually placed in the editor, <tt>z</tt> is 0, which means it is placed on the ground. However when user manually places marker on the map in game, it is placed on the water, so <tt>z</tt> of the marker will be: <tt>[[-]][[getTerrainHeightASL]] [[markerPos]] &lt;USERMARKER&gt;</tt>}}
_marker [[setMarkerType]] "hd_dot"; {{cc|Visible.}}</code></div>}}
 
{{Informative|If the marker position is given in 3D format, the <tt>z</tt>-coordinate is stored with the marker and will be used when the marker is passed to commands such as [[createVehicle]], [[createUnit]], [[createAgent]], [[createMine]] or [[setVehiclePosition]].<br>When a marker is manually placed in the editor, <tt>z</tt> is always 0, which means the marker is placed on the ground. But when the player places a marker on the map in game, it is placed at sea level, so the <tt>z</tt>-coordinate of that marker is {{Inline code|[[-]][[getTerrainHeightASL]] [[markerPos]] &lt;USERMARKER&gt;}}.}}
 
{{Informative|'''Multiplayer optimisation:''' Global marker commands always broadcast the ''entire'' marker state over the network. As such, the number of network messages exchanged when creating or editing a marker can be reduced by performing all but the last operation using local marker commands, then using a global marker command for the last change (and subsequent global broadcast of all changes applied to the marker).}}
{{Informative|'''Multiplayer optimisation:''' Global marker commands always broadcast the ''entire'' marker state over the network. As such, the number of network messages exchanged when creating or editing a marker can be reduced by performing all but the last operation using local marker commands, then using a global marker command for the last change (and subsequent global broadcast of all changes applied to the marker).}}
|Description=
|Description=
Line 22: Line 25:
| [[createMarker]] [name, position, channel, creator] |Syntax=
| [[createMarker]] [name, position, channel, creator] |Syntax=


|p1= [name, position, channel, creator]: [[Array]] |Parameter 1=
|p1= '''name''': [[String]] The marker's name, used to reference the marker in scripts. |Parameter 1=


|p2= name: [[String]] |Parameter 2=
|p2= '''position''': [[Array]] or [[Object]] - [[Position2D]], [[PositionAGL]] or [[Object]]. In case of object, the object's [[PositionWorld]] is used. |Parameter 2=


|p3= position: [[Array]] or [[Object]] - format position: [[Position2D]], [[PositionAGL]] or [[Object]] (object's [[PositionWorld]] is used)|Parameter 3=
|p3= '''channel''' (Optional): [[Number]] (See also [[Channel IDs]]) - The marker channel for MP ({{since|arma3|2.01.146752}}). |Parameter 3=


|p4= channel: [[Number]] - (Optional) The marker channel for MP. {{since|arma3|2.01.146752}}|Parameter 4=
|p4= '''creator''' (Optional): [[Object]] - The marker creator for MP ({{since|arma3|2.01.146752}}). |Parameter 4=
 
|p5= creator: [[Object]] - (Optional) The marker creator for MP. {{since|arma3|2.01.146752}}|Parameter 5=


| [[String]] |Return value=
| [[String]] |Return value=
Line 38: Line 39:
|x2= <code>_marker2 = [[createMarker]] ["Marker2", [[player]]]; {{codecomment|// since {{arma3}} v1.50}}</code> |Example 2=
|x2= <code>_marker2 = [[createMarker]] ["Marker2", [[player]]]; {{codecomment|// since {{arma3}} v1.50}}</code> |Example 2=
____________________________________________________________________________________________
____________________________________________________________________________________________
|mp= [[createMarker]] is global, use [[createMarkerLocal]] if you want to create a [[local]] marker. |multiplayer=


| [[allMapMarkers]], [[deleteMarker]], [[createMarkerLocal]]
| [[allMapMarkers]], [[deleteMarker]], [[createMarkerLocal]]

Revision as of 19:29, 8 January 2021

Hover & click on the images for description

Description

Description:
Creates a new map marker at the given position. The marker will be created for every connected player as well as all JIP players. The marker name has to be unique; the command will be ignored if a marker with the given name already exists.
The marker will be visible only once at least markerType has been defined:
_marker = createMarker ["markername", player]; // Not visible yet. _marker setMarkerType "hd_dot"; // Visible.
If the marker position is given in 3D format, the z-coordinate is stored with the marker and will be used when the marker is passed to commands such as createVehicle, createUnit, createAgent, createMine or setVehiclePosition.
When a marker is manually placed in the editor, z is always 0, which means the marker is placed on the ground. But when the player places a marker on the map in game, it is placed at sea level, so the z-coordinate of that marker is -getTerrainHeightASL markerPos <USERMARKER>.
Multiplayer optimisation: Global marker commands always broadcast the entire marker state over the network. As such, the number of network messages exchanged when creating or editing a marker can be reduced by performing all but the last operation using local marker commands, then using a global marker command for the last change (and subsequent global broadcast of all changes applied to the marker).
Groups:
Markers

Syntax

Syntax:
createMarker [name, position, channel, creator]
Parameters:
name: String The marker's name, used to reference the marker in scripts.
position: Array or Object - Position2D, PositionAGL or Object. In case of object, the object's PositionWorld is used.
channel (Optional): Number (See also Channel IDs) - The marker channel for MP (Template:since).
creator (Optional): Object - The marker creator for MP (Template:since).
Return Value:
String

Examples

Example 1:
_marker1 = createMarker ["Marker1", position player];
Example 2:
_marker2 = createMarker ["Marker2", player]; // since Arma 3 v1.50

Additional Information

See also:
allMapMarkersdeleteMarkercreateMarkerLocal setMarkerBrushsetMarkerColorsetMarkerDir setMarkerPossetMarkerShapesetMarkerSize setMarkerTextsetMarkerTypesetMarkerAlphaBIS_fnc_markerToStringBIS_fnc_stringToMarker

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

Notes

Posted on September 19, 2015 - 21:02 (UTC)
Soldia (JP)
createMarker accepts an object as position parameter as well (A3 - 1.50.131969). You could try this with the following code (both SP/MP) _markerstr = createMarker ["markername", player]; _markerstr setMarkerShape "RECTANGLE"; _markerstr setMarkerSize [100, 100];
Posted on May 28, 2018 - 11:57 (UTC)
x39
In Arma 3, one can create markers which are deletable by the user by prefixing the name with `_USER_DEFINED`. Example: createMarker "_USER_DEFINED someMarkerName"


Bottom Section

Posted on April 11, 2019 - 07:10 (UTC)
killzone_kid
Passing object as argument for position may produce slightly different position than when explicitly obtaining object position via position commands, as in createMarker ["marker1", _obj] may slightly differ from createMarker ["marker1", ASLtoAGL getPosASL _obj] This is because when object passed as position, the raw getPosWorld is used createMarker ["marker1", ASLtoAGL getPosWorld _obj] will produce identical result in this case, but may not be what is required
Posted on May 3, 2019 - 15:53 (UTC)
7erra
Arma 3 logo black.png1.92 There is a new function with which you can create a marker with all settings applied in one step: BIS_fnc_stringToMarker and BIS_fnc_stringToMarkerLocal