--复活 -- 这个复活逻辑挺绕的 :3hero出场 ,最后一个hero记录复活数据并发送复活指令 ,复活次数绑定在3hero上切都一致(这样能保证乱出场后复活时间按配置的一次一次来) local ReviveSystem = {} local private = {} local LuaConst=LuaConst function ReviveSystem.OnLogicUpdate(entity) local reviveComp = entity.components.revive if reviveComp.ReviveTimer >= 0 then reviveComp.ReviveTimer = reviveComp.ReviveTimer - LuaConst.TimeSpanMs if reviveComp.ReviveTimer < 0 then LevelManager.CurLevelFunc:ReviveTimeIsUp(entity) end end end function ReviveSystem.AfterDead(entity) if entity._logicInitData.IsPlayer then --Hero或副将(副将是不会死的) LevelManager.CurLevelFunc:OnPlayerOneHeroDead(entity) end entity.components.base.AdoptedIndex = nil end --这里是复活前的时间点 function ReviveSystem.OnRevive(entity) local heroEntitys = LevelPlayerManager.GetPlayerEntitysByPlayerIDInRoom(entity:GetPlayerID()) if heroEntitys == nil then logging.error(LTAG.ERROR, "GWS: 复活一个玩家的时候 ,发现没有找到其entitys 。不阻挡游戏运行 。玩家id :", entity:GetPlayerID()) return end if entity == heroEntitys[1] then --主英雄复活前,尝试更新随机出生点 ,按照策划需求,必须传OriginBornItemID进去 LevelManager.CurLevelFunc:TryRecalculateBornItemIDOfPlayer(entity:GetCampID(), entity._logicInitData.OriginBornItemID, entity:GetPlayerID()) end entity.components.record.KillNum = 0 entity.components.record.KillerEntity = nil entity.components.revive.ReviveCount = entity.components.revive.ReviveCount + 1 end return ReviveSystem