Skip to content

Messages Pregame

rebaserHEAD edited this page Oct 17, 2026 · 9 revisions

reference, committed verified 2026-10-17 bootstrap 48bb36d

Every message in the Pregame area: its opcode, direction, how far it is verified, and its fields.

Note

Generated from the message declarations at bootstrap 48bb36d by Tools/NexusTomorrow.ProtocolReference. Don't edit it by hand: change the declaration's documentation and regenerate.

Server to client

0x0015 Server0015

Opcode Direction Verified to
0x0015 server to client unverified
Field Bits Encoding
Unknown0 5 unsigned
Unknown1 32 unsigned

0x0036 CreationLevelLimit

A level that limits the character creation options the client offers.

Opcode Direction Verified to
0x0036 server to client fields
Field Bits Encoding Meaning
Level 32 unsigned The level. Of the creation options that need no entitlement, the client offers only those whose starting level is at most this, or at most 1 when it is 0.

0x0076 LoginEnvelope

A server message encrypted with the login connection's key.

Opcode Direction Verified to
0x0076 server to client fields
Field Bits Encoding Meaning
Payload varies byte block, 32-bit length, the length counts itself One whole message, which begins with its own 32-bit length (counting those four bytes). The length travels in clear and the bytes after it are encrypted with the login connection's key; the client decrypts them and handles the result as that message.

The client picks the key by opcode, not by the connection the envelope arrives on. Every server message but a ServerHello on the login connection arrives inside this or WorldEnvelope (0x03DC); the client drops any other message that arrives bare.

0x00AD EnterWorld

Moves the player into a world: on character select, the answer to CharacterSelect; in the world, a change of world.

Opcode Direction Verified to
0x00AD server to client fields
Field Bits Encoding Meaning
WorldId 15 unsigned The world, as an id in the client's World table.
Position.X 32 float A point in the world. The client hands it to the world it loads on every update, until it replaces it with a point of its own.
Position.Y 32 float
Position.Z 32 float
Unknown2 32 float The client gives this value no meaning.
Unknown3 32 float The client gives this value no meaning.

On character select the client takes it only while a selection is pending, shows the world's loading screen and loads the world.

0x00DC CharacterCreateResult

The answer to CharacterCreate. On success the client selects the new character.

