local Action_RoundSettle = { } -- 触发器激活时,将执行Action的Execute function Action_RoundSettle:Execute(...) -- 倒计时时间 UGCLogSystem.Log("[Action_RoundSettle:Execute] 执行") self.LastRoundTime = DefaultSettings.RoundInfo.RoundSettleTime; -- self.TotalRoundTime = self.LastRoundTime; UGCGameSystem.GameState:StartRoundSettle(); self.bEnableActionTick = true; self.CounterTime = 0.; -- 重置一下当前所有玩家 self:RespawnPlayers(); local PCs = UGCGameSystem.GetAllPlayerController(); for i, v in pairs(PCs) do if v.InSpectate then v:ExitSpectate(); end end return true end -- 需要勾选Action的EnableTick,才会执行Update -- 触发器激活后,将在每个tick执行Action的Update,直到self.bEnableActionTick为false function Action_RoundSettle:Update(DeltaSeconds) if self.LastRoundTime > 0. then self.LastRoundTime = self.LastRoundTime - DeltaSeconds; self.CounterTime = self.CounterTime + DeltaSeconds; if self.CounterTime >= 1 then self.CounterTime = self.CounterTime - 1; if self.LastRoundTime > 0 then UGCGameSystem.GameState:UpdateRoundSettleTime(self.LastRoundTime); end end if self.LastRoundTime <= 0 then UGCGameSystem.GameState:UpdateRoundSettleTime(); self.bEnableActionTick = false; end end end -- 重置所有玩家 function Action_RoundSettle:ResetPlayers() for TeamId, PlayerKeyList in pairs(UGCGameSystem.GameState.PlayerTeams) do for i, PlayerKey in pairs(PlayerKeyList) do --- 击杀玩家 local Pawn = UGCGameSystem.GetPlayerPawnByPlayerKey(PlayerKey); local PC = UGCGameSystem.GetPlayerControllerByPlayerKey(PlayerKey); if UE.IsValid(Pawn) then Pawn:K2_DestroyActor(); end if UE.IsValid(PC) then PC:ExitSpectate(); end end end end -- 所有玩家重生 function Action_RoundSettle:RespawnPlayers() for TeamId, PlayerKeyList in pairs(UGCGameSystem.GameState.PlayerTeams) do for i, PlayerKey in pairs(PlayerKeyList) do local Pawn = UGCGameSystem.GetPlayerPawnByPlayerKey(PlayerKey); if UE.IsValid(Pawn) and Pawn:IsAlive() then else --UGCGameSystem.GetRespawnComponent():AddRespawnPlayer(PlayerKey); end end end end return Action_RoundSettle