LTCatt пре 6 година
родитељ
комит
ffad0f3c71

+ 12 - 0
data/mini/functions/main/game_end.mcfunction

@@ -2,5 +2,17 @@
 execute if score $mini_type mem matches 1 run function mini:parkour/game_end
 execute if score $mini_type mem matches 2 run function mini:tntrun/game_end
 
+# 计算排名
+scoreboard players set $mini_score_max mini_score -2147483648
+execute as @a unless score @s mini_score matches -1 if score @s mini_score > $mini_score_max mini_score run scoreboard players operation $mini_score_max mini_score = @s mini_score
+execute as @a unless entity @a[tag=mini_rank_1] if score @s mini_score = $mini_score_max mini_score run tag @s add mini_rank_1
+scoreboard players set $mini_score_max mini_score -2147483648
+execute as @a[tag=!mini_rank_1] unless score @s mini_score matches -1 if score @s mini_score > $mini_score_max mini_score run scoreboard players operation $mini_score_max mini_score = @s mini_score
+execute as @a[tag=!mini_rank_1] unless entity @a[tag=mini_rank_2] if score @s mini_score = $mini_score_max mini_score run tag @s add mini_rank_2
+scoreboard players set $mini_score_max mini_score -2147483648
+execute as @a[tag=!mini_rank_1,tag=!mini_rank_2] unless score @s mini_score matches -1 if score @s mini_score > $mini_score_max mini_score run scoreboard players operation $mini_score_max mini_score = @s mini_score
+execute as @a[tag=!mini_rank_1,tag=!mini_rank_2] unless entity @a[tag=mini_rank_3] if score @s mini_score = $mini_score_max mini_score run tag @s add mini_rank_3
+tag @a[tag=!mini_rank_1,tag=!mini_rank_2,tag=!mini_rank_3] add mini_rank_4
+
 # 进入状态 6
 function ltw:state/6/state_enter

+ 4 - 1
data/mini/functions/main/game_init.mcfunction

@@ -1,3 +1,6 @@
 # 小游戏初始化
 execute if score $mini_type mem matches 1 run function mini:parkour/game_init
-execute if score $mini_type mem matches 2 run function mini:tntrun/game_init
+execute if score $mini_type mem matches 2 run function mini:tntrun/game_init
+
+# 计分板初始化
+scoreboard players reset * mini_score

+ 4 - 0
data/mini/functions/main/init.mcfunction

@@ -1,3 +1,7 @@
 # 初始化
 function mini:tntrun/init
 function mini:parkour/init
+
+# 计分板初始化
+scoreboard objectives remove mini_score
+scoreboard objectives add mini_score dummy "小游戏得分"

+ 2 - 0
data/mini/functions/main/player_enter.mcfunction

@@ -1,4 +1,6 @@
 # 单个玩家开始小游戏时执行
 tag @s add mini_running
+scoreboard players set @s mini_score 0
+
 execute if score $mini_type mem matches 1 run function mini:parkour/player_enter
 execute if score $mini_type mem matches 2 run function mini:tntrun/player_enter

+ 5 - 1
data/mini/functions/tntrun/player_failed.mcfunction

@@ -1,4 +1,8 @@
 # 玩家失败时由玩家自己触发
 function mini:main/player_failed
 
-tag @s remove tntrun_pc
+# 玩家死亡
+tag @s remove tntrun_pc
+
+# 给存活的玩家加分
+execute as @a[tag=mini_running] unless score @s mini_score matches -1 run scoreboard players add @s mini_score 1