Minecraft(我的世界)中文论坛
标题:
[Wiki][多人插件] BetonQuest-具体任务Wiki翻译 第五章:参考-对话
作者:
Smokey_Days
时间:
2017-2-12 10:31
标题:
[Wiki][多人插件] BetonQuest-具体任务Wiki翻译 第五章:参考-对话
本帖最后由 Smokey_Days 于 2017-2-14 12:44 编辑
参考
本章囊括了BetonQuest所有方面的概况。 你应该阅读它至少一次,以知道你正在做什么、正在做的东西有什么用,如果你碰到了任何问题,应当在这里寻找帮助信息。
Conversation-对话
每个会话必须定义一下NPC的名称,写在quester后面(尽管一些会话可以不绑定到任何NPC,但是你依然必须指定它;即使你的NPC已经有一个显示名了,但是你还是要指定它),对话的初始选项,也就是NPC一开口会说什么,这个也是必须的。其他为选填。
quester: 名字
first: option1, option2
stop: 'true'
final_events: event1, event2
NPC_options:
option1:
text: 默认语言的一条信息
events: event3, event4
conditions: condition1, !condition2
pointers: reply1, reply2
option2:
text: '&3这是对话的结束'
player_options:
reply1:
text:
cn: 中文文本
en: English Text
pl: Polsku Tekst
event: event5
condition: '!condition3'
pointer: option2
reply2:
text: '文本包含 '' 字符'
复制代码
注意#1
:
配置文件使用YAML语法。如果你不知道这是什么鬼,那就问问度娘吧(谷公也可以)。 主要规则是,这种文件使用树形结构,进入下一层的同时必须要加上两个半角空格。注意,必须使用两个空格而不是制表符Tab。 如果你使用写'字符,你必须成双成对地使用——一个在一边,另一个在另一边,两个英文半角单引号要包围整个文本。 当写入true或false时,它也需要用'包围。 如果你想用&字符开始这行文本,也需要用'包围。 您可以使用
此工具
检查格式是否正确。(该工具国内无需翻墙可用)
quester是NPC的名称。 为了让玩家获得更大的沉浸感,你应当把它设置得和NPC的显示名一样,但它是你对NPC的称呼,所以在某些情况下你可以自定义。
first是NPC将在会话开始时,NPC将从哪个选项开始。你可以列举多个,用,也就是英文半角逗号分隔。系统将会从左到右依次判定,当遇到满足条件时,停止判定并且由这个选项开始对话。您必须在NPC_option中设置这些选项。
final_events是在对话结束时触发的事件,无论它是如何结束的(哪怕没有玩家选项而只有NPC选项,这个功能也会正常工作。因此你可以设置,一旦玩家试图与NPC对话,NPC就会砍玩家)。如果您不需要任何结束事件,可以跳过该选项。
stop决定玩家是否可以在此对话中离开NPC,如果能离开,那么请把它设为false;如果想让玩家在他每次尝试远离时停止对话,那就设为true,这样在玩家试图远离时将被拉回来,当玩家退出游戏时对话将暂停并在玩家再次登录的时候恢复。通过这种方式,玩家无论如何都将不得不完成他的谈话。它需要在填写在''中!您可以使用config.yml中的max_npc_distance选项修改结束对话/拉回玩家的距离。
NPC_options是一个分支,在这儿修改NPC的选项
player_options是一个分支,在这儿修改玩家的选项
——text定义将在对话框显示的内容。如果你不想设置任何事件/条件/指针的选项,那就跳过它们。但是无论如何,text都是必须的。
——conditions(注意,有s)代表此选项显示必须满足的条件,可以有多个,多个条件之间需要用英文半角逗号分隔。将!(英文半角感叹号)加在条件前面,意味着“条件非门”,也就是说,这个选项需要玩家不满足这个条件才能运作。
——events是一个事件的列表,当选择一个选项(由NPC或玩家)时,就将触发列出的事件。多个事件之间用英文半角逗号分隔。
——pointer是指向另一个分支的对应节点的指向列表(这里的指向是名词)。(如果它放置在NPC分支下,它将指向不同的玩家选项而玩家可以从这些选项中选择;如果它放置在玩家分支下,那么它将指向不同的NPC选项,并且系统会从左到右检查指定选项的条件是否达成,如果达成则选择该选项)。
当NPC想说话的时候,他将首先检查第一个选项的条件(在这个例子中是option1)。如果这个条件满足,NPC会选择这个选项;否则,NPC会检查下一个选项(注意:当没有选项达成条件的话,NPC就“无话可说”,对话随之结束。)当NPC选择一个选项后,这个选项的事件也随之发生;然后玩家将可以选择这个NPC选项所指向的player_options(玩家选项)的其中一个,在这个例子中,是reply1和reply2。如果玩家选项不满足这个选项所设定的条件,那么将不予显示。玩家可以从中选择他想要选择的选项,这一选项又将指向其他NPC选项,再接着指向下一个玩家选项,以此类推。
如果玩家或NPC可用的选项(没有写任何选项或者没有选项满足条件),对话将直接结束。如果对话意外结束,请检查控制台的信息(也许可以开debug试试) —— 这很可能是由于配置中的错误。
这可能造成一些混乱,所以你应该有条不紊地命名你的选项,条件和事件。随着你的学习,你会逐渐积攒经验,不要担心,如果你在配置时犯了错,插件会在控制台报错,并引出错误原因。另外,仔细研究插件自带的默认会话,你就会彻底了解这个系统有多么强大。
穿梭对话指向
如果你想让多个NPC的对话互相联通(比如接线员?)或者你想将一个较大的对话分割成多个小对话,你可以试试这个功能——只需要在pointer选项后方跟上 对话.NPC选项 你就可以在多个对话之间穿梭——我们把它称为穿梭对话。
记住:穿梭对话只能连接到NPC选项,因此,请确保你使用玩家选项的指向来进行穿梭对话(当然填写在first下也可以的XD),如果你在NPC选项中指向穿梭对话,那么插件将无法读取这个文件并抛出异常。
对话变量
您可以在对话中使用变量。 当对话开始时,它们将根据实际显示不同的东西并显示给给玩家。 变量的一般格式为:
%type.optional.arguments%
复制代码
type是一个强制性的参数,它定义这个变量的类型,如果没有这个参数,系统将无法识别变量的类型。optional(可选参数)取决于变量的类型,有的变量不需要可选参数,例如%npc%就没有任何其他参数,但%player%则可以选择是否写上可选参数(也就是:%player.display%)。可选参数后方跟着的arguments意味着参数值,例如%item.stick.amount%中的amount就是参数值。您可以在“变量列表”(第十一章)中找到所有可用变量类型的列表。
如果你错误地使用一个变量(例如试图获取一个玩家没有触发的目标的属性,或者在消息事件中使用%npc%),变量将被替换为空字符串("")。
翻译/多语言功能
听说你想做跨国际大服,但是手脚却被语言所束缚?
不用担心,没有问题!
BetonQuest多语言功能,让你的服务器走向国际!
是的你没有听错,这个插件,具有多语言功能
正如您在默认对话中看到的,当你使用的语言不同,你就能看到不同的对话。 这是因为您可以将对话翻译成多种语言,分别显示。玩家也将通过/questlang命令选择自己喜欢的语言。如果希望你的服务器走向国际,那么你可以翻译每个NPC/玩家选项和NPC的名字。 翻译完成后,你只需要这样做:
quester:
cn: 老板
en: Innkeeper
pl: Karczmarz
de: Gastwirt
复制代码
同样的方法,你也可以翻译所有选项。 但是玩家只能选择messages.yml中定义过的语言,如果在会话没有翻译成玩家选择的语言,插件将给玩家显示默认语言。默认语言在config.yml中定义。 如果没有定义,那就会出错。
如果需要的话,你也可以翻译日记条目,任务取消器和消息事件。稍后会对此做详细说明。
对话显示法
对话的颜色是可以自定义的。默认的显示也许会让玩家看不惯?你可以打开config.yml,然后在conversation_colors项中自定义不同对话的颜色。不过有个问题,你在这儿必须要使用颜色的原名——例如A
默认情况下,BetonQuest采用最原始、最安全的方法进行对话——对话显示在聊天框,玩家通过输入1、2、3、4来选择不同的玩家选项。
但是这种方法的逼格对于一些腐竹而言,实在太低了,所以我们提供了两种更高逼格的方法,腐竹可以根据自己的需要选择。你只需要在config.yml下的default_conversation_IO项修改即可。
首先是tellraw,这种与某条命令重名的方法让玩家可以通过点击聊天框里的对话来选择选项!这看起来是很高逼格了,但是有个问题——当聊天框滚动过快(比如两个手速极快的玩家聊天)时,玩家很容易手贱然后点击错误,从而走上玩家并不希望的那一条路。
还有一种比tellraw更加安全,同时也有很高逼格的方法——chest(箱子GUI)这种显示方法能够给玩家打开一个箱子GUI,然后玩家可以通过点击里面的不同按钮(物品)来选择选项。
如果您使用箱子GUI显示对话,您可以通过在选项的文本中添加前缀修改选项的对应物品,将选项的对应物品更改为其他物品(末影珍珠除外,别问我为什么)。具体的方法是在文本前添加一个大括号(英文半角大括号,即{}),在大括号中填写物品名称,物品名称的列表可以在
这个网页
找到(个人推荐,非官方)。下面是一个例子:
text: {diamond_sword}我想开始一个任务!
复制代码
想要跟踪本帖的,请在下方回复或评分
这wiki翻译不错,我想订阅
复制代码
这样在每次更新时我会@你
依然只有一节XD真是越来越懈怠了
(一节3000字真的大丈夫?)
订阅席:
@1345979462
@lsz7575
@光の旋律
@Rolas
@moshimowang18
@S_RwE
@WM2030
[groupid=1330]PluginsCDTribe[/groupid]
作者:
lsz7575
时间:
2017-2-12 13:25
楼楼辛苦啦,,{:兔斯基抱奶瓶:}..
作者:
大力水手
时间:
2017-2-28 22:40
非常细致的讲解,感谢~! 只是我还没能达到评分的等级~!
作者:
kkk154
时间:
2017-3-30 11:09
貌似这篇文章很重要
作者:
maxiao0907
时间:
2017-8-4 19:46
这wiki翻译不错,我想订阅
作者:
2955806837
时间:
2019-7-19 21:32
翻译的不错,辛苦了