创建一个对话:通过配置文件创建

有两种方法可以创建对话。你可以两者兼用,但我建议你使用第一种方法(上一种),因为它更具有交互性而且不需要对配置文件的改变

使用配置文件

和第一种方式一样,你得先用/interactions create <conversation> 指令创建一个对话实体。然后一个新文件就会生成,但是你会发现它基本上是空的,没有对话,也没有交流。你可以把配置文件替换为下面那样,这样你就可以开始正确地添加对话、交流和选项了

name: '&a&l样例NPC'
starts_with: []
block_movement: true
start_conversation_radius: 0
end_conversation_radius: 5
conversation:
  conversation1:
    dialogue:
      dialogue1:
        text:
        - "&7你好,公民,我能为你做些什么?"
        time: 4
    options:
      option1:
        text: "&e告诉我关于城市的事情."
        start_conversation: conversation2
      option2:
        text: "&e拜拜"
        start_conversation: conversation3

现在我们的配置文件里还只有一个持续四秒的你好,公民,我能为你做些什么? 在显示完这段话后就会出现两个选项,这两个选项现在啥也没用,因为我们还没创建conversation2和conversation3,每个选项的start_conversation 定义了当玩家选到这个选项时接下来要进行的对话

conversation:
  conversation1:
    dialogue:
      dialogue1:
        text:
        - "&7你好,公民,我能为你做些什么?"
        time: 4
    options:
      option1:
        text: "&e告诉我关于城市的事情."
        start_conversation: conversation2
      option2:
        text: "&e拜拜"
        start_conversation: conversation3
  conversation2:
    dialogue:
      dialogue1:
        text:
        - "&7王城是全国最重要的城市之一"
        time: 4
      dialogue2:
        text:
        - "&7如果你在寻找冒险的机会,你可以去找"
        - "&7酒店里的Bob.还有什么想问的吗?"
        time: 4
  conversation3:
    dialogue:
      dialogue1:
        text:
        - "&7祝你好运!"
        time: 1

现在你可以看见,conversation2和3都被创建了,conversation2有两个交流,而conversation3只有一个。但是现在,当conversation2完成的时候,整个对话就会停止,所以我们可以用start_options: conversation1 属性把它重定向至conversation1来让玩家重新做选择,如果我们不为conversation3设定一个start_options的话那么意味着它就是对话的最后一个步骤

conversation2:
    dialogue:
      dialogue1:
        text:
        - "&7王城是全国最重要的城市之一"
        time: 4
      dialogue2:
        text:
        - "&7如果你在寻找冒险的机会,你可以去找"
        - "&7酒店里的Bob.还有什么想问的吗?"
        time: 4
        start_options: conversation1 

最后,我们只需要为对话设置一个开始点,在这个例子里我们想让玩家右键一个叫做“守卫”的NPC,所以我们用starts_with 来达到目的

name: '&a&l样例NPC'
starts_with:
- NPC named 守卫
block_movement: true #在谈话时防止玩家移动
start_conversation_radius: 0
end_conversation_radius: 5

Last updated

Was this helpful?