适合有编程基础的人,最好有一定的英语功底,其他要求无.
使用的修改工具是dnspy,用于直接反编译unity游戏的dll文件并且修改源码.
软件下载地址(二选一,第一个是官方地址,会更新):
github: https://github.com/dnSpyEx/dnSpy/releases
链接: https://pan.baidu.com/s/1SDyNkZyP6RTO7gQWVvB5uw?pwd=8j1f
软件使用简述:
- 双击工具安装目录里的dnSpy.exe,选择左上角菜单:文件->打开,选择下一站江湖游戏部署目录\下一站江湖Ⅱ_Data\Managed\Assembly-CSharp.dll
- 左上角菜单:编辑->搜索程序集,打开全局搜索,这个最重要的功能,搜索感兴趣的代码.搜索有一个子选项,"数字/字符串"和"以上所有".其中"数字/字符串"更常用,所有游戏里的提示文本一般靠这个.
- 通过搜素打开的代码编辑界面默认是只读模式,需要编辑就右键菜单,选择"编辑方法"打开菜单编辑源码,修改后点击编译保存,有些时候点击编译会报错,但是不一定是代码没写好,只需要重新打开dll重新修改即可,原理未知.要真正修改dll还需要点击左上角菜单:文件->全部保存,且建议每修改一次就全部保存一次,不全部保存就修改其他地方容易报错.
- 还有一种修改方式是右键菜单的"编辑IL指令",这个类似于汇编修改,除非是高手,否则很难看懂,但是该方式非常适合修改数值和文本,修改后编译基本不会报错.
- 善用右键菜单的"分析"来查找函数调用
正文开始:
游戏修改的核心实际就是找到待修改逻辑的代码点.下一站江湖里各种操作后的提示信息就是关键点.
比如我想修改制作时特殊物品出现概率,那么我肯定要找到制作物品的相关代码.
比如在制作戒指春盟成功后,左边会有提示文本:制作春盟成功,那么直接在搜索界面搜索"成功"(搜索选项需要选择"数字/字符串"),为啥不搜索"制作春盟成功"这6个字应该不用我说吧?
搜索后会有三个结果随便点击一下,在点击MoveNext时会打开如下代码,这一看就是制作时的相关逻辑了.
查看发生彩蛋的条件"item.m_pProtoId != this.assemblyData.itemId",item应该就是道具的意思,结合else里的信息,猜测就是道具的m_pProtoId如果跟预期的道具id不一致,说明本次制作的道具就是特殊道具.那么就可以往上搜索(不是使用全局搜索,而是当前菜单的搜索,ctrl+f打开)m_pProtoId,很快就可以看到如下代码
可以看到"item.m_pProtoId = this.assemblyData.itemId;"在赋值后,后续还可能发生"item.m_pProtoId = num5;",这明显应该是先生成普通物品,特定情况下会变成特殊物品.再查看这一行代码"if (global::UnityEngine.Random.Range(0, 2000) < num6)"这不明显是生成一个0-2000之间的随机数,如果小于num6就能变成特殊物品,原版的2000是10000,这是我已经修改的结果.所以我需要放大5倍概率,把10000改为2000就可以.推荐使用IL指令修改.
进阶教程:
|