记分板操作
记分板可用于执行复杂操作,类似于Molang。操作分为两类:数学运算和逻辑运算。
概述
操作通过/scoreboard players operation命令执行。完整语法如下:
/scoreboard players operation <目标分数> <目标记分项> <操作符> <源分数> <源记分项>该命令包含两个分数持有者:目标分数和源分数。目标分数是被操作的值,源分数是影响操作的值。操作结果会写入目标分数,而源分数的值不会被改变(交换操作除外)。
数学运算符
数学运算符通过算术运算影响目标分数。共有五种数学运算:加法、减法、乘法、向下取整除法和向下取整模除。
以下示例均假设分数持有者.A wiki:var值为25,.B wiki:var值为10。
加法
运算符:+=
此操作将目标分数与源分数相加,结果存入目标分数。
/scoreboard players operation .A wiki:var += .B wiki:var.A = .A + .B,即25 + 10 = 35。
减法
运算符:-=
此操作用目标分数减去源分数,结果存入目标分数。
/scoreboard players operation .A wiki:var -= .B wiki:var.A = .A - .B,即25 - 10 = 15。
乘法
运算符:*=
此操作将目标分数乘以源分数,结果存入目标分数。
/scoreboard players operation .A wiki:var *= .B wiki:var.A = .A * .B,即25 * 10 = 250。
向下取整除法
运算符:/=
此操作将目标分数除以源分数,结果向下取整后存入目标分数(因为分数值只能是整数)。
/scoreboard players operation .A wiki:var /= .B wiki:var.A = floor(.A / .B),即floor(25 / 10) = 2。
向下取整模除
运算符:%=
此操作同样进行除法运算,但将余数存入目标分数(同样会向下取整)。
/scoreboard players operation .A wiki:var %= .B wiki:var.A = floor(mod(.A, .B)),即floor(mod(25, 10)) = 5。
逻辑运算符
逻辑运算使用逻辑门和赋值来影响目标分数。共有四种逻辑运算:赋值、小于、大于和交换。
同样假设分数持有者.A wiki:var值为25,.B wiki:var值为10。
赋值运算符
运算符:=
此操作将目标分数设置为源分数的值。
/scoreboard players operation .A wiki:var = .B wiki:var.A = .B,结果为10。
最小值运算符
运算符:<
此操作返回两个分数中的较小值,并存入目标分数。
/scoreboard players operation .A wiki:var < .B wiki:var.A = min(.A, .B),即min(25, 10) = 10。
最大值运算符
运算符:>
此操作返回两个分数中的较大值,并存入目标分数。
/scoreboard players operation .A wiki:var > .B wiki:var.A = max(.A, .B),即max(25, 10) = 25。
交换运算符
运算符:><
此操作交换目标分数和源分数的值。这是唯一会影响源分数的操作。
/scoreboard players operation .A wiki:var >< .B wiki:var上述命令会交换.A和.B的值,例如:
交换前:.A = 10;.B = 25;
交换后:.A = 25;.B = 10;
可以理解为三个操作:.Temp = .A; .A = .B; .B = .Temp;,最终.A wiki:var = 10且.B wiki:var = 25。
实用案例
检查数值是否相等
若要通过记分板检查两个值是否相等,可使用以下命令:
scoreboard objectives add wiki:temp dummy
execute if score .Steve wiki:temp = .Alex wiki:temp run say Steve的分数与Alex相同。记分板初始化
若要将记分板值初始化为0(仅当该值不存在时),可使用scoreboard players add <分数持有者> <记分项> 0。若实体上不存在该值则会设为0,若已存在则不做任何改变。



