2021.06.04 更新带来的对局内报错问题

第一步

错误提示

System.ArgumentException: Requested value 'PLAY_CASUAL_STANDARD' was not found.

由于我选择的模式是标准休闲,所以他报错未找到 PLAY_CASUAL_STANDARD

分析&思路

PLAY_CASUAL_STANDARD 在兄弟里和原来的Managed中是搜索不到的,这里就不贴图了。说明这是个新东西。

借个账号更新炉石后,用 dnspy 打开 Hearthstone\Hearthstone_Data\Managed\Assembly-CSharp.dll 后搜索程序集(快捷键 Ctrl+K),搜索 PLAY_CASUAL_STANDARD

搜索结果:

位于一个叫做 PresenceStatus 的枚举下面。

熟悉的可以知道 PresenceStatus 是兄弟里面一个与场景有关的类,不熟悉也可以通过搜索一下其他枚举值定位到兄弟中的对应位置。

所以首先需要更新一下这个枚举。

具体修复

复制反编译炉石文件中的 PresenceStatus 枚举后,定位到兄弟的 PresenceStatus,右键编辑类,复制进去,编译一下即可。

修复结果

不再报长篇大错,只有一条

[GameplayScene] Unhandled presence status detected: PLAY_CASUAL_STANDARD. Please restart your client and try again. If the error is still not fixed, please report this message.

进入下一步。

第二步

错误提示

[GameplayScene] Unhandled presence status detected: PLAY_CASUAL_STANDARD. Please restart your client and try again. If the error is still not fixed, please report this message.

分析&思路

注意关键部分[GameplayScene] Unhandled presence status detected:,所以可以搜索一下这个字符串定位一下位置。接下来教大家用 dnspy 来搜索字符串。


题外话:有的时候前面 [GameplayScene] 这部分中间的关键词是字符串格式化输出的,如

所以如果一整个前面搜索不到的话,可以尝试去除一下关键词,比如只搜索 Unhandled presence status detected:


搜索程序集(快捷键 Ctrl+K),调出后设置为搜索数字、字符串,并设置范围为所选文件以缩小范围。

可以看到成功定位到问题所在位置。

浏览了一下整个方法,感慨一句dnspy反编译真不彳亍。

异步乱乱的不说,switch 语句还转化成 if 语句。

所以这里推荐一下 ilspy 来反编译看一下代码。

(ilspy 只能反编译,没法修改代码、编译,但是它的反编译能力比 dnspy 要强很多,大家可以根据这个反编译出来的代码进行修改,来替换进dnspy。)

这是 ilspy 反编译出来的代码

其中着重需要关注的是我所标识的两行,这个是之前游戏进行时候会走的分支(不信的话就点开其他的 case 来读一下代码)。但是现在不叫作 PresenceStatus.PLAY_GAME 了,而是分为第一步中添加的那 6 个枚举了。所以我们只要让上面添加的那 6 个枚举都走这个 case 就可以了。

具体修复

先复制出来 ilspy 中反编译出来的比 dnspy 好多了的代码。

在原来的 case PresenceStatus.PLAY_GAME: 后面添加上其他的 6 个 case 让他们都走 method_39

case PresenceStatus.PLAY_GAME:
case PresenceStatus.PLAY_RANKED_STANDARD:
case PresenceStatus.PLAY_RANKED_WILD:
case PresenceStatus.PLAY_RANKED_CLASSIC:
case PresenceStatus.PLAY_CASUAL_STANDARD:
case PresenceStatus.PLAY_CASUAL_WILD:
case PresenceStatus.PLAY_CASUAL_CLASSIC:
	await method_39(gameplay_0);

然后在 dnspy 中编辑方法,复制进去就可以了。

修复结果

一切正常。

posted @ 2021-06-04 22:09  YL给力啊  阅读(1705)  评论(6编辑  收藏  举报