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