WoW:API UnitGUID: Difference between revisions

2,167 bytes added ,  9 April 2008
m
(Updated with new information)
Line 9: Line 9:
The GUID is a unique hexadecimal string for each unit in the game.
The GUID is a unique hexadecimal string for each unit in the game.


The strings seems to always begin with '0x', which is the normal prefix for hexadecimal numbers.
The strings always begin with '0x', which is the normal prefix for hexadecimal numbers. The '0x' prefix isn't actually part of the string, it's just to say "this is a hex string."


I don't know the purpose of the next two digits; seems to be 'F1' for everything except players, which are '00'.


The digit after that appears to depend on what the unit is used for. Players seem to have '0', NPCs, monsters, critters, and non-combat pets seem to have '3', and player pets and minions seem to have '4'
=== Format for players ===
'.
* The GUID is a simple number in the order characters are created. An older character has a lower number than a new.


The next seven digits seem to be the unit's type, which is always the same for any unit of that type, regardless of locale.
It's possible that the first four to six digits are reserved and always has to be '0', which would limit the amount of characters able to be stored, but it's still a very very very high amount of available space. Reserving the first bits and always make them '0' would make it very easy to always identify a character.


''Note:'' 7 nibbles implies that 3 and a half bytes are used for this field, which is kind of an odd number. Also, this is larger than the following field, which only has 6 digits, which is even more odd as one would expect there to be more units than unit types. So, this might actually be some unknown digit followed by 6 digits for the unit type.
Renaming and transfering to another server, or to another account gives your character a new GUID. It's possible that the GUIDs are stored globally, either per datacenter or even per region. It's also possible that there are some reserved bits in there which makes the number higher than it really is.


The next six digits seem to be more or less random, and are probably assigned sequentially each time the server creates a unit.
Restoring a character from backup is untested wether it restores the old GUID or not.
 
 
=== Format for non-pet NPCs ===
* The first two digits seems to be 'F1' or 'F3'.
* The next digit seems to always be '3'.
* The next three digits are unknown. It's usually '000'.
* The next four digits are the NPC id.
* The last six digits are the spawn counter.
 
I couldn't find any logic behind why some NPCs are 'F1' and some are 'F3'. From my testing it seems that 'F1' is more common, but there are some places where I found an 'F1' mob right next to an 'F3' mob. If you take the 'NPC id' and convert it to decimal you can check wowhead and see what NPC it is. See examples below.
 
 
=== Format for pets ===
* The first two digits seem to be 'F1'.
* The next digit is always '4'.
* The next seven digits are unknown.
* The last six digits are the spawn counter.
 
I haven't found any pet that starts with 'F3', like non-pet NPCs. It's possible that the seven digits that at this point are unknown are split into smaller pieces. I couldn't find any structure among them, but looking at non-pet NPCs I'd imagine that the NPC id is there somewhere but I couldn't find it.
 
== Spawn counter ==
 
Spawn counter is a unique number given all non-player mobs. It's a simple incremental number, instances and outside world are probably handled differently. The number in itself is not relevant, but combined with the rest of the string it always give this exact mob a unique identifier.
 
 
== An example of a GUID ==
 
We have a GUID: "0xF530004D2B008852".
 
From that we know the following: This is a non-pet NPC. It can't be a player because the first two characters are 'F5', players have '00'. The third character is not '3' for NPCs and not '4' for pets.
 
We can extract the Unit ID by taking the sixth to tenth digit and converting it to decimal form: "4D2B", or converted to decimal form "19755". A quick visit to wowhead shows that the NPC with that id is "Mo'arg Weaponsmith", [http://www.wowhead.com/?npc=19755]. All "Mo'arg Weaponsmiths" will have that id to identify them.
 
The last six digits, "008852" is the spawn counter. There will never be two "Mo'arg Weaponsmith", possible even never two mobs in the outside world, with the same spawn number.


== Speculations ==
== Speculations ==
Anonymous user