getPlayerUID: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
m (Text replacement - "\{\{Feature *\| *Informative *\| ([^↵]+) *\}\}" to "{{Feature|informative|$1}}")
 
(56 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma2 |= Game name
|game1= arma2
|version1= 1.02


|1.02|= Game version
|game2= arma2oa
____________________________________________________________________________________________
|version2= 1.50


| Return an uniqueID of the given unit as string if it's player and empty value if it's AI. The uniqueID 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).
|game3= tkoh
|version3= 1.00


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
|game4= arma3
____________________________________________________________________________________________
|version4= 0.50


| '''getPlayerUID''' unit |= Syntax
|gr1= Multiplayer


|p1= unit: [[Object]] |= PARAMETER1
|arg= global


|p2= |= PARAMETER2
|descr= Return a UniqueID of the given unit (player).


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


| [[String]] |= RETURNVALUE
{{Feature|important|Prior to [[{{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.}}


{{Feature|informative|Prior to [[Arma 3]] v2.02, in some cases the identity of certain player units could fail to propagate to other clients and the server, which caused [[isPlayer]] and [[getPlayerUID]] to incorrectly return {{hl|[[false]]}} and {{hl|""}} respectively, where the affected units were [[not]] [[local]]. See {{Link|https://github.com/michail-nikolaev/task-force-arma-3-radio/issues/1096|this bug report (GitHub)}} for more info. This was supposedly fixed, but you should remain vigilant toward false negatives nonetheless. }}


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


____________________________________________________________________________________________
|p1= unit: [[Object]]


| |= SEEALSO
|r1= [[String]] - can be "_SP_AI_" or "_SP_PLAYER_" in SP, "" or UID in MP
* 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, e.g <sqf inline>missionNamespace setVariable ["TAG_player" + _uid, _unit];</sqf>


|mp= UID string is returned only in multiplayer.  |= MPBEHAVIOUR
|x1= <sqf>private _uid = getPlayerUID player;</sqf>
____________________________________________________________________________________________
 
|seealso= [[BIS_fnc_getUnitByUID]] [[getPlayerUIDOld]] [[getClientState]] [[getClientStateNumber]]
}}
}}
<h3 style='display:none'>Notes</h3>
<dl class='command_description'>
<!-- Note Section BEGIN -->
<!-- Note Section END -->
</dl>
<h3 style='display:none'>Bottom Section</h3>
[[Category:ArmA 2: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Multiplayer|{{uc:{{PAGENAME}}}}]]

Latest revision as of 18:11, 15 March 2024

Hover & click on the images for description

Description

Description:
Return a UniqueID of the given unit (player).
Arma 3
The returned string is the player's steamID64: private _steamProfileUrl = "http://steamcommunity.com/profiles/" + (getPlayerUID player);
Prior to Arma 2: Operation Arrowhead v1.60, the result always consisted of a 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 (224). Moreover, games since Arma 2: Operation Arrowhead v1.61 provide a value that is not all-numeric.
Prior to Arma 3 v2.02, in some cases the identity of certain player units could fail to propagate to other clients and the server, which caused isPlayer and getPlayerUID to incorrectly return false and "" respectively, where the affected units were not local. See this bug report (GitHub) for more info. This was supposedly fixed, but you should remain vigilant toward false negatives nonetheless.
Groups:
Multiplayer

Syntax

Syntax:
getPlayerUID unit
Parameters:
unit: Object
Return Value:
String - can be "_SP_AI_" or "_SP_PLAYER_" in SP, "" or UID in MP
  • 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, e.g missionNamespace setVariable ["TAG_player" + _uid, _unit];

Examples

Example 1:
private _uid = getPlayerUID player;

Additional Information

See also:
BIS_fnc_getUnitByUID getPlayerUIDOld getClientState getClientStateNumber

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