鬼谷八荒MOD 召唤NPC加入战斗(测试版)
天天钻虫洞
编辑于 2022年01月14日 06:36

玩鬼谷八荒的时候,一个人刷副本感觉实在是有点无聊,想着能带npc进图就好了,但目前官方还没有做这个功能,所以只能自己试着动手做个MOD。

先说MOD功能吧,大概功能就是按F11把指定的NPC召唤到当前的战斗场景中,然后NPC可以帮你一起过图,打架,打宗门战斗之类的。

不用担心NPC死了会不会导致需要你去救之类的,这个MOD相当于只是把NPC的数据复制了一个copy搬进了战斗场景中,你甚至可以让一个NPC被召唤好几次。

如上图,不过注意npc不大会躲技能,因此在洪荒难度很容易被大boss秒。

很大程度上还算是我运气不错,用了好几天,翻了好多好多函数,总算是把基础功能做出来了。但是因为是半蒙半猜写出来的代码,想要进一步改进也非常困难,目前没有大佬指点我的话,可能这个MOD功能也很难继续完善了,有很多想法,但可惜因为看不了官方代码,所以想写也写不出来。

另外提一句,在0.0.1版本中,虽然大部分战斗场景都可以召唤NPC帮自己和友方,但宗门大比召唤NPC的话,测试出来的情况是:积分战部分,可以帮助自己宗门的队友打敌方。但擂台赛部分,似乎只会帮助在左边的一方。举个例子:

因为我自己的那个存档删掉了,我这里是引用的up 夜步眠 里面的视频截图

假如你是神渊门,你的队友跳上台,但是处于右边位置,召唤的NPC会帮幻情宗打你的队友。

但目前我还没有测试如果自己上擂会不会导致召唤的NPC打自己,这个有待测试。

虽然目前是0.0.2版本,改了调用方法,但这个bug仍然可能会出现,所以建议是擂台赛慎用召唤功能。

这个MOD有时候在召唤NPC战斗了一段时间后,会莫名其妙的卡死,我也搞不清楚具体原因,甚至都不知道是游戏本身的bug还是我做的MOD导致的bug。因为鬼谷八荒的代码对我来说是完全闭源的,我没办法去具体调试,如果有大佬能帮忙解决这个问题是最好不过了。

如果出现了NPC和怪突然全体站着不动,然后按退出没反应的情况,大概率就是游戏卡死了,这个时候只能强退游戏,不过MOD的bug应该不会影响存档,因为只是战斗场景,你按下F11之后才会调用对应代码,而且不会改动世界地图上的NPC数据,所以不用担心会让你存档损毁之类的。

0.0.2版本改动

调用了新的接口,并做了老版本游戏的兼容;

解决了npc血条显示和无法吸引攻击问题;

解决了打败放走npc后,重新对战会卡死的bug(感谢 绫慧雅 给我提供的bug说明,我自己还没发现这个bug)

b站改专栏的次数有限,如果后续有更新就不再改专栏了,自己去压缩包里面的rtf文件里面看就可以了,版本变更和具体代码里面都有。

好了,MOD功能大体介绍完了,下面是安装方法。


安装过MelonLoader的可以跳到第三步

步骤一:

首先,需要下载叫做MelonLoader,由于官方创意工坊还没出,MOD制作目前还得依靠unity大佬的插件(不用这个实在是不知道怎么改)

插件是在github上的:

https://github.com/LavaGang/MelonLoader/releases

因为是外国网站,可能有时候会上不去,3DM上有一个相关的链接,是国人大佬专门为鬼谷八荒做了修改的版本:

https://mod.3dmgame.com/mod/173451

如果是下的exe版本的,把exe下载到游戏安装目录,然后运行exe,点击install按钮即可。

如果是下的压缩包版本,把压缩包解压到游戏安装目录即可。

步骤二:

运行游戏,等待游戏启动后,退出(第一次需要生成文件,所以启动时间可能很长,生成的文件目前来看大小是300M多一点)。

步骤三:

下载我给的压缩包,然后解压到安装目录下的Mods文件夹,链接:

https://pan.baidu.com/s/1TYglfRHV0AshlHgl2tMfGA 

提取码:ggbh 

复制链接的时候记得删掉后面的版权声明,那个是B站自己加上去的,很多人就是因为忘记删掉说链接失效,其实没有

当然,真失效了记得告诉我,我补个链接

内部包含两个文件,一个是dll,一个是txt,txt是配置文件,每行代表一个NPC,可以是NPC姓名,也可以是id

上图就是一次召唤两个NPC,一个是叫 巫梅梅 的NPC,一个是id为Qqtyad的NPC。

修改之后保存即可,不用读档,不用退出重进游戏。

步骤四:

进入游戏,进入副本/PK/宗门战,然后按下F11,会在你屏幕中心点出现你要召唤的NPC,按一次召唤一次,可以召唤相同的NPC。不要求NPC和你的亲密度或者关系,仇人也可以,召唤的NPC只会帮你打架,就好像小说里面的战斗傀儡一样。

同一个副本内,进入下一个地图之后,NPC会一样出现在下一个地图上,不用重复召唤。

 ps:如果你打算让原版游戏和MOD互不影响,可以考虑用SandBoxie,这个软件的功能是创造一个沙箱,然后把进程放进沙箱里面,读写文件都只会影响沙箱里面的文件,而且不像虚拟机那样会消耗太多性能和内存。

SandBoxie地址:

https://github.com/sandboxie-plus/Sandboxie/releases

另外,实测MelonLoader的3DM修改版本,在SandBoxie中无法使用,需要使用github上的最新版本。


因为鬼谷八荒代码是闭源的,加上本人技术比较菜,也只能做到这种程度了,后续完善或者修复bug可能会很难,所以想要一个功能强大MOD的朋友可能要失望了。

后续版本不知道会不会失效,目前我用的版本是2022-1-06更新的版本,我还留有一个9-14的版本,也就是刚加入连心结和冰夷的那个版本,用这个MOD也是没问题的,所以应该是可以跨版本。但是……不敢做保证,毕竟官方代码这个东西,随时可能会改。

如果想完善这个MOD,可以考虑一下3DM    ゞ残月﹎_|    大佬的教程帖子:

https://bbs.3dmgame.com/thread-6133030-1-1.html

不过这个MOD没有使用里面说的Villain,所以可以不用下载那个插件。

最后老样子,把实现代码贴上来,方便后续有大佬完善这个MOD,或者把功能加入到其他MOD里面。

这里面的UnitType我其实有点疑问,按理来讲这个UnitType应该是单位类型,但是设置为不同的值会影响NPC的阵营,但这个阵营判断又很迷,比如我设置为UnitType.Monst,有时候他连敌方阵营也一块儿打;有时候只会攻击玩家;有时候不会攻击敌方阵营,但是会受到敌方的范围伤害。设置为UnitType.NPC,他直接就变成中立单位了,站在原地不动了,也不吃伤害。

总之是给我搞得有点迷糊,也不敢乱改了。我个人猜测,这个召唤代码其实很可能没有调游戏内部的战斗管理,所以阵营上才会这么混乱,但是设为UnitType.PlayerNPC或者UnitType.Player,是固定玩家阵营的,正因为这样这个MOD才算是勉强能用。

希望有大佬能研究研究具体是怎么回事,我这个真的是自己瞎猜的,毕竟又不知道内部实现逻辑。

另外,欢迎在评论区发表指正和意见。可以喷,毕竟可能会有bug,我自己调试那么久,遇见很多次bug,很清楚遇见bug的心情,但请不要人身攻击,谢谢。