本帖最后由 sky_flying 于 2021-7-1 11:46 编辑 
原本应该是攻击或被攻击的每点伤害会加入soulall中再被写入bossbar显示
但是每次攻击后bossbar和soulall的数据跳了一下就重新归零
求原因
指令如下:

复制代码(初始设置)复制代码
(循环触发)
原本应该是攻击或被攻击的每点伤害会加入soulall中再被写入bossbar显示
但是每次攻击后bossbar和soulall的数据跳了一下就重新归零
求原因
指令如下:

- bossbar add soul_value "\u00A7l灵魂值"
 
- bossbar set soul_value color white
 
- bossbar set soul_value max 10
 
- bossbar set soul_value style notched_10
 
- bossbar set soul_value visible true
 
- scoreboard objectives add soulall dummy
 
- scoreboard objectives add soulhurt custom:minecraft.damage_dealt
 
- scoreboard objectives add soulhurted custom:minecraft.damage_taken
 
- scoreboard objectives add pass10 dummy
 
- scoreboard players set $ pass10 10
 
- execute as @a[scores={soulhurt=1..}] at @s run scoreboard players operation @s soulall += @s soulhurt
 
- execute as @a[scores={soulhurted=1..}] at @s run scoreboard players operation @s soulall += @s soulhurted
 
- execute as @a at @s run scoreboard players operation @s soulall /= $ pass10
 
- execute as @a at @s store result bossbar minecraft:soul_value value at @s run scoreboard players get @s soulall
 
- scoreboard players set @a[scores={soulall=11..}] soulall 10
 
- execute as @a[scores={soulhurt=1..}] at @s run scoreboard players set @s soulhurt 1
 
- execute as @a[scores={soulhurted=1..}] at @s run scoreboard players set @s soulhurted 1
(循环触发)
首先,bossbar 并不能像记分板那样做到一人一个数值,而是全部玩家共用同一个,所以请先检查是否处于单人游戏模式。
其次,我不是很能理解第 3 行
execute as @a at @s run scoreboard players operation @s soulall /= $ pass10
还有第 5 至 7 行
scoreboard players set @a[scores={soulall=11..}] soulall 10
execute as @a[scores={soulhurt=1..}] at @s run scoreboard players set @s soulhurt 1
execute as @a[scores={soulhurted=1..}] at @s run scoreboard players set @s soulhurted 1
的作用。
理论上,只需要将 soulhurt 和 soulhurted 加到 soulall,然后将 soulall 存到 bossbar,最后重置 soulhurt 和 soulhurted 即可。
不知道我有没有理解错题意。
其次,我不是很能理解第 3 行
execute as @a at @s run scoreboard players operation @s soulall /= $ pass10
还有第 5 至 7 行
scoreboard players set @a[scores={soulall=11..}] soulall 10
execute as @a[scores={soulhurt=1..}] at @s run scoreboard players set @s soulhurt 1
execute as @a[scores={soulhurted=1..}] at @s run scoreboard players set @s soulhurted 1
的作用。
理论上,只需要将 soulhurt 和 soulhurted 加到 soulall,然后将 soulall 存到 bossbar,最后重置 soulhurt 和 soulhurted 即可。
不知道我有没有理解错题意。
 本帖最后由 Dahesor 于 2021-7-1 13:48 编辑 
单纯的逻辑问题:
复制代码你应该是想要把soulall的值缩小10倍,但是这条命令会无限制地在每一次的循环中运行,soulall每次都被除10,最终使其归零。
这就是为什么你的boosbar会闪一下的原因
其次,你的这个只适用于单人模式,原因楼上说了。
单纯的逻辑问题:
- execute as @a at @s run scoreboard players operation @s soulall /= $ pass10
这就是为什么你的boosbar会闪一下的原因
其次,你的这个只适用于单人模式,原因楼上说了。
Dahesor 发表于 2021-7-1 13:33
单纯的逻辑问题:
你应该是想要把soulall的值缩小10倍,但是这条命令会无限制地在每一次的循环中运行,soul ...
是单人 那么在单人的情况下我该怎么把数值缩小呢?
sky_flying 发表于 2021-7-1 14:10
是单人 那么在单人的情况下我该怎么把数值缩小呢?
是单人 那么在单人的情况下我该怎么把数值缩小呢?
只要你把 bossbar 的最大值改成 100 就不用缩小了。
或者你把你的要求具体表述一遍,我们帮你重写命令。
鱼宝放心飞 发表于 2021-7-1 14:14
只要你把 bossbar 的最大值改成 100 就不用缩小了。
或者你把你的要求具体表述一遍,我们帮你重写命令。 ...
让玩家伤害/受的伤害的数值(血量数值而非custom条件记分板记录的10倍数值)都会被加入soulall记分板中,仅此而已