任务脚本基础知识
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
任务脚本是一个独立的脚本,可以通过游戏内命令和 /ex 命令运行,也可以通过脚本中的命令运行。
任务脚本将运行它们包含的所有 Denizen 命令。任务脚本可以很简单,也可以很复杂,甚至可以运行其他任务脚本。这对于创建基于逻辑的脚本链(如对话选项或随机内容)非常有用。
任务脚本-task
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面是一个基本任务脚本的示例。
example_task:
type: task
script:
- narrate "这是一个猫猫制作的脚本!"
如果您使用该命令来运行此脚本,此脚本将输出文本:”这是一个猫猫制作的脚本!”。具体来说,通过在游戏中运行,您将受到此脚本的影响——看到聊天栏中输出一堆奇奇怪怪的东西和上方的文本。
在 VS Code 中构建您的第一个任务脚本
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
在上一节中,您已经学习了如何设置 VS Code,这是我们推荐用于编写 Denizen 脚本的编辑器。
·创建文件
要创建您的第一个任务脚本,请首先在 VS Code 中打开您的scripts文件夹。(或者如果服务器正在运行中,则将脚本文件制作完成后上传到scripts文件夹)


右键单击资源管理器菜单中的scripts文件夹,然后单击“新建文件(New File)”选项。

键入您想要的任何文件名,只需确保以 Denizen 脚本文件所需的扩展名(.dsc)结尾即可。

现在,您可以开始编写您的第一个任务脚本了!
·编写剧本
我们先从脚本的核心开始:
my_first_task:
type: task
script:
- narrate (sometext)
这个例子应该看起来很熟悉,它与上面的例子非常相似。
您应该先确认使用下划线符号而不是空格,并在末尾使用冒号。然后按回车键转到下一行,按 TAB 键将下一个行的内容向前缩进。当您继续键入行时,缩进级别将保持在原来的位置,这意味着您不必再次按 TAB 键,直到您需要将某些内容隔得更远,这在后面的示例中将需要。
人话:按TAB缩进
·脚本名称
此处的脚本名称为 my_first_task 。它位于缩进的顶部(意味着行的开头没有空格,而所有其他行的开头正好有 4 个空格 – 这些空格缩进得更远)。每个顶级缩进条目都是一个单独的脚本。以下是两个不同脚本的示例:
my_first_task:
type: task
script:
- narrate "This is is task number one!"
my_second_task:
type: task
script:
- narrate "This is task number two!"
此示例演示了在同一个文件中拥有两个不同的脚本是什么样子的。my_first_task 和 my_second_task 是两个不同的脚本,每个脚本都是一个完全独立的脚本。
此外,请注意,脚本名称和文件名不同。脚本名称是在游戏中运行所需要完全准确地填入的,整个文件的文件名完全是给自己看的,不会对 Denizen 产生任何影响。另请注意,您可以在文件夹内自由创建子文件夹,其中的任何脚本文件都可以以相同的方式加载。
·脚本类型
在脚本名称下方(第二行)您将看到脚本类型(type)。
关键是您指定要编写的 Denizen 脚本的位置。在本例中,我们正在编写一个脚本。您可能已经见过许多其他类型的脚本。现在,我们将重点介绍脚本类型。在阅读这些指南时,您将了解不同的类型,并且可以从语言说明页面上的 meta 文档中找到有关所有这些类型的解释。
确保在脚本中以第二级缩进方式编写(按回车键开始新行,然后按TAB键缩进一次)。这将在行中添加 4 个空格,每次你按回车键后都会自动再次有4个空格,直到你按退格键删除空格),在脚本名称下方,如下所示:
my_first_task:
type: task
·脚本命令
在脚本类型下方,您将看到脚本命令。对于任务脚本,关键的内容是脚本执行的内容,告诉Denizen你想在这个脚本中执行什么样的指令集。其他类型的脚本使用其他类型名称(例如world类型使用execute),在继续学习本中文wiki的过程中,您将了解它们。您在Denizen中所做的大部分实际工作都将在像这样的指令集下进行。
让我们看另一个示例脚本:
my_first_task:
type: task
script:
- narrate "This is a valid task script!"
- narrate "Congratulations on writing your first script!"
请注意我们想要叙述的文本是如何用引号括起来的。因为我们要叙述的消息包含空格,所以我们将其括在引号中以确保该命令只有一个参数。Denizen命令具有用空格分隔的参数。
制作完成!!
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
此时,您应该有一个准备好运行的任务脚本!让我们尝试运行它!首先,在游戏中键入ex reload以加载新脚本,然后使用命令在游戏中运行任务。例如,运行上述脚本的游戏内命令将是:
/ex reload/ex run (脚本文件名)
如果您看到类似以下输出的文本,则表示您已成功编写第一个任务脚本,祝贺!!🙂

更远一点
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
为了进一步了解您在这里学到的知识,并记住,虽然我们一直在使用原版命令,但它是一个Denizen 脚本命令(该命令只是一个游戏中的工具,用于快速运行任何脚本命令),让我们看一个比前面的内容多一点的示例脚本。
您还可以使用一个任务脚本触发另一个任务脚本。它看起来像这样:
my_first_task:
type: task
script:
- narrate "This is a valid task script!"
- narrate "Congratulations on writing your first script!"
- run my_second_task
my_second_task:
type: task
script:
- narrate "This is your second task script!"
这只是一个基本示例,随着您对 Denizen 的了解越来越多,您将能够创建更复杂、更强大的脚本。
值得注意的是,在上面的示例中,每个 都是单独的脚本容器,并且两者都可以位于一个脚本文件中,也可以位于不同的文件中,这对 Denizen 没有区别。
下一节的翻译工作将会很快进行,我们将进行标签的教程。




发表回复