Minecraft(我的世界)中文论坛

标题: [Wiki][多人插件] BetonQuest-具体任务Wiki翻译 第四章:快速入门教程-第一个对话

作者: Smokey_Days    时间: 2017-2-9 08:11
标题: [Wiki][多人插件] BetonQuest-具体任务Wiki翻译 第四章:快速入门教程-第一个对话
本帖最后由 Smokey_Days 于 2017-2-14 12:42 编辑

对话!开始!


现在你已经认识了BetonQuest的强大功能,并理解了事件,条件和目标,是时候开始写你的第一个对话了。default包中有一个conversation目录。它包含一个单独的文件,innkeeper.yml。这是与Innkeeper的谈话,他要求你砍一些树。打开它,我们将使用它作为参考。现在创建一个新文件,让我们把它命名为miner.yml。现在输入(不要复制粘贴,你首先要学会怎么敲代码)到文件:
  1. quester: Miner
  2. first: greeting
  3. NPC_options:
  4.   greeting:
  5.     text: 你好,旅行者!
复制代码

这是最基本的对话。名为Miner的NPC在开始对话时将使用greeting选项,这意味着他会说“你好,旅行者!”然后对话将结束,因为没有定义玩家选项。

现在你需要连接NPC与对话。你得借助main.yml文件。打开它,你可以看到,inkeeper.yml对话被链接到名叫Innkeeper的NPC。这是你写在告示牌上的那个,还记得吗?现在,在Innkeeper下面添加一行:Miner: miner.yml,保存文件并重新加载服务器。这将链接我们的新对话与名为“Miner”的NPC。在服务器上建一个新的NPC,给它放上一个带有“Miner”名字的牌子,然后点击头部。

猜猜什么,对话开始了!。矿工刚才说了“你好,旅行者!。意料之中。
现在打开对话文件并继续编辑它(依然要手动,别复制粘贴!)写成这样:
  1. NPC_options:
  2.   greeting:
  3.     text: 你好,旅行者!
  4.     pointers: hello, bye
  5. player_options:
  6.   hello:
  7.     text: 你也好!
  8.   bye:
  9.     text: 抱歉我得先走了。
复制代码


保存文件时,重新加载插件并再次启动对话,您会注意到有两个选项供您选择:“你也好!” 和 “抱歉我得先走了。”但是选择其中任何一个选项都会结束对话,因为这些选项没有指向到任何NPC的话。

现在添加一个新的NPC选项,例如weather,后方写上文本“天气不错”。并使hello的玩家选项指向它。这样当你保存并重新加载后,当你选择“你好!”的时候,Miner会说:“天气不错”, 我想你应该明白了它的工作原理。

  1. NPC_options:
  2.   greeting:
  3.     text: Hi there, traveler!
  4.     pointers: hello, bye
  5.   weather:
  6.     text: 天气不错
  7. player_options:
  8.   hello:
  9.     text: Hello!
  10.     pointer: weather
  11.   bye:
  12.     text: I need to go, sorry.
复制代码


现在,每次你和矿工谈话,他都会说同样的话,这虽然已经不错了,但是我们还可以做得更好些。能不能让矿工在第二次对话的时候,记起我们的名字,然后打开完全不同的对话呢?可以。我们可以通过标签来实现。还记得上一章学的么?定义meet_miner事件和has_met_miner条件。当你和矿工谈话时,系统会检查你是否见过他。如果你没有见过他,他就会在和你谈话中认识你(就是之前写的那段对话),如果你见过他,那么他就能喊出你的名字

现在,将问候NPC选项重命名为first_greeting。添加meet_miner事件和has_met_miner条件(其中条件在使用时否定,因为此选项应该只显示如果玩家还没有见过矿工)。您将需要使用''(英文单引号),因为字符串不能以YAML中的感叹号开头。(切记是英文感叹号!)修改后,前一段应该看起来像这样:

  1. first: first_greeting
  2. NPC_options:
  3.   first_greeting:
  4.     text: Hi there, traveler!
  5.     condition: '!has_met_miner'
  6.     event: meet_miner
  7.     pointers: hello, bye
复制代码


这意味着:如果玩家没有满足has_met_miner条件(意味着他没有标签,因为他还没有和NPC对话过),应该触发first_greeting。当触发此选项时,这个选项又将触发meet_miner事件为玩家添加标签,并让玩家选择hellobye选项。好的,但如果玩家再次遇到矿工,这一次,has_met_miner条件被触发了(或者说没有满足这个条件的否定项)会发生什么?在first中的第一个NPC选项如果不满足条件,NPC将尝试使用first设置中定义的下一个选项。这个选项还不存在,所以让我们添加它。
  1. first: first_greeting,regular_greeting
  2. NPC_options:
  3.   regular_greeting:
  4.     text: Hi %player%!
  5.     pointers: hello, bye
复制代码
(中间省略了一段,末尾省略了一段)

