【教程】唯的lmt教学:第三期 脚本使用和lmt内部数据的利用技巧

前言:本教程仅在踩蘑菇发布,你可以发布我的教程链接,但禁止未经授权的任何形式的转载、搬运及再发布行为。

You should not upload to any other site without my permission.

依旧,先放一张镇楼图。


大家好,这期是唯的lmt教程第三期,我默认你已经掌握了前两期的内容,在此基础上想要拔高和攀升,并且存在一定的疑惑,希望通过本教程可以解决这些问题。那么话不多说,我们开始。


一、特殊偏移

    所谓特殊偏移,指的是文件头区里,指向动画块头地址的指针的位置,其实它们的排放并不是单纯的按照顺序排列,每个位置都有自己的作用。举个例子:

 

    在大剑里,查我的表可以得知,51 50是横扫斩后的正面强化射击的头地址,50 51是它的头偏移。不知诸君是否考虑过,交换头偏移,会有什么效果呢?比如说,我把这个50 51改成横扫斩的头偏移B0 1B,会怎么样?

    面佬的教程里提过一下,这个可以用来测试动画,但仅仅是如此吗?并不。你通过交换头偏移,你会发现不仅动作对换,而且有可能按键也变了,甚至横扫斩居然能有强化射击,为什么呢?

    lmt的内容和外部文件是一一映射的关系,举个例子,fsm里的横扫斩,对应了1B B0,那么交换头偏移之后,交换的头偏移会继承横扫斩fsm里的特性,shlp同理。利用这个可以做什么呢?我们可以做一些微调,比如,你要是想让见切变成另一个动作,最暴力的方法就是交换头偏移,你会发现虽然动作和判定都变了,但是它居然还具备见切的效果。拥有这种特性的偏移我们称之为特殊偏移,而它的效果来源我们暂且归咎于exe(游戏运行程序)的内定。

    优点:可以继承特殊头偏移的特性。

    缺点:不可被模板识别。


二、动画和判定的分离

    在传统的印象里,似乎一个动作的动画就应该对应一个它本身的判定,但是实际上,对于大多数动作来说,你换了判定对它动画并不会造成负面影响,相反替换恰当的话还可能有一些不小的收益。我们举个例子。

    在大剑里,查表可知,3E30是大剑防御后的不退。通过交换头偏移,我们可以直接把它做成防御后派生某个动作,换言之,就是所谓的弹反;或者我们可以单纯的交换这个我选中的判定区头指针,让防御后的不退继承一些特性,比如:我们如果换了横扫斩的判定过来,就会让这个不退还具有横扫斩的伤害判定。

请注意,我这里说的全都是“交换”,而不是“替换”。同一个lmt里,被调用的同一指针不能被调用两次,比如,这里的 60 E4 1D 00,如果在另一个动作里也用了这个判定,那么会造成游戏崩溃。

    优点:可以让一些动作具备原本不存在特性。

    缺点:不会微调的话,交换之后的效果并不理想。


三、打点

    第二期里已经给出过伤害判定开始到结束的定义,EA下的A6,我们跳转过去可以看到通常两个或者更多个区块。05 00 01 00 下面的第一个指针是开始帧,第二或者最后一个是结束帧,中间如果有的话是多段伤害的间隔帧;通过右边的浮点数一栏修改可以改变它的开始帧和结束帧,从而改变它的打点和判定帧数。


四、外部链接

    伤害多少由col决定,能否转向之类的由param决定,这些东西是存在和外部的链接的,如图。

    方向:4F下的

                        方向:F9 34 D5 00 01 00 00 00

                        链接参数:指向的参数区块里,可以看到一个孤立的字节,这个字节就是外部链接的参数,记录方式是16进制。举个例子,如果该字节是13,0X13= 19,它就对应了mhw editor打开后,param里Unk Arr 1(Shared)的index19。

                        何时转向:43 7C 89 99 01 00 00 00


如图。



    伤害:EA下的

                            伤害:66 CA 96 B2 01 00 00 00 00

                            链接参数:指向的参数区块里,可以看到一个孤立的字节,这个字节就是外部链接的参数,记录方式是16进制。举个例子,如果该字节是56,0X56= 86,它就对应了mhw editor打开后,col里招式之后的unk4的里的86。

如图。



五、动画重复调用:


如图。01 00 00 01决定了动画能否被重复调用。


都是当做纯粹拓展思路的东西,最后说一下脚本的使用。

    Xovea大佬的脚本:

    1、新建十六进制文本。

    2、找到你想要移植的动作,如果你是要动画判定一起移植,那么,记住它的骨骼区头地址(注意是地址不是偏移!)还有动画帧数。如果是移植判定,就记下判定区头地址。

    3、找到你想要被移植的武器lmt,比如你想把气刃踏步斩移植到大剑里,就去找到大剑的文件尾,记录下尾地址(注意是地址!)

    4、你想要的动作,选中你想要移植的内容,复制到新建的十六进制文本里。

    5、在新建十六进制文本里运行对应的脚本,在0x后面输入你刚才记录的两个地址。(注意不要把0x删了,地址记录方式都是十六进制,删了0x就运行出错了)。

    6、脚本运行结束,如果你是用的脚本是动画判定一起移植的,那么下面的输出窗口还会返回你判定区的地址,很方便吧?

    7、将移植内容复制到刚才的大剑文件尾,修改你想替换的动作的指针,帧数,保存lmt,进游戏里看吧。


    优点:便于移植,界面傻瓜(毕竟是我拜托X佬做的傻瓜一点),后期删除不会影响前面的,只会替换单个。

    缺点:尾插移植不能被模板识别,之后的工作可能有些难度。


    冰冰子的脚本:

    冰冰子的脚本稍微有点不太好看懂,是基于模板的。

    1.打开lmt文件A和B,其中A是被移植的lmt文件;B是你想要把A的动作移植过去的lmt文件。

    2.在A上找到你想移植的动作编号:动作数据块→动作。记住这个动作编号,比如图中是16。

    3.同理,找到B的动作编号,比如52。

    4.    打开脚本,修改传参。


    这里默认应该是0,0,我是自己改过所以这里不一样。比如这里想把A文件的16号动作移植到B文件的56号上,你就改成16,52。

    然后在A上运行脚本(注意是A)。

    保存B,进游戏看效果。


    优点:会把相关动作全部修改,比较省心,而且修改完毕可以运行模板,便于后期调整。

    缺点:修改过程是不可逆的,一旦修改你将无法找到原本的数据,除非再次覆盖;会修改全部相关动作,微调困难;脚本相对不是那么傻瓜,上手困难。


    好了,那么这期教程到此结束,同学们,下期见。








by 爱尔斯蒂亚 发布于 2020-10-31
打赏后可直接下载附件 赠人玫瑰 手留余香
默认
最新
1