LTCatt 6 лет назад
Родитель
Сommit
85d3129f29

+ 19 - 1
data/ltw/functions/state/8/next.mcfunction

@@ -1 +1,19 @@
-say 下一个!
+# 选取下一轮选择的人群
+
+tag @a remove selecting
+execute as @a[tag=mini_rank1] run tag @s add selecting
+execute if entity @a[tag=selecting] run tellraw @a[tag=!selecting] ["",{"text": ">> ","color":"gold"},"轮到第一名 ",{"selector": "@a[tag=mini_rank1]","color":"gold"}," 选择奖励了!"]
+execute unless entity @a[tag=selecting] as @a[tag=mini_rank2] run tag @s add selecting
+execute if entity @a[tag=selecting] run tellraw @a[tag=!selecting] ["",{"text": ">> ","color":"gold"},"轮到第二名 ",{"selector": "@a[tag=mini_rank2]","color":"gold"}," 选择奖励了!"]
+execute unless entity @a[tag=selecting] as @a[tag=mini_rank3] run tag @s add selecting
+execute if entity @a[tag=selecting] run tellraw @a[tag=!selecting] ["",{"text": ">> ","color":"gold"},"轮到第三名 ",{"selector": "@a[tag=mini_rank3]","color":"gold"}," 选择奖励了!"]
+execute unless entity @a[tag=selecting] as @a[tag=mini_rank4] run tag @s add selecting
+execute if entity @a[tag=selecting] run tellraw @a[tag=!selecting] ["",{"text": ">> ","color":"gold"},"轮到其他人选择奖励了!"]
+
+# 以玩家为对象开始执行
+execute as @a[tag=selecting] run function ltw:state/8/next2
+execute unless entity @a[tag=selecting] if score $game_type mem matches 1 if score $round mem matches ..5 run function ltw:state/8/continue_gameparty
+execute unless entity @a[tag=selecting] if score $game_type mem matches 1 if score $round mem matches 6.. run function ltw:main/game_end
+
+# 初始化倒计时
+scoreboard players set $countdown mem 5

+ 11 - 0
data/ltw/functions/state/8/next2.mcfunction

@@ -0,0 +1,11 @@
+# 由即将开始选择的玩家执行
+
+tag @s remove mini_rank1
+tag @s remove mini_rank2
+tag @s remove mini_rank3
+tag @s remove mini_rank4
+
+gamemode adventure
+
+tellraw @s ["",{"text": ">> ","color":"green"},"轮到你选择奖励了!"]
+tag @s remove selecting

+ 10 - 2
data/ltw/functions/state/8/player_enter.mcfunction

@@ -12,11 +12,19 @@ effect give @s resistance 1000000 4 true
 # 传送玩家
 tp @s 7.0 11.4 2007.0 0 0
 
+# 清除 Tag
+tag @s[tag=watcher] remove mini_rank1
+tag @s[tag=watcher] remove mini_rank2
+tag @s[tag=watcher] remove mini_rank3
+tag @s[tag=watcher] remove mini_rank4
+tag @s[tag=rejoining] remove mini_rank1
+tag @s[tag=rejoining] remove mini_rank2
+tag @s[tag=rejoining] remove mini_rank3
+tag @s[tag=rejoining] remove mini_rank4
+
 # 播放音效
 execute at @s run function lib:sounds/travel
 
 # 自由旁观
 gamemode spectator
 spectate
-
-# FIXME : 如果玩家在奖励选择阶段重连,玩家应该跳过此次奖励选择

+ 7 - 3
data/ltw/functions/state/8/state_enter.mcfunction

@@ -7,6 +7,10 @@ scoreboard objectives setdisplay belowName total_score_disp
 scoreboard objectives setdisplay sidebar total_score
 scoreboard objectives setdisplay list total_score_disp
 
-# 判断进入下一轮小游戏或结束
-# execute if score $game_type mem matches 1 if score $round mem matches ..5 run function ltw:state/7/continue_gameparty
-# execute if score $game_type mem matches 1 if score $round mem matches 6.. run function ltw:main/game_end
+# 初始化倒计时
+scoreboard players set $countdown mem 7
+
+# 伤害管理
+team modify player friendlyFire false
+team modify player collisionRule always
+gamerule fallDamage false

+ 1 - 1
data/mini/functions/colormatch/game_init.mcfunction

@@ -20,5 +20,5 @@ schedule function mini:colormatch/game_init2 18t replace
 
 # 伤害管理
 team modify player friendlyFire true
-team modify player collisionRule never
+team modify player collisionRule always
 gamerule fallDamage false

+ 1 - 1
data/mini/functions/hotpm/game_init.mcfunction

@@ -5,7 +5,7 @@ scoreboard players set $finish_mode mem 0
 
 # 伤害管理
 team modify player friendlyFire true
-team modify player collisionRule never
+team modify player collisionRule always
 gamerule fallDamage false
 
 # 生成地图

+ 1 - 1
data/mini/functions/tntrun/game_init.mcfunction

@@ -12,5 +12,5 @@ kill @e[tag=tntrun_block]
 
 # 伤害管理
 team modify player friendlyFire true
-team modify player collisionRule never
+team modify player collisionRule always
 gamerule fallDamage false