getPlayerUID: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Undo revision 90936 by Ebay (talk) cannot confirm)
m (Text replacement - "{{Inline code|" to "{{ic|")
(30 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma2 |= Game name
| arma2


|1.02|= Game version
|1.02
____________________________________________________________________________________________


| Return an uniqueID of the given unit as string if it's player and empty value if it's AI. The unique ID may be up to 100 characters long and may contain numbers, uppercase letters and underscores (the value can be used to construct a valid variable name by appending to another valid variable name).
|gr1 = Multiplayer
<br><br>
Note: while for [[ArmA 2]] or [[ArmA 2: Operation Arrowhead]] until version 1.60 the result always contains a number, it should be always handled as an opaque string. Converting it to a [[Number]] can cause precision problems, as Number cannot accurately represent integers above 16777216 (2^24). Moreover, game versions since [[ArmA 2: Operation Arrowhead]] 1.61 provide a non-numeric value as a result.|= Description
____________________________________________________________________________________________


| '''getPlayerUID''' unit |= Syntax
|arg= global


|p1= unit: [[Object]] |= PARAMETER1
| Return a UniqueID of the given unit (player).


|p2= |= PARAMETER2
{{Feature|important|Up until [[{{arma2oa}}]] v1.60, the result always consisted of a [[str|stringified]] number (see [[getPlayerUIDOld]]), but always had to be considered and processed as a [[String]].<!--
--> Converting it to a [[Number]] could cause precision problems, as [[Number]] cannot accurately represent integers above 16777216 (2<sup>24</sup>).<!--
--> Moreover, games since [[{{arma2oa}}]] v1.61 provide a value that is not all-numeric.}}


|p3= |= PARAMETER3
{{Feature|arma3|The returned string is the player's steamID64:
<code>[[private]] _steamProfileUrl {{=}} "http://<nowiki/>steamcommunity.com/profiles/" + ([[getPlayerUID]] [[player]]);</code>}}


| [[String]] ("_SP_AI_", "_SP_PLAYER_" in SP, "" or UID number string in MP)
|pr= In some cases, the identity of certain player units might fail to propagate to other clients and the server,
|= RETURNVALUE
which causes [[isPlayer]] and [[getPlayerUID]] to incorrectly return <tt>[[false]]</tt> and <tt>""</tt> respectively,
where the affected units are [[not]] [[local]] - see [https://github.com/michail-nikolaev/task-force-arma-3-radio/issues/1096 this bug report (GitHub)].
Therefore, beware of false negatives.


|x1= <code>_uid <nowiki>=</nowiki> '''getPlayerUID''' [[player]];</code> |= Example 1
| [[getPlayerUID]] unit


____________________________________________________________________________________________
|p1= unit: [[Object]]


| [[getPlayerUIDOld]] |= SEEALSO
| [[String]] "_SP_AI_" or "_SP_PLAYER_" in SP, "" or UID in MP.<br>
The unique ID may be up to 100 characters long and may contain numbers, uppercase letters and underscores.<br>
The value can be used to construct a valid variable name by appending to another valid variable name,<br>
e.g {{ic|[[missionNamespace]] [[setVariable]] ["TAG_player" + _uid, _unit];}}


|mp=   |= MPBEHAVIOUR
|x1= <code>[[private]] _uid = [[getPlayerUID]] [[player]];</code>
____________________________________________________________________________________________
 
|seealso= [[BIS_fnc_getUnitByUID]], [[getPlayerUIDOld]], [[getClientState]], [[getClientStateNumber]]
}}
}}


<h3 style='display:none'>Notes</h3>
<dl class='command_description'>
<!-- Note Section BEGIN -->
<dd class="notedate">Posted on April 17, 2014 - 22:29
<dt class="note">'''[[User:Master85|Master85]] ([[User talk:Master85|talk]])'''<dd class="note">In Arma 3 the returned string is the steamID64 of the player. <code> _steamProfileUrl <nowiki>= "http://steamcommunity.com/profiles/"</nowiki> + ([[getPlayerUID]] [[player]]);</code>
<!-- Note Section END -->
</dl>


<h3 style='display:none'>Bottom Section</h3>
{{GameCategory|arma3|Scripting Commands}}
[[Category:ArmA 2: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
{{GameCategory|tkoh|Scripting Commands}}
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Multiplayer|{{uc:{{PAGENAME}}}}]]

Revision as of 19:10, 27 February 2021

Hover & click on the images for description

Description

Description:
Description needed
Problems:
In some cases, the identity of certain player units might fail to propagate to other clients and the server, which causes isPlayer and getPlayerUID to incorrectly return false and "" respectively, where the affected units are not local - see this bug report (GitHub). Therefore, beware of false negatives.
Groups:
Multiplayer

Syntax

Syntax:
Syntax needed
Parameters:
unit: Object
Return Value:
Return value needed

Examples

Example 1:
private _uid = getPlayerUID player;

Additional Information

See also:
BIS_fnc_getUnitByUIDgetPlayerUIDOldgetClientStategetClientStateNumber

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