dysmantle吧 关注:2,441贴子:9,852

PC+3DLC版功能型mod制作/游戏代码修改教学贴(原创)

只看楼主收藏回复

首先什么是功能型mod。即为使用游戏内建的条件,指令创造出游戏本身不具备的功能(比如可以实现朝人物面对的方向瞬移一段距离,种子包一口气播撒在所有能播撒的土地,无条件营火传送等)。区别于数值型mod(把各种修正加给某个物品或者简单地修改物品某个数值)。目前出现的mod全部都是数值型的,这种mod也是自己摸索修改游戏的第一步,因为不会出现bug。
为什么要发帖。研究一个新功能前前后后投入总时间好几周了也没结果,需要更多人闲下来时候钻研点新功能。而且这游戏这么多年也不火,连可以指导的大佬都没有。


IP属地:保加利亚1楼2023-10-10 22:10回复
    如何解开游戏数据包。
    使用别人的mod或者自己制作mod都需要,这是一切的第一步。
    在以下网址下载mod工具
    https://dysmantle.com/secret/mooding_kit.zip
    解压后把所有东西放在游戏安装目录里面。同时把解压出来的一个tools文件夹里面的nx-pak-tool从tools里面移到游戏主目录。形成以下格局(我修改时候可能自己新建的一些文件夹,不会完全一样,但差不多)。
    之后把data-windows.pak拖动到nx-pak-tool图标上解压。
    最后把data-windows移出游戏目录(弄到别的地方备份,自己修改出重大bug又改不回去时候还能重头再来)


    IP属地:保加利亚2楼2023-10-10 22:20
    收起回复
      接下来是准备步骤。
      完全自己研究修改游戏少不了搜索工具。比如我们想把最终镰刀的冲击波找到并修改,那么最开始我们只能猜测代码一定会包含‘wave’。但是游戏所有的代码都写在xml或者nut文件中,可以用txt打开却无法被window自带的搜索引擎检索。因此下载搜索引擎叫everything。图标是个橙色放大镜。自行研究怎么用这个软件,没教学,但不难。
      txt编辑软件notepad++。也比windows自带txt好用很多。
      如果我们搜索shockwave则可以直接找到所有和冲击波相关的东西


      IP属地:保加利亚3楼2023-10-10 22:30
      回复
        补2L的


        IP属地:保加利亚4楼2023-10-10 22:31
        回复
          接下来是一些修改例子,帮助大家知道定义游戏各种环境的东西都在哪。这游戏代码写的比较幼稚,能看到不少注解。往往一个东西的所有参数不在一起。比如所有武器的初始破坏力和每次升级增加的破坏力就不在一起。
          先来看最简单的数值型修改:只改变data-windows文件夹(老版本是data文件夹)/items里面的东西。
          这里面按照顺序有背包,帽子,外套,宠物,投掷物品类,武器类,小物件类。以及涉及到它们使用时候的各种函数(utils)。modifiers很有用,里面有全部的游戏允许修正。比如什么物料插槽大小,物料收集距离,新修正材料掉落数量等等。你能在游戏里发现的所有武器,衣服,食材修正全部都在里面。很显然你不能自创修正。同时这些修正你可以写给任何一个东西。攻速修正你完全可以写给背包。因为所有修正最后都是加在游戏人物身上的,不分防具和武器。


          IP属地:保加利亚5楼2023-10-10 22:42
          收起回复
            例子:将小黄鸭, 手电筒,磁铁的功能变成无条件允许。
            既然是无条件,那么就必须加给永远都会穿戴的东西,很显然,是背包。小黄鸭是小物件,我们进入trinkets找到它。

            游戏贴心地放了文件和图标,可以一下子找到小黄鸭。点击小黄鸭同名的文件。

            小黄鸭的文件是最为简单的。这里面起到防溺水功能的显然只有tags=‘’这一行。
            我们把这一行复制给背包的对应位置就行。
            注意,所有物品的onmetadataread()和ondodifiersread()里面不允许出现条件语句。这两句是进游戏时候加载的修正,不退游戏不会发生变动。比如我想把武器的攻击范围,攻速,攻击角度改成没有敌人时候*5(急速拆家,又不影响打怪),有敌人时候恢复原样就无法实现。


            IP属地:保加利亚6楼2023-10-10 22:52
            回复
              把三个物品的功能都给背包后,结果如下:
              最开始两行是定义后文出现的局部变量,基于C。
              onmodifiersread()里面我新加了更多东西。分别是物料收集距离*10, 物料插槽+10, 防止溺水,物料传送(某个物料填满一个插槽会自动回储物箱)。
              onequipped()里面最后新加的6行则是手电筒相关的东西。
              由于这类修改只是简单地把一个物品的功能添加给令一个,因此仍是简单的数值修改,不涉及新功能。同时此类修改成百上千,不可能把每个物品的路径都写出来。因此需要自己找,不过很简单,都在items里面,还都给配了图片。


              IP属地:保加利亚7楼2023-10-10 23:00
              回复
                稍微难一点点的数值型修改例子:普通种子包瞬间播撒附近所有能播撒的土地。其实不是所有,而是相当大的一个半径内所有土地。但也别太大,省得把种子撒到自己不知道的地方。
                其实锄头,种子包,要一个一个来有点傻,更何况一个个来也没有任何游戏乐趣。对相当一部分人来说可能都是这样吧。

                27行定义播种范围,以玩家为中心:10足够覆盖一个屏幕了。
                两个for循环遍历所有10半径以内的地块。
                32行一个个检索范围内允许耕种的土地。
                33行, 如果这样的土地存在。
                35,36,37行创建播种指令。
                38,39,40是用来种神力的,不过普通种子包的神力ui默认不显示,写了这三行也不会显示神力种子。加上是因为我最开始是为神力种子包写的一口气播撒功能,后来直接复制给了普通种子包。


                IP属地:保加利亚8楼2023-10-10 23:26
                回复
                  比较复杂的数值型修改。调用一个游戏中存在但是不显示的武器,将其改成可以同时做到钝器,利器能做的对物品伤害,对怪物无伤,攻击范围是一般武器的8倍,攻速是武士刀6倍,攻击范围为360°,破坏力可升级调节。(拆家专用,不用换来换去了,同时不影响战斗中的平衡,建议自行升级时候保持和自己最好的钝器同样的破坏力,要是开局直接+100,就破坏了游戏成长乐趣)。为什么不做成直接把棒球,扳手等钝器变成拆家神器而打怪只用劈砍武器。是因为地狱地图的怪物很多不接受劈砍伤害。


                  IP属地:保加利亚9楼2023-10-10 23:41
                  回复
                    DLC3出了吗


                    IP属地:辽宁来自iPhone客户端10楼2023-10-11 00:33
                    收起回复
                      mod工具404了,能给个网盘地址么。


                      IP属地:广西11楼2023-10-21 11:38
                      收起回复
                        楼主有成品吗,我们解构成品,一一对照可能学得更快一些?


                        IP属地:福建12楼2023-11-04 09:13
                        收起回复
                          工具的下载地址失效了 改成moding_kit.zip也不行


                          IP属地:广西13楼2023-11-04 13:44
                          收起回复
                            楼主大大,请问人物属性数值怎么修改?


                            IP属地:四川14楼2024-01-07 00:10
                            收起回复
                              楼主工具可以分享个网盘么?下载不到。改了DDING也链接不上。


                              IP属地:吉林15楼2024-03-07 22:04
                              收起回复