▶️事件

在你了解完如何创建对话之后,我们现在来学习事件。这些事件可以改变你的游戏世界。这可以是任何事情,从修改玩家的背包到放置方块。 在本教程中,我们将为玩家提供物品并使用事件将他传送到不同的位置。

要求

你必须已完成上一节“对话”内容

下载教程预设

⚠ 如果您已经使用了上一个教程步骤的配置,请不要执行此操作。 ⚠

在聊天框中输入以下命令下载本节教程的预设内容:

/bq download BetonQuest/Quest-Tutorials main QuestPackages /Basics/Conversations/1-DirectoryStructure /tutorialQuest

您现在可以在此位置找到本教程所需的所有文件:

"你的服务器文件存放位置/plugins/BetonQuest/QuestPackages/tutorialQuest"

1.为第一个事件创建文件结构

在“tutorialQuest”的文件夹里,新建一个名为"events.yml"的文件,

以下是你现在的文件结构:QuestPackage

  • 📁tutorialQuest

    • 📂package.yml

    • 📂events.yml

    • 📁conversations

      • 📂jack.yml

现在,我们的文件结构已准备就绪,可以开始编写事件了!

2.定义你的第一个事件

打开我们已创建的events.yml,并添加以下内容:

events.yml
events: 
  giveFoodToPlayer: "give steak:16"

那么我们在这里看到了什么呢?

  • giveFoodToPlayer是事件的名称。您可以随便起一个名字。但是,建议以它的作用命名它。这会让你更方便的编写你的任务。

  • 事件说明:

    • give指令中的第一个值永远都是事件类型

    • steak:16这是给定事件的一个选项。它定义了您要提供的物品以及由冒号隔开的数量。

在我们测试事件是否在游戏中起作用之前,我们必须创建该物品steak,因为BetonQuest不知道steak是什么。

3. 在物品部分中创建一个物品

对于某些事件类型,例如你需要在部分中指定物品。它包含您要在任务中创建/使用的所有物品的定义。我们将在“package.yml”文件中创建项目部分。giveitems

package.yml
npcs:
  '1': "Jack"

items:
  steak: "COOKED_BEEF" 

现在一个名为steak的物品可以在整个任务中被使用。

4. 将事件整合到对话中

让我们在对话中执行事件。

与前面的示例相比,第9、10、13、14行,为新增部分。

jack.yml
conersations:
  Jack:
    quester: "Jack"
    first: "firstGreeting"
    NPC_options:
      #... 
      foodAnswer:
        text: "Your welcome! Take it... &7*gives food*"
        events: "giveFoodToPlayer" 
        pointer: "thankYou"
    player_options:
      #...
      thankYou: 
        text: "Oh that smells really good!"
  • 6、12#...为了方便你的阅读与学习,从现在开始,本教程将只显示示例的相关部分。

  • 9events:事件的参数必须包含一个或多个事件名称。当向玩家显示相应的选项时,将执行这些事件。 此参数可用于玩家和 NPC 的选项。

5. 测试你的第一个游戏事件

每当测试一些内容时,保存所有文件是非常重要的!

保存后在服务器上输入:/bq reload

你还可以使用命令运行事件。

执行此操作的最简单方法是执行命令:

在服务器上输入:/bq event NAME tutorialQuest.giveFoodToPlayer

如果你按照教程设置无误,此命令会给你指定数量的牛排!

命令部分含义

/bq event

告诉BetonQuest要执行一些事件

NAME

玩家名

tutorialQuest

QuestPackage的名字。在不同的package中可能具有相同名称的事件。

giveFoodToPlayer

要执行的事件的名称。不要忘记用一个点(.)将它与package分开:tutorialQuest.giveFoodToPlayer

你也可以直接从控制台执行命令(开头不带斜杠“/”)。

这个示例不起作用吗?

通过运行以下命令获取正确的配置。 这将覆盖您对示例所做的任何更改(包括 NPC ID)。 基础教程中介绍了如何将 NPC 连接到对话上。⚠

/bq download BetonQuest/Quest-Tutorials main QuestPackages /Basics/Events/1-FirstEvent /tutorialQuest overwrite

6.新建事件文件夹

现在,我们要创建一个游览市长城市的事件。同时,我们将了解传送和文件夹事件。

打开“events.yml”文件并添加以下内容的3-7

events.yml
events:
  giveFoodToPlayer: "give steak:16"
  townTour: "folder tpLocation1,tpLocation2,tpLocation3,tpBlacksmith delay:2 period:5"
  tpLocation1: "teleport 100;70;100;world" 
  tpLocation2: "teleport 200;73;200;world" 
  tpLocation3: "teleport 300;71;300;world" 
  tpBlacksmith: "teleport 50;70;50;world" 

如你所见,有一些新的事件类型。events事件合集里面包含了多个事件。一旦触发,它只是执行里面的事件。每个事件类型都记录在事件列表中,请阅读有关events的更多信息以及上方的传送事件。folderteleport

执行townTour事件时每五秒钟会把你传送到一个新的位置,直到我们到达最终目的地——铁匠。evernt事件合集在tpBlacksmith事件执行完后完成。

现在,我们要把evernt事件合集添加到 Jack 的对话当中。

与前面的与前面的示例相比,第11-18、23-29行,为新增部分。

jack.yml
conversations:
  Jack:
    quester: "Jack"
    first: "firstGreeting"
    NPC_options:
      #...
      foodAnswer:
        text: "You're welcome! Take it... &7*gives food*"
        events: "giveFoodToPlayer"
        pointer: "thankYou"
      townTour:
        text: "Yeah that's true. You know what also smells good? The fresh air in my town! Would you like to take a little tour?"
        pointer: "enoughTime,noTimeForThat" 
      startTheTour:
        text: "Great! It is a honor for me to guide you through the town."
        events: "townTour" 
      noProblem:
        text: "That's fine! Maybe you have time another day... Just talk to me again. See you!"
    player_options:
      #...
      thankYou:
        text: "Oh that smells really good!"
        pointer: "townTour" 
      enoughTime:
        text: "Yes of course! Show me everything."
        pointer: "startTheTour"
      noTimeForThat:
        text: "Sorry but I don't have time now..."
        pointer: "noProblem"
  • 13pointer:玩家玩家再次有了选择。

  • 16events:是我们刚创建新事件的startTheTour名称。当显示NPC该选项时,它就会被触发。

  • 23pointer:它扩展了现有的对话。

以上的修改可以让玩家选择是否要进行城镇游览。

现在再次与NPC交谈来开始城镇游览。

这个示例不起作用吗?

通过运行以下命令获取正确的配置。 这将覆盖您对示例所做的任何更改(包括 NPC ID)。 基础教程中介绍了如何将 NPC 连接到对话上。⚠

/bq download BetonQuest/Quest-Tutorials main QuestPackages /Basics/Events/2-TownTour /tutorialQuest overwrite

总结

非常好!你已经了解了什么是事件以及如何创建它们。现在,你可以给玩家一些食物,甚至可以传送他穿过整个城镇!可以在事件列表中找到更多事件。接下来,您将学习如何使用目标向玩家分配任务。

最后更新于