ajbdev / phpsc2replay

Automatically exported from code.google.com/p/phpsc2replay
0 stars 1 forks source link

cannot parse 1 replay of mine #37

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. upload the attached file to your upload_file.php demo
2. various details like apm, buildings, units, etc. are not parsed

What is the expected output? What do you see instead?
Some Details are not parsed correctly

What version of the product are you using? On what operating system?
I tried a your script on linux with apache2, on windows with xampp, and your 
upload_file.php demo. Always the same output.

Please provide any additional information below.
Keep up the good work :)

Original issue reported on code.google.com by sascha.z...@gmail.com on 28 Dec 2010 at 6:21

Attachments:

GoogleCodeExporter commented 8 years ago
I'm having the same issue. I debugged some, and saw that it was any replay that 
wasn't 1v1.

Upon investigation, I tracked the issue down to mpqfile.php: 
MPQFile->parseSerializedData(). 

It was getting into the default switch with a $dataType value of 21, which is 
not covered in the switch. Dumping out the $dataType on a 1v1 replay, I noticed 
this number never coming up (only values 2, 4, 5, 6, 7 and 9 from the replay I 
tried). I just pulled a random 1v1 replay from sc2win.com.

Hope this helps!

Original comment by hassle.t...@gmail.com on 30 Dec 2010 at 12:56

Attachments:

GoogleCodeExporter commented 8 years ago
hassle.the.hoff,

I'm not sure you are having the same issue as he is. When I upload his attached 
replay the serialized data parses fine. Its the game events that do not parse 
for me which would explain why apm, build orders, and winners aren't parsed.

Looking into the game events parsing I find that there is a weird startup 
sequence that I can't seem to find in other replays. The byte code:

00 01 0b # Player 1 joins (Normal)
00 02 0b # Player 2 joins (Normal)

#Now what is this doing here?
#It appears to be an screen movement event
#But its for a person that hasn't joined yet and the game hasn't started.
00 63 08 64 d4 6b a4 b5 48 4d ff 43 fa

#Next we see a really long timestamp and an unknown event
#EventType = 000, Global=True, Player = 10, EventCode = 15?
#Something is really wrong here as well.
56 8d 67 1a 15 88 0f 04 00 00 00 00 00 00 00 00 00 00 6e 03 00 00 00 00

00 03 0b # Player 3 joins (Normal)
00 04 0b # Player 4 joins (Normal)
00 10 05 # Game Starts (Normal)

Its really odd initialization code. I wondered if the replay was corrupted 
somehow, but it plays just fine on Battle.net. When I added an exception to 
skip over the odd bits I ran into another problem at Byte 12717 with an unknown 
event.

00 80 00 00 00 00 38 61 51 56 87 D1 00

Adding another clause to skip the next 10 bytes for eventType=4,eventCode=00 
allows the parsing to finish just fine.

Perhaps someone has some insight as to what is going on here?

Original comment by graylin....@gmail.com on 6 Jan 2011 at 4:24

Attachments:

GoogleCodeExporter commented 8 years ago
First of all, sorry for the long delay in responding. Event code 08 parsing has 
been improved now, thanks to that replay and another I just obtained it should 
work at least for the 2v2 replay. As for the second one, maybe some other 
update fixed the issues with it but it doesn't seem to be broken any more.

Closing the issue.

Original comment by lauri.vi...@gmail.com on 25 Jan 2011 at 9:11