コード例 #1
0
        public void Execute()
        {
            if (this.m_player.CurrentRoom != null)
            {
                this.m_player.CurrentRoom.RemovePlayerUnsafe(this.m_player);
            }
            if (this.m_player.IsActive)
            {
                BaseRoom[] rooms = RoomMgr.Rooms;
                BaseRoom   room  = null;
                for (int i = 0; i < rooms.Length; i++)
                {
                    if (!rooms[i].IsUsing)
                    {
                        room = rooms[i];
                        break;
                    }
                }
                if (room != null)
                {
                    RoomMgr.WaitingRoom.RemovePlayer(this.m_player);
                    room.Start();
                    if (this.m_roomType == eRoomType.Exploration)
                    {
                        room.HardLevel   = eHardLevel.Normal;
                        room.LevelLimits = (int)room.GetLevelLimit(this.m_player);
                    }
                    room.UpdateRoom(this.m_name, this.m_password, this.m_roomType, this.m_timeType, 0);

                    if (this.m_roomType == eRoomType.Match)
                    {
                        if (BattleMgr.IsOpenAreaFight)
                        {
                            room.IsArea = true;
                        }
                    }
                    GSPacketIn pkg = this.m_player.Out.SendRoomCreate(room);
                    room.AddPlayerUnsafe(this.m_player);
                    RoomMgr.WaitingRoom.SendUpdateRoom(room);
                }
                else
                {
                    Console.WriteLine(LanguageMgr.GetTranslation("CreateRoomAction.MaxRoom", new object[0]));
                    this.m_player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("CreateRoomAction.MaxRoom", new object[0]));
                }
            }
        }
コード例 #2
0
ファイル: CreateRoomAction.cs プロジェクト: uvbs/DDTank-3.0
        public void Execute()
        {
            if (m_player.CurrentRoom != null)
            {
                m_player.CurrentRoom.RemovePlayerUnsafe(m_player);
            }
            if (m_player.IsActive == false)
            {
                return;
            }
            BaseRoom[] rooms = RoomMgr.Rooms;

            BaseRoom room = null;

            for (int i = 0; i < rooms.Length; i++)
            {
                if (rooms[i].IsUsing == false)
                {
                    room = rooms[i];
                    break;
                }
            }

            if (room != null)
            {
                RoomMgr.WaitingRoom.RemovePlayer(m_player);


                room.Start();
                //探险默认使用普通难度等级
                if (m_roomType == eRoomType.Exploration)
                {
                    room.HardLevel   = eHardLevel.Normal;
                    room.LevelLimits = (int)room.GetLevelLimit(m_player);
                }

                room.UpdateRoom(m_name, m_password, m_roomType, m_timeType, 0);


                GSPacketIn pkg = m_player.Out.SendRoomCreate(room);
                room.AddPlayerUnsafe(m_player);
                RoomMgr.WaitingRoom.SendUpdateRoom(room);
            }
        }
コード例 #3
0
        public void Execute()
        {
            if (this.m_player.CurrentRoom != null)
            {
                this.m_player.CurrentRoom.RemovePlayerUnsafe(this.m_player);
            }
            if (!this.m_player.IsActive)
            {
                return;
            }
            BaseRoom[] rooms    = RoomMgr.Rooms;
            BaseRoom   baseRoom = null;

            for (int i = 0; i < rooms.Length; i++)
            {
                if (!rooms[i].IsUsing)
                {
                    baseRoom = rooms[i];
                    break;
                }
            }
            if (baseRoom != null)
            {
                RoomMgr.WaitingRoom.RemovePlayer(this.m_player);
                baseRoom.Start();
                if (this.m_roomType == eRoomType.Dungeon)
                {
                    baseRoom.HardLevel   = eHardLevel.Normal;
                    baseRoom.LevelLimits = (int)baseRoom.GetLevelLimit(this.m_player);
                }
                baseRoom.UpdateRoom(this.m_name, this.m_password, this.m_roomType, this.m_timeType, 0);
                this.m_player.Out.SendRoomCreate(baseRoom);
                baseRoom.AddPlayerUnsafe(this.m_player);
                RoomMgr.WaitingRoom.SendUpdateRoom(baseRoom);
            }
        }
