Dialogue对话控制器翻译及示例解析

翻译者:雨没有眼泪

转载已授权

文章首发地址(可获得更好阅读体验):https://www.bilibili.com/read/cv13769801


阅读前需要知道的事

;这是注释,在“;”后并且一大段灰色的解释内容并不是代码部分,请开启黑色主题阅读此文章,如果有学过些许html会很容易看懂这篇内容,所以也许可以选择实践一点html,毕竟看起来像弱化的html,需要记的东西也很少,单独拆出来写是因为虽然是一个控制器,但更像是一个功能,毕竟也就开局和结束会用到,了解就好了


Dialogue(对话)

分配对话数据,以便在第一局(第一局的最后一帧)或最后局的最后一帧(RoundState = 4,屏幕开始消失之前)显示。如果超过 1 个玩家调用了此控制器(sctrl),最终随机选择调用对话的玩家使用他的控制器内容。


不支持中文--疑惑,没能成功显示中文,但是看过其他人使用中文,应该能吧


所需参数:

textX ="dialogue_info"(字符串)字符串,包含显示对话所需的信息。可以分配多个文本参数,每个参数都以升序后缀数字。参数存储文本以及可选标签(<>括号中附有),用于控制对话的其他方面(如下所示)。


可选参数:

hidebars = bars_flag(int)

设置为非零,以便在称为 sctrl 时立即隐藏血条栏(默认情况下,只有在实际对话开始时才隐藏血条栏)。


force = force_flag (int)

设置为非零, 以迫使对话立即开始, 忽略正常规则。


渲染的对话将是什么样子(定位、默认精灵、背景定义、文本之间的默认时间等)由屏幕包参数(参照系统.def 与发动机分布的工作示例)控制。默认情况下,调用状态控制器的玩家将使用以p1前缀的屏幕包参数,并且他的敌人 (0)将被分配使用p2参数(这是通过文本标签可调的)。[Dialogue Info]


有了适当的屏幕包参数,可以通过按下按钮在对话期间跳到下一个文本参数,而无需将这一切一起结束。如果缺少此屏幕包组,则根本不会启动对话(参数默认值为 0)。enabled


可选文本标签属性


以pX(X为 1 或 2,代表使用方)前缀的属性是指以相同方式预缀的屏幕包参数。某些属性允许重定向参数,指出应使用哪些玩家资源(精灵、声音、动画、状态)。[Dialogue Info]


redirection(允许重定向标识,替换位置)


支持以下重定向:


self: 重定向到称为sctrl的玩家-----指定位到自身,调用自身资源


playerno(X): 重定向到玩家编号X----玩家编号和玩家ID并不是同一个东西,玩家编号不会识别除玩家以外的内容,这个编号Helper是无法读取的


enemy(X): 重定向到的玩家的敌人 X (默认0,如果省略括号及数字则默认识别第一个敌人)


partner(X): 重定向到玩家的同伴 X (默认0,如果省略括号及数字则默认识别第一个同伴)


enemyname(name): 重定向到敌人与匹配的名称(内部参数指定在 ,DEF 文件中的name)


partnername(name): 重定向到具有匹配名称的合作伙伴(其中指定的内部参数) ,DEF 文件中的name)


标签列表:


<pX>:应用对话框侧(将 X 替换为 1 或 2)以更改渲染文本的位置,默认到 p1 侧。


<pXname=name>: 更改对话期间显示的 pX 侧名字,更改到引号内的字符串


<pXname=redirection>: 将对话期间显示的 pX 侧名更改为重定向的玩家显示名(如显示名称参数中指定的 ,DEF 文件中的名字name)


<pXface=redirection,group_no,sprite_no>: 更改 pX 侧精灵组和索引,该组和索引应用于渲染面部肖像。默认通过屏幕包分配的精灵数字(如果缺少指定数字,也默认为这些数字,除非将group_no设置为 -1 - 在这种情况下,面部肖像渲染完全禁用)。


<sound=redirection,group_no,sound_no,volumescale>: 播放声音。体积参数是可选的(默认值到 100)。


<anim=redirection,anim_no>: 更改玩家动画的动作编号


<state=redirection,state_no>: 更改玩家的状态编号


<map=redirection,map_name,value,map_type>: 修改玩家的Map。map_type控制Map上应执行何种操作(:相当于MapSet,等效于MapAdd),set或者add


<displayname=redirection>: 对话文本的一部分自动替换为重定向播放器显示名(如显示名参数中指定的 。DEF 文件)


<wait=ticks>: 在下一段文本出现之前的ticks(帧数,一秒六十帧)数


例如,下面的代码展示了某著名的场景对话重现,使用各种高级标签(请记住,在大多数情况下,当你不必切换头像,画外音或调整时间,唯一常用的文本标签是<pX>) 

2.jpg

官方示例

1.png代码图片示例


[State 191, Dialogue];这是开局前状态191,而你要开启对话的话尽量在这个状态里写对话控制器


type = Dialogue;声明状态控制器类型


trigger1 = enemy,Name="Demitri Maximoff";触发器请自行选择


hidebars = 1;关闭血条展示,虽然这个写不写都会屏蔽血条,但写上的话会第一时间屏蔽


text1 = "<p1><p1face=self,9100,0><p2face=enemy,9100,4><sound=self,9100,0>Die monster.<wait=60> You don't belong in this world!"


;text1 对话块1


;<p1>P1侧


;<wait=60>,等待60帧后,下一段话开始


;<p1face=self,9100,0>,P1的头像使用自身的9100,0的精灵(此值对应的是SFF中的值)


;<p2face=enemy,9100,4>P2的头像使用第一个敌方的9100,4的精灵(此值对应的是SFF中的值)


text2 = "<p2><sound=enemy,9100,0>It was not by my hand that I am once again given flesh.<wait=120> I was called here by humans, who wish to pay me tribute.<wait=170>"


;text2 对话块2


;<p2>P2侧


;<sound=enemy,9100,0>,播放声音使用第一个敌方声音文件的9100,0


;<wait=120>,等待120帧后,下一段话开始


;<p1face=self,9100,0>,P1的头像使用自身的9100,0的精灵(此值对应的是SFF中的值)


;<p2face=enemy,9100,4>P2的头像使用第一个敌方的9100,4的精灵(此值对应的是SFF中的值)


[State 180, Dialogue];这是结束前状态180,而你要开启对话的话尽量在这个状态里写对话控制器


最后


状态号191里写对话控制器对应的是开始的对话


状态号180里写对话控制器对应的是结束的对话


此外对话会拦截你的其他演出内容,严格按照对话控制器进行演出,因为对话中可以切换状态号和动画所以基本可以完成任意演出


如果需要更多的内容的话可以在-4中写必要trigger为InDialogue(对话中)代码块设置其他属性




暂无评论
根据相关规定,发布评论前必须绑定手机前往绑定
你,确定要这么做吗?
正在处理中...