Blizzard / Blizzard/s2protocol

Where is Skin Info?

Open
#102 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
641
Forks
118
PR merge metrics
No merged PRs in 30d

Description

I was interested in whether a player is using skins in a replay.

I thought the skin info is this: m_syncLobbyState->m_userInitialData->m_skin

So the code was like (if I want to print out the first player's skin info):
`archive = mpyq.MPQArchive(replay_path)`
`contents = archive.header['user_data_header']['content']`
`header = versions.latest().decode_replay_header(contents)`
`baseBuild = header['m_version']['m_baseBuild']`
`protocol = versions.build(baseBuild)`
`initData = archive.read_file('replay.initData')`
`InitData = protocol.decode_replay_initdata(initData)['m_syncLobbyState']['m_userInitialData']`
`print(InitData[0]['m_skin'])`

But for all the replays I checked, all players had `b''` , which means they are not using skin....?
While some of the replays did have players using skin.

So it that the right place to find skin info?
Or is it actually stored somewhere else?

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the replay decoding flow shown in the issue: replay.initData, decode_replay_initdata, m_syncLobbyState, m_userInitialData, and m_skin. Compare the decoded values with replays known to contain player skins and inspect whether another mentioned replay section or field contains the information. Done means identifying the correct location or confirming why m_skin is empty, with a reproducible example.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
reverse-engineering
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.