コード例 #4
0
        public void Execute()
        {
            if (m_player.IsActive == false)
            {
                return;
            }

            if (m_player.CurrentRoom != null)
            {
                m_player.CurrentRoom.RemovePlayerUnsafe(m_player);
            }

            BaseRoom[] rooms = RoomMgr.Rooms;
            BaseRoom   rm    = null;

            if (m_roomId == -1)
            {
                rm = FindRandomRoom(rooms);
                if (rm == null)
                {
                    m_player.Out.SendMessage(eMessageType.ERROR, "暂时没有合适的房间,请稍后重试!");
                    m_player.Out.SendRoomLoginResult(false);
                    return;
                }
            }
            else
            {
                rm = rooms[m_roomId - 1];
            }
            if (!rm.IsUsing)
            {
                m_player.Out.SendMessage(eMessageType.Normal, "房间不存在!");
                return;
            }

            if (rm.PlayerCount == rm.PlacesCount)
            {
                m_player.Out.SendMessage(eMessageType.ERROR, "房间人数已满!");
            }
            else
            {
                if (rm.NeedPassword == false || rm.Password == m_pwd)
                {
                    if (rm.Game == null || rm.Game.CanAddPlayer())
                    {
                        if (rm.RoomType == eRoomType.Exploration && rm.LevelLimits > (int)rm.GetLevelLimit(m_player))
                        {
                            m_player.Out.SendMessage(eMessageType.ERROR, "您的等级和该房间要求等级不符!");
                            return;
                        }

                        RoomMgr.WaitingRoom.RemovePlayer(m_player);
                        m_player.Out.SendRoomLoginResult(true);
                        m_player.Out.SendRoomCreate(rm);

                        if (rm.AddPlayerUnsafe(m_player))
                        {
                            if (rm.Game != null)
                            {
                                rm.Game.AddPlayer(m_player);
                            }
                        }

                        RoomMgr.WaitingRoom.SendUpdateRoom(rm);
                        m_player.Out.SendRoomChange(rm);
                    }
                }
                else
                {
                    m_player.Out.SendMessage(eMessageType.ERROR, "房间密码错误");
                    m_player.Out.SendRoomLoginResult(false);
                }
            }
        }
コード例 #5
0
        public void Execute()
        {
            if (m_player.IsActive == false)
            {
                return;
            }

            if (m_player.CurrentRoom != null)
            {
                m_player.CurrentRoom.RemovePlayerUnsafe(m_player);
            }

            BaseRoom[] rooms = RoomMgr.Rooms;
            BaseRoom   rm    = null;

            if (m_roomId == -1)
            {
                rm = FindRandomRoom(rooms);
                if (rm == null)
                {
                    m_player.Out.SendMessage(eMessageType.ERROR, "Không có phòng game nào!");
                    m_player.Out.SendRoomLoginResult(false);
                    return;
                }
            }
            else
            {
                rm = rooms[m_roomId - 1];
            }
            if (!rm.IsUsing)
            {
                m_player.Out.SendMessage(eMessageType.Normal, "Phòng đang sử dụng!");
                return;
            }

            if (rm.PlayerCount == rm.PlacesCount)
            {
                m_player.Out.SendMessage(eMessageType.ERROR, "Phòng đã đấy!");
            }
            else
            {
                if (rm.NeedPassword == false || rm.Password == m_pwd)
                {
                    if (rm.Game == null || rm.Game.CanAddPlayer())
                    {
                        if (rm.LevelLimits > (int)rm.GetLevelLimit(m_player))
                        {
                            m_player.Out.SendMessage(eMessageType.ERROR, "Level chưa đủ!");
                            return;
                        }

                        RoomMgr.WaitingRoom.RemovePlayer(m_player);
                        m_player.Out.SendRoomLoginResult(true);
                        m_player.Out.SendRoomCreate(rm);

                        if (rm.AddPlayerUnsafe(m_player))
                        {
                            if (rm.Game != null)
                            {
                                rm.Game.AddPlayer(m_player);
                            }
                        }

                        RoomMgr.WaitingRoom.SendUpdateRoom(rm);
                        m_player.Out.SendRoomChange(rm);
                    }
                }
                else
                {
                    m_player.Out.SendMessage(eMessageType.ERROR, "Password không đúng!");
                    m_player.Out.SendRoomLoginResult(false);
                }
            }
        }