Skript Expressions & Types

This commit is contained in:
ChuishenX 2024-06-22 10:52:51 +08:00
parent 1802595ff3
commit e785f08029

View File

@ -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"用法
你开始尝试着写一些有一些小功能的脚本了 但是难免的你会出现这样的问题
你为玩家创建了很多变量 很多都是属于一个类型的