Packets/Login/Vanilla: Difference between revisions
(→Opcodes and Errors: Add link to results) |
(→Client: Add link) |
||
Line 54: | Line 54: | ||
=== Client === | === Client === | ||
See [[CMD_REALM_LIST_Client]]. | |||
=== Server === | === Server === |
Revision as of 20:51, 21 May 2021
It's worth noting that, for build (1.1.2.4125), the client automatically disconnects after a successful login challenge and proof exchange and sends a reconnect packet right away instead of asking for the realm list.
Opcodes and Errors
See Login Packets. The opcode value corresponds to the packet name.
See Login Packet Results for result values.
Challenge packets
Client
See CMD_AUTH_LOGON_CHALLENGE_Client.
Server
See CMD_AUTH_LOGON_CHALLENGE_Server.
Proof packets
Client
See CMD_AUTH_LOGON_PROOF_Client.
Server
See CMD_AUTH_LOGON_PROOF_Server.
Reconnection challenge packets
Client
The reconnect client packet has the same format as CMD_AUTH_LOGON_CHALLENGE_Client except that the opcode field is 0x2 instead of 0x0.
Server
See CMD_AUTH_RECONNECT_CHALLENGE_Server.
Reconnection proof packets
Client
See CMD_AUTH_RECONNECT_PROOF_Client.
To check if the client proof is correct, the server must calculate SHA1(account_name | proof_data | challenge_data | session_key) and compare it to client_proof.
Server
See CMD_AUTH_RECONNECT_PROOF_Server.
Realm list packets
Client
Server
The server answers with a packet composed of a RealmHeader_Server, as many RealmInfo_Server as specified and a RealmFooter_Server.
Header
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x0 | 1 / - | uint8 | command | REALMLIST (0x10) |
0x1 | 2 / Little | uint16 | size | Size of the rest of packet, without the command and size fields (3 bytes). |
0x3 | 4 / - | uint32 | unknown | Not used in public clients. Set to 0. |
0x7 | 1 / - | uint8 | num_realms | Number of RealmInfo_Server. |
The size value can be computed with the part of the header taken into account plus the footer (5+2 bytes) and the size of every RealmInfo_Server which is variable.
Body
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x0 | 4 / Little | uint32 | realm_type | 0 is normal, 1 is PvP, 6 is RP and 8 is RPPvP. |
0x4 | 1 / - | uint8 | flags | See RealmInfo_Server.flags table below. |
0x5 | - / Big | char[] | realm_name | Zero terminated string; name of the Realm |
- / Big | char[] | address_port | Zero terminated string; address of the Realm ("ip:port") | |
4 / Little | float | population | Population value. 200 is always green "Recommended", 400 is always red "Full", 600 is always blue "Recommended". Low/Medium/High are calculated based on the population values sent. | |
1 / - | uint8 | num_chars | The number of characters the client has on the server. | |
1 / - | uint8 | realm_category | The language or region of the server. How this is interpreted depends on the locale of the client. It is shown as tabs at the bottom of the realmlist screen. If there are only realms of one category no tabs are shown. See table RealmInfo_Server.realm_category Values. | |
1 / - | uint8 | realm_id | Used for the initial sorting of the realms. Identical values are not a problem. |
Value | Name | Description |
---|---|---|
0x00 | NONE | No changes. |
0x01 | INVALID | Color realm name in read. |
0x02 | OFFLINE | Gray out name and prevent selection. |
0x04 | SPECIFY_BUILD | Unused. Possibly used to list realm build numbers previously. |
0x08 | UNK1 | Unused. |
0x10 | UNK2 | Unused. |
0x20 | FORCE_RECOMMENDED | Forces the client to show the server as "Recommended" in blue text, no matter what the population value is. |
0x40 | FORCE_NEW_PLAYERS | Forces the client to show the server as "Recommended" in green text, no matter what the population value is. |
0x80 | FORCE_FULL | Forces the client to show the population as "Full" in red text, no matter what the population value is. |
Value | Name | Description |
---|---|---|
0x00 | DEFAULT | Same as the first value for a locale. |
US | ||
0x01 | UNITED_STATES | United States. |
0x05 | OCEANIC | Oceania. |
EUROPE | ||
0x01 | ENGLISH | English. |
0x02 | GERMAN | German. |
0x03 | FRENCH | French. |
0x05 | SPANISH | Spanish. |
KOREA | ||
0x01 | KOREA | Korea. |
TAIWAN | ||
0x01 | TAIWAN | Taiwan. |
CHINA | ||
0x01 | CHINA | China. |
0x02 | CN3 | Unknown. |
0x03 | CN7 | Unknown. |
TEST | ||
0x01 | TEST_SERVER | Test. |
0x05 | OCEANIC_TEST | Oceanic test. |
QA | ||
0x01 | QA_SERVER | QA server. |
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x0 | 2 / ? | uint16 | unknown | Ignored in public clients. Set to 0. |