Opcode Direction Verified to
0x00DC server to client fields
Field Bits Encoding Meaning
CharacterId 64 unsigned The new character's id, which the client then selects.
Unknown1 32 unsigned The client gives this value no meaning.
Result 6 unsigned The result. 3 means the character was created. Any other value is a failure the client hands to its interface, which has a message of its own for 6 (the name is taken), 9 (the account is full), 10 (the name is not allowed), 11 (refused because of the character's faction) and 44 (a character is online), and a general message for the rest.

Taken only while a creation is pending.

0x00E6 CharacterDeleteResult

The answer to CharacterDelete.

Opcode Direction Verified to
0x00E6 server to client fields
Field Bits Encoding Meaning
Result 6 unsigned The result. 0 means the character was deleted: the client removes it from its list. The interface has a message of its own for 2 (the character leads a guild) and 42 (the character is online), and a general message for the rest.
Count 32 unsigned A number the interface puts into result 2's message; it reads it for no other result.

Taken only while a deletion is pending.

0x00E7 CharacterDisabled

Marks one listed character disabled or enabled on character select.

Opcode Direction Verified to
0x00E7 server to client fields
Field Bits Encoding Meaning
CharacterId 64 unsigned The character, as listed in the character list (0x0117).
Disabled 1 unsigned Whether the character is disabled; the client keeps the flag with the character and shows it.

Taken in any state; a character the list does not hold is ignored.

0x0116 DeletedCharacterList

The account's deleted characters, kept for the character-select interface to look up.

Opcode Direction Verified to
0x0116 server to client fields
Field Bits Encoding Meaning
Characters count 32 unsigned
Characters array, counted by Characters count The deleted characters.
Characters[].Unknown0 64 unsigned The client gives this value no meaning.
Characters[].Unknown1 32 unsigned The client gives this value no meaning.
Characters[].Name varies wide string The character's name.
Characters[].Level 32 unsigned The character's level.
Characters[].ClassId 14 unsigned The character's class id.
Characters[].RaceId 14 unsigned The character's race id.
Characters[].GenderId 2 unsigned The character's gender id.
Characters[].FactionId 14 unsigned The character's faction id.
Characters[].PathId 3 unsigned The character's path id.
Characters[].WorldId 15 unsigned The world the character was in.
Characters[].WorldZoneId 15 unsigned The zone the character was in, as a world zone id.
Characters[].Unknown11 32 float The client gives this value no meaning. It hands it to its interface as the character's purge date.

Taken while character select is active; the client replaces the list it holds and raises nothing. No interface script looks the list up.

0x0117 CharacterList

The account's characters and its character creation options, the answer to CharacterListRequest. The client replaces its list with this one.

Opcode Direction Verified to
0x0117 server to client fields
Field Bits Encoding Meaning
ServerTime 64 unsigned The server's clock, as a Windows file time. The client keeps its difference from its own clock.
Characters count 32 unsigned
Characters array, counted by Characters count The account's characters.
Characters[].CharacterId 64 unsigned The character's id, which the client sends back to select, delete or rename it.
Characters[].Name varies wide string The character's name.
Characters[].GenderId 2 unsigned The character's gender id.
Characters[].RaceId 5 unsigned The character's race id.
Characters[].ClassId 5 unsigned The character's class id.
Characters[].FactionId 32 unsigned The character's faction id.
Characters[].Level 32 unsigned The character's level.
Characters[].PlainItems count 32 unsigned
Characters[].PlainItems array, counted by Characters[].PlainItems count Items that set a slot's look only: the client reads each item's slot and display id here, and neither colour field.
Characters[].PlainItems[].Slot 7 unsigned The item slot, 0 to 71.
Characters[].PlainItems[].DisplayId 15 unsigned The look to show in the slot, as a display id.
Characters[].PlainItems[].ColorSetId 14 unsigned A colour set, as an id in the ItemColorSet table, used when Color is 0.
Characters[].PlainItems[].Color 32 unsigned The slot's colour, with the top bit set and three 10-bit channels below it; 0 means the colour comes from ColorSetId.
Characters[].ColoredItems count 32 unsigned
Characters[].ColoredItems array, counted by Characters[].ColoredItems count Items that set a slot's look and colour, applied after PlainItems and over it for the same slot.
Characters[].ColoredItems[].Slot 7 unsigned The item slot, 0 to 71.
Characters[].ColoredItems[].DisplayId 15 unsigned The look to show in the slot, as a display id.
Characters[].ColoredItems[].ColorSetId 14 unsigned A colour set, as an id in the ItemColorSet table, used when Color is 0.
Characters[].ColoredItems[].Color 32 unsigned The slot's colour, with the top bit set and three 10-bit channels below it; 0 means the colour comes from ColorSetId.
Characters[].WorldId 15 unsigned The world the character is in.
Characters[].ZoneId 15 unsigned A zone id the client uses, with WorldId and Position, to pick the zone whose name it hands to its interface.
Characters[].Unknown11 14 unsigned The client gives this value no meaning.
Characters[].Position.X 32 float A point the client uses, x and z only, with WorldId and ZoneId, to pick the zone whose name it hands to its interface.
Characters[].Position.Y 32 float
Characters[].Position.Z 32 float
Characters[].Unknown13 32 float The client gives this value no meaning.
Characters[].Unknown14 32 float The client gives this value no meaning.
Characters[].PathId 3 unsigned The character's path id.
Characters[].Disabled 1 unsigned Whether the character is disabled; CharacterDisabled updates it.
Characters[].RequiresRename 1 unsigned Whether the character must be renamed; a successful rename clears it.
Characters[].CostumeMask 32 unsigned Which costume entries the character shows: bit i set shows entry i of CostumeItems, clear empties its slot. Entries 0 to 5 are item slots 1 to 6 and entry 6 is slot 20.
Characters[].CostumeCount 4 unsigned; counts Characters[].CostumeItems, Characters[].CostumeColors How many costume entries follow; the client uses at most seven.
Characters[].CostumeItems array, counted by Characters[].CostumeCount The costume's items, one per entry, as ids in the Item2 table.
Characters[].CostumeItems[] 32 unsigned
Characters[].CostumeColors array, counted by Characters[].CostumeCount A colour per costume entry, laid over its item's own colour.
Characters[].CostumeColors[] 32 unsigned
Characters[].Bones count 32 unsigned
Characters[].Bones array, counted by Characters[].Bones count Values the client applies to the character's model.
Characters[].Bones[] 32 float
Characters[].LastLoggedOutDays 32 float Days relative to when the list arrives, negative in the past; 0 hands nothing over. The client hands it to its interface as the character's last logout, and the interface first selects the character with the largest value.
OfferedCreationIds count 32 unsigned
OfferedCreationIds array, counted by OfferedCreationIds count Character creation options to add to those the client considers, as ids in the CharacterCreation table.
OfferedCreationIds[] 32 unsigned
WithheldCreationIds count 32 unsigned
WithheldCreationIds array, counted by WithheldCreationIds count Character creation options to withhold, as ids in the CharacterCreation table.
WithheldCreationIds[] 32 unsigned
RealmId 14 unsigned A realm id; the client takes it as its current realm when a character is selected.
Removal the fields below A character the client hands to its interface with RemovalTime, when both parts are not 0 and the character is listed.
Removal.Unknown0 14 unsigned The client gives this value no meaning. The client uses the pair only when this is not 0.
Removal.CharacterId 64 unsigned The character, as listed in Characters.
RemovalTime 32 unsigned Milliseconds left before the character in Removal is removed.
Reservations 32 unsigned The number of character reservations, which the client hands to its interface.
Unknown8 32 unsigned The client gives this value no meaning. It hands it to its interface with the list.
Unknown9 32 unsigned The client gives this value no meaning.
FactionRestriction 14 unsigned The faction the interface shows the account locked to: 166 Dominion, 167 Exile, 0 none. The client hands it to its interface, which applies it only on a realm that keeps characters to one faction.
FreeLevel50 1 unsigned Whether the account may create characters at level 50 for free: it gates the interface's count of those and lets character creation skip an entitlement check for one type of creation option.

Taken while character select is active.

0x014B CharacterRenameResult

The answer to CharacterRename.

Opcode Direction Verified to
0x014B server to client fields
Field Bits Encoding Meaning
Result 6 unsigned The result. 18 means the character was renamed: the client applies the new name and clears the character's rename-required mark. The interface has a message of its own for 14 (an internal error), 15 (the name is not allowed), 16 (the name is taken), 17 (no rename is available for the character) and 43 (the character is online), and a general message for the rest.
CharacterId 64 unsigned The character, as listed in the character list (0x0117).
Name varies wide string The character's new name, applied when the result is 18.

Taken only while a rename is pending. The client also reports 15 itself, without sending, for a name that fails its own check.

0x0162 CharacterSelectFailed

Tells the client a CharacterSelect failed; the client returns to idle and passes the reason to its interface.

Opcode Direction Verified to
0x0162 server to client fields
Field Bits Encoding Meaning
Reason 3 unsigned Why the selection failed. The interface has a message of its own for 1 (the character must be renamed first), 3 (the character is disabled) and 4 (another of the account's characters is still in the world), and a general message for 2 and any other value.

Taken only while a selection is pending.

0x033D SubscriptionState

The account's subscription state.

Opcode Direction Verified to
0x033D server to client fields
Field Bits Encoding Meaning
TransferFlags 32 unsigned Bit 0 set makes the interface offer a free realm transfer; the client reads no other bit.
Expired 1 unsigned Whether the subscription has expired. While it has, the client refuses to create, delete, rename or select characters and to ask for transfer destinations.
GameTimeHours 32 float The game time left, in hours.

0x036A Kicked

The server ends the player's session.

Opcode Direction Verified to
0x036A server to client fields
Field Bits Encoding Meaning
Reason 5 unsigned Why the session ended: 6, 7, 8, 12, 15, 16, 19 and 20 each have a message of their own, any other value a general message.

Taken on character select, realm select and in the world: the client drops its connections and shows the reason's message.

0x03DB RealmHandoff

The login server hands the client to a realm's world server: where to connect, the session key, and the realm's details.

Opcode Direction Verified to
0x03DB server to client fields
Field Bits Encoding Meaning
WorldAddress 32 unsigned The world server's IPv4 address as a host-order integer: a.b.c.d is (a << 24) | (b << 16) | (c << 8) | d.
WorldPort 16 unsigned The world server's TCP port.
SessionKey the fields below The session key, in the GUID layout. The client sends it back in WorldHello (0x058F) and derives the world connection's key from it.
SessionKey.Data1 32 signed The first 32 bits.
SessionKey.Data2 16 signed The next 16 bits.
SessionKey.Data3 16 signed The 16 bits after those.
SessionKey.Data4[0] 8 unsigned The last eight bytes, in order.
SessionKey.Data4[1] 8 unsigned
SessionKey.Data4[2] 8 unsigned
SessionKey.Data4[3] 8 unsigned
SessionKey.Data4[4] 8 unsigned
SessionKey.Data4[5] 8 unsigned
SessionKey.Data4[6] 8 unsigned
SessionKey.Data4[7] 8 unsigned
Echo 32 unsigned A value the client keeps and sends back unchanged as the first field of WorldHello (0x058F).
RealmName varies wide string The realm's name, shown to the player and used to name the client's settings file for the realm.
RealmFlags 32 unsigned The realm's flags. Bit 4 set means the realm keeps characters to one faction; the client tests no other bit.
PvpType 2 unsigned The realm's PvP type: 0 PvE, 1 PvP. The interface treats any other value as PvE.
NoteTextId 21 unsigned A note about the realm, as an id in the client's text table; 0 means none.

Taken only on the login connection after LoginAccepted. The client opens a connection to the world server, starts it under the build's fixed key, and waits there for ServerHello; the login connection stays open.

0x03DC WorldEnvelope

A server message encrypted with the world connection's key.

Opcode Direction Verified to
0x03DC server to client fields
Field Bits Encoding Meaning
Payload varies byte block, 32-bit length, the length counts itself One whole message, which begins with its own 32-bit length (counting those four bytes). The length travels in clear and the bytes after it are encrypted with the world connection's key; the client decrypts them and handles the result as that message.

The client picks the key by opcode, not by the connection the envelope arrives on, and drops a server message that arrives bare on the world connection.

0x03E1 RealmAnnouncement

A realm-wide announcement, taken on every screen.

Opcode Direction Verified to
0x03E1 server to client fields
Field Bits Encoding Meaning
Tier 2 unsigned The announcement's tier. On character and realm select the client passes it to its interface with the text; in the world, 0 and 1 each raise an announcement of their own, and 2 and 3 do not.
Text varies wide string The announcement's text.

0x0591 LoginAccepted

The login server accepts the login.

Opcode Direction Verified to
0x0591 server to client fields
Field Bits Encoding Meaning
DroppedForLag 32 unsigned Bit 0 set means the player's previous session was dropped for lag, which the login screen can show. The client ignores the other bits.

Taken only on the login connection while the client waits for an answer to LoginRequest. The client then waits for RealmHandoff.

0x0594 WorldLogout

Ends the player's session in the world.

Opcode Direction Verified to
0x0594 server to client fields
Field Bits Encoding Meaning
ToCharacterSelect 1 unsigned With an ordinary Reason, true returns the player to character select on the same connection and false shows a disconnect message.
Reason 5 unsigned Why the session ended. 6, 7, 8, 12, 15, 16, 19 and 20 always end in a disconnect message, whatever ToCharacterSelect says; with any other value ToCharacterSelect decides.

Character select and realm select drop it.

0x063D LoginDenied

The login server refuses the login.

Opcode Direction Verified to
0x063D server to client fields
Field Bits Encoding Meaning
Result 32 unsigned Why the login was refused. The client has a message of its own for 0 to 13, 16 to 20 and 22 to 27, and a general message for 14, 15 and anything above 27; for 21 it builds its message from Duration.
ResultArgument 32 unsigned A number the client puts into the message it shows, for every result but 21.
Duration 32 float Read only when Result is 21: the client multiplies it by 24 and shows the product, to one decimal place, in that result's message.

Taken on the login connection in any state until the client has greeted the world server. The client shows a message chosen by Result, closes its connections and returns to the login screen.

0x06EA PtrCopyQueued

Tells the client a copy of a character to the test realm was queued.

Opcode Direction Verified to
0x06EA server to client fields
Field Bits Encoding Meaning
(none) 0

On character select the client passes it to its interface.

0x0715 LoginQueueFinished

Tells character select the login queue is done.

Opcode Direction Verified to
0x0715 server to client fields
Field Bits Encoding Meaning
(none) 0

Taken in any state; the client passes it to its interface.

0x0717 LoginQueueStatus

The login queue's status, which the client passes to the character-select interface.

Opcode Direction Verified to
0x0717 server to client fields
Field Bits Encoding Meaning
Position 32 unsigned The player's place in the queue, shown as a number.
WaitSeconds 32 unsigned The expected wait, in seconds.
ShowNotice 1 unsigned Whether the interface shows an extra notice in its queue window.

Taken while character select is active; realm select drops it.

0x0763 RealmNotices

The realm's current notices, each in several languages.

Opcode Direction Verified to
0x0763 server to client fields
Field Bits Encoding Meaning
Notices count 32 unsigned
Notices array, counted by Notices count The notices. The client replaces the ones it holds with these.
Notices[].Unknown0 32 unsigned The client gives this value no meaning.
Notices[].Translations count 8 unsigned
Notices[].Translations array, counted by Notices[].Translations count The notice's text per language: the client shows the string at its language id less one (the id its Language table gives the language), and the first string when that one is empty. It does not check that index against the notice's own string count, and the ids are not consecutive, so every notice carries strings through the highest language id less one, with any string at an index no language uses.
Notices[].Translations[] varies wide string

Arrives inside an envelope; the client takes it in any state.

0x0765 RealmTransferResult

The outcome of a realm transfer, which the client hands to the character-select screen's interface.

Opcode Direction Verified to
0x0765 server to client fields
Field Bits Encoding Meaning
Result 6 unsigned The result. 21 means the transfer went through, and the interface treats every other value as an error. It has a message of its own for 20 to 33, 47, 48, 51 and 55.

0x07A1 RealmRedirect

The server's answer to a RealmChoice of another realm: its world server, the session key and the realm's details.

Opcode Direction Verified to
0x07A1 server to client fields
Field Bits Encoding Meaning
Unknown0 32 unsigned The client gives this value no meaning.
SessionKey the fields below The session key, in the GUID layout. The client sends it back in WorldHello on the new connection and derives that connection's key from it.
SessionKey.Data1 32 signed The first 32 bits.
SessionKey.Data2 16 signed The next 16 bits.
SessionKey.Data3 16 signed The 16 bits after those.
SessionKey.Data4[0] 8 unsigned The last eight bytes, in order.
SessionKey.Data4[1] 8 unsigned
SessionKey.Data4[2] 8 unsigned
SessionKey.Data4[3] 8 unsigned
SessionKey.Data4[4] 8 unsigned
SessionKey.Data4[5] 8 unsigned
SessionKey.Data4[6] 8 unsigned
SessionKey.Data4[7] 8 unsigned
Gateway the fields below The realm's world server.
Gateway.Address 32 unsigned The IPv4 address as a host-order integer: a.b.c.d is (a << 24) | (b << 16) | (c << 8) | d.
Gateway.Port 16 unsigned The TCP port.
Unknown3 1 unsigned The client gives this value no meaning.
RealmName varies wide string The realm's name; the client keeps it and names its settings file for the realm with it.
RealmFlags 32 unsigned The realm's flags. Bit 4 set means the realm keeps characters to one faction; the client tests no other bit.
PvpType 2 unsigned The realm's PvP type: 0 PvE, 1 PvP. The interface treats any other value as PvE.
NoteTextId 21 unsigned A note about the realm, as an id in the client's text table; 0 means none.

Taken on the realm-select connection. The client connects to Gateway and waits there for ServerHello.

Client to server

0x0241 PregameKeepAlive

Keeps the connection alive on character and realm select.

Opcode Direction Verified to
0x0241 client to server fields
Field Bits Encoding Meaning
(none) 0

The client sends it at most about once a minute (the interval is a row of its game formula table, 60 seconds by default).

0x0244 ClientEnvelope

A client message encrypted for the connection it is sent on. The client sends every message inside one.

Opcode Direction Verified to
0x0244 client to server fields
Field Bits Encoding Meaning
Payload varies byte block, 32-bit length, the length counts itself One whole message, which begins with its own 32-bit length (counting those four bytes). The length travels in clear and the bytes after it are encrypted with the key of the connection it is sent on.

The message inside is either a TaggedMessage (0x038C), which carries another message under a tag, or a message on its own with no tag. The client sends tagged messages before the world as well as in it. Those it sends on their own include LoginRequest (0x0592), WorldHello (0x058F), CharacterListRequest (0x07E0), CharacterSelect (0x07DD), CharacterDelete (0x0352), PregameKeepAlive (0x0241) and NestedMessage (0x025C).

0x025B CharacterCreate

Creates a character from a character creation option, a name and the player's choices.

Opcode Direction Verified to
0x025B client to server fields
Field Bits Encoding Meaning
CreationId 32 unsigned The character creation option, as an id in the CharacterCreation table.
Name varies wide string The new character's name.
Path 3 unsigned The character's path: 0 Soldier, 1 Settler, 2 Scientist, 3 Explorer.
LookCount 32 unsigned; counts LookIds, LookValues How many look entries follow.
LookIds array, counted by LookCount The look options the player set, by the ids the client keys its look options by.
LookIds[] 32 unsigned
LookValues array, counted by LookCount The value chosen for each option in LookIds.
LookValues[] 32 unsigned
Bones count 32 unsigned
Bones array, counted by Bones count Values the client's model produces from the player's bone settings.
Bones[] 32 float

Sent inside a NestedMessage, itself inside a ClientEnvelope; the client then waits for CharacterCreateResult.

0x025C NestedMessage

One already-encoded client message, unencrypted, sent only inside a ClientEnvelope.

Opcode Direction Verified to
0x025C client to server fields
Field Bits Encoding Meaning
Payload varies byte block, 32-bit length, the length counts itself One whole encoded message, which begins with its own 32-bit length (counting those four bytes).

The client uses it only for character creation (0x025B).

0x0352 CharacterDelete

Deletes one listed character.

Opcode Direction Verified to
0x0352 client to server fields
Field Bits Encoding Meaning
CharacterId 64 unsigned The character, as listed in the character list (0x0117).

The client then waits for the reply (CharacterDeleteResult).

0x03EE TransferDestinationsRequest

Asks for the realms a character could transfer to.

Opcode Direction Verified to
0x03EE client to server fields
Field Bits Encoding Meaning
Paid 1 unsigned True when the player asks from the interface's paid transfer, false from its free transfer.

The client sends it only while the account's subscription has not expired (SubscriptionState); the answer is TransferDestinationList.

0x058F WorldHello

The client's greeting on a world connection, its answer to ServerHello there.

Opcode Direction Verified to
0x058F client to server fields
Field Bits Encoding Meaning
Echo 32 unsigned The value RealmHandoff (0x03DB) gave the client to send back, unchanged.
SessionKey the fields below The session key the client was handed, sent back unchanged, in the GUID layout.
SessionKey.Data1 32 signed The first 32 bits.
SessionKey.Data2 16 signed The next 16 bits.
SessionKey.Data3 16 signed The 16 bits after those.
SessionKey.Data4[0] 8 unsigned The last eight bytes, in order.
SessionKey.Data4[1] 8 unsigned
SessionKey.Data4[2] 8 unsigned
SessionKey.Data4[3] 8 unsigned
SessionKey.Data4[4] 8 unsigned
SessionKey.Data4[5] 8 unsigned
SessionKey.Data4[6] 8 unsigned
SessionKey.Data4[7] 8 unsigned
Unknown2 64 unsigned The client gives this value no meaning. It always sends 0.
AccountName varies wide string The account name the login server accepted.
Unknown4 32 unsigned The client gives this value no meaning. It always sends 3.

The client sends it under the connection's current key, and right after sending it switches the connection to a key derived from SessionKey.

0x0592 LoginRequest

The client's login request on the login connection, its answer to a valid ServerHello: its build, the account and the game token the STS issued, and a description of the client and its machine.

Opcode Direction Verified to
0x0592 client to server fields
Field Bits Encoding Meaning
Build 32 unsigned The client's build, 16042.
Fingerprint 64 unsigned A fingerprint of the client's install: a fixed seed folded, byte by byte, over the SHA-1 digests of the running executable and of its patch index file. The same install sends the same value on every login.
AccountName varies terminated wide string The account name the player logged in with, as typed. At most 251 characters.
StsUserId the fields below The user id the STS returned when the login finished, parsed from its text form.
StsUserId.Data1 32 signed The first 32 bits.
StsUserId.Data2 16 signed The next 16 bits.
StsUserId.Data3 16 signed The 16 bits after those.
StsUserId.Data4[0] 8 unsigned The last eight bytes, in order.
StsUserId.Data4[1] 8 unsigned
StsUserId.Data4[2] 8 unsigned
StsUserId.Data4[3] 8 unsigned
StsUserId.Data4[4] 8 unsigned
StsUserId.Data4[5] 8 unsigned
StsUserId.Data4[6] 8 unsigned
StsUserId.Data4[7] 8 unsigned
GameToken the fields below The game token the STS issued for this login, parsed from its text form.
GameToken.Data1 32 signed The first 32 bits.
GameToken.Data2 16 signed The next 16 bits.
GameToken.Data3 16 signed The 16 bits after those.
GameToken.Data4[0] 8 unsigned The last eight bytes, in order.
GameToken.Data4[1] 8 unsigned
GameToken.Data4[2] 8 unsigned
GameToken.Data4[3] 8 unsigned
GameToken.Data4[4] 8 unsigned
GameToken.Data4[5] 8 unsigned
GameToken.Data4[6] 8 unsigned
GameToken.Data4[7] 8 unsigned
ClientAddress 32 unsigned The client's own IPv4 address on its STS connection, as its socket reports the local end, as a host-order integer: a.b.c.d is (a << 24) | (b << 16) | (c << 8) | d.
LanguageId 32 unsigned The client's interface language, as an id in the client's Language table.
GameMode 32 unsigned The client's game mode, set when it starts: 0 by default, and any value of 2 or more becomes 0.
Unknown8 32 unsigned The client gives this value no meaning. It always sends 0.
Machine the fields below A description of the client's machine.
Machine.Processor the fields below The processor.
Machine.Processor.Manufacturer varies wide string The processor's manufacturer.
Machine.Processor.Name varies wide string The processor's name.
Machine.Processor.Description varies wide string The processor's description.
Machine.Processor.Family 32 unsigned The processor's family code.
Machine.Processor.Level 32 unsigned The processor's level.
Machine.Processor.Revision 32 unsigned The processor's revision; 0 when Windows gives none.
Machine.Processor.ClockMhz 32 unsigned The processor's maximum clock speed, in MHz.
Machine.Processor.Cores 32 unsigned The processor's core count; its logical processor count when Windows reports no cores.
Machine.MemoryMb 32 unsigned The machine's physical memory, in MiB, rounded up.
Machine.Adapter the fields below The default display adapter.
Machine.Adapter.Description varies wide string The adapter's description.
Machine.Adapter.VendorId 32 unsigned The adapter's vendor id.
Machine.Adapter.DeviceId 32 unsigned The adapter's device id.
Machine.Adapter.SubsystemId 32 unsigned The adapter's subsystem id.
Machine.Adapter.Revision 32 unsigned The adapter's revision.
Machine.Adapter.MemoryMb 32 unsigned The adapter's memory, in MiB. Windows' own figure stops at 4095.
Machine.Architecture 32 unsigned The processor architecture: 0x10000 plus a code, 1 for x86, 2 for x64, 3 for IA-64, 4 for ARM and 0 for any other.
Machine.OsVersion 32 unsigned The Windows version, as (major << 16) | minor.
Machine.OsServicePack 32 unsigned The Windows service pack, as (major << 16) | minor.
Machine.OsEdition 32 unsigned The Windows edition: the suite mask in bits 16 to 31, the product type in bits 8 to 15, and in bits 0 to 3 whether Windows is Server R2, Media Center, Starter and Tablet PC.
RealmDataCenterId 32 unsigned The realm data center the client was started for, as an id in the client's RealmDataCenter table.

The client sends it once per login connection, inside a ClientEnvelope, only once it has an account name, and then waits for LoginAccepted or LoginDenied.

0x06E8 PtrCopyCurrentCharacter

Asks to copy the current character to the test realm, from inside the world.

Opcode Direction Verified to
0x06E8 client to server fields
Field Bits Encoding Meaning
(none) 0

Sent on the world connection, at most once every three seconds from the interface or without that limit from a chat command. The character-select version is 0x06E7, which carries a character id.

0x0786 CharacterRename

Renames one listed character.

Opcode Direction Verified to
0x0786 client to server fields
Field Bits Encoding Meaning
CharacterId 64 unsigned The character, as listed in the character list (0x0117).
NewName varies wide string The new name. The client sends only names that pass its own check; a server checks it again.

The client then waits for the reply (CharacterRenameResult).

0x07A4 RealmListRequest

Asks for the realm list when the player opens realm select from character select.

Opcode Direction Verified to
0x07A4 client to server fields
Field Bits Encoding Meaning
(none) 0

Sent on the character-select connection, which realm select takes over.

0x07DD CharacterSelect

Enters the world with one listed character.

Opcode Direction Verified to
0x07DD client to server fields
Field Bits Encoding Meaning
CharacterId 64 unsigned The character, as listed in the character list (0x0117).

The client takes the realm id from the character list (0x0117) as its current realm, then waits for EnterWorld or the selection's failure (CharacterSelectFailed).

0x07DF RealmChoice

The player's realm choice on the realm-select screen.

Opcode Direction Verified to
0x07DF client to server fields
Field Bits Encoding Meaning
RealmId 32 unsigned The chosen realm's id from RealmList, or the current realm's when the player backs out of realm select.

For the realm the client is already on, it carries on in character select without waiting; for another realm it waits for RealmRedirect.

0x07E0 CharacterListRequest

Asks for the character list.

Opcode Direction Verified to
0x07E0 client to server fields
Field Bits Encoding Meaning
(none) 0

The client sends it each time it enters character select: after a world connection's greeting, on choosing the current realm or backing out of realm select, and after leaving the world.

Both ways

0x0003 ServerHello

The server's greeting, the first message on every connection.

Opcode Direction Verified to
0x0003 both ways fields
Field Bits Encoding Meaning
Build 32 unsigned The client's build. On the login connection the client ends the login unless this is 16042.
RealmId 32 unsigned The realm the connection serves. The client reads it only on the world connection the login opens, and keeps it as its current realm.
Unknown2 32 unsigned The client gives this value no meaning.
Unknown3 32 unsigned The client gives this value no meaning.
Unknown4 64 unsigned The client gives this value no meaning.
Unknown5 16 unsigned The client gives this value no meaning.
Unknown6 5 unsigned The client gives this value no meaning.
ProtocolVersion 32 unsigned The protocol version. On the login connection the client ends the login unless this is 0x097998A0.
Unknown8 32 unsigned The client gives this value no meaning.
Unknown9 64 unsigned The client gives this value no meaning.
Unknown10 32 unsigned The client gives this value no meaning.

On the login connection the client checks Build and ProtocolVersion and answers with LoginRequest (0x0592). On a world connection it answers with WorldHello (0x058F) and then switches the connection to the key derived from the session key; of its fields it reads only RealmId, and only on the world connection the login opens. The client takes a bare greeting only on the login connection and drops one that arrives bare on any other. The client registers a writer for it as well.

0x003D Message003D

Opcode Direction Verified to
0x003D both ways unverified
Field Bits Encoding
Unknown0 14 unsigned
Unknown1 32 unsigned
Unknown2 varies wide string
Unknown3 64 unsigned

0x0761 RealmList

The realm-select screen's list of realms, and the realm notices.

Opcode Direction Verified to
0x0761 both ways fields
Field Bits Encoding Meaning
Unknown0 64 unsigned The client gives this value no meaning.
Realms count 32 unsigned
Realms array, counted by Realms count The realms. The client replaces its list with these.
Realms[].RealmId 32 unsigned The realm's id; RealmChoice names a realm by it.
Realms[].Name varies wide string The realm's name, shown to the player.
Realms[].NoteTextId 32 unsigned A note about the realm, as an id in the client's text table, shown to the player.
Realms[].Flags 32 unsigned The realm's flags. Bit 4 set means the realm keeps characters to one faction; bit 0 marks the realm the client picks when it selects one on its own. The client tests no other bit.
Realms[].PvpType 2 unsigned The realm's PvP type: 0 PvE, 1 PvP. The interface treats any other value as PvE.
Realms[].Status 3 unsigned The realm's status: 0 unknown, 1 offline, 2 down, 3 on standby, 4 up. The interface shows any other value as unknown.
Realms[].Population 3 unsigned The realm's population: 0 low, 1 medium, 2 high, 3 full. The interface labels no other value.
Realms[].Unknown7 32 unsigned The client gives this value no meaning.
Realms[].Unknown8[0] 8 unsigned The client gives this value no meaning.
Realms[].Unknown8[1] 8 unsigned
Realms[].Unknown8[2] 8 unsigned
Realms[].Unknown8[3] 8 unsigned
Realms[].Unknown8[4] 8 unsigned
Realms[].Unknown8[5] 8 unsigned
Realms[].Unknown8[6] 8 unsigned
Realms[].Unknown8[7] 8 unsigned
Realms[].Unknown8[8] 8 unsigned
Realms[].Unknown8[9] 8 unsigned
Realms[].Unknown8[10] 8 unsigned
Realms[].Unknown8[11] 8 unsigned
Realms[].Unknown8[12] 8 unsigned
Realms[].Unknown8[13] 8 unsigned
Realms[].Unknown8[14] 8 unsigned
Realms[].Unknown8[15] 8 unsigned
Realms[].Summary the fields below Values the client shows with the realm.
Realms[].Summary.Unknown0 14 unsigned The client gives this value no meaning.
Realms[].Summary.Count 32 unsigned A count the client shows with the realm.
Realms[].Summary.LastPlayed varies wide string A character name the client shows as last played on the realm, when present.
Realms[].Summary.Unknown3 64 unsigned The client gives this value no meaning.
Realms[].Unknown10 16 unsigned The client gives this value no meaning.
Realms[].Unknown11 16 unsigned The client gives this value no meaning.
Realms[].Unknown12 16 unsigned The client gives this value no meaning.
Realms[].Unknown13 16 unsigned The client gives this value no meaning.
Notices count 32 unsigned
Notices array, counted by Notices count The realm notices. The client replaces the ones it holds with these.
Notices[].Unknown0 32 unsigned The client gives this value no meaning.
Notices[].Translations count 8 unsigned
Notices[].Translations array, counted by Notices[].Translations count The notice's text per language: the client shows the string at its language id less one (the id its Language table gives the language), and the first string when that one is empty. It does not check that index against the notice's own string count, and the ids are not consecutive, so every notice carries strings through the highest language id less one, with any string at an index no language uses.
Notices[].Translations[] varies wide string

The client registers a writer for it as well. When a client-side switch is set, the client selects a realm from the list on its own: the first whose Flags has bit 0 set, else the first.

0x0862 TransferDestinationList

The realms a character may transfer to, the answer to TransferDestinationsRequest.

Opcode Direction Verified to
0x0862 both ways fields
Field Bits Encoding Meaning
Destinations count 32 unsigned
Destinations array, counted by Destinations count The realms.
Destinations[].RealmId 32 unsigned The realm's id; RealmChoice names a realm by it.
Destinations[].Name varies wide string The realm's name, shown to the player.
Destinations[].NoteTextId 32 unsigned A note about the realm, as an id in the client's text table, shown to the player.
Destinations[].Flags 32 unsigned The realm's flags. Bit 4 set means the realm keeps characters to one faction; bit 0 marks the realm the client picks when it selects one on its own. The client tests no other bit.
Destinations[].PvpType 2 unsigned The realm's PvP type: 0 PvE, 1 PvP. The interface treats any other value as PvE.
Destinations[].Status 3 unsigned The realm's status: 0 unknown, 1 offline, 2 down, 3 on standby, 4 up. The interface shows any other value as unknown.
Destinations[].Population 3 unsigned The realm's population: 0 low, 1 medium, 2 high, 3 full. The interface labels no other value.
Destinations[].Unknown7 32 unsigned The client gives this value no meaning.
Destinations[].Unknown8[0] 8 unsigned The client gives this value no meaning.
Destinations[].Unknown8[1] 8 unsigned
Destinations[].Unknown8[2] 8 unsigned
Destinations[].Unknown8[3] 8 unsigned
Destinations[].Unknown8[4] 8 unsigned
Destinations[].Unknown8[5] 8 unsigned
Destinations[].Unknown8[6] 8 unsigned
Destinations[].Unknown8[7] 8 unsigned
Destinations[].Unknown8[8] 8 unsigned
Destinations[].Unknown8[9] 8 unsigned
Destinations[].Unknown8[10] 8 unsigned
Destinations[].Unknown8[11] 8 unsigned
Destinations[].Unknown8[12] 8 unsigned
Destinations[].Unknown8[13] 8 unsigned
Destinations[].Unknown8[14] 8 unsigned
Destinations[].Unknown8[15] 8 unsigned
Destinations[].Summary the fields below Values the client shows with the realm.
Destinations[].Summary.Unknown0 14 unsigned The client gives this value no meaning.
Destinations[].Summary.Count 32 unsigned A count the client shows with the realm.
Destinations[].Summary.LastPlayed varies wide string A character name the client shows as last played on the realm, when present.
Destinations[].Summary.Unknown3 64 unsigned The client gives this value no meaning.
Destinations[].Unknown10 16 unsigned The client gives this value no meaning.
Destinations[].Unknown11 16 unsigned The client gives this value no meaning.
Destinations[].Unknown12 16 unsigned The client gives this value no meaning.
Destinations[].Unknown13 16 unsigned The client gives this value no meaning.
Destinations[].IsFree 1 unsigned Whether the transfer to this realm is free; the interface leaves such realms out of its paid-transfer list.

The client registers a writer for it as well.

Where the code lives

Piece Path
Message declarations Source/NexusTomorrow.Network.Auth/Message/Model/
Message declarations Source/NexusTomorrow.Network.World/Message/Model/Pregame/
Message declarations Source/NexusTomorrow.Network/Message/Model/
This page's generator Tools/NexusTomorrow.ProtocolReference/

Clone this wiki locally