• 注册
  • 数据修改教程 数据修改教程 关注:1758 内容:357

    SPT4.0修改mod武器数值的方法

  • 查看作者
  • 打赏作者
  • 2
  • 数据修改教程
  • 初来乍到

    众所周知的,SPT4.0的mod系统转移到了C#,因此mod中会有一个dll,而且大多数mod的数值都将在这个dll中定义

    那么修改数值,最直接的方法就是拉源码编译了。但遇到不开源的mod或者没有条件配置.NET开发环境的话,就需要通过修补的方式更改数值了

    好在,生成的dll也是.NET,即便没有逆向工程经验的玩家也可以很轻易地修改(前提是没有加保护壳,不过我试了一下,加壳之后服务端好像没法加载这个mod,至少加themida不行)

    我们将用到的工具是 dnSpyEx

    首先把我们要修改的dll拖进窗口,我以191mod为例

    SPT4.0修改mod武器数值的方法

    接着我们在左边展开,直到mod的命名空间

    SPT4.0修改mod武器数值的方法

    接下来我们就是要找到我们要修改的物品的数值是在哪里定义了。

    比如我要将dvc-12的穿透改为99,我们就找到dvc-12的数值定义位置

    在例子中我们放在CreateAmmo函数中,实际情况下作者想放在哪个函数,叫什么名字都可以

    SPT4.0修改mod武器数值的方法

    然后我们找到这里,后面OverrideProperties中的内容就是子弹的数值了

    SPT4.0修改mod武器数值的方法

    我们确定了数值位置后,就在左上角切换到IL with C#视图,再次确认数值在IL代码中的位置

    SPT4.0修改mod武器数值的方法SPT4.0修改mod武器数值的方法

    然后右键,Edit IL Insructions

    SPT4.0修改mod武器数值的方法

    你会发现数值可能是16进制,没关系,我们可以借助计算器

    SPT4.0修改mod武器数值的方法

    编辑时可以直接输入十进制数,不过要注意以16进制保存的位数不能超过原数据位数(16进制),编辑完成后按右下角OK保存即可

    SPT4.0修改mod武器数值的方法

    切换回C#视图你会发现数值已经变化了

    SPT4.0修改mod武器数值的方法

    然后我们点击左上角File > Save Module

    SPT4.0修改mod武器数值的方法SPT4.0修改mod武器数值的方法

    一般来讲直接点OK就好了,然后进游戏验证一下

    SPT4.0修改mod武器数值的方法

    这样就修改成功了。

    另外想说的:

    如果要改的数值16进制位数更大也有办法,添加依赖然后采用重编译的方法也可以(我后面可能会补充)

    虽然这相较于别的逆向工程来说是很简单的了,但还是麻烦,至少比编辑json麻烦。

    其实我们可以搞一套模板,直接读json,(我没搞错的话,3.xx版本很多mod就是靠typescript/javascript实现读取json的)这样可以很方便的从3.xx版本移植上来,玩家想修改也方便。

    或者哪怕不兼容旧版本模板,把数值部分放在json保存也可以。

    目前好像已经有大佬在这么做了。等我有空我也折腾折腾

    略有小成
    虽然看不懂,但就是爱看这些东西 [s-10]
    回复
    自成一派
    VIP4

    你应该在编译QBZ 191 了??啥时候能出成品?

    回复

    请登录之后再进行评论

    登录
    离线版教程
  • 今日 1
  • 内容 1027
  • 关注 1758
  • 聊天
    关注 8

    【招募】GRIFFIN TKF项目开工 期待你的加入 || 你是否想加入格里芬书写自己与人形的故事

  • 签到
  • 任务
  • 发布
  • 模式切换
  • 偏好设置
  • 帖子间隔 侧栏位置: