连续两次测试出现KeyError: 'hand'导致进程退出,请问如何解决
tandaqi opened this issue · 5 comments
Traceback (most recent call last):
File "main.py", line 728, in
MainLoop(level=level)
File "main.py", line 710, in MainLoop
aiWrapper.recvFromMajsoul()
File "main.py", line 125, in recvFromMajsoul
failed = self.parse(result)
File "C:\Users\Blaze\Desktop\MajsoulAI-master\majsoul_wrapper\sdk.py", line 172, in parse
hands = [players[i]['hand'] if tingpai[i] else []
File "C:\Users\Blaze\Desktop\MajsoulAI-master\majsoul_wrapper\sdk.py", line 172, in
hands = [players[i]['hand'] if tingpai[i] else []
KeyError: 'hand'
错误提示如上,麻烦看下,谢谢
我这里没有见过这个问题...每次对局会在当前目录产生一个'websocket_frames.pkl'的日志文件记录了所有的websocket通信,方便的话可不可以'$python -m majsoul_wrapper.liqi -l websocket_frames.pkl > liqi.log'解析一下websocket,给我看看liqi.log拿到的数据是什么?以及操作系统,python版本等信息...
{'id': 977, 'type': <MsgType.Notify: 1>, 'method': '.lq.ActionPrototype', 'data': {'step': 144, 'name': 'ActionNoTile', 'data': {'liujumanguan': False, 'players': [{'tingpai': False}, {'tingpai': True, 'hand': ['3m', '4m', '5m', '5m', '6m', '7m', '1s', '2s', '2s', '3s', '3s', '4s', '6z'], 'tings': [{'tile': '6z', 'haveyi': True, 'yiman': False, 'count': 1, 'fu': 40, 'biaoDoraCount': 2, 'yimanZimo': False, 'countZimo': 2, 'fuZimo': 30}]}, {'tingpai': True, 'hand': ['0m', '6m', '7m', '8m', '8m', '8s', '8s'], 'tings': [{'tile': '8s', 'haveyi': True, 'yiman': False, 'count': 1, 'fu': 30, 'biaoDoraCount': 2, 'yimanZimo': False, 'countZimo': 1, 'fuZimo': 40}, {'tile': '8m', 'haveyi': True, 'yiman': False, 'count': 1, 'fu': 30, 'biaoDoraCount': 2, 'yimanZimo': False, 'countZimo': 1, 'fuZimo': 40}]}, {'tingpai': False}], 'scores': [{'oldScores': [24000, 35000, 27000, 13000], 'deltaScores': [-1500, 1500, 1500, -1500]}]}}}
这个是最后两句有意义的输出,报错出现在下一局开始前
已在最新版修复。在我这里没有{'tingpai': False}这种数据而直接是{},目测可能是不同protobuf版本、雀魂版本引起的差异。
{'id': 552, 'type': <MsgType.Notify: 1>, 'method': '.lq.ActionPrototype', 'data': {'step': 143, 'name': 'ActionDiscardTile', 'data': {'seat': 2, 'tile': '6m', 'isLiqi': False, 'moqie': True, 'zhenting': True, 'isWliqi': False}}}
{'id': 553, 'type': <MsgType.Notify: 1>, 'method': '.lq.ActionPrototype', 'data': {'step': 144, 'name': 'ActionNoTile', 'data': {'liujumanguan': False, 'players': [{'tingpai': False}, {'tingpai': True, 'hand': ['1m', '1m', '4m', '4m', '3p', '3p', '4p', '4p', '8p', '8p', '5s', '5s', '5z'], 'tings': [{'tile': '5z', 'haveyi': True, 'yiman': False, 'count': 2, 'fu': 25, 'biaoDoraCount': 0, 'yimanZimo': False, 'countZimo': 3, 'fuZimo': 25}]}, {'tingpai': True, 'hand': ['4m', '4m', '6m', '7m', '8m', '3p', '4p', '7p', '8p', '9p', '0s', '6s', '7s'], 'tings': [{'tile': '2p', 'haveyi': True, 'yiman': False, 'count': 2, 'fu': 30, 'biaoDoraCount': 1, 'yimanZimo': False, 'countZimo': 3, 'fuZimo': 20}, {'tile': '5p', 'haveyi': True, 'yiman': False, 'count': 2, 'fu': 30, 'biaoDoraCount': 1, 'yimanZimo': False, 'countZimo': 3, 'fuZimo': 20}]}, {'tingpai': False}], 'scores': [{'oldScores': [25000, 21800, 24000, 28200], 'deltaScores': [-1500, 1500, 1500, -1500]}]}}}
更新了最新版之后依然出现这个问题,不过和之前相比,现在可以完整打完一局,但是在第二局的第二场比赛结束依然会报主回复中的错误,这个问题重复了两次,我的环境protobuf版本为3.12.2(默认安装的版本会出现AttributeError: module 'google.protobuf.descriptor' has no attribute '_internal_create_key”的错误,升级后正常)chrome及driver版本为 84.0.4147.30