Keyframe Player Segment - loldevs/leaguespec GitHub Wiki
- Notes
- Player Header
- Summoner Data
- Inventory
- Player stats
- 4 Abilities
- String data
- Unknown data
- Footer
- Offsets are relative to their block.
- Patch 4.8: this patch introduce a new item (10th).
-
Patch 4.16: this patch introduce two new rows in the player data (
0x96
and0xE6
).
-
blocktype:
0x4C
or0x4B
-
length:
0xC3
++ ++ ++ 40 // Entity ID
!! 00 00 00 // Player number (clientID)
40 XX XX 00
XX FF
XX 00 00 00 // Skin ID
- Entity ID is incremented in the order which players are in the file
- Entity ID is usually increased by 1 for each player, however, some IDs may be skipped for unknown reasons
-
Player number is a unique number assigned to each player, ranging from
0x00
to0x09
for a 5v5 game - Ordering of player number is unknown
-
offset:
0x12
-
length:
0x80
- encoding: UTF-8
Example:
53 68 61 65 76 00 20 0F 43 00 00 00 00 00 00 00 // Shaev
00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 4F
00 78 50 08 08 00 00 00 00 00 00 00 00 64 03 3D
08 69 43 82 84 00 00 00 00 00 00 00 00 02 00 00
00 C0 0E 08 08 01 00 00 00 70 50 08 08 CC D0 2A
00 23 E0 1D 77 98 45 50 00 78 50 08 08 0D 00 00
00 70 50 08 08 E0 D0 2A 00 DD 14 EA 74 00 00 4F
00 00 00 00 00 78 50 08 08 F4 D0 2A 00 C2 DC B7
- bytes after first
0x00
byte are meaningless
-
offset:
0x92
-
length:
0x10
4C 65 62 6C 61 6E 63 00 00 78 50 08 08 08 D1 2A // Leblanc
- bytes after first
0x00
byte are meaningless
-
offset:
0xA3
-
length:
0x21
00 XX XX XX
!! XX XX XX XX XX XX XX // Marker #1
XX XX XX XX XX XX XX XX
00 XX XX XX XX XX XX XX
XX XX XX XX !! // Marker #2
-
Marker #1 can only be
0x00
or0x01
-
Marker #2 can only be
0x00
or0x02
-
blocktype:
0x2A
-
length:
0x212
- blockparam: Entity ID
Example
83
00
12 02 00 00 // [contentlength]
2A // [blocktype]
19 00 00 40 // Entity ID [blockparam]
[... 0x212 bytes ...]
-
offset:
0x0
-
length:
0x78
- The rune page consists of 30 rune IDs
- A rune ID is a 32-bit integer, example :
83 14 00 00
>>>5251
- Empty rune slots are represented by the rune ID 0
- Sometimes the runes appear out of order (maybe because the player hasn't the required level to have all runes)
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:
0x78
-
length:
0x8
- A summoner spell is represented by a 32-bit value:
Value | Spell |
---|---|
244f3606 | Ignite |
a86e4906 | Flash |
1caf6403 | Heal |
95865e06 | Smite |
64134f00 | Teleport |
e4baa808 | Exhaust |
82b9cf0c | Barrier |
21746503 | Clarity |
95cc4a06 | Ghost |
eeaf870d | Garrison |
65678909 | Clairvoyance |
94204d06 | Cleanse |
a5b3c805 | Revive |
Example
24 4F 36 06 // Ignite
A8 6E 49 06 // Flash
A8 6E 49 06 // Flash
24 4F 36 06 // Ignite
-
offset:
0x80
-
length:
0x190
-
length:
0x05
!! // Mastery ID
!! // Mastery tree
03 00
!! // Points spent
- Mastery ID does not correlate with talentId in AIR Client
-
Mastery ID contains the coordinates of the mastery in its tree.
- First 4 bits contain the row (starting at
0x04
) - Last 4 bits contain the column (starting at
0x01
)
- First 4 bits contain the row (starting at
-
Mastery tree
-
0x74
= Offense -
0x75
= Defense -
0x76
= Utility
-
-
Points spent refers to the number of points in specific mastery, with a maximum of
0x04
**Example: **
53 74 03 00 01
- Offensive tree
- Second row, third column => Mental Force (4123)
- 1 point spent
Note:
To get the talentId from this entry, one can use this formula:
(4100 + (secondByte - 0x74) * 0x64 + ((firstByte >> 4) - 0x03) * 0x0A + (firstByte & 0x0F)
... 00 00 00 00 ...
- offset: 0x210
1E // 30
XX // unknown
-
blocktype:
0xFE
-
length:
0x98
- This block is also used for towers, and maybe other entities.
Important note : items are saved only on the keyframe + 1
. For example, I'm on the first minute (00:xx) of the game, so purchased items should be saved on the keyframe 2
(01:00), but they will be saved on the keyframe 3
(02:00). Be careful.
Example
B3
00
98 // [contentlength]
FE // [blocktype]
00 // [blockparam]
0C 01 // container type (?)
Item entries are empty the two first keyframes, all items ID are set to zero
-
offset:
0x02
-
length:
0x07
- quantity: 10
++ ++ ++ ++ // Item ID
!! // Index (slot)
!! // Quantity
!! // Charges
-
Index refers to the slot in which the item is placed, ranging from
0x00
to0x09
- 8th, 9th and 10th item entries are always the same
8th:
D1 07 00 00
07
01
00
- This is the recall spell in form of an item
9th:
00 00 00 00
08
00
00
10th:
00 00 00 00
09
00
00
-
offset:
0x48
-
length:
0x04
- quantity: 10
Example:
00 00 80 BF // -1.0
00 0E 8E 40 // 4.44 Secounds
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
00 00 80 BF
- Represents the cooldown timer for each item as a float in seconds.
- -1.0 seems to mean "item ready"
-
offset:
0x70
-
length:
0x04
- quantity: 10
Example:
00 00 70 42 // 60.0 (Gunblade)
00 00 B4 42 // 90.0 (Zhonyas)
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 F0 42 // 120.0 (Yellow Trinket)
00 00 00 00
00 00 00 00
00 00 00 00
- Represents the base cooldown for each item that is currently on cooldown as a float in seconds.
This block sometimes follows the inventory.
-
length:
0xA
Example:
F3 00 0A 00
1C 01 // Same as inventory
D3 07 00 00 // 2003 (Item ID of Health Potion)
DA 07 00 00 // 2010 (Item ID of Total Biscuit of Rejuvenation)
- This probably means that Health Potions should be replaced with Biscuits.
-
blocktype:
0x46
or0x45
-
length:
0x128
or0x120
Example:
A3 00
28 10 00 00 // [contentlength]
46 // [blocktype]
00 // [blockparam]
Length | Reason |
---|---|
0x128 | All data present |
0x120 | No jungle data |
0x124 | ? |
The first 4 bytes are always the contentlength again:
28 01 00 00
-
offset:
0x4
Offset | Hexadecimal | Length | Type | Value | Description | Note |
---|---|---|---|---|---|---|
0x0C | 06 00 00 00 | 0x04 | integer | 6 | Assists | |
0x10 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x14 | 07 00 00 00 | 0x04 | integer | 7 | Kills | |
0x18 | 0F 00 00 00 | 0x04 | integer | 15 | ||
0x1C | 01 00 00 00 | 0x04 | integer | 1 | Double kills | |
0x20 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x24 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x28 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x2C | 00 00 00 00 | 0x04 | integer | 0 | Unreal kills | view |
0x30 | F8 26 1C 46 | 0x04 | float | 9993.742188 | Total gold earned | |
0x34 | 00 6C 02 46 | 0x04 | float | 8347 | Total gold spent | view |
0x38 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x3C | 00 00 00 00 | 0x04 | integer | 0 | ||
0x40 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x44 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x48 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x4C | 00 00 00 00 | 0x04 | integer | 0 | ||
0x50 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x54 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x58 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x5C | 1F 00 00 00 | 0x04 | integer | 31 | ||
0x60 | 03 00 00 00 | 0x04 | integer | 3 | Current killing spree | |
0x64 | 93 85 30 43 | 0x04 | float | 176.521774 | Largest critical strike | |
0x68 | 03 00 00 00 | 0x04 | integer | 3 | Largest killing spree | |
0x6C | 02 00 00 00 | 0x04 | integer | 2 | Largest multi kill | |
0x70 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x74 | CB 0A 26 44 | 0x04 | float | 664.168640 | Longest time spent living | |
0x78 | 08 A0 6C 45 | 0x04 | float | 3786.001953 | Total magic damage dealt | |
0x7C | C4 CC 7F 43 | 0x04 | float | 255.799866 | Magic damage dealt to champion | |
0x80 | CC 13 E5 45 | 0x04 | float | 7330.474609 | Magical damage taken | |
0x84 | 17 00 00 00 | 0x04 | integer | 23 | Total minions killed | |
0x88 | 00 00 | 0x02 | integer | 0 | Padding | |
0x8A | 4B 00 00 00 | 0x04 | integer | 75 | Total neutral minions killed | |
0x8E | 05 00 00 00 | 0x04 | integer | 5 | Neutral minnions killed in enemy jungle | view |
0x92 | 46 00 00 00 | 0x04 | integer | 70 | Neutral minions killed in team jungle | view |
0x96 | 00 00 00 00 | 0x04 | integer | 0 | ||
0x9A | 04 00 00 00 | 0x04 | integer | 4 | Deaths | |
0x9E | 00 00 00 00 | 0x04 | integer | 0 | Penta kills | |
0x9E | 8B AA AF 47 | 0x04 | float | 89941.085938 | Total physical damage dealt | |
0xA2 | 48 23 42 46 | 0x04 | float | 12424.820312 | Physical damage dealt to champions | |
0xA6 | CF 45 0A 46 | 0x04 | float | 8849.452148 | Physical damage taken | |
0xAA | 00 00 00 00 | 0x04 | integer | 0 | ||
0xAE | 00 00 00 00 | 0x04 | integer | 0 | Quadra kills | |
0xB2 | 00 00 00 00 | 0x04 | integer | 0 | ||
0xB6 | 00 00 00 00 | 0x04 | integer | 0 | ||
0xBA | 3E 00 00 00 | 0x04 | integer | 62 | ||
0xBE | 00 00 00 00 | 0x04 | integer | 0 | ||
0xC2 | 44 00 00 00 | 0x04 | integer | 68 | ||
0xC6 | 09 00 00 00 | 0x04 | integer | 9 | ||
0xCA | 04 00 00 00 | 0x04 | integer | 4 | ||
0xCE | 13 00 00 00 | 0x04 | integer | 13 | ||
0xD2 | 00 00 00 00 | 0x04 | integer | 0 | ||
0xD6 | 64 00 00 00 | 0x04 | integer | 100 | Team id | view |
0xDA | DC C3 C4 44 | 0x04 | float | 1574.120605 | Not sure | |
0xDE | 00 00 00 00 | 0x04 | integer | 0 | Not sure | |
0xE2 | 40 9F D3 41 | 0x04 | float | 26.452758 | Not sure | |
0xE6 | 00 00 00 00 | 0x04 | integer | 0 | Not sure | |
0xEA | 7B 7F D4 47 | 0x04 | float | 108798.960938 | Total damage dealt | |
0xEE | CB 6F 5D 46 | 0x04 | float | 14171.948242 | Total damage dealt to champions | |
0xF2 | EA 77 86 46 | 0x04 | float | 17211.957031 | Total damage taken | |
0xF6 | B1 09 00 00 | 0x04 | integer | 2481 | Total heal | |
0xFA | CD 04 BE 43 | 0x04 | float | 380.037506 | Total time crowd control dealt | |
0xFE | 18 4B 00 43 | 0x04 | float | 128.293335 | Total time spent dead | |
0x102 | 01 00 00 00 | 0x04 | integer | 1 | Total unit healed | |
0x106 | 00 00 00 00 | 0x04 | integer | 0 | Triple kills | |
0x10A | 12 80 6B 46 | 0x04 | float | 15072.017578 | Total true damage dealt | |
0x10E | AD 6A BA 44 | 0x04 | float | 1491.333618 | True damage dealt to champions | |
0x112 | 11 01 81 44 | 0x04 | float | 1032.033325 | True damage taken | |
0x116 | 00 00 00 00 | 0x04 | integer | 0 | Turrets destroyed | |
0x11A | 00 00 00 00 | 0x04 | integer | 0 | Inhibitors destroyed | |
0x11E | 00 00 00 00 | 0x04 | integer | 0 | ||
0x122 | 00 00 00 00 | 0x04 | integer | 0 | Wards destroyed | |
0x126 | 00 00 00 00 | 0x04 | integer | 0 | Wards placed | |
0x12A | 00 00 00 00 | 0x04 | integer | 0 | ||
0x12E | 00 00 00 00 | 0x04 | integer | 0 | ||
0x132 | 00 00 | 0x02 | integer | 0 | Padding |
Need more details on what is meant by "unreal"
Seems to be sometimes unsynchronized, can be greater than total gold earned
Can be 100
for BLUE team or 200
for PURPLE team
This jungle data is not present in the keyframe on a map without jungle, like ARAM (Howling Abyss) and Dominion (The Crystal Scar) modes
-
blocktype:
0x15
-
length:
0x3
!! // Ability number
!! // Ability level
00
-
Ability number refers to ability number, ranging from
0x00
to0x03
- Ability level refers to ability level
Example:
B3 00 03 15 00
00 00 01 // Q
F3 00 03 00
01 00 01 // W
F3 00 03 00
02 00 01 // E
F3 00 03 00
03 00 01 // R
-
blocktype:
0x17
Example:
B3 00 11 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 // "lucianqdamage"
Example:
B3 00 06 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"
- There is no known use for these strings
-
offset:
N/A
-
length:
variable
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
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
- Many of these seem to be floats
-
blocktype:
0xFE
-
length:
0x7
93
00
07 // [contentlength]
FE // [blocktype]
00 00 00 00 // [blockparam]
15 01 // container type (?)
19 00 00 40 // Entity ID
00