Chat Protocol
From HoNWiki
[edit] Client -> Server
[edit] Login
- ID: 0xFF
- DWORD: account id
- STRING: cookie
- DWORD: 0x05
[edit] Leave Room/Channel
- ID: 0x22
- STRING: roomname
[edit] Join Room/Channel
- ID: 0x1E
- STRING: roomname
[edit] Pong
- ID: 0x02
[edit] Channel Message
- ID: 0x03
- STRING: message
- DWORD: channel id
[edit] Whisper
- ID: 0x08
- STRING: recipient
- STRING: message
[edit] Private Message
- ID: 0x1C
- STRING: recipient
- STRING: message
[edit] Channel List
- ID: 0x1F
[edit] Whois
- ID: 0x2A
- STRING: username
[edit] Clan Message
- ID: 0x13
- STRING: message
[edit] Clan Invite
- ID: 0x47
- STRING: user
[edit] Server -> Client
[edit] Response Login
- ID: 0x00
- You must respond to this packet with 0x012A
[edit] Ping
- ID: 0x01
- You must respond to this packet with pong
[edit] Chat Message
- ID: 0x03
- DWORD: account id
- DWORD: channel id
- STRING: message
[edit] Response Join Room/Channel
- ID: 0x04
- STRING: channel
- DWORD: channel id
- BYTE: unknown (channel flags? 0x18)
- STRING: topic
- DWORD: op count
- DWORD: account id
- BYTE: type
- DWORD: user count
[edit] Notification Message
- ID: 0x12
- BYTE: ID(?) of the notification
- STRING: The message displayed.
[edit] Player Joined Chat
[edit] Player Left Chat
- ID: 0x06
- DWORD: account id
- DWORD: channel id
[edit] Whisper
- ID: 0x08
- STRING: user
- STRING: message
[edit] Buddy List
- ID: 0x0B
- DWORD: count
[edit] User Status Update
- ID: 0x0C
- DWORD: account id
- BYTE: state
- BYTE: flags
- DWORD: clan id
- STRING: clan
- STRING: server (if in lobby/in game)
- STRING: game name (if in game)
- DWORD: match id
[edit] Clan Message
- ID: 0x13
- DWORD: buddy id
- STRING: message
[edit] Private Message
- ID: 0x1C
- STRING: user
- STRING: message
[edit] Channel List
- ID: 0x1F
- DWORD: count
- DWORD: channel id
- STRING: name
- DWORD: user count
[edit] Whois (Not Found)
- ID: 0x2B
- STRING: Username
[edit] Whois (Offline)
- ID: 0x2C
- STRING: Username
- STRING: Last Seen
[edit] Whois (In Channels)
- ID: 0x2D
- STRING: Username
- DWORD: count
- STRING: channel
[edit] Whois (In Game)
- ID: 0x2E
- STRING: game name
- STRING: game time
[edit] Online Count
- ID: 0x68
- DWORD: Number of online players
[edit] Flags
[edit] User States
- Offline: 0x00
- Online: 0x03
- In Lobby: 0x04
- In Game: 0x05
[edit] User Flags
- None: 0x00
- Moderator: 0x01
- Founder: 0x02
- Prepurchased:0x40
[edit] Notes
- COOKIE - a cookie got from masterserver logon
- DWORD - 4 byte unsigned int, little endian
- ID - single byte, identifies a packet type
- STRING - UTF8 string, zero terminated
- A Server->Client packet is always preceded by its length (DWORD)
- In login procedure account id is NOT checked against cookie

