我也是大概一周前才开始研究怪猎的mod,因为工作比较忙也没大段时间深入研究或者整理很多内容,仍然不排除帖内所说有误,麻烦论坛大大指正。另外也没在论坛发过贴,不懂规矩,不到之处也请指正。
鸣谢:
mod制作原理:
现在进入正题,猛汉王mod是如何实现的,除开用hex workshop搞16进制的大佬,目前大多数mod都是通过文件替换实现的,变更装备外观大家都很熟悉了,就是在NativePC对应目录下用其它服饰的模型文件替换掉目标服饰的模型文件,原理是MHW在加载数据时优先读取NativePC目录下的散文件,最后加载chunk中的打包文件。
那么更换武器攻击的投射物也是同样的原理,比如太刀登龙变成扩散,只是把登龙剑生成的投射物(bullet)同理替换成了扩散弹的投射物(bullet),所以你打出登龙的时候就相当于贴脸打了一发扩散。
各类武器投射物路径和对应攻击动作:
要制作mod,也就是替换原文件,就一定要先知道对应的位置,前阵子我好像看到一个帖子标注了对应的武器代码但是我找不到了,这里我再重新整理一下。
目前攻击动作能产生投射物的只有下面标注的几种武器,拆包后路径为XXX...\out\hm\wp,而以弓为例,投射物位置则为XXX...\out\hm\wp\wp11\shell\data。
对我目前猜到的投射物对应动作也做个整理标注如下:
太刀:
虫棍:
盾斧:
狩猎笛:
斩斧:
重弩:
弓:
铳枪:
其中部分只是后缀有变化的没有重复标注,比如弓的蓄力阶段和弩弹的等级123,还有些英文后缀不同的是同一招式的不同类型投射物,比如上文提到的铳枪龙杭炮“pilebunker.shlp”的一系列衍生投射物。ride开头的则是骑乘状态下的投射物,也未单独标注。还有盾斧、狩猎笛、铳枪我玩的都不多,有些拿不准索性就没标注,因为文件基本都是英文缩写组合,常玩的猎人应该能自己看出来吧,也期待别的补充。
大型怪物投射物整理:
最后,也是我做的主要工作,就是整理出一些常用的大型怪物投射物的文件。因为时间有限,加上实用性考虑,只整理了文末提到的既有“特效”也能“生效”的投射物,并且只整理了常用的。
我想那种土沙龙甩出来的泥团子、大凶恶龙吐的shi一样的麻痹痰还有尸套龙恶心的臭气,应该也没人想用,大家想要的大多还是像冥灯的激光呀(虽然一点都不好用)、钢龙的风圈啊(三个掉帧四个卡爆五个崩溃)和麒麟的雷呀(赌五毛既酷炫又实用)这样的。
以下是注意点,请一定看完:
1.警告!请勿用于联机!由于时间太紧并未进行联机测试,但在单机测试种发现如钢龙的风圈、咩咩子的刺等投射物对自己的猫有伤害,三到五下就能打死猫,暂未实验是否会对联机队友造成伤害,由于伤害值较大且范围难以控制,如果打死队友对游戏体验破坏太大,所以在得出实验结果前请勿用于联机!请勿用于联机!
1.5经热心朋友(感谢@优秀的ZWY)测试并不会对队友造成影响,可能只是会打死自己的猫而已,当然还是不推荐联机。
2.全部投射物都是由弓箭测试得出,因为可以瞄准的缘故,不排除适用于近战武器时出现bug或者达不到理想效果的情况。
3.因为全部是怪物的攻击投射物,绝大多数对锻炼房的木桶、木桩打不出伤害,会直接穿过去,但是可以引爆火药桶。实测对怪物有伤害,但是数值差异很大,不知道和武器攻击力是否有关。
4.使用怪物投射物之后弓箭的装瓶似乎不会对攻击产生任何影响,武器属性同样无影响,具体原理不明。
5.这个整理基本都是下班之后抽空做的,命名比较随意,而且工作量大重复性高,熬夜精神也比较疲惫,我在后期整理时候已经尽量注明所属怪物和实际效果,实在对应不到某个具体招式种请见谅。还有些乱七八糟的命名我自己都看不懂...头西昏/捂脸。
献上自己整理的文件(75种投射物):
和单机自用的mod,主要是作为实例给大家看下效果:
回应下GIF比较闪的问题,这个真的不好意思,原本是高清GIF每张有7,8秒的,但是第一次发帖没经验,上传了才发现不能超400KB,导致图像质量和时长都严总压缩,对晃眼的问题深表歉意。推荐实装看效果,更推荐组合出自己想要的效果!
最后感谢各位看完,也希望大家能通过我的帖子组合出自己最满意的效果,更希望能给论坛大大带来新的灵感,出现更多更棒的mod,谢谢。
投射物的分类和作用(这个没啥人看所以我决定挪到最后,如果你想自己摸索投射物的话本节可能对你有用):
上文mod制作原理的最后一段(扩散登龙)牵扯到一个问题,扩散不是一发炮弹分裂成很多小炮弹才爆炸的吗,为什么我释放扩散登龙的时候没看到炮弹?因为投射物的分类和用途非常之多,根据上提@★月光男孩♂的帖子和我自己的琢磨实验,投射物我将它大致拆分为“子母弹”、“特效弹”、“生效弹”和“判定弹”。
比如扩散弹,你看到的吊射出去的那一发大的炮弹只是“母弹”,到达判定位置后“母弹”消失,生成多个“子弹”也就是分裂出去的小炮弹,“子弹”到达判定位置消失,产生爆炸的火团,这个火团既是给玩家看的爆炸特效(“特效弹”),也是触发伤害计算的“生效弹”。但有些情况下特效和生效被拆分成两个不同的投射物,比如我在试验熔岩龙的投射物时,有一个“特效弹”可以在地面生成岩浆,但是完全没有伤害,还有一个“生效弹”根本没有模型,但是凭空就能打出伤害,于是我猜测有些类型的攻击,是将特效表达和伤害计算分成两个投射物来组合实现的。
最后“判定弹”,顾名思义就是用于判定某个动作是否达到某一触发条件的投射物。比如太刀的见切,在回避位置会生成一连串不可见的“mikiri.shlp”投射物并迅速消失,如果消失前这些投射物受到怪物的攻击伤害,则“判定”你见切成功,为你充满剑气槽,因此我称之为“判定弹”。更复杂的情况还有铳枪的龙杭炮,会先通过“判定弹”-“pilebunker.shlp”判定是否命中有效目标,进而决定采用“命中”-“pilebunker_bomb.shlp”的生效程序还是“miss”-“pilebunker_miss.shlp”的生效程序,这个判定非常复杂,可能也是因为我不玩铳枪,我到现在也没搞清铳枪各个投射物的具体联系和作用,欢迎补充。
为什么要做这样的分类?
一是某些情况下“母弹”非常容易导致程序崩溃。比如扩散弹本体那发大炮弹,还有狙击龙弹的本体,单独使用都会因为无法生成子弹发生错误,但是直接把他们最后爆炸的那个投射物拿出来就完全没有问题。
二是“特效弹”和“生效弹”的组合生效的方式可以解决很多问题。目前反应最多的问题就是抛射物绑定了怪物的攻击伤害,导致伤害过高,且和武器本身属性完全脱离。而“特效弹”和“生效弹”的组合好处就在于它可以分割特效表达和伤害计算,这就使mod在追求绚丽的同时还能具备合理的实用性(平衡性)。
三是我觉得“判定弹”作为一种触发器是个非常具有拓展前景的组件。它不仅仅能用于判定是否命中目标(龙杭炮)或受到伤害(见切),如果能够编译就能利用它作为一个触发器,通过检测(判定)距离、范围、高度、状态等等参数阈值,来触发连串的效果,做出各种各样酷炫的组合,有待高人了。