local EventAction_PlayerExit = { PlayerKey = 0; EndEvent = -1; } -- 触发器激活时,将执行Action的Execute function EventAction_PlayerExit:Execute(...) if not UGCGameSystem.IsServer() then return end UGCGameSystem.SendPlayerSettlement(self.PlayerKey); local PlayerState = UGCGameSystem.GetPlayerStateByPlayerKey(self.PlayerKey) local PlayerPawn = UGCGameSystem.GetPlayerPawnByPlayerKey(self.PlayerKey) if PlayerPawn then PlayerPawn:K2_DestroyActor() else UGCLogSystem.LogError("[EventAction_PlayerExit_Execute] PlayerPawn is nil") local AllPawn = UGCGameSystem.GetAllPlayerPawn() local HasNotControlled = false for k, Pawn in pairs(AllPawn) do if not Pawn:IsControlled() then Pawn:K2_DestroyActor() HasNotControlled = true end end if HasNotControlled == false then UGCLogSystem.LogError("[EventAction_PlayerExit_Execute] HasNotControlled is false") end end if UGCGameSystem.GameState and PlayerState then UGCLogSystem.Log("[EventAction_PlayerExit_Execute] PlayerName = "..PlayerState.PlayerName) local PlayerData = UGCGameSystem.GameState.PlayerPersonalInfos[self.PlayerKey] if PlayerData ~= nil then PlayerData.IsOffline = true end local PlayerNum = #UGCGameSystem.GetAllPlayerState() if PlayerNum == 0 then UGCGameSystem.GameState.GameEndTimeStamp = UGCSystemLibrary.GetGameTime() -- UGCGameSystem.SendModeCustomEvent("GameEnd") UGCEventSystem.SendEvent(self.EndEvent) end end --UGCEventSystem.SendEvent(EventEnum.PlayerExit, self.PlayerKey) return true end return EventAction_PlayerExit