Example #1
0
        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;
        }
Example #2
0
 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);
     }
 }
Example #3
0
        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;
 }
Example #5
0
 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;
 }
Example #6
0
 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;
 }
Example #8
0
 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;
 }
Example #9
0
 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;
 }
Example #10
0
        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;
        }
Example #11
0
        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;
        }
Example #12
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;
            }
        }
Example #13
0
 public bool SetFightLabPermission(int copyId, eHardLevel hardLevel, int missionId)
 {
     return(true);
 }
Example #14
0
        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);
        }
Example #15
0
 public bool SetPvePermission(int missionId, eHardLevel hardLevel)
 {
     return(true);
 }
Example #16
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);
            }
        }
Example #17
0
        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;
        }
Example #18
0
 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));
 }
Example #19
0
 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));
 }
Example #20
0
        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;
        }
Example #21
0
        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;
        }
Example #22
0
 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));
 }
Example #23
0
        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);
        }
Example #24
0
        /// <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;
        }
Example #25
0
        /// <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);
        }
Example #26
0
        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;
        }
Example #27
0
 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));
 }
Example #28
0
 public bool SetPvePermission(int missionId, eHardLevel hardLevel)
 {
     return true;
 }
Example #29
0
 public bool IsFightLabPermission(int missionId, eHardLevel hardLevel)
 {
     return(true);
 }