UserData Bits: Difference between revisions

From OuroDev
(Created page with "UserData is the set of 128 bits that indicate user flags such as "Owns CoV", "Has Pocket D VIP pass", etc. The field user_data on player accounts is formatted as follows. ==...")
 
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
UserData is the set of 128 bits that indicate user flags such as "Owns CoV", "Has Pocket D VIP pass", etc. The field user_data on player accounts is formatted as follows.
UserData is the set of 128 bytes that indicate user flags such as "Owns CoV", "Has Pocket D VIP pass", etc. The field user_data on player accounts is formatted as follows.


== Format ==
== Format ==


There are 128 bits. If you're rusty on terminology, a word is 4 bytes; a byte is 2 nibbles, or 8 bits; and a nibble is 4 bits. Thus, there are 4 words in the user data.
There are 128 bytes. If you're rusty on terminology, a word is 4 bytes; a byte is 2 nibbles, or 8 bits; and a nibble is 4 bits. Thus, there are 16 words in the user data, of which 4 are used.


On the client, data from the auth server has every nibble swapped. So for example, if your Word 3 was 0x00b08080, the nibble-swapped version is 0x000b0808. This means bit 32 is 1 (has CoH), and bit 24 is 1 (has CoV).
On the client, data from the auth server has every nibble swapped. So for example, if your Word 3 was 0x00b08080, the nibble-swapped version is 0x000b0808. This means bit 31 is 1 (has CoH), and bit 23 is 1 (has CoV). This is subject to change depending on AuthServer2.


