Skip to content

自定义变量系统

IMPORTANT

该功能属于开发阶段,可能会有后续更改,仅供参考

说明:

  1. 自定义变量旨在代替计分板,通过保存字符/数字变量,通过命令就能实现更复杂的逻辑处理.
  2. 自定义变量系统将与USF高度结合,例如商店的货币等.
  3. 自定义变量是一个基于USF内部的功能,无法脱离USF使用.

核心设计

  • 每个实体都能使用var系统,通过命令创建、修改、删除自定义变量,不需要像计分板那样提前注册变量id.
  • 与此同时,存档本身会有全局变量,可以通过设置全局变量,来存储存档共用的信息.(如提示语、模板用词、全服汇率等)

IMPORTANT

  1. 当玩家存在和全局变量一样id的变量时,优先级:玩家>存档
  2. 非玩家实体设置变量的性能成本大于玩家,尽量避免使用

变量类型:

类型命令ID可执行操作备注
通用操作设置变量、移除变量
数字number加减乘除默认为0、保留两位小数
字符string添加后缀文本默认为空字符

修改方式

★使用命令/usf:var★

基本格式:/usf:var [变量归属范围] [操作]

★[变量归属范围]★

类型说明
world要对全局变量进行操作
entity [实体选择器]通过MC内置选择器,筛选实体并操作其变量
  • 例:/usf:var entity @a[tag=A]
    选择含标签A的玩家并...

★[操作]★

  1. set 作用:直接定义某个变量并赋值 备注:若目标变量已被定义,将直接覆盖 格式:set [变量名] [变量类型] [值]
  • 例:/usf:var entity @s set A number 100.05
    给自己的变量A设置为数字100.05
  • 例:/usf:var world set A string ED
    给全局变量A设置为字符“ED”
  1. remove 作用:移除某个变量 格式:remove [变量名]

TIP

若需要改变变量类型,可直接使用set,无需移除原变量

  1. add 作用:为字符变量添加后缀文本 格式:add [变量名] [值] 说明:仅使用于字符变量,对数字变量执行该命令无效
  • 例:/usf:var world add A ok
    (假设A变量原本是"o")
    全局变量A:o > ook
  1. 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的目标变量』
  1. 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变量』
  1. compare 说明:主要用于excuse命令判定 格式:compare [变量] [准则] [目标变量]

准则

准则说明适用变量类型
>,<,>=,<=常用,无需说明数字变量
=,!=等于,不等于数字和字符变量

目标变量

目标变量说明
entity [目标选择器] [变量名]与实体变量比较
world [变量名]与全局变量比较

判定准则:

  1. 若两变量类型不一,命令运行失败
  2. 若某个变量不存在,则不存在的变量变量用变量默认值进行比较
  • 例:/usf:var entity @s compare A > world B 『将自己的A变量与全局变量B比较,若A>B,则命令运行成功,否则运行错误』

应用

待完善