From e785f080293ba62ea441ddcd6b940c765eebe98d Mon Sep 17 00:00:00 2001 From: ChuishenX Date: Sat, 22 Jun 2024 10:52:51 +0800 Subject: [PATCH] Skript Expressions & Types --- docs/process/plugin/other/Skript/基础教程.md | 77 +++++++++++++------- 1 file changed, 50 insertions(+), 27 deletions(-) diff --git a/docs/process/plugin/other/Skript/基础教程.md b/docs/process/plugin/other/Skript/基础教程.md index ed16374b75..a51ab47323 100644 --- a/docs/process/plugin/other/Skript/基础教程.md +++ b/docs/process/plugin/other/Skript/基础教程.md @@ -430,39 +430,60 @@ send subtitle %text% [to %players%] [for %time span%] [with fade[(-| )]in %time --- ### Expressions(表达) & Types(类型) -假设你想要调整玩家的最大血量 -调整血量 之前我们提过 动词 + 名词形式 这是属于 Effects(效果) 类 + +有一天你心血来潮,想要调整玩家的最大血量。 + +调整血量,之前我们提过这属于动词 + 名词形式,这是属于 Effects(效果) 类。 + 但是实际上是这样么? -实际上并不是 所谓的 Effect(效果) 虽然都是 动词 + 名词形式 但是对于 Effect(效果) 而言 -注重的是 动词 而非后面跟着的 名词 例如 在玩家所在位置生成僵尸 + +实际上并不是,所谓的 Effect(效果) 虽然都是 `动词 + 名词` 形式,但是对于 Effect(效果) 而言。 + +注重的是 `动词` 而非后面跟着的 `名词` 例如 `在玩家所在位置生成僵尸`。 + Effect(效果) 所能提供的 只有 "生成" -通过查阅 Doc https://skriptlang.github.io/Skript/effects.html#EffSpawn 我们知道生成的用法基本为 +通过查阅[官方文档](https://docs.skriptlang.org/docs.html?search=#EffSecSpawn),我们知道生成的用法基本为: + +```skript (spawn|summon) %entity types% [%directions% %locations%] (spawn|summon) %number% of %entity types% [%directions% %locations%] -复制代码 -但是除去这个词语 我们还剩 "在玩家所在位置" 和 "僵尸" -这两个词我们又该怎么处理呢? 这时候我们就需要用到 Expressions(表达) -位置的英文单词是 "Location" 我们在官方 Doc 查到了 3 种有关 "Location" 的表达 -https://skriptlang.github.io/Skript/expressions.html#ExprLocation -https://skriptlang.github.io/Skript/expressions.html#ExprLocationOf -https://skriptlang.github.io/Skript/expressions.html#ExprLocationAt -我们需要什么呢? 我们需要 "玩家所在的位置" 相同地 通过查看官方的注释 -我们知道我们需要的是 #ExprLocationOf (The location of a block or entity.) -但是这只解决了我们 "所在位置" 的问题 并没有解决 "玩家" 和 "僵尸" 的问题 -我们可以看到 "所在位置" Expressions(表达) 是没有主语的 但是对于 Skript 而言 -Skipt 不同于其他语言 正如我在开头所展示的 相比较 Java 而言 Skript 更注重的是语言而非编程 +``` + +但是除去这个词语,我们还剩 "在玩家所在位置" 和 "僵尸"。 + +这两个词我们又该怎么处理呢? 这时候我们就需要用到 Expressions(表达)。 + +位置的英文单词是 "Location" 我们在官方 Doc 查到了多种有关 "Location" 的表达 +- https://docs.skriptlang.org/docs.html?search=#ExprLocation +- https://docs.skriptlang.org/docs.html?search=#ExprLocationOf +- https://docs.skriptlang.org/docs.html?search=#ExprLocationAt + +我们需要什么呢? 我们需要 "玩家所在的位置"。相同地,通过查看官方的注释,我们知道我们需要的是 #ExprLocationOf (The location of a block or entity.)。 + +但是这只解决了我们 "所在位置" 的问题 并没有解决 "玩家" 和 "僵尸" 的问题。 + +我们可以看到 "所在位置",Expressions(表达) 是没有主语的。 + +Skript 不同于其他语言,正如我在开头所展示的,相比较 Java 而言 Skript 更**注重的是语言而非编程**。 + +我们需要把这些零碎的东西组成句子,必不可少的是主语,次要的是宾语。 + +这时候我们就需要引入 Types(类型),但凡你发现你的表达里缺少主语/宾语(对象),来这里准没错: + +https://docs.skriptlang.org/classes.html + +通过翻译我们可以轻松知道玩家的英文以及僵尸的英文,分别为 "player"和"zombie"。 + +与之相对应的,我们分别在 Types(类别) 中找到: +- https://docs.skriptlang.org/docs.html?search=#player +- https://docs.skriptlang.org/docs.html?search=#entity + +综合上面我们所获得的信息 我们获得了完整一行代码: + +```spawn zombie at location of player``` -我们需要把这些零碎的东西组成句子 必不可少的是主语 次要的是宾语 -这时候我们就需要引入 Types(类型) 但凡你发现你的表达里缺少主语/宾语(对象) 来这里准没错 -https://skriptlang.github.io/Skript/classes.html -通过翻译我们可以轻松知道 玩家的英文 以及 僵尸的英文 分别为 "player" "zombie" -与之相对应的 我们分别在 Types(类别) 中找到 -https://skriptlang.github.io/Skript/classes.html#player -https://skriptlang.github.io/Skript/classes.html#entity -综合上面我们所获得的信息 我们获得了完整一行代码 -spawn zombie at location of player -复制代码 --- + Wow 恭喜你 看到这 你就可以开始尝试着写一些插件了 这里刚好有一个例子 不妨动动手 试一试 在玩家破坏方块时 检查玩家是否有 "fundamental.break" 这个权限 @@ -472,7 +493,9 @@ Wow 恭喜你 看到这 你就可以开始尝试着写一些插件了 当然仅仅学这些并不够 为了做到能更快更灵活的使用各类语法 在闲暇的时候 把官方 Doc 提供的所有语法的注释都认真的看一遍是快速上手 Skript 的一种好办法 + --- + "loop"用法 你开始尝试着写一些有一些小功能的脚本了 但是难免的你会出现这样的问题 你为玩家创建了很多变量 很多都是属于一个类型的