In the vanilla database, there's two fields - "user_data" (16 bytes) and "user_data_new" (112 bytes). The auth server concatenates these together to send to the client. In CoX, only the first 16 bytes are used, but this does open up future functionality.
In the vanilla database, there's two fields - "user_data" (16 bytes) and "user_data_new" (112 bytes). The auth server concatenates these together to send to the client. In CoX, only the first 16 bytes are used, but this does open up future functionality.
Line 15: Line 15:
* 0-10 - Unused
* 0-10 - Unused
* 11 - Coralax Boss Costume
* 11 - Coralax Boss Costume
* 12 - Vahzilok Meat Doc Costume
* 12 - [https://paragonwiki.com/wiki/Vahzilok_Costume Vahzilok Meat Doc Costume]
* 13 - Rikti Costume
* 13 - Rikti Costume
* 14 - Ghoul Costume
* 14 - Ghoul Costume
Line 24: Line 24:
* 19 - GR_PO_WILL_CLOCKWORK
* 19 - GR_PO_WILL_CLOCKWORK
* 20 - GR_PO_WILL_MIGHT_EMPIRE
* 20 - GR_PO_WILL_MIGHT_EMPIRE
* 21 - GR_PO_WILL_RESISTANCE (sic)
* 21 - GR_PO_WILL_RESISTANCE
* 22 - Rogue Complete Box
* 22 - Rogue Complete Box
* 23 - Loyalty Reward
* 23 - Loyalty Reward
Line 77: Line 77:
* 14 - Jet Pack
* 14 - Jet Pack
* 15 - Korean Level Minimum (??)
* 15 - Korean Level Minimum (??)
* 16 - Valentine 2006
* 16 - [https://cityofheroes.fandom.com/wiki/Valentine%27s_Day_Event_2006 Valentine 2006]
* 17 - COV Beta
* 17 - COV Beta
* 18 - COV Preorder 1
* 18 - COV Preorder 1
Line 102: Line 102:
* 4 - ACEINHOLE_E
* 4 - ACEINHOLE_E
* 5-31 - Unused
* 5-31 - Unused
=== Word 5+ ===
Unused.
== Game Data ==
Also on the same table is the game_data attribute, which is identical to the user_data formatting. If a bit on this is set, is will override the user_data on the DBserver. Generally, this can start as all 0s. DBServer sometimes tells AuthServer to change these in response to ingame events (like unlocking costumes, etc.)

Latest revision as of 18:39, 28 April 2019

UserData is the set of 128 bytes that indicate user flags such as "Owns CoV", "Has Pocket D VIP pass", etc. The field user_data on player accounts is formatted as follows.

Format

There are 128 bytes. If you're rusty on terminology, a word is 4 bytes; a byte is 2 nibbles, or 8 bits; and a nibble is 4 bits. Thus, there are 16 words in the user data, of which 4 are used.

On the client, data from the auth server has every nibble swapped. So for example, if your Word 3 was 0x00b08080, the nibble-swapped version is 0x000b0808. This means bit 31 is 1 (has CoH), and bit 23 is 1 (has CoV). This is subject to change depending on AuthServer2.

In the vanilla database, there's two fields - "user_data" (16 bytes) and "user_data_new" (112 bytes). The auth server concatenates these together to send to the client. In CoX, only the first 16 bytes are used, but this does open up future functionality.

Reference

Word 1

  • 0-10 - Unused
  • 11 - Coralax Boss Costume
  • 12 - Vahzilok Meat Doc Costume
  • 13 - Rikti Costume
  • 14 - Ghoul Costume
  • 15 - Mutant Pack
  • 16 - Create Primals
  • 17 - Rogue Access
  • 18 - GR_PO_WILL_SEERS
  • 19 - GR_PO_WILL_CLOCKWORK
  • 20 - GR_PO_WILL_MIGHT_EMPIRE
  • 21 - GR_PO_WILL_RESISTANCE
  • 22 - Rogue Complete Box
  • 23 - Loyalty Reward
  • 24 - CON_2009_BIT5
  • 25 - CON_2009_BIT4
  • 26 - CON_2009_BIT3
  • 27 - CON_2009_BIT2
  • 28 - CON_2009_BIT1
  • 29 - Magic Pack
  • 30 - Super Science Pack
  • 31 - Martial Arts Pack

Word 2

  • 0-11 - Months Played (note one of these counts for 3 months)
  • 12 - Recreation Pack
  • 13 - Holiday Pack
  • 14 - Aura Pack
  • 15 - Vanguard Pack
  • 16 - Facepalm
  • 17 - Animal Pack
  • 18 - Limited Rogue Access
  • 19 - Steam Punk
  • 20 - PROMO_2011_A
  • 21 - PROMO_2011_B
  • 22 - PROMO_2011_C
  • 23 - PROMO_2011_D
  • 24 - PROMO_2011_E
  • 25 - PROMO_2012_A
  • 26 - PROMO_2012_B
  • 27 - PROMO_2012_C
  • 28 - PROMO_2012_D
  • 29 - PROMO_2012_E
  • 30-31 - Unused

Word 3

  • 0 - Unused
  • 1 - Alpha Preorder
  • 2 - Cyborg Pack
  • 3 - Mac Pack
  • 4 - Is Retail Account
  • 5 - Target Promo
  • 6 - PAX Promo
  • 7 - GenCon Promo
  • 8 - Comicon Promo
  • 9 - Arachnos Access
  • 10 - Wedding Pack
  • 11 - Trial Account
  • 12 - Pocket D VIP
  • 13 - Jump Pack
  • 14 - Jet Pack
  • 15 - Korean Level Minimum (??)
  • 16 - Valentine 2006
  • 17 - COV Beta
  • 18 - COV Preorder 1
  • 19 - COV Preorder 2
  • 20 - COV Preorder 3
  • 21 - COV Preorder 4
  • 22 - COV Special Edition
  • 23 - Villain Access
  • 24-26 - Preorder
  • 27 - DVD Special Edition
  • 28 - Kheldian Access
  • 29 - Beta
  • 30 - Transfer to EU
  • 31 - Hero Access

Word 4

(Looks reserved).

  • 0 - ACEINHOLE_A
  • 1 - ACEINHOLE_B
  • 2 - ACEINHOLE_C
  • 3 - ACEINHOLE_D
  • 4 - ACEINHOLE_E
  • 5-31 - Unused

Word 5+

Unused.

Game Data

Also on the same table is the game_data attribute, which is identical to the user_data formatting. If a bit on this is set, is will override the user_data on the DBserver. Generally, this can start as all 0s. DBServer sometimes tells AuthServer to change these in response to ingame events (like unlocking costumes, etc.)