Jelajahi Sumber

游戏结束时显示排名;跑酷支持计算排名

LTCatt 6 tahun lalu
induk
melakukan
c69cb58123

+ 10 - 10
data/mini/functions/main/game_end.mcfunction

@@ -3,16 +3,16 @@ 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
+scoreboard players set $t_score_max mini_score -2147483648
+execute as @a if score @s mini_score > $t_score_max mini_score run scoreboard players operation $t_score_max mini_score = @s mini_score
+execute as @a unless entity @a[tag=mini_rank1] if score @s mini_score = $t_score_max mini_score run tag @s add mini_rank1
+scoreboard players set $t_score_max mini_score -2147483648
+execute as @a[tag=!mini_rank1] if score @s mini_score > $t_score_max mini_score run scoreboard players operation $t_score_max mini_score = @s mini_score
+execute as @a[tag=!mini_rank1] unless entity @a[tag=mini_rank2] if score @s mini_score = $t_score_max mini_score run tag @s add mini_rank2
+scoreboard players set $t_score_max mini_score -2147483648
+execute as @a[tag=!mini_rank1,tag=!mini_rank2] if score @s mini_score > $t_score_max mini_score run scoreboard players operation $t_score_max mini_score = @s mini_score
+execute as @a[tag=!mini_rank1,tag=!mini_rank2] unless entity @a[tag=mini_rank3] if score @s mini_score = $t_score_max mini_score run tag @s add mini_rank3
+tag @a[tag=!mini_rank1,tag=!mini_rank2,tag=!mini_rank3] add mini_rank4
 
 # 进入状态 6
 function ltw:state/6/state_enter

+ 2 - 2
data/mini/functions/main/player_failed.mcfunction

@@ -6,8 +6,8 @@ scoreboard players set $t_alive mem 0
 execute as @a[tag=mini_running] run scoreboard players add $t_alive mem 1
 tellraw @a [{"selector": "@s","color":"red"}," 已失败! 剩余 ",{"score": {"name": "$alive","objective": "mem"}}," 人!"]
 
-# 记录名次
-# UNDONE
+# 给存活的玩家加分
+scoreboard players add @a[tag=mini_running] mini_score 1
 
 # 进入旁观
 gamemode spectator @s

+ 2 - 2
data/mini/functions/main/player_finished.mcfunction

@@ -6,8 +6,8 @@ scoreboard players set $t_finish mem 0
 execute as @a[tag=!mini_running] run scoreboard players add $t_finish mem 1
 tellraw @a [{"selector": "@s","color":"green"}," 已成功! 已完成 ",{"score": {"name": "$finish","objective": "mem"}}," 人!"]
 
-# 记录名次
-# UNDONE
+# 给已完成的玩家加分
+scoreboard players add @a[tag=!mini_running] mini_score 1
 
 # 进入旁观
 gamemode spectator @s

+ 1 - 2
data/mini/functions/main/show_result.mcfunction

@@ -1,4 +1,3 @@
 # 显示小游戏排名
 
-# UNDONE
-say 游戏结束了!排名记录还没做!
+tellraw @s [{"text":"\n>> 小游戏结束 >>\n\n","color":"green","bold":true},{"text": "第一名 - ","color":"white","bold": false},{"selector": "@p[tag=mini_rank1]"},"\n第二名 - ",{"selector": "@p[tag=mini_rank2]"},"\n第三名 - ",{"selector": "@p[tag=mini_rank3]"},"\n"]

+ 0 - 3
data/mini/functions/tntrun/player_failed.mcfunction

@@ -3,6 +3,3 @@ function mini:main/player_failed
 
 # 玩家死亡
 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