比较与获取分数
简介
本指南将教你如何检测分数匹配的目标/具有最高或最低分数的目标。
获取最高分数 ( > )
命令:
BP/functions/wiki/scoreboard/players/get_highest_score.mcfunction
yaml
## 获取最高分数
scoreboard players operation .Highest <计分项> > * <计分项>
## 在此处输入你的命令(示例)
execute as <目标> if score @s <计分项> = .Highest <计分项> run <命令>
命令1: 此命令将.Highest分数与指定计分项中所有其他被追踪的分数进行比较,如果.Highest分数小于被比较的分数,则.Highest分数将被赋值为该分数。示例如下:
| # | 玩家 | 计分项: wiki:kills | 与.Highest比较 | 比较后的.Highest |
|---|---|---|---|---|
| 1 | Alex | 10 | .Highest > Alex | .Highest = 10 |
| 2 | Kai | 5 | .Highest > Kai | .Highest = 10 |
| 3 | Steve | 20 | .Highest > Alex | .Highest = 20 |
当.Highest分数在玩家1之后与玩家2比较时不会变化(因为10已经大于5)。
注意:
通配符(*)会与所有被追踪的分数比较——包括离线玩家。若只想与在线玩家或实体比较,请使用@a或@e。
命令2: 此命令可被修改或扩展。它允许你在<目标>分数等于.Highest分数时运行你想要的命令。
- 注意:如果你想将选择限制为仅一个目标,可以使用
@p或@e[c=1]代替<目标>。
示例:
BP/functions/wiki/scoreboard/players/get_highest_score/kills.mcfunction
yaml
## 获取最高分数
scoreboard players operation .Highest wiki:kills > * wiki:kills
## 标记击杀数最多的玩家
tag @a remove wiki:top_kills
execute as @a if score @s wiki:kills = .Highest wiki:kills run tag @s add wiki:top_kills
获取最低分数 ( < )
命令:
BP/functions/wiki/scoreboard/players/get_lowest_score.mcfunction
yaml
## 获取最低分数
scoreboard players operation .Lowest <计分项> < * <计分项>
## 在此处输入你的命令
execute as <目标> if score @s <计分项> = .Lowest <计分项> run <命令>
命令1: 此命令将.Lowest分数与指定计分项中所有其他被追踪的分数进行比较,如果.Lowest分数大于被比较的分数,则.Lowest分数将被赋值为该分数。示例如下:
| # | 玩家 | 计分项: wiki:blocks_travelled | 与.Lowest比较 | 比较后的.Lowest |
|---|---|---|---|---|
| 1 | Alex | 100 | .Lowest < Alex | .Lowest = 100 |
| 2 | Kai | 50 | .Lowest < Kai | .Lowest = 50 |
| 3 | Steve | 200 | .Lowest < Alex | .Lowest = 50 |
当.Lowest分数在玩家2之后与玩家3比较时不会变化(因为50已经小于200)。
注意:
通配符(*)会与所有被追踪的分数比较——包括离线玩家。若只想与在线玩家或实体比较,请使用@a或@e。
命令2: 此命令可被修改或扩展。它允许你在<目标>分数等于.Lowest分数时运行你想要的命令。
- 注意:如果你想将选择限制为仅一个目标,可以使用
@p或@e[c=1]代替<目标>。
示例:
BP/functions/wiki/scoreboard/players/get_lowest_score/blocks_travelled.mcfunction
yaml
## 获取最低分数
scoreboard players operation .Lowest wiki:blocks_travelled < * wiki:blocks_travelled
## 标记移动距离最短的玩家
tag @a remove wiki:eliminated
execute as @a if score @s wiki:blocks_travelled = .Lowest wiki:blocks_travelled run tag @s add wiki:eliminated
获取匹配分数 ( = )
此命令将执行目标的分数与其他选定的目标进行比较。它会为每个分数匹配的目标运行指定命令。
命令:
BP/functions/wiki/scoreboard/players/get_matching_score.mcfunction
yaml
execute as @a at @s at @a[rm=0.01] if score @s <计分项> = @p <计分项> run say @s 和 @p 拥有相同的分数!
注意:
在<命令>中(以/say作为示例),@s指代执行实体或玩家(目标),而@p或@e[c=1]指代被比较的实体或玩家。
可视化效果:

示例1: 如果宠物距离主人超过6格则传送:
BP/functions/wiki/scoreboard/players/get_matching_score/pet.mcfunction
yaml
## 传送到主人身边
execute as @e[tag=pet] at @s at @a[rm=7] if score @s wiki:id = @p wiki:id run tp @s @p
示例2: 将地块所有者设为创造模式,其他人设为冒险模式:
BP/functions/wiki/scoreboard/players/get_matching_score/plot.mcfunction
yaml
## 将所有者设为创造模式
execute as @e[tag=plot] at @s at @a[r=16] if score @s wiki:id = @p wiki:id run gamemode c @p[m=!c]
## 将非所有者设为冒险模式
execute as @e[tag=plot] at @s at @a[r=16] unless score @s wiki:id = @p wiki:id run gamemode a @p[m=!a]

