public static string SetPvePermission(int missionId, eHardLevel hardLevel) { if (hardLevel == eHardLevel.Terror) { return("FF"); } var setPvePermision = string.Empty; string right = m_pvepermissions.Substring(missionId - 1, 1); if (hardLevel == eHardLevel.Simple && right == "1") { setPvePermision = "3"; } else if (hardLevel == eHardLevel.Normal && right == "3") { setPvePermision = "7"; } else if (hardLevel == eHardLevel.Hard && right == "7") { setPvePermision = "F"; } else { return(m_pvepermissions); } var strPvePermision = m_pvepermissions; var length = strPvePermision.Length; strPvePermision = strPvePermision.Substring(0, missionId - 1) + setPvePermision + strPvePermision.Substring(missionId, length - missionId); return(strPvePermision); //return true; }
private void ResetRoomSetting() { if (this.RoomType == eRoomType.Exploration) { int newLevel = (int)this.GetLevelLimit(this.m_host); if (this.LevelLimits > newLevel) { this.LevelLimits = newLevel; } this.HardLevel = eHardLevel.Normal; } else { if (this.RoomType == eRoomType.Treasure) { if (!this.m_host.IsPvePermission(this.MapId, this.HardLevel)) { this.HardLevel = this.m_host.GetMaxPvePermission(this.MapId); } } else { if (this.RoomType == eRoomType.Boss) { this.HardLevel = eHardLevel.Simple; } } } this.UpdatePveRoomTimeMode(); foreach (GamePlayer gp in this.GetPlayers()) { gp.Out.SendRoomChange(this); } }
public static string SetPvePermission(int missionId, eHardLevel hardLevel) { if (hardLevel == eHardLevel.Terror) return "FF"; var setPvePermision = string.Empty; string right = m_pvepermissions.Substring(missionId - 1, 1); if (hardLevel == eHardLevel.Simple && right == "1") { setPvePermision = "3"; } else if (hardLevel == eHardLevel.Normal && right == "3") { setPvePermision = "7"; } else if (hardLevel == eHardLevel.Hard && right == "7") { setPvePermision = "F"; } else { return m_pvepermissions; } var strPvePermision = m_pvepermissions; var length = strPvePermision.Length; strPvePermision = strPvePermision.Substring(0, missionId - 1) + setPvePermision + strPvePermision.Substring(missionId , length - missionId); return strPvePermision; //return true; }
public RoomSetupChangeAction(BaseRoom room, GSPacketIn packet, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId) { m_room = room; m_roomType = roomType; m_timeMode = timeMode; m_hardLevel = hardLevel; m_levelLimits = levelLimits; m_mapId = mapId; m_packet = packet; }
public RoomSetupChangeAction(BaseRoom room, GSPacketIn packet, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, bool isArea) { this.m_room = room; this.m_roomType = roomType; this.m_timeMode = timeMode; this.m_hardLevel = hardLevel; this.m_levelLimits = levelLimits; this.m_mapId = mapId; this.m_packet = packet; this.m_isArea = isArea; }
public RoomSetupChangeAction(BaseRoom room, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, string password, string roomname, bool isCrosszone, bool isOpenBoss) { m_room = room; m_roomType = roomType; m_timeMode = timeMode; m_hardLevel = hardLevel; m_levelLimits = levelLimits; m_mapId = mapId; m_password = password; m_roomName = roomname; m_isCrosszone = isCrosszone; m_isOpenBoss = isOpenBoss; }
public RoomSetupChangeAction(BaseRoom room, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, string password, string roomname, bool isCrosszone, bool isOpenBoss) { this.m_room = room; this.m_roomType = roomType; this.m_timeMode = timeMode; this.m_hardLevel = hardLevel; this.m_levelLimits = levelLimits; this.m_mapId = mapId; this.m_password = password; this.m_roomName = roomname; this.m_isCrosszone = isCrosszone; this.m_isOpenBoss = isOpenBoss; }
private void Reset() { for (int i = 0; i < 8; i++) { this.m_places[i] = null; this.m_placesState[i] = -1; this.m_playerState[i] = 0; } this.m_host = null; this.IsPlaying = false; this.m_placesCount = 8; this.m_playerCount = 0; this.HardLevel = eHardLevel.Simple; this.IsArea = false; }
private void Reset() { for (int i = 0; i < 10; i++) { m_places[i] = null; m_placesState[i] = -1; m_playerState[i] = 0; } m_host = null; IsPlaying = false; m_placesCount = 10; m_playerCount = 0; HardLevel = eHardLevel.Simple; }
public PVEGame(int id, int roomId, PveInfo info, List<IGamePlayer> players, Map map, eRoomType roomType, eGameType gameType, int timeType, eHardLevel hardLevel) : base(id, roomId, map, roomType, gameType, timeType) { PlayersXY = new List<Point>(); foreach (IGamePlayer player in players) { Player fp = new Player(player, PhysicalId++, this, 1); //fp.Reset(); fp.Direction = m_random.Next(0, 1) == 0 ? 1 : -1; AddPlayer(player, fp); } m_info = info; BeginPlayersCount = players.Count; TotalKillCount = 0; TotalNpcGrade = 0; TotalNpcExperience = 0; TotalHurt = 0; m_IsBossType = ""; WantTryAgain = 0; SessionId = 0; m_gameOverResources = new List<string>(); Misssions = new Dictionary<int, MissionInfo>(); m_mapHistoryIds = new List<int>(); m_hardLevel = hardLevel; string script = GetScript(info, hardLevel); m_gameAI = ScriptMgr.CreateInstance(script) as APVEGameControl; if (m_gameAI == null) { log.ErrorFormat("Can't create game ai :{0}", script); m_gameAI = SimplePVEGameControl.Simple; } m_gameAI.Game = this; m_gameAI.OnCreated(); m_missionAI = SimpleMissionControl.Simple; beginTime = DateTime.Now; m_bossCardCount = 0; }
public static BaseGame StartPVEGame(int roomId, List<IGamePlayer> players, int copyId, eRoomType roomType, eGameType gameType, int timeType, eHardLevel hardLevel, int levelLimits) { try { PveInfo info = null; if (copyId == 0 || copyId == 100000) { info = PveInfoMgr.GetPveInfoByType(roomType, levelLimits); } else { info = PveInfoMgr.GetPveInfoById(copyId); } if (info != null) { PVEGame game = new PVEGame(m_gameId++, roomId, info, players, null, roomType, gameType, timeType, hardLevel); game.GameOverLog += new BaseGame.GameOverLogEventHandle(LogMgr.LogFightAdd); lock (m_games) { m_games.Add(game); } game.Prepare(); return game; } else { return null; } } catch (Exception e) { log.Error("Create game error:", e); return null; } }
public bool SetFightLabPermission(int copyId, eHardLevel hardLevel, int missionId) { return(true); }
public static BaseGame StartPVEGame(int roomId, List <IGamePlayer> players, int copyId, eRoomType roomType, eGameType gameType, int timeType, eHardLevel hardLevel, int levelLimits) { BaseGame result; try { PveInfo info; if (copyId == 0 || copyId == 10000) { info = PveInfoMgr.GetPveInfoByType(roomType, levelLimits); } else { info = PveInfoMgr.GetPveInfoById(copyId); } if (info != null) { PVEGame game = new PVEGame(GameMgr.m_gameId++, roomId, info, players, null, roomType, gameType, timeType, hardLevel); List <BaseGame> games; Monitor.Enter(games = GameMgr.m_games); try { GameMgr.m_games.Add(game); } finally { Monitor.Exit(games); } game.Prepare(); result = game; } else { result = null; } } catch (Exception e) { GameMgr.log.Error("Create game error:", e); result = null; } return(result); }
public bool SetPvePermission(int missionId, eHardLevel hardLevel) { return(true); }
public static BaseGame StartPVEGame(int roomId, List <IGamePlayer> players, int copyId, eRoomType roomType, eGameType gameType, int timeType, eHardLevel hardLevel, int levelLimits) { try { PveInfo info = null; if (copyId == 0 || copyId == 100000) { info = PveInfoMgr.GetPveInfoByType(roomType, levelLimits); } else { info = PveInfoMgr.GetPveInfoById(copyId); } if (info != null) { PVEGame game = new PVEGame(m_gameId++, roomId, info, players, null, roomType, gameType, timeType, hardLevel); game.GameOverLog += new BaseGame.GameOverLogEventHandle(LogMgr.LogFightAdd); lock (m_games) { m_games.Add(game); } game.Prepare(); return(game); } else { return(null); } } catch (Exception e) { log.Error("Create game error:", e); return(null); } }
public static void UpdateRoomGameType(BaseRoom room, GSPacketIn packet, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, bool isArea) { RoomMgr.AddAction(new RoomSetupChangeAction(room, packet, roomType, timeMode, hardLevel, levelLimits, mapId, isArea)); }
public static void UpdateRoomGameType(BaseRoom room, GSPacketIn packet, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId) { AddAction(new RoomSetupChangeAction(room, packet, roomType, timeMode, hardLevel, levelLimits, mapId)); }
public bool IsPvePermission(int missionId, eHardLevel hardLevel) { //if (missionId > m_pvepermissions.Length * 2) // return false; if (hardLevel == eHardLevel.Simple) return true; //int index = (missionId - 1) / 2; //int offset = missionId % 2 == 0 ? 4 + (int)hardLevel : (int)hardLevel; //int result = m_pvepermissions[index] & (0x01 << offset); //return result != 0; string right = m_converter.GetString(m_pvepermissions).Substring(missionId - 1, 1); //if (hardLevel == eHardLevel.Simple||right==string.Empty) //// return true; if(hardLevel== eHardLevel.Normal) { if (right == "3"||right=="7"||right=="F") return true; } else if(hardLevel== eHardLevel.Hard) { if (right=="7"||right=="F") return true; } else if(hardLevel== eHardLevel.Terror) { if (right=="F") return true; } return false; }
private string GetScript(PveInfo pveInfo, eHardLevel hardLevel) { string script = string.Empty; switch (hardLevel) { case eHardLevel.Simple: script = pveInfo.SimpleGameScript; break; case eHardLevel.Normal: script = pveInfo.NormalGameScript; break; case eHardLevel.Hard: script = pveInfo.HardGameScript; break; case eHardLevel.Terror: script = pveInfo.TerrorGameScript; break; default: script = pveInfo.SimpleGameScript; break; } return script; }
public static void UpdateRoomGameType(BaseRoom room, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, string password, string roomname, bool isCrosszone, bool isOpenBoss) { AddAction(new RoomSetupChangeAction(room, roomType, timeMode, hardLevel, levelLimits, mapId, password, roomname, isCrosszone, isOpenBoss)); }
public static BaseGame StartPVEGame(int roomId, List <IGamePlayer> players, int copyId, eRoomType roomType, eGameType gameType, int timeType, eHardLevel hardLevel, int levelLimits) { BaseGame result; try { List <PetSkillElementInfo> gameNeedPetSkillInfoList = PetMgr.GameNeedPetSkill(); PveInfo pveInfo; if (copyId == 0 || copyId == 100000) { pveInfo = PveInfoMgr.GetPveInfoByType(roomType, levelLimits); } else { pveInfo = PveInfoMgr.GetPveInfoById(copyId); } if (pveInfo != null) { PVEGame pVEGame = new PVEGame(GameMgr.m_gameId++, roomId, pveInfo, players, null, roomType, gameType, timeType, hardLevel, gameNeedPetSkillInfoList); pVEGame.GameOverLog += new BaseGame.GameOverLogEventHandle(LogMgr.LogFightAdd); List <BaseGame> games; Monitor.Enter(games = GameMgr.m_games); try { GameMgr.m_games.Add(pVEGame); } finally { Monitor.Exit(games); } pVEGame.Prepare(); result = pVEGame; } else { result = null; } } catch (Exception exception) { GameMgr.log.Error("Create game error:", exception); result = null; } return(result); }
/// <summary> /// 请不要直接调用,使用RoomMgr.ExitRoom /// </summary> /// <param name="player"></param> public bool RemovePlayerUnsafe(GamePlayer player, bool isKick) { int index = -1; lock (m_places) { for (int i = 0; i < 8; i++) { if (m_places[i] == player) { m_places[i] = null; m_playerState[i] = 0; m_placesState[i] = -1; m_playerCount--; index = i; break; } } } if (index != -1) { UpdatePosUnsafe(index, true); player.CurrentRoom = null; player.TempBag.ClearBag(); GSPacketIn pkg = player.Out.SendRoomPlayerRemove(player); SendToAll(pkg); //发送踢人信息 if (isKick) { player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.KickRoom")); } //从新挑选房主 bool isChangeHost = false; if (m_host == player) { if (m_playerCount > 0) { for (int i = 0; i < 8; i++) { if (m_places[i] != null) { SetHost(m_places[i]); isChangeHost = true; break; } } } else { m_host = null; } } //游戏中移除人物 if (IsPlaying) { if (m_game != null) { //如果关卡中,房主退出,重置新房主的ready状态 if (isChangeHost && m_game is PVEGame) { PVEGame pveGame = m_game as PVEGame; foreach (Player p in pveGame.Players.Values) { if (p.PlayerDetail == m_host) { p.Ready = false; } } } m_game.RemovePlayer(player, isKick); } if (BattleServer != null) { if (m_game != null) { BattleServer.Server.SendPlayerDisconnet(Game.Id, player.GamePlayerId, RoomId); if (PlayerCount == 0) BattleServer.RemoveRoom(this); } else { SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.PairUp.Failed")); RoomMgr.AddAction(new CancelPickupAction(BattleServer, this)); BattleServer.RemoveRoom(this); IsPlaying = false; } } } else { UpdateGameStyle(); if (isChangeHost) { if (RoomType == eRoomType.Exploration) { HardLevel = eHardLevel.Normal; } else { HardLevel = eHardLevel.Simple; } foreach (GamePlayer gp in GetPlayers()) { gp.Out.SendRoomChange(this); } } } } return index != -1; }
/// <summary> /// 请不要直接调用,使用RoomMgr.ExitRoom /// </summary> /// <param name="player"></param> public bool RemovePlayerUnsafe(GamePlayer player, bool isKick) { int index = -1; lock (m_places) { for (int i = 0; i < 8; i++) { if (m_places[i] == player) { m_places[i] = null; m_playerState[i] = 0; m_placesState[i] = -1; m_playerCount--; index = i; break; } } } if (index != -1) { UpdatePosUnsafe(index, true); player.CurrentRoom = null; player.TempBag.ClearBag(); GSPacketIn pkg = player.Out.SendRoomPlayerRemove(player); SendToAll(pkg); //发送踢人信息 if (isKick) { player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.KickRoom")); } //从新挑选房主 bool isChangeHost = false; if (m_host == player) { if (m_playerCount > 0) { for (int i = 0; i < 8; i++) { if (m_places[i] != null) { SetHost(m_places[i]); isChangeHost = true; break; } } } else { m_host = null; } } //游戏中移除人物 if (IsPlaying) { if (m_game != null) { //如果关卡中,房主退出,重置新房主的ready状态 if (isChangeHost && m_game is PVEGame) { PVEGame pveGame = m_game as PVEGame; foreach (Player p in pveGame.Players.Values) { if (p.PlayerDetail == m_host) { p.Ready = false; } } } m_game.RemovePlayer(player, isKick); } if (BattleServer != null) { if (m_game != null) { BattleServer.Server.SendPlayerDisconnet(Game.Id, player.GamePlayerId, RoomId); if (PlayerCount == 0) { BattleServer.RemoveRoom(this); } } else { SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.PairUp.Failed")); RoomMgr.AddAction(new CancelPickupAction(BattleServer, this)); BattleServer.RemoveRoom(this); IsPlaying = false; } } } else { UpdateGameStyle(); if (isChangeHost) { if (RoomType == eRoomType.Exploration) { HardLevel = eHardLevel.Normal; } else { HardLevel = eHardLevel.Simple; } foreach (GamePlayer gp in GetPlayers()) { gp.Out.SendRoomChange(this); } } } } return(index != -1); }
public bool SetPvePermission(int missionId, eHardLevel hardLevel) { if (missionId > m_pvepermissions.Length * 2) return false; if (hardLevel == eHardLevel.Terror) return true; if (!IsPvePermission(missionId, hardLevel)) return false; //int index = (missionId - 1) / 2; //int offset = missionId % 2 == 0 ? 4 + (int)hardLevel : (int)hardLevel; ////当前难度完成时,设置下一个难度可以玩 //offset += 1; //m_pvepermissions[index] |= (byte)(0x01 << offset); //m_character.PvePermission = m_converter.GetString(m_pvepermissions); var setPvePermision = string.Empty; string right = m_converter.GetString(m_pvepermissions).Substring(missionId - 1, 1); if (hardLevel == eHardLevel.Simple && right == "1") { setPvePermision = "3"; } else if (hardLevel == eHardLevel.Normal && right == "3") { setPvePermision = "7"; } else if (hardLevel == eHardLevel.Hard && right == "7") { setPvePermision = "F"; } else { return false; } var strPvePermision = m_converter.GetString(m_pvepermissions); var length=strPvePermision.Length; strPvePermision = strPvePermision.Substring(0, missionId - 1) + setPvePermision + strPvePermision.Substring(missionId,length-missionId); m_character.PvePermission = strPvePermision; OnPropertiesChanged(); return true; }
public static void UpdateRoomGameType(BaseRoom room, eRoomType roomType, byte timeMode, eHardLevel hardLevel, int levelLimits, int mapId, string password, string roomname, bool isCrosszone, bool isOpenBoss) { RoomMgr.AddAction(new RoomSetupChangeAction(room, roomType, timeMode, hardLevel, levelLimits, mapId, password, roomname, isCrosszone, isOpenBoss)); }
public bool SetPvePermission(int missionId, eHardLevel hardLevel) { return true; }
public bool IsFightLabPermission(int missionId, eHardLevel hardLevel) { return(true); }