此选项不需要满足任何条件,因此如果first_greeting不满足条件,NPC将始终选择此选项。现在来研究一下%player%。这是一个变量。在这个地方它会显示你的名字。在后面的某个章节,你可以查看全部可用的变量。好的,保存并重新加载并开始对话。如果你做的一切都正确,第一次谈话时,矿工会把你当做路人来交谈,而你第二次与他谈话时,他就会使用你的Minecraft名字来问候你。

这是您创建的整个对话,您如果确定自己正确理解一切,可以对照一下答案:

  1. quester: Miner
  2. first: first_greeting,regular_greeting
  3. NPC_options:
  4.   first_greeting:
  5.     text: Hi there, traveler!
  6.     condition: '!has_met_miner'
  7.     event: meet_miner
  8.     pointers: hello, bye
  9.   regular_greeting:
  10.     text: Hi %player%!
  11.     pointers: hello, bye
  12.   weather:
  13.     text: Nice weather.
  14. player_options:
  15.   hello:
  16.     text: Hello!
  17.     pointer: weather
  18.   bye:
  19.     text: I need to go, sorry.
复制代码


现在你应该用这个对话进行更多的实验,你通过研究之前的innkeeper.yml来获取更多信息,一步一步地理解对话是怎么运作的。请你自己研究并练习,模仿innkeeper.yml,写一个任务——矿工让玩家去挖矿,然后冶炼成铁锭,之后做成一套铁盔甲并交给他。你也许想要阅览“参考”的那几章来明白如何设置“提交物品”事件以及如何给玩家的日记添加条目。
如果你想使用NPC来替代那个丑不拉几的粘土怪,你也可以在随后的几个章节里找到你需要的信息。想查找更多的事件、条件、目标和变量,你可以查看他们的列表(紧跟在参考后)
想要跟踪本帖的,请在下方回复或评分
  1. 这wiki翻译不错,我想订阅
复制代码
这样在每次更新时我会@你

@1345979462
@lsz7575
@光の旋律
@Rolas


[groupid=1330]PluginsCDTribe[/groupid]
作者: moshimowang18    时间: 2017-2-9 13:16
这wiki翻译不错,我想订阅  ; 之前四章在哪来着?
作者: Smokey_Days    时间: 2017-2-9 13:18
moshimowang18 发表于 2017-2-9 13:16
这wiki翻译不错,我想订阅  ; 之前四章在哪来着?

有空做个索引吧。
点击我头像,然后点主题,然后就能看到了
作者: lsz7575    时间: 2017-2-9 16:03
期待后续更新~~一直想用这插件很久了`
作者: 大力水手    时间: 2017-2-28 22:40
非常细致的讲解,感谢~! 可惜我还不够评分的级别~!
作者: Yexiaolu    时间: 2017-3-8 12:12
加个小感叹号是什么意思?
作者: Mcats    时间: 2017-3-22 20:17
学费已交

想请问一下LZ,如果我要添加多行对话,应该如何加入呢?
例如,每过0.5秒钟播放一行这样的
作者: Smokey_Days    时间: 2017-3-22 21:20
Mcats 发表于 2017-3-22 20:17
学费已交

想请问一下LZ,如果我要添加多行对话,应该如何加入呢?

多行对话请使用管道符
善用百度
作者: mai1015    时间: 2017-4-6 13:31
本帖最后由 mai1015 于 2017-4-6 13:39 编辑

真的,写得或翻译的极差,前几章看得云里雾里,甚至看得脑壳疼!
我觉得顺序有点问题!!
而且最致命的是:一半中文一半英文
而且而且 还建议 “敲代码” 这是代码吗?
那写bossshop时,都这么“敲代码” ?

一些名称是可以中文的,这一半中文一半英文极大的影响了理解

请容许我说了大实话


作者: Smokey_Days    时间: 2017-4-6 18:01
mai1015 发表于 2017-4-6 13:31
真的,写得或翻译的极差,前几章看得云里雾里,甚至看得脑壳疼!
我觉得顺序有点问题!!
而且最致命的是: ...

= =敲代码没毛病啊
至于一半中文一半英文...配置文件本来就是英文的,如果要改成中文必须重写插件(而且很多国内插件配置文件不也是英文么?英文容错率高罢了)
顺序是按照原文来的
当然翻译的确有点失误,在这里说声抱歉了
作者: mai1015    时间: 2017-4-6 18:38
本帖最后由 mai1015 于 2017-4-6 18:40 编辑
Smokey_Days 发表于 2017-4-6 18:01
= =敲代码没毛病啊
至于一半中文一半英文...配置文件本来就是英文的,如果要改成中文必须重写插件(而且 ...

如果可以的话 我建议这样


我测试这些都是支持中文的  我照着你写的这么用中文一下就理解了= =
然后解释下这些东西代表的意义  这样就很明白
个人意见哈

另外支持下你哈。。翻译的确很辛苦

作者: Smokey_Days    时间: 2017-4-6 19:10
mai1015 发表于 2017-4-6 18:38
如果可以的话 我建议这样

(注意一下编码兼容性,ANSI和UTF8几乎可以视为两种语言)
作者: j531065605    时间: 2018-10-20 08:58
这wiki翻译不错,我想订阅
作者: a3095272833    时间: 2018-10-27 10:48
看上去很难