public override bool Verify(Message message) { m_OriginHero = null; m_TargetHero = null; m_Request = message.Packet as CREntityImpact; m_Response.SerialId = m_Request.SerialId; if (DateTime.UtcNow.Ticks - m_Room.StartTime < GameConfigs.GetInt("Room_Battle_Start_Protection_Time", 3) * TimeSpan.TicksPerSecond) { return(false); } m_OriginHero = m_Room.Players[m_UserId].Heros.Find(t => t.EntityId == m_Request.OriginOwnerEntityId); foreach (var player in m_Room.Players) { if (player.Value.InBattleEntity == m_Request.TargetEntityId) { m_TargetHero = m_Room.Players[player.Key].Heros.Find(t => t.EntityId == m_Request.TargetEntityId); } } if (m_OriginHero == null || m_TargetHero == null) { return(false); } if (m_OriginHero.HP <= 0 || m_TargetHero.HP <= 0) { return(false); } return(true); }
private void InitRoom(LRCreateNewRoom roomData) { m_Room.State = RoomState.WaitingConnect; m_Room.EndReason = InstanceSuccessReason.Unknown; m_Room.CreateTime = DateTime.UtcNow.Ticks; m_Room.Token = roomData.Token; var allInstance = CacheSet.SinglePvpInstanceTable.GetAllData(); m_Room.InstanceId = new Random().Next(1, allInstance.Count); DTSinglePvpInstance instanceData = CacheSet.SinglePvpInstanceTable.GetData(m_Room.InstanceId); m_Room.RemainingTime = instanceData.TimerDuration + 5; int curEntityId = 1; int playerIndex = 0; foreach (var playerData in roomData.RoomPlayerInfo) { RoomPlayer player = new RoomPlayer() { PlayerId = playerData.PlayerInfo.Id, Name = playerData.PlayerInfo.Name, Level = playerData.PlayerInfo.Level, VipLevel = playerData.PlayerInfo.VipLevel, PortraitType = playerData.PlayerInfo.PortraitType, State = RoomPlayerState.WaitingConnect, PositionX = playerIndex < roomData.RoomPlayerInfo.Count / 2 ? instanceData.SpawnPointX : instanceData.SpawnPointX2, PositionY = playerIndex < roomData.RoomPlayerInfo.Count / 2 ? instanceData.SpawnPointY : instanceData.SpawnPointY2, Rotation = playerIndex < roomData.RoomPlayerInfo.Count / 2 ? instanceData.SpawnAngle : instanceData.SpawnAngle2, InBattleEntity = curEntityId, Camp = playerIndex < roomData.RoomPlayerInfo.Count / 2 ? (int)CampType.Player : (int)CampType.Player2, ServerId = playerData.LobbyServerId, }; foreach (var heroData in playerData.RoomHeroInfo) { RoomHero hero = new RoomHero() { EntityId = curEntityId++, HeroType = heroData.LobbyHeroInfo.Type, HeroLv = heroData.LobbyHeroInfo.Level, HeroStarLevel = heroData.LobbyHeroInfo.StarLevel, ElevationLevel = heroData.LobbyHeroInfo.ElevationLevel, ConsciousnessLevel = heroData.LobbyHeroInfo.ConsciousnessLevel, }; hero.Skills.AddRange(heroData.LobbyHeroInfo.SkillLevels); foreach (var gear in heroData.LobbyHeroInfo.GearInfo) { GearData heroGear = new GearData() { Id = gear.Id, Type = gear.Type, Level = gear.Level, StrengthenLevel = gear.StrengthenLevel }; hero.Gears.Add(heroGear); } foreach (var soul in heroData.LobbyHeroInfo.SoulInfo) { hero.Souls.Add(new SoulData() { Id = soul.Id, TypeId = soul.Type, }); } hero.HP = hero.MaxHP; hero.SteadyBarValue = hero.SteadyBarValue; hero.HasSteadyBar = true; hero.LastBreakSteadyTime = DateTime.UtcNow.Ticks; player.Heros.Add(hero); } m_Room.Players.Add(player.PlayerId, player); playerIndex++; } }