-
Notifications
You must be signed in to change notification settings - Fork 17
Keyframe Specification
- Header (0x10 bytes)
- n Player Segments (one for each player)
- Header (0x17)
- Summoner name (0x10)
- Unknown data (0x6C)
- Champion name (0x??)
- Unknown data (0x??)
- Rune Page (0x78)
- Marks (0x24)
- Seals (0x24)
- Glyphs (0x24)
- Quints (0x0C)
- Mastery Page (0x??)
- Header (0x04)
- n Entries (one for each mastery, points in the same mastery do not count as a new entry)
- Padding
- Entity State Data (?)
- Header (0x09)
- 9 item entries (0x3F)
- Unknown data
- Footer (0x05)
- n Turret Segments (one for each turret) (0xB4 each)
- Entity ID (0x04)
- Constant byte (0x01)
- Name string (0x1C)
- Unknown data (0x24)
- Interesting bytes (0x05)
- Items (0x46)
- Item header (0x07)
- 9 item entries (0x3F)
- Padding (0x24)
- Unknown data
Note: everything is in little endian.
03 XX XX XX
XX 02 00 00
00 61 00 00
00 00 00 00
Note: all offsets are relative to the first byte of the player segment
offset: 0x00; length: 0x17
B3
XX C3 4B 00 // first byte is usually 00 but is sometimes 01. death?
XX 00 00 40 // entity ID, increments for each player in order of the file (19 00 00 40, 1A 00 00 40, etc.)
XX 00 00 00 // each player is given a number from 0 to 9, not sure of ordering
40 00 XX 00
XX FF XX 00
00 00
bytes after the null are meaningless
offset: 0x17; length: 0x10 Example:
4D 61 61 61 61 61 61 61 61 61 61 61 61 72 72 72 // "Maaaaaaaaaaaarrr" (max length)
Example:
51 75 69 63 6B 00 F7 11 45 00 00 00 00 00 00 00 // "Quick"
Example:
51 75 69 63 6B 00 BE B1 43 00 00 00 00 C4 DA 3C // "Quick"
Example:
41 6D 65 63 00 76 E9 07 42 00 00 00 00 00 00 00 // "Amec"
Example:
57 61 72 4C 6F 72 44 20 54 69 74 61 6E 00 DC 34 // "WarLorD Titan"
offset: 0x27; length: 0x6C
XX XX XX XX XX XX XX XX XX 00 00 00 00 00 00 XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX 02 00 00
00 XX XX XX XX 01 00 00 00 XX XX XX XX XX XX XX
00 23 E0 XX XX XX XX XX XX XX XX XX XX 0D 00 00
00 XX XX XX XX XX XX XX 00 DD 14 XX XX 00 00 XX
XX 00 00 00 00 XX XX XX XX XX XX XX 00 C2 DC XX
offset: 0x97; length: 0x10
48 65 69 6D 65 72 64 69 6E 67 65 72 00 88 DB 18 // I think any data after the first 00 is meaningless
offset: 0xA7; length: 0x2C
00 A6 94 XX
!! XX XX XX XX XX XX XX // the flag marked as !! only ever equals 0 or 1
XX XX XX XX XX XX XX XX
00 60 96 XX XX XX XX XX
XX XX XX XX !! 83 !! 12 // first flag: 0 or 2; second: 0 or 1
02 00 00 29 EN TI TY ID
offset: 0xE3; length: 0x78
Example:
83 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
85 14 00 00
Example:
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
A9 14 00 00
Example:
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
C9 14 00 00
Example:
D7 14 00 00
24 15 00 00
24 15 00 00
offset: 0x14B; length: 0x194
24 4F 36 06 // only present in some packets (was not in source gist)?
A8 6E 49 06 // header?
XX // the mastery id; does not correlate with AIR Client talentId
XX // the tree; 74 = offensive, 75 = defensive, 76 = utility (note: double check)
03 00 // unknown
XX // number of points in mastery (max 4)
00 00 00 00 ...
Note: not even sure this is what this actually is
Second byte changes.
offset: 0x2F2, length: 0x09
1E XX B3 00 65 FE 00 0C 01
There are 9 item entries (future proofing?)
The first 7:
XX XX 00 00 // Item ID
XX // Index (slot); 00 to 08
XX // Quantity; 01 to 05
XX // Charges
8th:
D1 07 00 00 // This item ID does not map to any item
07
01
00
9th:
00 00 00 00
08
00
00
Example:
00 00 80 BF // 3,212,836,864 OR 0 - 49,024 OR 0 - 0 - 128 - 191
00 0E 8E 40 // why is this different? It's the same sometimes.
00 00 80 BF
00 00 80 BF
00 00 80 BF
00 00 80 BF
00 00 80 BF
00 00 80 BF
00 00 80 BF
0x130 bytes long
Example:
A3 00 28 01 00 00 45 00 28 01 00 00 06 00 00 00
00 00 00 00 07 00 00 00 0F 00 00 00 01 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
F8 26 1C 46 00 6C 02 46 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 1F 00 00 00
03 00 00 00 93 85 30 43 03 00 00 00 02 00 00 00
00 00 00 00 CB 0A 26 44 08 A0 6C 45 C4 CC 7F 43
CC 13 E5 45 17 00 00 00 00 00 4B 00 00 00 05 00
00 00 46 00 00 00 04 00 00 00 00 00 00 00 8B AA
AF 47 48 23 42 46 CF 45 0A 46 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 3E 00 00 00 00 00
00 00 44 00 00 00 09 00 00 00 04 00 00 00 13 00
00 00 00 00 00 00 64 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 7B 7F D4 47 CB 6F 5D 46 EA 77
86 46 B1 09 00 00 CD 04 BE 43 18 4B 00 43 01 00
00 00 00 00 00 00 12 80 6B 46 AD 6A BA 44 11 01
81 44 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00
B3 00 03 15
XX = points in ability (0 to 5)
00 00 XX 00 F3 00 YY
00 01 XX 00 F3 00 YY
00 02 XX 00 F3 00 YY
00 03 XX 00 B3 00 ZZ
Variable length
Not sure why these specific strings are here
Example:
17 00 2C 01
6C 75 63 69 61 6E 72 6D 69 73 73 69 6C 65 00 // "lucianrmissile"
F3 00 1E 00 32 01
63 72 65 73 74 6F 66 74 68 65 61 6E 63 69 65 6E 74 67 6F 6C 65 6D 6C 69 6E 65 73 00 // "crestoftheancientgolemlines"
F3 00 10 00 33 01
6C 75 63 69 61 6E 71 64 61 6D 61 67 65 00
Example:
17 00 01 01
76 69 77 00 // "viw"
F3 00 0A 00 2F 01
76 69 72 64 75 6E 6B 00 // "virdunk"
F3 00 17 00 32 01
69 74 65 6D 70 6C 61 63 65 6D 65 6E 74 6D 69 73 73 69 6C 65 00 // "itemplacementmissile"
Variable length
Example:
B3 00 09 84 00 40 00 FE 4C 40 00 00 80
BF F3 00 09 00 43 C0 DD C5 41 00 00 80
BF F3 00 09 00 05 00 DC 9D 40 00 00 80
BF F3 00 09 00 0A 00 DA 1E 40 00 00 80
BF F3 00 09 00 40 D0 CE B8 42 00 00 80
BF F3 00 09 00 41 80 BB 1F 42 00 00 80
BF B3 00 01 EF 00 01 93 00 07 FE 00 00
Example:
B3 00 09 84 00 40 E0 85 2E 43 00 00 80
BF F3 00 09 00 41 58 B1 85 43 00 00 80
BF B3 00 01 EF 00 01 93 00 07 FE 00 00
Note: 07 FE 00 00 may signal end of section?
00 00 15 01 EN TI TY ID
Note: fountain lasers seem to be considered as turrets aswell
Note: there seems to be some kind of a header on turret segments, however, this is not present for first turret, so I skipped it for time being
offset: 0x00; length: 0x04;
XX 00 00 40 //increments for each turret, goes from 01 to 18
offset: 0x04; length: 0x01;
40 //seems to be constantly 40
offset: 0x05; length: 0x1C;
54 75 72 72 65 74 5F 43 // Turret_ChaosTurretShrine_A
68 61 6F 73 54 75 72 72 // This one probably refers to fountain laser
65 74 53 68 72 69 6E 65
5F 41 00 XX
offset: 0x21; length: 0x24;
XX XX 00 00 00 00 XX XX
XX 00 00 00 5D 02 D5 71
C3 01 XX XX 34 02 FE FF
FF FF 8C E3 BE 77 XX XX
04 77 F8 90
offset: 0x45; length: 0x05;
!! 00 00 !! !! //first marker is either 00 for FLs or 02 for turrets
//second marker is either 80 for FLs or 00 for turrets
//third marker is either 01 or 02, possibly refers to
//whether or not the turret can be attacked
offset: 0x4A; length: 0x46;
offset: 0x4A; length: 0x07;
B3 00 65 FE 00 0C 01 //the same as players' items' header
offset: 0x51; length: 0x3F;
DC 05 00 00 00 01 00 // On all towers
DE 05 00 00 01 01 00 // On all towers
DF 05 00 00 02 01 00 // On all towers
DD 05 00 00 03 01 00 // On some towers
00 00 00 00 04 00 00
00 00 00 00 05 00 00
00 00 00 00 06 00 00
00 00 00 00 07 00 00
00 00 00 00 08 00 00
offset: 0x90; length: 0x24;
00 00 80 BF 00 00 80 BF // Constant (padding?)
00 00 80 BF 00 00 80 BF
00 00 80 BF 00 00 80 BF
00 00 80 BF 00 00 80 BF
00 00 80 BF
XMPP/Lobby | Spectating | Data Structure |
---|---|---|
Chat - RTMPS Methods - REST Service | REST Service | Keyframe Specification - Chunk Specification |