自定义变量系统
该功能属于开发阶段,可能会有后续更改,仅供参考
- 自定义变量旨在代替计分板,通过保存字符/数字变量,通过命令就能实现更复杂的逻辑处理
- 自定义变量系统将与USF高度结合,例如商店的货币等
- 自定义变量是一个基于USF内部的功能,无法脱离USF使用
- 每个实体都能使用var系统,通过命令创建、修改、删除自定义变量,不需要像计分板那样提前注册变量id
- 与此同时,存档本身会有全局变量,可以通过设置全局变量,来存储存档共用的信息(如提示语、模板用词、全服汇率等)
当玩家存在和全局变量一样id的变量时,优先级:玩家>存档
非玩家实体设置变量的性能成本大于玩家,尽量避免使用
| 类型 | 命令ID | 可执行操作 | 备注 |
|---|---|---|---|
| 通用操作 | — | 设置变量、移除变量 | — |
| 数字 | number | 加减乘除 | 默认为0、保留两位小数 |
| 字符 | string | 添加后缀文本 | 默认为空字符 |
基本格式:
/usf:var [变量归属范围] [操作]变量归属范围
Section titled “变量归属范围”| 类型 | 说明 |
|---|---|
world | 对全局变量进行操作 |
entity [实体选择器] | 通过MC内置选择器,筛选实体并操作其变量 |
示例:
/usf:var entity @a[tag=A]选择含标签A的玩家并操作其变量
作用:直接定义某个变量并赋值
备注:若目标变量已被定义,将直接覆盖
格式:set [变量名] [变量类型] [值]
示例:
/usf:var entity @s set A number 100.05给自己的变量A设置为数字100.05
/usf:var world set A string ED给全局变量A设置为字符”ED”
作用:移除某个变量
格式:remove [变量名]
作用:为字符变量添加后缀文本
格式:add [变量名] [值]
说明:仅适用于字符变量,对数字变量执行该命令无效
示例:
/usf:var world add A ok假设A变量原本是”o”,执行后全局变量A:o → ook
作用:将该变量复制并传送到别处
格式:
| 格式 | 说明 |
|---|---|
[原变量] world [目标变量] | 将原变量复制到全局的目标变量 |
[原变量] entity [实体选择器] [目标变量] | 将原变量复制到另一个实体的目标变量 |
[原变量] scoreboard [实体选择器] [计分板ID] | 将原变量的数字复制到计分板上(仅数字变量可用,数字将被四舍五入为整数) |
[目标变量] from [实体选择器] [计分板ID] | 将实体的计分板值复制到目标变量(强行覆盖) |
说明:若对面的变量类型不同,对面的变量将被强行覆盖
示例:
/usf:var world deliver A world B将全局变量A的值复制到全局变量B
/usf:var entity ED deliver A scoreboard TD money将玩家ED的变量A的值复制到玩家TD的money计分板
/usf:var entity ED deliver A from TD money将玩家TD的money计分板值复制到玩家ED的目标变量
作用:对数字类变量进行操作
格式:operate [变量] [操作符] [来源]
操作符:
| 操作符 | 说明 |
|---|---|
+ | 加数值 |
- | 减数值 |
* | 乘数值 |
/ | 除数值 |
来源:
| 来源 | 说明 |
|---|---|
value [数值] | 使用具体数值 |
from entity [目标选择器] [变量名] | 从实体中获取 |
from world [变量名] | 从世界变量中获取 |
示例:
/usf:var world operate A + value 10全局变量A的值+10
/usf:var entity ED operate money * from entity CW money玩家ED的money变量乘上玩家CW的money变量
说明:主要用于excuse命令判定
格式:compare [变量] [准则] [目标变量]
准则:
| 准则 | 说明 | 适用变量类型 |
|---|---|---|
>, <, >=, <= | 常用比较符 | 数字变量 |
=, != | 等于、不等于 | 数字和字符变量 |
目标变量:
| 目标变量 | 说明 |
|---|---|
entity [目标选择器] [变量名] | 与实体变量比较 |
world [变量名] | 与全局变量比较 |
示例:
/usf:var entity @s compare A > world B将自己的A变量与全局变量B比较,若A>B,则命令运行成功,否则运行错误
待完善