80 lines
2.2 KiB
Lua
80 lines
2.2 KiB
Lua
|
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
|