Skip to content
Intline9 edited this page Jul 13, 2012 · 21 revisions

header

Packet List

Header Article Type Name Description
0x00 - <-> HandShake Server handshake
0x17 - C2S QueryStatusReq Query status request
0x19 - C2S PingLoadInfo Client loading progress
0x2C - S2C MasteryInfo All mastery information
0x58 - C2S StartGame The client is ready to start the game
0x5A - S2C SynchVersion An initial packet containing structs and what not, real purpose not defined yet
0x64 - C2S ClientReady Client ready to continue
0x65 - S2C LoadHero The hero info
0x66 - S2C LoadName The summoners info
0x67 - S2C LoadScreenInfo The loading screen information
0x8F - S2C QueryStatusAns Query status answer
0x9A - S2C SendGameNumber Send game number and summoners name
0x9F - S2C PingLoadInfo Loading progress for a player
0xA6 - C2S GameNumberReq Request game number and summoners name
0xC9 - C2S SynchVersion Client version and some other client information
0xFF - S2C Batch Batch packet

List updated for 0.0.0.165 A list of headers can also been found in common.h

Header

Normal Packets

All packets in LoL start with a common header. This header is 5 bytes in size and has the following layout:

Type Name Description
uint8 cmd denotes the type (id) of the packet.
uint32 netId Id of the ingame-object to modify. Every object has an unique id which is used to refer to it.

The size of normal packets is either constant/depending on the packet type or given within the packet.

Batch Packets

Batch packets always have first byte to 0xFF

Type Name Description
uint8 cmd always 0xFF
uint8 packetNo The total amount of packets this batch contains
uint8 firstSize The size of the first packet

See batch packets body for parsing the rest of the batch

Body

Normal Packets

The header is then followed by packet data with its size depending on the packet type. The channel to send the packet from also depends on its type. Note that batch packets are different, but not yet fully understood.

Batch Packets

The rest of the batch is parsed differently. After the firstSize packet:

Type Name Description
uint8 lengthAndFlags This contains the length (retrieve it by shift right 2) and 2 flags
uint8 unk1 If first bit of lengthAndFlags is 0, else this byte is not present
uint8 unk2 If second bit of lengthAndFlags is 0, else this byte is not present
uint32 unkt2 If second bit of lengthAndFlags is 1, else these bytes are not present
uint8 length If lengthAndFlags>>2 == 0x3F then the real length is this byte, else this byte is not present
uint8 body[lengthAndFlags>>2] the body of the packet

Repeat this until you have parsed packetNo times (but always check for overflow)

…to be continued.

Clone this wiki locally