happyleavesaoc / aoc-mgz

Age of Empires II recorded game parsing and summarization in Python 3.
MIT License
197 stars 41 forks source link

RuntimeError: bad object parse #93

Closed yoshi3241 closed 1 year ago

yoshi3241 commented 1 year ago

In the latest AOE2DE version, this error occurred during replay analysis. Please tell me how to deal with it

A:\git\aoe2de\aoc-mgz>python Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.

import json from mgz.model import parse_match, serialize with open('C:/Users/yoshi/Games/Age of Empires 2 DE/76561199387650333/savegame/rec.aoe2record', 'rb') as h: ... match = parse_match(h) ... print(json.dumps(serialize(match), indent=2)) ... ^Z

Traceback (most recent call last): File "", line 2, in File "A:\git\aoe2de\aoc-mgz\mgz\model__init__.py", line 105, in parse_match data = parse(handle) ^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 544, in parse players, mod = parse_players(header, num_players, version, save) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 507, in parse_players players = [parse_player(header, number, num_players, save) for number in range(num_players)] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 507, in players = [parse_player(header, number, num_players, save) for number in range(num_players)] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 118, in parse_player sleeping, end = object_block(data, end, player_number, 1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 89, in object_block objects.append(dict(parse_object(data, pos), index=index)) ^^^^^^^^^^^^^^^^^^^^^^^ File "A:\git\aoe2de\aoc-mgz\mgz\fast\header.py", line 55, in parse_object raise RuntimeError("bad object parse") RuntimeError: bad object parse

recError.zip

happyleavesaoc commented 1 year ago

Hi, you'll have to use the full parser for this rec.

INFO:mgz.summary:using model summary
WARNING:mgz.summary:could not fast parse; falling back: bad object parse
INFO:mgz.summary:using full summary
INFO:mgz.summary.full:parsed header in 20.42 seconds
INFO:mgz.summary.full:parsed body in 0.53 seconds
-------------
Path        rec.aoe2record
Duration    01:08:47
Played      2023-02-27 21:37:54
Completed   True
Restored    False
Postgame    False
Version     Version.DE (VER 9.4, 37, 5, 75350)
Dataset     Definitive Edition None
File Hash   96bc3f9b3188cfe32bb68880675ca2ae45796c6f
Match Hash  c1041a7a3f96575d07d104d3ff56534c329d7b00
Encoding    utf-8
Language    zh
Map         Black Forest (-1061351150, None)
yoshi3241 commented 1 year ago

thank you all the time