菜鸟的只狼Talk详细教程(三) 天天视讯
大家好,我是Last孤影众后面还有一个点,今天继续这个系列的第三集。
注意:阅读本文需要读者拥有魂系列参数编辑能力和最基础的事件编辑能力,想学习的可以移步琐帝BNU的参数编辑教程和我的事件编辑教程。
一、Talk的分类
【资料图】
其实这个东西我们应该早点讲,但其实放在这里讲正好后面我们分类讨论:
首先我们可以将所有talk分为非战斗对话和战斗对话,当然也有可能是两者结合的talk,例如很多npc就会这样,在触发仇恨后就会说一些话。(一)非战斗对话
非战斗对话是比较简单,也是比较实用的对话类型,我们可以将其分为:交互触发对话,对话栏对话和窃听对话。
窃听对话
窃听对话其实没什么好说的,大家可以打开白蛇神社孤影众的talk看看内容,只有一个触发对话:
这里第一个call就是对应的窃听对话,但是这种对话并不实用,我们需要的话可以直接拿枪足正长的这个文件改编号,然后修改内容作为新窃听对话使用。
2.交互触发对话
这种对话指的是我们按下交互键(一般显示“交谈”),然后敌人就会直接和我们对话,这个也非常简单,一般很多商人都有这种对话,其实就是在触发对话栏对话前加一个带有talktoplayer的执行对话,这样就会先和我们说话,等说完了话后才会触发商店之类的选择面板。
例如我们打开商人藤冈的talk文件:
可以看到要进行一系列的判定,然后都满足后我们才能跳转到执行对话t110470_x38,也就是对话栏对话,这就导致藤冈会在显示商店面板前和我们说上一些话。
当然这个算是比较麻烦的,因为有一对条件判定,还有call的运用,简单的我自己也搞过一些:
这里就是先跳转到可以说话的执行对话,然后等说完话,才会跳转到t110810_x39
这样操作,我们可以在打开npc面板前进行talkparam编号为89000000的对话,然后我们如果退出npc面板,那么我们还能再进行一个talkparam编号为89000090的对话,也就是else后面写的东西,这就是我们接下来要讲的对话栏对话。
3.对话栏对话
最实用的类型,我们平常改的就是这个,首先如果我们想新建一个对话栏式对话,我们甚至可以直接找鬼佛的talk,也就是t000001来编辑,因为鬼佛的对话就是个很纯粹的对话栏对话。
如果大家怕出问题,也可以找一些npc的talk,然后留下对话栏对话,把里面其他的触发对话全删掉,一般触发对话是对话栏对话的参数都很多,而且带有actionbutton
接着我们看对话栏型执行对话的主体:
首先有一个while true循环,然后ClearTalkListData()是清除对话栏内容,这个是为了大家在做对话栏递进的时候,能正常显示这一级的内容,例如第一级有ABC三个选项,点A进入第二级,我们想显示DEF,如果不ClearTalkListData()清楚第一级的ABC选项,那么就会出现问题。
第二个AddTalkListData(1, 90000000, -1),是添加对话栏项目,1指的是编号,这个编号和他在对话栏中所处位置并无关系,例如AddTalkListData(1, 90000000, -1)就不一定排在AddTalkListData(2, 90000000, -1)前面,它仅仅是一个编号而已,真正影响选项顺序的是在talk中它们排列的先后。例如AddTalkListData(2, 90000000, -1)在第一行,那在游戏中它就排在最前面。
这里的两局话是打开菜单,缺少一句我们就无法显示对话栏,当然这里第一句OpenBonfireSubmenu(0)可以换成其他的,这样就会显示非鬼佛样式的对话栏,具体大家去其他npc对话里面找。
接下来就是选中对应选项的结果,例如这里:
表示的就是我们选中AddTalkListData(1, 90000000, -1)这个选项后,我们会跳转到t110810_x48(),鬼佛处的选项多,所以结果也多:
最后就是else,其实else默认的就是AddTalkListData(0, xxxx, -1),也就是编号为0选项的结果,所以大家在新建选项的时候一定要从1开始往后新建。
else一般就是让我们回到上一级的对话,游戏中我们按返回键,就是对应talk中的return 0,else中带有return 0就可以让对话栏回到上一级,如果没有上一级那就是退出对话,当然也有一个直接退出对话的代码叫做Quit(),这个代码能让我们直接退出对话无论多少级,但非常容易出问题,因为对话中玩家无法操作,所以你贸然退出对话玩家会保持无法操作的状态卡死。
Quit()代码应当配合跨地图传送之类的事件使用,可以先给予玩家特效然后Quit(),事件检测特效让玩家传送,这样就正常许多。
当然return 0我们也是能放在AddTalkListData(1, xxxx, -1)中的,这样我们点对应的选项我们也能退回上一级,关键在return 0而不是else,只是else大部分情况都有return 0。
那我们再回到这张图,可以else并不是只有return 0,还加了个说话的执行对话,这就让我们能在回到上一级前让npc和我们对话。
(二)战斗对话
战斗对话也是一个非常重要的对话,对于不是做剧情mod的modder来说也很是抢手,因为能在战斗中加上一些台词能让战斗体验提升不少。
那上一篇我已经说过了在原有基础上添加战斗对话,这个是最简单的。而新建战斗对话是非常困难的,难点一是触发对话的不完整,如果我们不去复制有战斗对话的敌人的talk,这会导致我们新建的触发对话很有可能不生效,所以我建议是找现成的,在上面做修改。
当然这个也是有现成的可以修改,经过我多次实验,我发现主城的那个武士大将talk效果非常好,是个很棒的战斗对话型talk。
原因一是他的触发对话很少,简单明了,纯粹的战斗对话
原因二是结果简单,简单易懂,这里我们看到他先是判断了一个eventflag,如果成立,那么他会挑战到一个函数,那这个函数一看就知道和对话有关,但是里面有两个100的参数,这个代表的其实是玩家到他的距离,离他太远对话就会消失。
不过不要紧,我们直接在上面做一些修改,可以得到我们想要的,下图是我在对影成双中制作的战斗对话地牢孤影众:
基本结构一致,我移除了冗余的内容,留下了最简练的判定和跳转,如果eventflag1585开启,并且地牢孤影众拥有30007特效,那么他就会说话,等说完话再给玩家一个30008特效(mod中事件检测,用来触发玩家吹口哨的)。
就这样一个简单的战斗对话就完成了,如果我们想要做多次战斗对话也很简单,换成if条件判断函数:
上图为芦苇之国·空想中我创造的水生村支线,第一句是当玩家刚进入水池时索拉尔给予的提示,后面的就是索拉尔在战斗中帮助我们的对话,还有击败敌人的致谢。可以看到非常简单,只要套套模板即可。
这里有个非常重要的点,不注意看文章的等下肯定要吃大苦:
那就是判断条件中一定要带有事件标志的判断,你可以看到我明明可以只用特效判定,但我却每个判定都加了对事件标志的判定,因为这个是必须的。
当然这个也不难解决,我们随便找个确定状态的事件标志,判定他的状态然后照样检测特效即可,或者麻烦点和你手动开启或者关闭一个事件标志。
我希望到时候不会有人来问我这个问题,不然我直接给你一耳屎
(三)自我对话
原版没有的对话,由bossrush独创,没错它就是自我对话。
玩过bossrush的人都直到,当我们在击败精英怪或者boss后,会跳出来一个菜单,我们可以直接选择打下一个敌人,或者回到破旧寺院,这其实就是自我对话。
说是自我对话,其实也是让狼和某个敌人交互,只不过这个交互是远程的,满足条件后就会跳出一个对话栏,这个对话的难点有两个:
一是原版没有类似的talk可以参考,但好在bossrush的前辈留下了珍贵的参考文件,不难解决;二是talk链接敌人的要求,这个敌人一定不能是流程敌人,而且最好能全图加载,这样我们在地图中任何时候,满足触发条件就能弹出对话栏 。
关于自我对话,我在芦苇之国中大量使用,给大家看看我的格式:
首先是触发对话,检测条件弹出对话栏,但是还有要遵循判定条件必须有事件标志:
接着就是对话栏的构建,之后就是很简单的内容了,我们主要是需要talk和事件配合起来发挥作用。
而比较关键的点不在talk中,在DSM也就是地图编辑器中,自我对话链接的敌人是有要求的,我建议大家选择c1001开头的敌人,也就是专门用作对话或者交互的隐藏敌人,我们复制一个c1001,消除实体编号后新建链接一个talk,之后我们要注意的是UnkT00设置的大一点,这个代表的是对话生效的范围
接着是UnkT44,这个设置成515最好(bossrush这么设置的,如果设置为0那么会不生效)
二、后话
Talk这个东西有点类似event,都是积累型,所以找一些mod参考,首先是bossrush,可以参考他的对话栏对话和自我对话;其他的就是我的mod了,好像只狼mod只有我做了大量talk发面的编辑。
其实talk将到这里就差不多了,我所了解的内容就这么多了,talk内容较少,但是逻辑性较强,比较抽象,需要大量实验试错,你们看到我三篇文章就讲完了talk,但其实我试了小三个月猜得出这些结论,都是一次次失败换来的。
那么菜鸟的只狼Talk详细教程系列到这里就正式完结了,后续我发现新的内容会开专栏再说的,希望各位看完整个系列都能学会修改Talk,创造出优秀的剧情mod。
标签: