Chatper 2 - 指令与循环 Command and Loops
请看了上一篇再来哟
指令与循环 Command & Loops
在Skript 中 command 设定的方式很简单, 可是他拥有另一个Command 叫 Custom Command. 开发者能通过 Custom command 直接在指令上宣告 Expression 的参数 ( Arguments ).
另外提醒 [] 是 Optional 的意思 而 <> 是 required的意思哟.
// 普通 Command 开发的例子
command /give [<text>]:
description: give command // 指令介绍
usage: /give <item_ids> // 指令使用方式
aliases: g // 指令的 其他缩称
executable by: players // 谁 可以执行这个指令 ( console, players )
trigger:
// logic code
上面的是平常 command的开发例子 经常看到的 在logic code 上需要做一些侦测 但是使用 custom command的话就不需要那些侦测 甚至是 list类型的 expression.
// Custom Command 开发的例子
command /give <items>:
description: give command // 指令介绍
usage: /give <item_ids> // 指令使用方式
aliases: g // 指令的 其他缩称
executable by: players // 谁 可以执行这个指令 ( console, players )
trigger:
// logic code
如你所见 custom command 的 <items> 其实就是 expression %item% 只是设定成list 就多一个 's' 如果你只是要一个物品放 <item> 也能的. 列表类型的 expression 你要获得必须使用 loop.
什么是loop?Loop 可以说是 循环 一直重复做一个事情. Loop 可以循环读取 列表类型的变数. 在上面的command 例子 其实 command 里面的都叫 arguments 所有你能用以下的方式获得 items
// Loop 的例子
loop arguments: // 循环读取 command 获得的 arguments
就会从 第一个 arguments 读取到 最后一个才 停止这边的 运行
读取列表变数 里面的东西 要怎么获得?loop-index? loop-value? loop-item? 其实他们都有指定的用途和来源
// Loop 的例子
{_list::*} // 假如列表里面有 玩家A, 玩家B, 玩家C
loop {_list::*}: // 我们需要这样去循环读取
loop-index // 循环开始的第一次 index 是 1
loop-player // player 是 玩家A
loop-value // 也是 玩家A
loop-item // 会有问题 (error) , 因为列表里面不是 %item%
为什么这样?那么多东西弄乱我们?并不是只是用些人的习惯 要知道 loop着什么东西其实 loop里面 一定会有的是 index 和 value. 分别为 目前循环到第几个 (index) 与 什么东西(value). 额为什么会有 loop-player, loop-item 这种? 你就要看看 expression了 记得expression的东西吗?%item(s)% , %player(s)% 这些东西都是有自己的名称,你在loop指定的 东西下 你可以直接写 loop-expression的名字下去。给个例子 我创建了一个 expression叫做 %haha(s)%. 如果我loop的 列表里面的 东西是 %haha% 我也可以通过 loop-haha 获得 列表里的东西。