Пример #1
0
        public static Boolean Parse(GameClient Session, string Input)
        {
            if (!Input.StartsWith(":"))
            {
                return false;
            }

            Input = Input.Substring(1);
            string[] Params = Input.Split(' ');

            #region Commands
            switch (Params[0].ToLower())
            {
                #region User Commands
                #region Commands (:commands)
                case "commands":
                case "cmds":
                    {
                        if (Session.GetHabbo().HasCmd("commands"))
                        {
                            DataTable data;
                            StringBuilder builder = new StringBuilder();

                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                dbClient.setQuery("SELECT command,params,description FROM fuse_cmds WHERE rank <= " + Session.GetHabbo().Rank + " ORDER BY id DESC");// LIMIT " + min + ",15");// + max+ "");
                                data = dbClient.getTable();
                            }

                            builder.Append("You have the following commands available to use:\n");
                            foreach (DataRow row in data.Rows)
                            {
                                builder.Append(":" + Convert.ToString(row[0]) + " " + Convert.ToString(row[1]) + "\n - " + Convert.ToString(row[2]) + "\n");
                            }
                            Session.SendNotifWithScroll(builder.ToString());
                        }
                        return true;
                    }
                #endregion

                #region About (:about)
                case "about":
                case "info":
                    {
                        if (Session.GetHabbo().HasCmd("about"))
                        {
                            StringBuilder About = new StringBuilder();

                            About.Append("Plus Emulator - Release 2.1  \n\r  @forum.ragezone.com ");

                            Session.SendNotifWithScroll(About.ToString());
                        }
                        return true;
                    }
                #endregion

                #region Sit (:sit)
                case "sit":
                    {
                        if (Session.GetHabbo().HasCmd("sit"))
                        {
                            RoomUser user = null;
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (Params.Length == 2 && Session.GetHabbo().HasFuse("fuse_admin"))
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                if (Client != null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (user == null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            else
                            {
                                user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            //Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);

                            if (user.Statusses.ContainsKey("lie") || user.isLying || user.RidingHorse || user.IsWalking)
                            {
                                return true;
                            }

                            if (!user.Statusses.ContainsKey("sit"))
                            {
                                if ((user.RotBody % 2) == 0)
                                {
                                    if (user == null)
                                        return true;

                                    try
                                    {
                                        user.Statusses.Add("sit", "1.0");
                                        user.Z -= 0.35;
                                        user.isSitting = true;
                                        user.UpdateNeeded = true;
                                    }
                                    catch { }
                                }
                                else
                                {
                                    user.RotBody--;
                                    user.Statusses.Add("sit", "1.0");
                                    user.Z -= 0.35;
                                    user.isSitting = true;
                                    user.UpdateNeeded = true;
                                }
                            }
                            else if (user.isSitting == true)
                            {
                                user.Z += 0.35;
                                user.Statusses.Remove("sit");
                                user.Statusses.Remove("1.0");
                                user.isSitting = false;
                                user.UpdateNeeded = true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Lie (:lie)
                case "lie":
                case "lay":
                    {
                        if (Session.GetHabbo().HasCmd("lie"))
                        {
                            RoomUser user = null;
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (Params.Length == 2 && Session.GetHabbo().HasFuse("fuse_admin"))
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                if (Client != null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (user == null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            else
                            {
                                user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                            if (!room.GetGameMap().ValidTile(user.X + 2, user.Y + 2) && !room.GetGameMap().ValidTile(user.X + 1, user.Y + 1))
                            {
                                SendChatMessage(Session, "Try lying somewhere valid!");
                                return true;
                            }

                            if (user.Statusses.ContainsKey("sit") || user.isSitting || user.RidingHorse || user.IsWalking)
                            {
                                return true;
                            }

                            if (!user.Statusses.ContainsKey("lay"))
                            {
                                if ((user.RotBody % 2) == 0)
                                {
                                    if (user == null)
                                        return true;

                                    try
                                    {
                                        user.Statusses.Add("lay", "1.0 null");
                                        user.Z -= 0.35;
                                        user.isLying = true;
                                        user.UpdateNeeded = true;
                                    }
                                    catch { }
                                }
                                else
                                {
                                    user.RotBody--;
                                    user.Statusses.Add("lay", "1.0 null");
                                    user.Z -= 0.35;
                                    user.isLying = true;
                                    user.UpdateNeeded = true;
                                }

                            }
                            else
                            {
                                user.Z += 0.35;
                                user.Statusses.Remove("lay");
                                user.Statusses.Remove("1.0");
                                user.isLying = false;
                                user.UpdateNeeded = true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Pickall (:pickall)
                case "pickall":
                    {
                        if (Session.GetHabbo().HasCmd("pickall"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                if (TargetRoom.Group != null)
                                {
                                    Session.SendNotif("You are unable to pickall in group rooms.");
                                    return true;
                                }

                                if (TargetRoom.ForSale)
                                {
                                    Session.SendNotif("You are unable to pickall a room whilst it is for sale.");
                                    return true;
                                }

                                List<RoomItem> RemovedItems = TargetRoom.GetRoomItemHandler().RemoveAllFurniture(Session);

                                if (Session.GetHabbo().GetInventoryComponent() != null)
                                {
                                    Session.GetHabbo().GetInventoryComponent().AddItemArray(RemovedItems);
                                    Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
                                }
                            }
                            else
                            {
                                Session.SendNotif("An error occured.");
                            }
                        }
                        return true;
                    }
                #endregion

                #region Unload (:unload)
                case "unload":
                    {
                        if (Session.GetHabbo().HasCmd("unload"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(TargetRoom);
                                TargetRoom.RequestReload();
                            }
                        }
                        return true;
                    }
                #endregion

                #region Set Max (:setmax)
                case "setmax":
                    {
                        if (Session.GetHabbo().HasCmd("setmax"))
                        {
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "You must enter a number to set");
                                return true;
                            }

                            try
                            {
                                int Max = int.Parse(Params[1]);

                                if ((Max > 101 && Session.GetHabbo().Rank < 3))
                                {
                                    Session.SendNotif("The maximum users is 100");
                                    return true;
                                }
                                else if (Max < 10 && Session.GetHabbo().Rank < 3)
                                {
                                    Session.SendNotif("The minimum users is 10");
                                    return true;
                                }

                                Room room = Session.GetHabbo().CurrentRoom;
                                room.UsersMax = Max;
                                room.SetMaxUsers(Max);
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region User Info (:userinfo)
                case "userinfo":
                case "ui":
                    {
                        if (Session.GetHabbo().HasCmd("userinfo"))
                        {
                            string username = Params[1];
                            bool UserOnline = true;
                            if (string.IsNullOrEmpty(username))
                            {
                                Session.SendNotif("Please enter a username");
                                return true;
                            }

                            GameClient tTargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username);

                            if (tTargetClient == null || tTargetClient.GetHabbo() == null)
                            {
                                DataRow Row;
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("SELECT username, rank, online, id, motto, credits FROM users WHERE username=@user LIMIT 1");
                                    dbClient.addParameter("user", username);
                                    Row = dbClient.getRow();

                                    Session.SendNotif("User Info for " + username + ":\r" +
                                "Rank: " + Row[1].ToString() + " \r" +
                                "User Id: " + Row[3].ToString() + " \r" +
                                "Motto: " + Row[4].ToString() + " \r" +
                                "Credits: " + Row[5].ToString() + " \r");
                                }
                                return true;
                            }
                            Habbo User = tTargetClient.GetHabbo();

                            //Habbo User = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(username).GetHabbo();
                            StringBuilder RoomInformation = new StringBuilder();

                            if (User.CurrentRoom != null)
                            {
                                RoomInformation.Append(" - ROOM INFORMAtiON [" + User.CurrentRoom.RoomId + "] - \r");
                                RoomInformation.Append("Owner: " + User.CurrentRoom.Owner + "\r");
                                RoomInformation.Append("Room Name: " + User.CurrentRoom.Name + "\r");
                                RoomInformation.Append("Current Users: " + User.CurrentRoom.UserCount + "/" + User.CurrentRoom.UsersMax);
                            }
                            Session.SendNotif("User info for: " + username + ":\r" +
                                "Rank: " + User.Rank + " \r" +
                                "Online: " + UserOnline.ToString() + " \r" +
                                "User Id: " + User.Id + " \r" +
                                "Current Room: " + User.CurrentRoomId + " \r" +
                                "Motto: " + User.Motto + " \r" +
                                "Credits: " + User.Credits + " \r" +
                                "Muted: " + User.Muted.ToString() + "\r" +
                                "\r\r" + RoomInformation.ToString());

                        }
                        return true;
                    }
                #endregion

                #region Disable Diagonal (:disablediagonal)
                case "disablediagonal":
                case "disablediag":
                case "togglediagonal":
                    {
                        if (Session.GetHabbo().HasCmd("togglediagonal"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = Session.GetHabbo().CurrentRoom;

                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                if (TargetRoom.GetGameMap().DiagonalEnabled)
                                    TargetRoom.GetGameMap().DiagonalEnabled = false;
                                else
                                    TargetRoom.GetGameMap().DiagonalEnabled = true;

                            }
                        }
                        return true;
                    }
                #endregion

                #region Freeze (:freeze)
                case "freeze":
                    {
                        if (Session.GetHabbo().HasCmd("freeze"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);
                            if (Target != null)
                                Target.Frozen = true;
                        }
                        return true;
                    }
                #endregion

                #region unFreeze (:unfreeze)
                case "unfreeze":
                    {
                        if (Session.GetHabbo().HasCmd("unfreeze"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);
                            if (Target != null)
                                Target.Frozen = false;
                        }
                        return true;
                    }
                #endregion

                #region SaveFurni (:savefurni)
                case "savefurni":
                case "save":
                    {
                        if (Session.GetHabbo().HasCmd("save"))
                        {
                            //using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            //Session.GetHabbo().CurrentRoom.GetRoomItemHandler().SaveFurniture(dbClient);
                        }
                        return true;
                    }
                #endregion

                #region Set Speed (:setspeed)
                case "setspeed":
                    {
                        if (Session.GetHabbo().HasCmd("setspeed"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                try
                                {
                                    Session.GetHabbo().CurrentRoom.GetRoomItemHandler().SetSpeed(int.Parse(Params[1]));
                                }
                                catch { Session.SendNotif("Numbers Only!"); }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Regenerate maps (:regenmaps)
                case "regenmaps":
                case "reloadmaps":
                case "fixroom":
                    {
                        if (Session.GetHabbo().HasCmd("regenmaps"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom == null)
                                return true;

                            if (!TargetRoom.CheckRights(Session, true))
                                return true;

                            TargetRoom.GetGameMap().GenerateMaps();
                            Session.SendNotif("The room map has been refreshed!");
                        }
                        return true;
                    }
                #endregion

                #region Empty Pets (:emptypets)
                case "emptypets":
                case "removepets":
                    {
                        if (Session.GetHabbo().HasCmd("emptypets"))
                        {
                            Session.SendNotif("Your pet inventory has been cleared!");
                        }
                        return true;
                    }
                #endregion

                #region Redeem Credits (:convertcredits)
                case "convertcredits":
                    {
                        if (Session.GetHabbo().HasCmd("convertcredits"))
                        {
                            try
                            {
                                Session.GetHabbo().GetInventoryComponent().Redeemcredits(Session);
                                SendChatMessage(Session, "All credits have successfully been converted!");
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e);
                            }
                        }
                        return true;
                    }
                #endregion

                #region Mute Bots (:mutebots)
                case "mutebots":
                case "mutepets":
                    {
                        if (Session.GetHabbo().HasCmd("mutebots"))
                        {
                            if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true))
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;
                                if (Room.MutedBots)
                                    Room.MutedBots = false;
                                else
                                    Room.MutedBots = true;

                                SendChatMessage(Session, "Muted bots have been toggled");
                            }
                        }
                        return true;
                    }
                #endregion

                #region SellRoom / BuyRoom
                    #region Sell Room (:sellroom)
                    case "sellroom":
                        {
                            if (Session.GetHabbo().HasCmd("sellroom"))
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;
                                Int32 Value = 0;
                                if (Room == null)
                                    return true;

                                if (!Room.CheckRights(Session, true))
                                    return true;

                                if (Params.Length == 1)
                                {
                                    Session.SendNotif("In order to sell a room, you must include a value. \n\nPLEASE NOTE:\nIf you sell a room you CANNOT get any of it back!");
                                    return true;
                                }
                            else if (Room.Group != null)
                            {
                                Session.SendNotif("You cannot sell a room with a group on it.\n Delete the group first by typing :deletegroup");
                                return true;
                            }
                                else if (!SilverwaveEnvironment.IsNum(Params[1]))
                                {
                                    SendChatMessage(Session, "You must enter a number!");
                                    return true;
                                }
                                else
                                    Value = Convert.ToInt32(Params[1]);

                                if (Value < 0)
                                {
                                    SendChatMessage(Session, "You can not sell a room for less than 0 credits!");
                                    return true;
                                }

                                if (Room.ForSale)
                                {
                                    Room.SalePrice = Value;
                                }
                                else
                                {
                                    Room.ForSale = true;
                                    Room.SalePrice = Value;
                                }

                                foreach (RoomUser User in Room.GetRoomUserManager().GetRoomUsers())
                                {
                                User.SendChatMsg("This room is for sale! The current asking price is " + Value + " credits! Buy it by saying :buyroom");
                                }

                            Session.SendNotif("In order to sell a room, you must include a value. \n\nPLEASE NOTE:\nIf you sell a room you CANNOT get any of it back!\n\n" +
                            "You can cancel selling a room by typing ':buyroom 0' (Without '')");

                            }
                            return true;
                        }
                    #endregion

                    #region Buy Room (:buyroom)
                    case "buyroom":
                        {
                            if (Session.GetHabbo().HasCmd("buyroom"))
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;
                            RoomUser RoomOwner = Room.GetRoomUserManager().GetRoomUserByHabbo(Room.Owner);
                            if (Room == null)
                            {
                                return true;
                            }
                            if (Room.Owner == Session.GetHabbo().Username)
                            {
                                SendChatMessage(Session, "You already own this room!");
                                    return true;
                            }

                                if (!Room.ForSale)
                                {
                                    SendChatMessage(Session, "This room is not for sale!");
                                    return true;
                                }

                                if (Session.GetHabbo().Credits < Room.SalePrice)
                                {
                                    SendChatMessage(Session, "You do not have enough credits to buy this room!");
                                    return true;
                                }

                            if (RoomOwner == null || RoomOwner.GetClient() == null)
                            {
                                SendChatMessage(Session, "An unknown error occured, this room is no longer for sale.");
                                Room.ForSale = false;
                                Room.SalePrice = 0;
                                return true;
                            }
                            GameClient Owner = RoomOwner.GetClient();

                                Session.GetHabbo().Credits -= Room.SalePrice;
                            Session.GetHabbo().UpdateCreditsBalance();
                            Owner.GetHabbo().Credits += Room.SalePrice;
                            Owner.GetHabbo().UpdateCreditsBalance();

                                Room.Owner = Session.GetHabbo().Username;
                                Room.OwnerId = (int)Session.GetHabbo().Id;
                            Room.RoomData.Owner = Session.GetHabbo().Username;
                            Room.RoomData.OwnerId = (int)Session.GetHabbo().Id;
                            uint RoomId = Room.RoomId;

                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.runFastQuery("UPDATE rooms SET owner='" + Session.GetHabbo().Username + "' WHERE id='" + Room.RoomId + "' LIMIT 1");
                                }
                            Session.GetHabbo().UsersRooms.Add(Room.RoomData);
                            Owner.GetHabbo().UsersRooms.Remove(Room.RoomData);
                                SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(Room);

                            RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId);
                            Data.SerializeRoomData(new ServerMessage(), true, Session, false);
                            Session.GetMessageHandler().PrepareRoomForUser(Room.RoomId, "");

                        }
                        return true;
                    }
                #endregion
                #endregion

                #region Dance (:dance)
                case "dance":
                    {
                        int DanceId = 1;
                        if (Params.Length > 1)
                        {
                            if (int.TryParse(Params[1], out DanceId))
                            {
                                DanceId = 1;
                            }
                        }

                        if (DanceId > 4 || DanceId < 0)
                        {
                            Session.SendWhisper("The dance ID must be between 0 and 4!");
                            DanceId = 0;
                            }

                        ServerMessage Response = new ServerMessage();
                        Response.Init(Outgoing.Dance);
                        Response.AppendInt32(Session.CurrentRoomUserID);
                        Response.AppendInt32(DanceId);
                        Session.GetHabbo().CurrentRoom.SendMessage(Response);
                            return true;
                        }
                    #endregion

                #region DeleteGroup (:deletegroup)
                case "deletegroup":
                    {
                        if (Session.GetHabbo().HasCmd("deletegroup"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;

                            if (!Room.CheckRights(Session, true, false))
                            {
                                Session.SendNotif("You do not own this room!");
                                return true;
                            }

                            if (Params.Length == 1 || Params[1].ToLower() != "yes")
                            {
                                Session.SendNotif("Are you sure you want to delete this group?\n" +
                                    "Once you delete it you will never be able to get it back.\n\n" +
                                    "To continue, type ':deletegroup yes' (without '')");

                                return true;
                            }

                            if (Room.Group == null)
                            {
                                Session.SendNotif("This room does not have a group.");
                                return true;
                            }

                            Group Group = Room.Group;

                            foreach (GroupUser User in Group.Members.Values)
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(User.Id);

                                if (Client == null)
                                {
                                    continue;
                                }

                                Client.GetHabbo().UserGroups.Remove(User);
                                if (Client.GetHabbo().FavouriteGroup == Group.Id)
                                {
                                    Client.GetHabbo().FavouriteGroup = 0;
                                }
                            }

                            Room.RoomData.Group = null;
                            SilverwaveEnvironment.GetGame().GetGroupManager().DeleteGroup(Group.Id);
                            SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(Room);
                        }
                        return true;
                    }
                #endregion
                #endregion

                #region VIP Commands
                #region Moonwalk (:moonwalk)
                case "moonwalk":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_moonwalk"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                                return true;

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            roomuser.moonwalkEnabled = !roomuser.moonwalkEnabled;

                            if (roomuser.moonwalkEnabled)
                                SendChatMessage(Session, "Moonwalk enabled!");
                            else
                                SendChatMessage(Session, "Moonwalk disabled!");
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        }
                        return true;
                    }
                #endregion

                #region Mimic (:mimic)
                case "mimic":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_mimic"))
                        {
                            string copyTarget = Params[1];

                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(copyTarget);
                            string gender = null;
                            string figure = null;
                            if (Target != null)
                            {

                                gender = Target.GetClient().GetHabbo().Gender;
                                figure = Target.GetClient().GetHabbo().Look;

                                //if (!AntiMutant.ValidateLook(figure, gender))
                                {
                                    //SendChatMessage(Session, "This figure appears to be invalid!");
                                  //  return true;
                                }
                                Session.GetHabbo().Gender = gender;
                                Session.GetHabbo().Look = figure;
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("UPDATE users SET gender = @gender, look = @look WHERE username = @username");
                                    dbClient.addParameter("gender", gender);
                                    dbClient.addParameter("look", figure);
                                    dbClient.addParameter("username", Session.GetHabbo().Username);
                                    dbClient.runQuery();
                                }
                                Room Room = Session.GetHabbo().CurrentRoom;

                                if (Room == null)
                                {
                                    return true;
                                }

                                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (User == null)
                                {
                                    return true;
                                }

                                Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation);
                                Session.GetMessageHandler().GetResponse().AppendInt32(-1);
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look);
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower());
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Motto);
                                Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints);
                                Session.GetMessageHandler().SendResponse();

                                ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
                                RoomUpdate.AppendInt32(User.VirtualId);
                                RoomUpdate.AppendString(Session.GetHabbo().Look);
                                RoomUpdate.AppendString(Session.GetHabbo().Gender.ToLower());
                                RoomUpdate.AppendString(Session.GetHabbo().Motto);
                                RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                                Room.SendMessage(RoomUpdate);
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        return true;
                    }
                #endregion

                #region Push (:push)
                case "push":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_push"))
                        {
                            Room TargetRoom;
                            RoomUser TargetRoomUser;
                            RoomUser TargetRoomUser1;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "You must enter a user");
                                return true;
                            }

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Convert.ToString(Params[1]));

                            if (TargetRoomUser == null)
                            {
                                SendChatMessage(Session, "Could not find that user!");
                                return true;
                            }

                            if (TargetRoomUser.GetUsername() == Session.GetHabbo().Username)
                            {
                                SendChatMessage(Session, "Come on, surely you don't want to push yourself!");
                                return true;
                            }

                            TargetRoomUser1 = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (TargetRoomUser1 == null || TargetRoomUser.TeleportEnabled)
                            {
                                return true;
                            }

                            //if ((TargetRoomUser.X == TargetRoomUser1.X - 1) || (TargetRoomUser.X == TargetRoomUser1.X + 1) || (TargetRoomUser.Y == TargetRoomUser1.Y - 1) || (TargetRoomUser.Y == TargetRoomUser1.Y + 1))
                            if (!((Math.Abs((int)(TargetRoomUser.X - TargetRoomUser1.X)) >= 2) || (Math.Abs((int)(TargetRoomUser.Y - TargetRoomUser1.Y)) >= 2)))
                            {
                                if (TargetRoomUser1.RotBody == 4)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1); }

                                if (TargetRoomUser1.RotBody == 0)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1); }

                                if (TargetRoomUser1.RotBody == 6)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y); }

                                if (TargetRoomUser1.RotBody == 2)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y); }

                                if (TargetRoomUser1.RotBody == 3)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1);
                                }

                                if (TargetRoomUser1.RotBody == 1)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1);
                                }

                                if (TargetRoomUser1.RotBody == 7)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1);
                                }

                                if (TargetRoomUser1.RotBody == 5)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1);
                                }

                                TargetRoomUser.UpdateNeeded = true;
                                TargetRoomUser1.UpdateNeeded = true;
                                TargetRoomUser1.SetRot(Rotation.Calculate(TargetRoomUser1.X, TargetRoomUser1.Y, TargetRoomUser.GoalX, TargetRoomUser.GoalY));
                                TargetRoom.SendMessage(new ChatComposer(TargetRoomUser1.VirtualId, "*pushes " + Params[1] + "*", 0, TargetRoomUser1.LastBubble,-1));
                            }
                            else
                            {
                                SendChatMessage(Session, Params[1] + " is not close enough.");
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);

                        return true;
                    }
                #endregion

                #region Pull (:pull)
                case "pull":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_pull"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                            {
                                return true;
                            }

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (roomuser == null)
                            {
                                return true;
                            }
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "Unable to find user!");
                                return true;
                            }

                            GameClient Target = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (Target == null)
                            return true;

                            if (Target.GetHabbo().Id == Session.GetHabbo().Id)
                            {
                                SendChatMessage(Session, "You cannot pull yourself!");
                                return true;
                            }
                            RoomUser TargetUser = room.GetRoomUserManager().GetRoomUserByHabbo(Target.GetHabbo().Id);
                            if (TargetUser == null)
                                return true;

                            if (TargetUser.TeleportEnabled)
                                return true;
                            if (!((Math.Abs((int)(roomuser.X - TargetUser.X)) >= 3) || (Math.Abs((int)(roomuser.Y - TargetUser.Y)) >= 3)))
                            {
                                room.SendMessage(new ChatComposer(roomuser.VirtualId, "*pulls " + Params[1] + "*", 0, roomuser.LastBubble,-1));
                                if (roomuser.RotBody % 2 != 0)
                                    roomuser.RotBody--;

                                if (roomuser.RotBody == 0)
                                    TargetUser.MoveTo(roomuser.X, roomuser.Y - 1);
                                else if (roomuser.RotBody == 2)
                                    TargetUser.MoveTo(roomuser.X + 1, roomuser.Y);
                                else if (roomuser.RotBody == 4)
                                    TargetUser.MoveTo(roomuser.X, roomuser.Y + 1);
                                else if (roomuser.RotBody == 6)
                                    TargetUser.MoveTo(roomuser.X - 1, roomuser.Y);

                            }
                            else
                            {
                                SendChatMessage(Session, "This user is too far away!");
                                return true;
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        return true;
                    }
                #endregion

                #region Enable (:enable)
                case "enable":
                case "effect":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_enable"))
                        {
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "You must enter an effect ID");
                                return true;
                            }
                            RoomUser TargetRoomUser = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);
                            if (TargetRoomUser.RidingHorse)
                            {
                                SendChatMessage(Session, "You cannot enable effects whilst riding a horse!");
                                return true;
                            }
                            else if (TargetRoomUser.team != Team.none)
                            {
                                return true;
                            }
                            else if (TargetRoomUser.isLying)
                                return true;

                            string Effect = Params[1];
                            double EffectID;
                            bool isNum = double.TryParse(Effect, out EffectID);
                            if (isNum)
                            {
                                //if(EffectID != 97)
                                Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(int.Parse(EffectID.ToString()));
                            }
                            else
                            {
                                SendChatMessage(Session, "Try using a number for the effects!");
                                return true;
                            }
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        }
                        return true;
                    }
                #endregion

                #region Change name (:flagme)
                case "flagme":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_flagme"))
                        {
                            SendChatMessage(Session, "In order to change your name, click yourself and choose \"Change Name\"");
                            SendChatMessage(Session, "You can only change your name every 12 hours.");
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE_2);
                        }
                        return true;
                    }
                #endregion

                #region Empty (:empty)
                case "emptyitems":
                case "empty":
                    {
                        if (Session.GetHabbo().HasCmd("emptyitems"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("Are you sure you want to clear your inventory? You will lose all the furniture!\n" +
                                 "To confirm, type \":emptyitems yes\". \n\nOnce you do this, there is no going back!\n(If you do not want to empty it, just ignore this message!)\n\n" +
                                 "PLEASE NOTE! If you have more than 3000 items, the hidden items will also be DELETED.");
                                return true;
                            }
                            else
                            {
                                if (Params.Length == 2)
                                {
                                    if (Params[1].ToString() == "yes")
                                    {
                                        //GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                        Session.GetHabbo().GetInventoryComponent().ClearItems();
                                        Session.SendNotif("Your inventory has been cleared!");
                                        return true;
                                    }
                                }
                            }

                        }
                        return true;
                    }
                #endregion

                #region Toll (:toll)
                case "toll":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_toll"))
                        {
                            Room TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            RoomUser User = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);

                            if (TargetRoom.CheckRights(Session, true))
                            {
                                if (Params.Length == 1)
                                {
                                    SendChatMessage(Session, "You must include a price!");
                                    return true;
                                }

                                string toll = Params[1];
                                double Price;
                                bool isNum = double.TryParse(toll, out Price);
                                if (!isNum)
                                {
                                    SendChatMessage(Session, "The price must be a number!");
                                    return true;
                                }
                                else if (Price < 0)
                                {
                                    SendChatMessage(Session, "The price cannot be a negative number");
                                    return true;
                                }

                                int x = 0;
                                int y = 0;
                                //0 - MINUS Y
                                //2 - PLUS X
                                //4 - PLUS Y
                                //6 - MINUS X
                                if (User.RotBody == 0)
                                {
                                    x = User.X;
                                    y = User.Y - 1;
                                }
                                else if (User.RotBody == 2)
                                {
                                    x = User.X + 1;
                                    y = User.Y;
                                }
                                else if (User.RotBody == 4)
                                {
                                    x = User.X;
                                    y = User.Y + 1;
                                }
                                else if (User.RotBody == 6)
                                {
                                    x = User.X - 1;
                                    y = User.Y;
                                }

                                //RoomItem item = SilverwaveEnvironment.GetGame().GetItemManager().GetItem();
                                List<RoomItem> Items = TargetRoom.GetGameMap().GetAllRoomItemForSquare(x, y);
                                if (Items.Count == 0)
                                {
                                    SendChatMessage(Session, "Could not find any items on that square!");
                                    return true;
                                }
                                int i = 0;
                                foreach (RoomItem item in TargetRoom.GetGameMap().GetAllRoomItemForSquare(x, y))
                                {
                                    if (i == 1)
                                        continue;
                                    if (item.GetBaseItem().InteractionType == InteractionType.onewaygate || item.GetBaseItem().InteractionType == InteractionType.teleport)
                                    {
                                        i++;
                                        item.TollPrice = Convert.ToInt32(Price);
                                        using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                        {
                                            dbClient.runFastQuery("UPDATE item_tolls SET toll_price=" + Price + " WHERE item_id=" + item.Id + " LIMIT 1");
                                            SendChatMessage(Session, "The toll price has been set to " + Price + " credits!");
                                        }
                                    }
                                }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Hit (:hit)
                case "hit":
                    {
                        if (Session.GetHabbo().HasCmd("hit"))
                        {
                            Room TargetRoom;
                            RoomUser TargetRoomUser;
                            RoomUser TargetRoomUser1;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "You must enter a user");
                                return true;
                            }

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Convert.ToString(Params[1]));

                            if (TargetRoomUser == null)
                            {
                                SendChatMessage(Session, "Could not find that user!");
                                return true;
                            }

                            if (TargetRoomUser.GetUsername() == Session.GetHabbo().Username)
                            {
                                SendChatMessage(Session, "Come on, surely you don't want to hit yourself!");
                                return true;
                            }

                            TargetRoomUser1 = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (TargetRoomUser1 == null)
                            {
                                return true;
                            }

                            //if ((TargetRoomUser.X == TargetRoomUser1.X - 1) || (TargetRoomUser.X == TargetRoomUser1.X + 1) || (TargetRoomUser.Y == TargetRoomUser1.Y - 1) || (TargetRoomUser.Y == TargetRoomUser1.Y + 1))
                            if (!((Math.Abs((int)(TargetRoomUser.X - TargetRoomUser1.X)) >= 2) || (Math.Abs((int)(TargetRoomUser.Y - TargetRoomUser1.Y)) >= 2)))
                            {
                                TargetRoomUser1.SetRot(Rotation.Calculate(TargetRoomUser1.X, TargetRoomUser1.Y, TargetRoomUser.GoalX, TargetRoomUser.GoalY));
                                TargetRoom.SendMessage(new ChatComposer(TargetRoomUser1.VirtualId, "*hits " + Params[1] + "*", 0, TargetRoomUser1.LastBubble,-1));
                            }
                        }
                        return true;
                    }
                #endregion

                #region Override (:override)
                case "override":
                    {
                        if (Session.GetHabbo().HasCmd("override"))
                        {
                            Room currentRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser roomUserByHabbo = null;
                            currentRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            if (currentRoom != null)
                            {
                                roomUserByHabbo = currentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                                if (roomUserByHabbo != null)
                                {
                                    if (roomUserByHabbo.AllowOverride)
                                    {
                                        roomUserByHabbo.AllowOverride = false;
                                        SendChatMessage(Session, "Override has been disabled!");
                                    }
                                    else
                                    {
                                        roomUserByHabbo.AllowOverride = true;
                                        SendChatMessage(Session, "Override has been enabled!");
                                    }
                                    currentRoom.GetGameMap().GenerateMaps(true);
                                }
                            }

                        }
                        return true;
                    }
                #endregion

                #region Faceless
                case "faceless":
                    {
                        string[] figureParts;
                        string[] headParts;

                        figureParts = Session.GetHabbo().Look.Split('.');
                        foreach (string Part in figureParts)
                        {
                            if (Part.StartsWith("hd"))
                            {
                                headParts = Part.Split('-');

                                if (!headParts[1].Equals("99999"))
                                    headParts[1] = "99999";
                                else
                                    break;

                                string NewHead = "hd-" + headParts[1] + "-" + headParts[2];

                                Session.GetHabbo().Look = Session.GetHabbo().Look.Replace(Part, NewHead);
                                break;
                            }
                        }

                        using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                        {
                            dbClient.setQuery("UPDATE users SET look =  @Look WHERE username =  @username");
                            dbClient.addParameter("look", Session.GetHabbo().Look);
                            dbClient.addParameter("username", Session.GetHabbo().Username);
                            dbClient.runQuery();
                        }

                        Room Room = Session.GetHabbo().CurrentRoom;

                        if (Room == null)
                            break;

                        RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                        if (User == null)
                            break;

                        #region Messages
                        Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation);
                        Session.GetMessageHandler().GetResponse().AppendInt32(-1);
                        Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look);
                        Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower());
                        Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Motto);
                        Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints);
                        Session.GetMessageHandler().SendResponse();

                        ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
                        RoomUpdate.AppendInt32(User.VirtualId);
                        RoomUpdate.AppendString(Session.GetHabbo().Look);
                        RoomUpdate.AppendString(Session.GetHabbo().Gender.ToLower());
                        RoomUpdate.AppendString(Session.GetHabbo().Motto);
                        RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                        Room.SendMessage(RoomUpdate);
                        #endregion
                        break;
                    }
                #endregion
                #endregion

                #region Moderation Commands
                #region Kick (:kick)
                case "kick":
                    {
                        if (Session.GetHabbo().HasCmd("kick"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
                            Room TargetRoom = TargetClient.GetHabbo().CurrentRoom;

                            if (TargetClient == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            if (Session.GetHabbo().Rank <= TargetClient.GetHabbo().Rank)
                            {
                                Session.SendNotif("You are not allowed to kick that user.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().CurrentRoomId < 1)
                            {
                                Session.SendNotif("That user is not in a room and can not be kicked.");
                                return true;
                            }

                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(TargetClient.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            TargetRoom.GetRoomUserManager().RemoveUserFromRoom(TargetClient, true, false);
                            TargetClient.CurrentRoomUserID = -1;

                            if (Params.Length > 2)
                            {
                                TargetClient.SendNotif("A moderator has kicked you from the room for the following reason: " + MergeParams(Params, 2));
                            }
                            else
                            {
                                TargetClient.SendNotif("A moderator has kicked you from the room.");
                            }
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Room Mute (:roommute) / Room unmute (:roomunmute)
                case "roommute":
                    {
                        if (Session.GetHabbo().HasCmd("roommute") || Session.GetHabbo().HasCmd("roomunmute"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (!Session.GetHabbo().CurrentRoom.RoomMuted)
                                Session.GetHabbo().CurrentRoom.RoomMuted = true;

                            string Msg = MergeParams(Params, 1);

                            ServerMessage Message = new ServerMessage();
                            Message.Init(Outgoing.SendNotif);
                            Message.AppendString("This room has been muted because:\n" + Msg);
                            Message.AppendString("");
                            TargetRoom.SendMessage(Message);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Room Mute", "Room muted");
                        }
                        return true;
                    }
                case "roomunmute":
                    {
                        if (Session.GetHabbo().HasCmd("roomunmute"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom.RoomMuted)
                                Session.GetHabbo().CurrentRoom.RoomMuted = false;
                            ServerMessage Message = new ServerMessage();
                            Message.Init(Outgoing.SendNotif);
                            Message.AppendString("You have been unmuted.");
                            Message.AppendString("");
                            TargetRoom.SendMessage(Message);
                        }
                        return true;
                    }
                #endregion

                #region Mute (:mute)
                case "mute":
                    {
                        if (Session.GetHabbo().HasCmd("mute"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= 4)
                            {
                                Session.SendNotif("You are not allowed to (un)mute that user.");
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Mute", "Muted user");
                            TargetClient.GetHabbo().Mute();
                        }
                        return true;
                    }
                #endregion

                #region Flood (:flood)
                case "flood":
                    {
                        if (Session.GetHabbo().HasCmd("flood"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (Params.Length != 3)
                            {
                                Session.SendNotif("You must include a username and a time for the person you want to flood.");
                                return true;
                            }
                            TargetClient.GetHabbo().FloodTime = SilverwaveEnvironment.GetUnixTimestamp() + Convert.ToInt32(Params[2]);
                            ServerMessage Packet = new ServerMessage(Outgoing.FloodFilter);
                            Packet.AppendInt32(Convert.ToInt32(Params[2]));
                            TargetClient.SendMessage(Packet);
                        }
                        return true;
                    }
                #endregion

                #region Unmute (:unmute)
                case "unmute":
                    {
                        if (Session.GetHabbo().HasCmd("unmute"))
                        {

                            string TargetUser = null;
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            if (!TargetClient.GetHabbo().Muted)
                            {
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Mute", "Un Muted user");

                            TargetClient.GetHabbo().Unmute();
                        }
                        return true;
                    }
                #endregion

                #region Summon (:summon)
                case "summon":
                case "come":
                    {
                        if (Session.GetHabbo().HasCmd("summon"))
                        {
                            if (Params.Length < 1)
                            {
                                Session.SendNotif("No use specified");
                                return true;

                            }
                            string username = Params[1];
                            GameClient client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username);
                            if (client == null)
                            {
                                Session.SendNotif("Could not find user \"" + username + "\"");
                                return true;
                            }
                            client.SendNotif("You have been summoned by " + Session.GetHabbo().Username);
                            RoomData Room = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().CurrentRoomId);
                            Room.SerializeRoomData(new ServerMessage(), (client.GetHabbo().CurrentRoom == null), client);
                            //client.GetMessageHandler().PrepareRoomForUser(Session.GetHabbo().CurrentRoomId, "");
                            client.SendMessage(new RoomForwardComposer(false, Session.GetHabbo().CurrentRoomId));
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Follow (:follow)
                case "follow":
                case "stalk":
                    {
                        if (Session.GetHabbo().HasCmd("follow"))
                        {
                            GameClient TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendNotif("This user could not be found");
                                return true;
                            }

                            if (TargetClient == null || TargetClient.GetHabbo().CurrentRoom == null || TargetClient.GetHabbo().CurrentRoom == Session.GetHabbo().CurrentRoom)
                            {
                                return true;
                            }

                            Session.SendMessage(new RoomForwardComposer(false, TargetClient.GetHabbo().CurrentRoom.RoomId));

                            //Session.GetMessageHandler().PrepareRoomForUser(TargetClient.GetHabbo().CurrentRoom.RoomId, "");
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Room kick (:roomkick)
                case "roomkick":
                    {
                        if (Session.GetHabbo().HasCmd("roomkick"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            string ModMsg = MergeParams(Params, 1);

                            RoomKick kick = new RoomKick(ModMsg, (int)Session.GetHabbo().Rank);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Room kick", "Kicked the whole room");
                            TargetRoom.QueueRoomKick(kick);
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Super ban (:superban)
                case "superban":
                    {
                        if (Session.GetHabbo().HasCmd("superban"))
                        {
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= Session.GetHabbo().Rank)
                            {
                                Session.SendNotif("You are not allowed to ban that user.");
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Ban", "Long ban forever");

                            SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetClient, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), false, false);

                        }
                        return true;
                    }
                #endregion

                #region Show Whispers (:togglewhisper)
                case "togglewhisper":
                    {
                        if (Session.GetHabbo().HasCmd("togglewhisper"))
                        {
                            /*if (Session.GetHabbo().ShowRoomWhispers)
                            {
                                Session.GetHabbo().ShowRoomWhispers = false;
                                SendChatMessage(Session, "Room Whispers viewing disabled.");
                            }
                            else
                            {
                                Session.GetHabbo().ShowRoomWhispers = true;
                                SendChatMessage(Session, "Room Whispers viewing enabled.");
                            }*/
                        }
                        return true;
                    }
                #endregion

                #region Roomalert (:roomalert)
                case "roomalert":
                    {
                        if (Session.GetHabbo().HasCmd("roomalert"))
                        {
                            Room currentRoom = Session.GetHabbo().CurrentRoom;
                            currentRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            if (currentRoom != null)
                            {
                                string s = MergeParams(Params, 1);
                                ServerMessage message = new ServerMessage();
                                message.Init(Outgoing.SendNotif);
                                message.AppendString(s);
                                message.AppendString("");
                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Alert", "Room alert with message [" + s + "]");
                                currentRoom.QueueRoomMessage(message);
                            }
                        }
                    }
                    return true;
                #endregion

                case "alert":
                    {
                        if (Session.GetHabbo().HasCmd("alert"))
                        {
                            if (Params[1] == null || Params[2] == null)
                            {
                                Session.SendNotif("You left something empty.");
                                return true;
                            }
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
                            Room TargetRoom = TargetClient.GetHabbo().CurrentRoom;

                            if (TargetClient == null)
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }

                            TargetClient.SendNotif(Params[2] + " -" + Session.GetHabbo().Username);
                        }
                        return true;
                    }
                #endregion

                #region Administration Commands
                #region Fast walk
                case "fastwalk":
                    {
                        if (Session.GetHabbo().HasCmd("fastwalk"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (!User.FastWalking)
                            {
                                User.FastWalking = true;
                            }
                            else
                            {
                                User.FastWalking = false;
                            }
                        }

                        return true;
                    }
                #endregion

                case "givebelcredits":
                    {
                        if (Session.GetHabbo().Rank > 7)
                        {

                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().BelCredits = TargetClient.GetHabbo().BelCredits + creditsToAdd;
                                    TargetClient.GetHabbo().UpdateCreditsBalance();
                                    return true;
                                }
                                else
                                {
                                    Session.SendNotif("Numbers Only!");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }
                        }
                        return true;
                    }

                #region Promote room
                case "promoteroom":
                    {
                        if (Session.GetHabbo().HasCmd("promoteroom"))
                        {
                            if (Params[1] == null)
                            {
                                Session.SendNotif("You need to enter event name and description.");
                                return true;
                            }

                            int Time;

                            if (!int.TryParse(Params[1], out Time))
                            {
                                Session.SendNotif("You need use command like :promoteroom time (time being how long to run event for in seconds).");
                                return true;
                            }

                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            SilverwaveEnvironment.GetGame().GetRoomEvents().AddNewEvent(Room.RoomId, "Default Name", "Default Desc", Session);
                        }

                        return true;
                    }
                #endregion

                #region Mass Dance (:massdance)
                case "massdance":
                    {
                        if (Session.GetHabbo().HasCmd("massdance") || Session.GetHabbo().Username == "MOD-billsonnn")
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();

                            int DanceId = Convert.ToInt32(Params[1]);
                            if (DanceId > 4)
                            {
                                Session.SendNotif("That is an invalid dance ID");
                                return true;
                            }

                            if (DanceId > 0 && User.CarryItemID > 0)
                            {
                                User.CarryItem(0);
                            }

                            User.DanceId = DanceId;
                            foreach (RoomUser user in users)
                            {
                                ServerMessage DanceMessage = new ServerMessage(Outgoing.Dance);
                                DanceMessage.AppendInt32(user.VirtualId);
                                DanceMessage.AppendInt32(DanceId);
                                Room.SendMessage(DanceMessage);
                                user.DanceId = DanceId;
                            }
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Go Boom (:goboom)
                case "goboom":
                    {
                        if (Session.GetHabbo().HasCmd("goboom"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser user in users)
                            {
                                user.ApplyEffect(108);
                            }
                        }
                        return true;
                    }
                #endregion

                #region Mass Enable (:massenable)
                case "massenable":
                    {
                        if (Session.GetHabbo().HasCmd("massenable"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser user in users)
                            {
                                if (user.RidingHorse)
                                    continue;
                                user.ApplyEffect(Convert.ToInt32(Params[1]));
                            }
                        }
                        return true;
                    }
                #endregion
                #region Give Credits (:credits)
                case "givecredits":
                case "credits":
                case "coins":
                    {
                        if (Session.GetHabbo().HasCmd("coins"))
                        {

                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().Credits = TargetClient.GetHabbo().Credits + creditsToAdd;
                                    TargetClient.GetHabbo().UpdateCreditsBalance();
                                    TargetClient.SendNotif(Session.GetHabbo().Username + LanguageLocale.GetValue("coins.awardmessage1") + creditsToAdd.ToString() + LanguageLocale.GetValue("coins.awardmessage2"));
                                    Session.SendNotif(LanguageLocale.GetValue("coins.updateok"));
                                    return true;
                                }
                                else
                                {
                                    Session.SendNotif("Numbers Only!");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Give Pixels (:pixels)
                case "pixels":
                case "givepixels":
                    {
                        if (Session.GetHabbo().HasCmd("pixels"))
                        {

                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().ActivityPoints = TargetClient.GetHabbo().ActivityPoints + creditsToAdd;
                                    Session.GetHabbo().NotifyNewPixels(creditsToAdd);
                                    TargetClient.GetHabbo().UpdateActivityPointsBalance();
                                    TargetClient.SendNotif(Session.GetHabbo().Username + LanguageLocale.GetValue("pixels.awardmessage1") + creditsToAdd.ToString() + LanguageLocale.GetValue("pixels.awardmessage2"));
                                    Session.SendNotif(LanguageLocale.GetValue("pixels.updateok"));
                                    return true;
                                }
                                else
                                {
                                    Session.SendNotif("Numbers Only!");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendNotif("User could not be found.");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Hotel Alert (:ha)
                case "ha":
                    if (Session.GetHabbo().HasCmd("ha"))
                    {
                        string Notice = MergeParams(Params, 1);

                        ServerMessage HotelAlert = new ServerMessage(Outgoing.BroadcastMessage);
                        HotelAlert.AppendString(Notice + "\r\n" + "- " + Session.GetHabbo().Username);

                        SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert);

                        SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Notice + "]");
                        return true;
                    }
                    return true;
                #endregion

                #region Shutdown (:shutdown)
                case "shutdown":
                    {
                        if (Session.GetHabbo().HasCmd("shutdown"))
                        {
                            Task ShutdownTask = new Task(SilverwaveEnvironment.PerformShutDown);
                            ShutdownTask.Start();
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Shutdown", "Issued shutdown command");
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Disconnect (:kill)
                case "disconnect":
                case "kill":
                case "dc":
                    {
                        if (Session.GetHabbo().HasCmd("kill"))
                        {
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null)
                            {
                                Session.SendNotif("User not found.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= 4 && !Session.GetHabbo().HasFuse("fuse_disconnect_anyone"))
                            {
                                Session.SendNotif("You are not allowed to disconnect that user.");
                                return true;
                            }
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Disconnect", "User disconnected by user");

                            TargetClient.GetConnection().Dispose();
                        }
                        return true;
                    }
                #endregion

                #region Position (:coords)
                case "coord":
                case "coords":
                case "position":
                    {
                        if (Session.GetHabbo().HasCmd("coords"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser TargetRoomUser = null;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (TargetRoomUser == null)
                            {
                                return true;
                            }

                            Session.SendNotif("X: " + TargetRoomUser.X + "\n - Y: " + TargetRoomUser.Y + "\n - Z: " + TargetRoomUser.Z + "\n - Rot: " + TargetRoomUser.RotBody + ", sqState: " + TargetRoom.GetGameMap().GameMap[TargetRoomUser.X, TargetRoomUser.Y].ToString() + "\n\n - RoomID: " + Session.GetHabbo().CurrentRoomId);
                        }
                        return true;
                    }
                #endregion

                #region Teleport (:teleport)
                case "teleport":
                case "tele":
                    {
                        if (Session.GetHabbo().HasCmd("teleport"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser TargetRoomUser = null;

                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (TargetRoomUser.RidingHorse)
                            {
                                SendChatMessage(Session, "You cannot teleport whilst riding a horse!");
                                return true;
                            }
                            if (TargetRoomUser == null)
                                return true;

                            TargetRoomUser.TeleportEnabled = !TargetRoomUser.TeleportEnabled;

                            TargetRoom.GetGameMap().GenerateMaps();
                        }
                        return true;
                    }
                #endregion

                #region Update (:update_x)
                #region Update Catalog
                case "update_catalog":
                case "reload_catalog":
                case "recache_catalog":
                case "refresh_catalog":
                case "update_catalogue":
                case "reload_catalogue":
                case "recache_catalogue":
                case "refresh_catalogue":
                    {
                        if (Session.GetHabbo().HasCmd("update_catalog"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetCatalog().Initialize(dbClient);
                            }
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(new ServerMessage(Outgoing.UpdateShop));

                            Session.SendNotif("The catalog has been refreshed!");
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Update Items
                case "update_items":
                case "reload_items":
                case "recache_items":
                case "refresh_items":
                    {
                        if (Session.GetHabbo().HasCmd("update_items"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetItemManager().LoadItems(dbClient);
                            }
                            Session.SendNotif("Item definitions have been refreshed!");
                        }

                        return true;
                    }
                #endregion

                #region Update Filter
                case "update_filter":
                case "reload_filter":
                case "recache_filter":
                case "refresh_filter":
                    {
                        if (Session.GetHabbo().HasCmd("update_filter"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                LanguageLocale.InitSwearWord(dbClient);
                            }
                        }
                        return true;
                    }
                #endregion

                #region Update Navigator
                case "update_navigator":
                case "reload_navigator":
                case "recache_navigator":
                case "refresh_navigator":
                    {
                        if (Session.GetHabbo().HasCmd("update_navigator"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetNavigator().Initialize(dbClient);
                            }
                            Session.SendNotif("The navigator has been updated!");
                        }
                        return true;
                    }
                #endregion

                #region Update Ranks
                case "update_ranks":
                case "reload_ranks":
                case "recache_ranks":
                case "refresh_ranks":
                    {
                        if (Session.GetHabbo().HasCmd("update_ranks"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetRoleManager().LoadRights(dbClient);
                            }
                            Session.SendNotif("Ranks have been refreshed!");
                        }
                        return true;
                    }
                #endregion

                #region Update Settings
                case "update_settings":
                case "reload_settings":
                case "recache_settings":
                case "refresh_settings":
                    {
                        if (Session.GetHabbo().HasCmd("update_settings"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                SilverwaveEnvironment.ConfigData = new ConfigData(dbClient);
                        }
                        return true;
                    }
                #endregion

                #region Update Groups
                case "update_groups":
                case "reload_groups":
                case "recache_groups":
                case "refresh_groups":
                    {
                        if (Session.GetHabbo().HasCmd("update_groups"))
                        {
                            SilverwaveEnvironment.GetGame().GetGroupManager().InitGroups();
                            Session.SendNotif("Groups have been successfully reloaded");
                        }

                        return true;
                    }
                #endregion

                #region Update Bans
                case "update_bans":
                    {
                        if (Session.GetHabbo().HasCmd("update_bans"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                SilverwaveEnvironment.GetGame().GetBanManager().LoadBans(dbClient);

                            Session.SendNotif("Bans have been refreshed!");
                        }
                        return true;
                    }
                #endregion

                #region Update Quests
                case "update_quests":
                    {
                        if (Session.GetHabbo().HasCmd("update_quests"))
                        {
                            SilverwaveEnvironment.GetGame().GetQuestManager().Initialize(SilverwaveEnvironment.GetDatabaseManager().getQueryreactor());
                            Session.SendNotif("Quests have been successfully reloaed!");
                        }
                        return true;
                    }
                #endregion
                #endregion

                #region Super Pull (:spull)
                case "spull":
                    {
                        if (Session.GetHabbo().HasCmd("spull"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                            {
                                SendChatMessage(Session, "Error in finding room!");
                                return true;
                            }

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (roomuser == null)
                            {
                                SendChatMessage(Session, "Unable to find user!");
                                return true;
                            }
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "Unable to find user!");
                                return true;
                            }

                            GameClient Target = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            RoomUser TargetUser = room.GetRoomUserManager().GetRoomUserByHabbo(Target.GetHabbo().Id);
                            if (Target.GetHabbo().Id == Session.GetHabbo().Id)
                            {
                                SendChatMessage(Session, "You cannot pull yourself!");
                                return true;
                            }

                            if (TargetUser.TeleportEnabled)
                                return true;

                            if (roomuser.RotBody % 2 != 0)
                                roomuser.RotBody--;
                            room.SendMessage(new ChatComposer(roomuser.VirtualId, "*pulls " + Params[1] + "*", 0, roomuser.LastBubble,-1));
                            if (roomuser.RotBody == 0)
                                TargetUser.MoveTo(roomuser.X, roomuser.Y - 1);
                            else if (roomuser.RotBody == 2)
                                TargetUser.MoveTo(roomuser.X + 1, roomuser.Y);
                            else if (roomuser.RotBody == 4)
                                TargetUser.MoveTo(roomuser.X, roomuser.Y + 1);
                            else if (roomuser.RotBody == 6)
                                TargetUser.MoveTo(roomuser.X - 1, roomuser.Y);
                        }
                        return true;
                    }
                #endregion

                #region Global Credits (:globalcredits)
                case "globalcredits":
                    {
                        if (Session.GetHabbo().HasCmd("globalcredits"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You need to enter an amount!");
                                return true;
                            }
                            try
                            {
                                int Amount = int.Parse(Params[1]);
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                    dbClient.runFastQuery("UPDATE users SET credits=credits+" + Amount);

                                SilverwaveEnvironment.GetGame().GetClientManager().QueueCreditsUpdate(Amount);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Mass Credits", "Send [" + Amount + "] credits to everyone in the database");

                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Mass Credits (:masscredits)
                case "masscredits":
                    {
                        if (Session.GetHabbo().HasCmd("masscredits"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You need to enter an amount!");
                                return true;
                            }
                            try
                            {
                                int Amount = int.Parse(Params[1]);
                                SilverwaveEnvironment.GetGame().GetClientManager().QueueCreditsUpdate(Amount);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Mass Credits", "Send [" + Amount + "] credits to everyone online");
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Give Badge (:badge)
                case "badge":
                case "givebadge":
                    {
                        if (Session.GetHabbo().HasCmd("badge"))
                        {
                            if (Params.Length != 3)
                            {
                                Session.SendNotif("You must include a username and badgecode!");
                                return true;
                            }
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                TargetClient.GetHabbo().GetBadgeComponent().GiveBadge(Params[2], true, TargetClient);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Badge", "Badge given to user [" + Params[2] + "]");
                                TargetClient.SendNotif("You have just been given a badge!");
                                return true;
                            }
                            else
                            {
                                Session.SendNotif("User was not found");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Room Badge (:roombadge)
                case "roombadge":
                    {
                        if (Session.GetHabbo().HasCmd("roombadge"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You must enter a badge code!");
                                return true;
                            }

                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                                return true;

                            TargetRoom.QueueRoomBadge(Params[1]);
                            ServerMessage nMessage = new ServerMessage();
                            nMessage.Init(Outgoing.SendNotif);
                            nMessage.AppendString("You have just recieved a badge!");
                            nMessage.AppendString("");
                            TargetRoom.SendMessage(nMessage);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Badge", "Roombadge in room [" + TargetRoom.RoomId + "] with badge [" + Params[1] + "]");
                        }
                        return true;
                    }
                #endregion

                #region Mass Badge (:massbadge)
                case "massbadge":
                    {
                        if (Session.GetHabbo().HasCmd("massbadge"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You must enter a badge code!");
                                return true;
                            }
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBadgeUpdate(Params[1]);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Badge", "Mass badge with badge [" + Params[1] + "]");
                            ServerMessage nMessage = new ServerMessage();
                            nMessage.Init(Outgoing.SendNotif);
                            nMessage.AppendString("You have just recieved a badge!");
                            nMessage.AppendString("");
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);
                        }
                        return true;
                    }
                #endregion

                #region All eyes on me (:alleyesonme)
                case "alleyesonme":
                    {
                        if (Session.GetHabbo().HasCmd("alleyesonme"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                                return true;
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser Us in users)
                            {
                                if (Session.GetHabbo().Id == Us.userID)
                                    continue;
                                Us.SetRot(Rotation.Calculate(Us.X, Us.Y, User.X, User.Y));
                            }
                        }
                        return true;
                    }
                #endregion

                #region IP Ban (:ipban)
                case "ipban":
                case "banip":
                    {
                        if (Session.GetHabbo().HasCmd("ipban"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You must include a username and reason!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("An unknown error occured whilst finding this user!");
                                return true;
                            }
                            try
                            {
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), true, false);
                            }
                            catch (Exception e) { Console.WriteLine(e); }

                        }
                        return true;
                    }
                #endregion

                #region Machine Ban (:machineban)
                case "machineban":
                case "banmachine":
                case "mban":
                    {
                        if (Session.GetHabbo().HasCmd("machineban"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You must include a username and reason!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("An unknown error occured whilst finding this user!");
                                return true;
                            }

                            if (string.IsNullOrWhiteSpace(TargetUser.MachineId))
                            {
                                Session.SendNotif("Unable to ban this user, they don't have a machine ID");
                                return true;
                            }

                            try
                            {
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 2678400, "You have been banned! The reason given was:\n" + MergeParams(Params, 2), false, true);
                            }
                            catch (Exception e) { Console.WriteLine(e); }

                        }
                        return true;
                    }
                #endregion

                #region Machine and IP ban (:mip)
                case "mip":
                    {
                        if (Session.GetHabbo().HasCmd("mip"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("You must include a username and reason!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("An unknown error occured whilst finding this user!");
                                return true;
                            }
                            try
                            {
                                if (string.IsNullOrWhiteSpace(TargetUser.MachineId))
                                {
                                    Session.SendNotif("Unable to ban this user, they don't have a machine ID");
                                    return true;
                                }
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 2678400, "You have been banned! The reason given was:\n" + MergeParams(Params, 2), false, true);
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), true, false);
                            }
                            catch (Exception e) { Console.WriteLine(e); }
                        }
                        return true;
                    }
                #endregion

                #region All around me (:allaroundme)
                case "allaroundme":
                    {
                        if (Session.GetHabbo().HasCmd("allaroundme"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                            {
                                Session.SendNotif("An unknown error occured!");
                                return true;
                            }
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser Us in users)
                            {
                                if (Session.GetHabbo().Id == Us.userID)
                                    continue;
                                Us.MoveTo(User.X, User.Y, true);
                            }
                            if (Params.Length == 2)
                            {
                                if (Params[1] == "override")
                                {
                                    foreach (RoomUser Us in users)
                                    {
                                        if (Session.GetHabbo().Id == Us.userID)
                                            continue;
                                        Us.AllowOverride = true;
                                        Us.MoveTo(User.X, User.Y, true);
                                        Us.AllowOverride = false;
                                    }
                                }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Hotel alert w/link (:hal)
                case "hal":
                    {
                        if (Session.GetHabbo().HasCmd("hal"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            // Hotel Alert pluss link :hal <link> <message>
                            string Link = Params[1];

                            string Message = MergeParams(Params, 2);

                            ServerMessage nMessage = new ServerMessage(Outgoing.SendNotif);
                            nMessage.AppendString(LanguageLocale.GetValue("hotelallert.notice") + "\r\n" + Message + "\r\n-" + Session.GetHabbo().Username);
                            nMessage.AppendString(Link);
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Message + "]");
                        }
                        return true;
                    }
                #endregion

                #region Staff Alert (:sa)
                case "sa":
                    {
                        if (Session.GetHabbo().HasCmd("sa"))
                        {
                            string Message = "Message from staff: \n" + Params[1] + "\n - " + Session.GetHabbo().Username;
                            ServerMessage message = new ServerMessage(Outgoing.BroadcastMessage);
                            message.AppendString(Message);
                            SilverwaveEnvironment.GetGame().GetClientManager().StaffAlert(message);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "StaffAlert", "Staff alert [" + Message + "]");
                        }
                        return true;
                    }
                #endregion

                #region Spectators Mode (:invisible)
                case "invisible":
                case "spec":
                case "spectatorsmode":
                    {
                        if (Session.GetHabbo().HasCmd("invisible"))
                        {
                            Session.GetHabbo().SpectatorMode = true;
                            Session.SendNotif("Reload the room to be invisible");

                            //RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);
                            //User.IsSpectator = true;
                        }
                        return true;
                    }
                #endregion

                #region Add Bannable Word (:banword)
                case "banword":
                    {
                        if (Session.GetHabbo().HasCmd("banword"))
                        {
                            string BannedWord = Params[1];
                            if (!string.IsNullOrWhiteSpace(BannedWord))
                            {
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("INSERT INTO wordfilter (`word`, `addedby`, `bannable`) VALUES " +
                                        "(@ban, '" + Session.GetHabbo().Username + "', '0');");
                                    dbClient.addParameter("ban", BannedWord.ToLower());
                                    dbClient.runQuery();
                                    LanguageLocale.InitSwearWord(dbClient);
                                    Session.SendNotif("'" + BannedWord + "' has been added to the bannable list");
                                }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Unidle (:unidle)
                case "unidle":
                    {
                        if (Session.GetHabbo().HasCmd("unidle"))
                        {
                            Habbo Habbo = SilverwaveEnvironment.getHabboForName(Params[1]);
                            if (Habbo == null)
                                return true;

                            RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Habbo.Id);

                            if (User == null)
                                return true;

                            User.UnIdle();
                        }
                        return true;
                    }
                #endregion

                #region Make Public (:public)
                case "public":
                    {
                        if (Session.GetHabbo().HasCmd("public"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;
                            if (Room == null)
                                return true;
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                dbClient.runFastQuery("UPDATE rooms SET roomtype='public' WHERE id=" + Room.RoomId + " LIMIT 1");
                            Room.Type = "public";
                            Room.RoomData.Type = "public";
                            Room.RoomData.SerializeRoomData(new ServerMessage(), false, Session, true);
                        }
                        return true;
                    }
                #endregion

                #region Make Private (:private)
                case "private":
                    {
                        if (Session.GetHabbo().HasCmd("private"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;
                            if (Room == null)
                                return true;
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                dbClient.runFastQuery("UPDATE rooms SET roomtype='private' WHERE id=" + Room.RoomId + " LIMIT 1");
                            Room.Type = "private";
                            Room.RoomData.Type = "private";
                            Room.RoomData.SerializeRoomData(new ServerMessage(), false, Session, true);
                        }
                        return true;
                    }
                #endregion

                #region Mass Action (:massact)
                case "massact":
                    {
                        if (Session.GetHabbo().HasCmd("massact"))
                        {
                            try
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;

                                List<RoomUser> Users = Room.GetRoomUserManager().GetRoomUsers();
                                int Num = Int16.Parse(Params[1]);

                                ServerMessage Message = new ServerMessage();

                                foreach (RoomUser User in Users)
                                {
                                    if (User == null)
                                        continue;

                                    Room.SendMessage(new ActionComposer(User, Num));
                                }
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Close Alert (:closealert)
                case "closealert":
                    {
                        if (Session.GetHabbo().HasCmd("closealert"))
                        {
                            int Time = int.Parse(Params[1]);

                            ServerMessage Message = new ServerMessage(Outgoing.ClosingAlert);
                            Message.AppendInt32(Time);
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(Message);
                        }
                        return true;
                    }
                #endregion
                #endregion
            }
            return false;
            #endregion
        }
Пример #2
0
        internal RoomData CreateRoom(GameClient Session, string Name, string Desc, string Model, int Category, int MaxVisitors)
        {
            // New structure fixed by Finn

            if (!this.roomModels.ContainsKey(Model))
            {
                Session.SendNotif("Room Model was not found: " + Model);
                return null;
            }
            if (Name.Length < 3)
            {
                Session.SendNotif("The Room name is too short...");
                return null;
            }


            uint RoomId = 0;
            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("INSERT INTO rooms (roomtype,caption,description,owner,model_name,category,users_max) VALUES ('private', @Caption , @desc , @username , @model , @cat , @usmax)");
                dbClient.addParameter("caption", Name);
                dbClient.addParameter("desc", Desc);
                dbClient.addParameter("username", Session.GetHabbo().Username);
                dbClient.addParameter("model", Model);
                dbClient.addParameter("cat", Category);
                dbClient.addParameter("usmax", MaxVisitors);
                RoomId = (uint)dbClient.insertQuery();
            }
            RoomData Data = this.GenerateRoomData(RoomId);
            Session.GetHabbo().UsersRooms.Add(Data);
            return Data;
        }
Пример #3
0
        internal Boolean CheckGroupRights(GameClient Session)
        {
            try
            {
                if (Group == null)
                {
                    return false;
                }
                if (Group.AdminOnlyDeco == 0)
                {
                    if (Group.Members.ContainsKey(Session.GetHabbo().Id))
                        return true;
                }

                if (Group.Admins.ContainsKey(Session.GetHabbo().Id))
                {
                    Session.SendNotif("Group Admin");
                    return true;
                }

                if (Session.GetHabbo().Username == Owner)
                {
                    return true;
                }

                if (Session.GetHabbo().HasFuse("fuse_admin") || Session.GetHabbo().HasFuse("fuse_any_room_controller"))
                    return true;
            }
            catch (Exception e) { Logging.HandleException(e, "Room.CheckGroupRights"); }
            return false;
        }
Пример #4
0
        internal List<UserItem> DeliverItems(GameClient Session, Item Item, int Amount, String ExtraData, int limno, int limtot, uint songID = 0)
        {
            List<UserItem> result = new List<UserItem>();
            switch (Item.Type.ToString())
            {
                case "i":
                case "s":
                    for (int i = 0; i < Amount; i++)
                    {
                        //uint GeneratedId = GenerateItemId();
                        switch (Item.InteractionType)
                        {
                            case InteractionType.pet0:

                                string[] PetData = ExtraData.Split('\n');

                                Pet GeneratedPet = CreatePet(Session.GetHabbo().Id, PetData[0], 0, PetData[1], PetData[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet1:

                                string[] PetData1 = ExtraData.Split('\n');

                                Pet GeneratedPet1 = CreatePet(Session.GetHabbo().Id, PetData1[0], 1, PetData1[1], PetData1[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet1);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet2:

                                string[] PetData5 = ExtraData.Split('\n');

                                Pet GeneratedPet5 = CreatePet(Session.GetHabbo().Id, PetData5[0], 2, PetData5[1], PetData5[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet5);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet3:

                                string[] PetData2 = ExtraData.Split('\n');

                                Pet GeneratedPet2 = CreatePet(Session.GetHabbo().Id, PetData2[0], 3, PetData2[1], PetData2[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet2);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet4:

                                string[] PetData3 = ExtraData.Split('\n');

                                Pet GeneratedPet3 = CreatePet(Session.GetHabbo().Id, PetData3[0], 4, PetData3[1], PetData3[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet3);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet5:

                                string[] PetData7 = ExtraData.Split('\n');

                                Pet GeneratedPet7 = CreatePet(Session.GetHabbo().Id, PetData7[0], 5, PetData7[1], PetData7[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet7);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet6:
                                string[] PetData4 = ExtraData.Split('\n');

                                Pet GeneratedPet4 = CreatePet(Session.GetHabbo().Id, PetData4[0], 6, PetData4[1], PetData4[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet4);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet7:

                                string[] PetData6 = ExtraData.Split('\n');

                                Pet GeneratedPet6 = CreatePet(Session.GetHabbo().Id, PetData6[0], 7, PetData6[1], PetData6[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet6);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet8:

                                string[] PetData8 = ExtraData.Split('\n');

                                Pet GeneratedPet8 = CreatePet(Session.GetHabbo().Id, PetData8[0], 8, PetData8[1], PetData8[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet8);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;

                            case InteractionType.pet9:

                                string[] PetData9 = ExtraData.Split('\n');

                                Pet GeneratedPet9 = CreatePet(Session.GetHabbo().Id, PetData9[0], 9, PetData9[1], PetData9[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet9);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet10:

                                string[] PetData10 = ExtraData.Split('\n');

                                Pet GeneratedPet10 = CreatePet(Session.GetHabbo().Id, PetData10[0], 10, PetData10[1], PetData10[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet10);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet11:

                                string[] PetData11 = ExtraData.Split('\n');

                                Pet GeneratedPet11 = CreatePet(Session.GetHabbo().Id, PetData11[0], 11, PetData11[1], PetData11[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet11);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet12:
                                string[] PetData12 = ExtraData.Split('\n');

                                Pet GeneratedPet12 = CreatePet(Session.GetHabbo().Id, PetData12[0], 12, PetData12[1], PetData12[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet12);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet13: //Caballo - Horse
                                string[] PetData13 = ExtraData.Split('\n');

                                Pet GeneratedPet13 = CreatePet(Session.GetHabbo().Id, PetData13[0], 13, PetData13[1], PetData13[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet13);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet14:
                                string[] PetData14 = ExtraData.Split('\n');

                                Pet GeneratedPet14 = CreatePet(Session.GetHabbo().Id, PetData14[0], 14, PetData14[1], PetData14[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet14);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet15:
                                string[] PetData15 = ExtraData.Split('\n');

                                Pet GeneratedPet15 = CreatePet(Session.GetHabbo().Id, PetData15[0], 15, PetData15[1], PetData15[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet15);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet16: // Mascota Agregada
                                string[] PetData16 = ExtraData.Split('\n');

                                Pet GeneratedPet16 = CreatePet(Session.GetHabbo().Id, PetData16[0], 16, PetData16[1], PetData16[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet16);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet17: // Mascota Agregada
                                string[] PetData17 = ExtraData.Split('\n');

                                Pet GeneratedPet17 = CreatePet(Session.GetHabbo().Id, PetData17[0], 17, PetData17[1], PetData17[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet17);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet18: // Mascota Agregada
                                string[] PetData18 = ExtraData.Split('\n');

                                Pet GeneratedPet18 = CreatePet(Session.GetHabbo().Id, PetData18[0], 18, PetData18[1], PetData18[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet18);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet19: // Mascota Agregada
                                string[] PetData19 = ExtraData.Split('\n');

                                Pet GeneratedPet19 = CreatePet(Session.GetHabbo().Id, PetData19[0], 19, PetData19[1], PetData19[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet19);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet20: // Mascota Agregada
                                string[] PetData20 = ExtraData.Split('\n');

                                Pet GeneratedPet20 = CreatePet(Session.GetHabbo().Id, PetData20[0], 20, PetData20[1], PetData20[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet20);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet21: // Mascota Agregada
                                string[] PetData21 = ExtraData.Split('\n');

                                Pet GeneratedPet21 = CreatePet(Session.GetHabbo().Id, PetData21[0], 21, PetData21[1], PetData21[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet21);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.pet22: // Mascota Agregada
                                string[] PetData22 = ExtraData.Split('\n');

                                Pet GeneratedPet22 = CreatePet(Session.GetHabbo().Id, PetData22[0], 22, PetData22[1], PetData22[2]);

                                Session.GetHabbo().GetInventoryComponent().AddPet(GeneratedPet22);
                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, 320, "0", 0, true, false, 0,0,0));

                                break;
                            case InteractionType.teleport:

                                UserItem one = Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, "0", 0, true, false, 0,0,0);
                                uint idOne = one.Id;
                                UserItem two = Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, "0", 0, true, false, 0,0,0);
                                uint idTwo = two.Id;
                                result.Add(one);
                                result.Add(two);

                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.runFastQuery("INSERT INTO tele_links (tele_one_id,tele_two_id) VALUES (" + idOne + "," + idTwo + ")");
                                    dbClient.runFastQuery("INSERT INTO tele_links (tele_one_id,tele_two_id) VALUES (" + idTwo + "," + idOne + ")");
                                }

                                break;

                            case InteractionType.dimmer:
                                {
                                    UserItem it = Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, ExtraData, 0, true, false, 0,0,0);
                                    uint id = it.Id;
                                    result.Add(it);
                                    using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                    {
                                        dbClient.runFastQuery("INSERT INTO room_items_moodlight (item_id,enabled,current_preset,preset_one,preset_two,preset_three) VALUES (" + id + ",0,1,'#000000,255,0','#000000,255,0','#000000,255,0')");
                                    }
                                }

                                break;
                            case InteractionType.roombg:
                                {
                                    UserItem it = Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, ExtraData, 0, true, false, 0,0,0);
                                    uint id = it.Id;
                                    result.Add(it);
                                    using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                    {
                                        dbClient.runFastQuery("INSERT INTO room_items_toner VALUES (" + id + ",'0',0,0,0)");
                                    }
                                    break;
                                }
                            case InteractionType.musicdisc:
                                {
                                    result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, songID.ToString(), 0, true, false, 0,0, songID));
                                    break;
                                }
                            case InteractionType.gld_gate:
                            case InteractionType.gld_item:
                                {
                                    result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, "0", Convert.ToUInt32(ExtraData), true, false, 0,0,0));
                                    break;
                                }

                            default:

                                result.Add(Session.GetHabbo().GetInventoryComponent().AddNewItem(0, Item.ItemId, ExtraData, 0, true, false, limno, limtot, songID));
                                break;
                        }
                    }
                    return result;

                case "e":

                    for (int i = 0; i < Amount; i++)
                    {
                        Session.GetHabbo().GetAvatarEffectsInventoryComponent().AddEffect(Item.SpriteId, 3600);
                    }
                    return result;

                case "r":
                        RoomBot GeneratedBot = CreateBot(Session.GetHabbo().Id, "Jon", "hr-3020-34.hd-3091-2.ch-225-92.lg-3058-100.sh-3089-1338.ca-3084-78-108.wa-2005","Beep Beep","m", 0);
                        Session.GetHabbo().GetInventoryComponent().AddBot(GeneratedBot);
                        Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializeBotInventory());
                        return result;

                default:

                    Session.SendNotif(LanguageLocale.GetValue("catalog.buyerror"));
                    return result;
            }
        }
Пример #5
0
        internal void HandlePurchase(GameClient Session, int PageId, int ItemId, string ExtraData, int priceAmount, Boolean IsGift, string GiftUser, string GiftMessage, int GiftSpriteId, int GiftLazo, int GiftColor, bool undef, uint Group)
        {
            if (priceAmount < 1 || priceAmount > 100)
            {
                priceAmount = 1;
            }

            int finalAmount = priceAmount;

            int limno = 0;
            int limtot = 0;
            if (priceAmount >= 6)
                finalAmount -= 1;
            if (priceAmount >= 12)
                finalAmount -= 2;
            if (priceAmount >=  18)
                finalAmount -= 2;
            if (priceAmount >=  24)
                finalAmount -= 2;
            if (priceAmount >=  30)
                finalAmount -= 2;
            if (priceAmount >=  36)
                finalAmount -= 2;
            if (priceAmount >=  42)
                finalAmount -= 2;
            if (priceAmount >=  48)
                finalAmount -= 2;
            if (priceAmount >=  54)
                finalAmount -= 2;
            if (priceAmount >=  60)
                finalAmount -= 2;
            if (priceAmount >=  66)
                finalAmount -= 2;
            if (priceAmount >=  72)
                finalAmount -= 2;
            if (priceAmount >=  78)
                finalAmount -= 2;
            if (priceAmount >=  84)
                finalAmount -= 2;
            if (priceAmount >=  90)
                finalAmount -= 2;
            if (priceAmount >=  96)
                finalAmount -= 2;
            if (priceAmount >=  99)
                finalAmount -= 2;

            CatalogPage Page;
            if (!Pages.TryGetValue(PageId, out Page))
                return;
            if (Page == null || !Page.Enabled || !Page.Visible || Session == null || Session.GetHabbo() == null)
            {
                return;
            }
            if (Page.MinRank > Session.GetHabbo().Rank)
            {
                return;
            }
            else if (Page.MinSub > 0 && (!Session.GetHabbo().GetSubscriptionManager().HasSubscription || Session.GetHabbo().GetSubscriptionManager().GetSubscription().SubscriptionId < Page.MinSub))
            {
                return;
            }
            CatalogItem Item = Page.GetItem(ItemId);

            if (Item == null)
            {
                return;
            }
            bool IsPet = false;
            foreach (uint i in Item.Items)
            {
                if (Item.GetBaseItem(i).InteractionType == InteractionType.pet1 || Item.GetBaseItem(i).InteractionType == InteractionType.pet2 || Item.GetBaseItem(i).InteractionType == InteractionType.pet3
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet4 || Item.GetBaseItem(i).InteractionType == InteractionType.pet5 || Item.GetBaseItem(i).InteractionType == InteractionType.pet6
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet7 || Item.GetBaseItem(i).InteractionType == InteractionType.pet8 || Item.GetBaseItem(i).InteractionType == InteractionType.pet9
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet10 || Item.GetBaseItem(i).InteractionType == InteractionType.pet11 || Item.GetBaseItem(i).InteractionType == InteractionType.pet12
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet13 || Item.GetBaseItem(i).InteractionType == InteractionType.pet14 || Item.GetBaseItem(i).InteractionType == InteractionType.pet15
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet16 || Item.GetBaseItem(i).InteractionType == InteractionType.pet17 || Item.GetBaseItem(i).InteractionType == InteractionType.pet18)
                {
                    IsPet = true;
                }
            }
            if (!IsPet)
            {
                if ((Item.CreditsCost * finalAmount) < 0 || (Item.DucketsCost * finalAmount) < 0 || (Item.BelCreditsCost * finalAmount) < 0)
                {
                    SilverwaveEnvironment.GetGame().GetBanManager().BanUser(Session, "Server", 788922000, "Account banned due to attempting to exploit in-game", true, false);
                    return;
                }
            }

            if (Item.IsLimited)
            {
                finalAmount = 1;
                priceAmount = 1;
                if (Item.LimitedStack <= Item.LimitedSelled)
                {
                    Session.SendNotif("This item has sold out!\n\n" +
                        "Please note, you have not recieved another item (You have also not been charged for it!)");
                    Session.SendMessage(new ServerMessage(Outgoing.UpdateShop));
                    Session.SendMessage(new PurchaseOKComposer());
                    return;
                }
                Item.LimitedSelled++;
                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.runFastQuery("UPDATE catalog_items SET limited_sells = " + Item.LimitedSelled + " WHERE id = " + Item.Id);
                    limno = Item.LimitedSelled;
                    limtot = Item.LimitedStack;
                }
                Session.SendMessage(new ServerMessage(Outgoing.UpdateShop));
            }
            else if (IsGift & priceAmount > 1)
            {
                finalAmount = 1;
                priceAmount = 1;
            }
            uint GiftUserId = 0;

            if (Session.GetHabbo().Credits < (Item.CreditsCost * finalAmount))
            {
                return;
            }

            if (Session.GetHabbo().ActivityPoints < (Item.DucketsCost * finalAmount))
            {
                return;
            }
            if (Session.GetHabbo().ActivityPoints < (Item.BelCreditsCost* finalAmount))
            {
                return;
            }

            if (Item.CreditsCost > 0 && !IsGift)
            {
                Session.GetHabbo().Credits -= (Item.CreditsCost * finalAmount);
                Session.GetHabbo().UpdateCreditsBalance();
            }

            if (Item.DucketsCost > 0 && !IsGift)
            {
                Session.GetHabbo().ActivityPoints -= (Item.DucketsCost * finalAmount);
                Session.GetHabbo().UpdateActivityPointsBalance();
            }

            if (Item.BelCreditsCost > 0 && !IsGift)
            {
                Session.GetHabbo().BelCredits -= (Item.BelCreditsCost * finalAmount);
                Session.GetHabbo().UpdateActivityPointsBalance();
            }
            foreach (uint i in Item.Items)
            {
                if (IsGift)
                {
                    if (GiftSpriteId > 186 && GiftSpriteId < 194)
                    {
                        using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                        {
                            dbClient.setQuery("SELECT id FROM furniture WHERE sprite_id='" + GiftSpriteId + "' LIMIT 1");
                            string id = dbClient.getString();
                            GiftSpriteId = int.Parse(id);
                        }
                    }
                    if (!Item.GetBaseItem(i).AllowGift && Session.GetHabbo().Rank < 8)
                    {
                        return;
                    }

                    DataRow dRow;
                    using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        dbClient.setQuery("SELECT id FROM users WHERE username = @gift_user");
                        dbClient.addParameter("gift_user", GiftUser);

                        dRow = dbClient.getRow();
                    }

                    if (dRow == null)
                    {
                        Session.GetMessageHandler().GetResponse().Init(Outgoing.GiftError);
                        Session.GetMessageHandler().GetResponse().AppendString(GiftUser);
                        Session.GetMessageHandler().SendResponse();

                        return;
                    }

                    GiftUserId = Convert.ToUInt32(dRow[0]);

                    if (GiftUserId == 0)
                    {
                        Session.GetMessageHandler().GetResponse().Init(Outgoing.GiftError);
                        Session.GetMessageHandler().GetResponse().AppendString(GiftUser);
                        Session.GetMessageHandler().SendResponse();

                        return;
                    }

                    if (Item.CreditsCost > 0 && IsGift)
                    {
                        Session.GetHabbo().Credits -= (Item.CreditsCost * finalAmount);
                        Session.GetHabbo().UpdateCreditsBalance();
                    }

                    if (Item.DucketsCost > 0 && IsGift)
                    {
                        Session.GetHabbo().ActivityPoints -= (Item.DucketsCost * finalAmount);
                        Session.GetHabbo().UpdateActivityPointsBalance();
                    }
                    if (Item.BelCreditsCost > 0 && IsGift)
                    {
                        Session.GetHabbo().ActivityPoints -= (Item.BelCreditsCost * finalAmount);
                        Session.GetHabbo().UpdateActivityPointsBalance();
                    }
                }

                if (IsGift && Item.GetBaseItem(i).Type == 'e')
                {
                    Session.SendNotif(LanguageLocale.GetValue("catalog.gift.send.error"));
                    return;
                }

                switch (Item.GetBaseItem(i).InteractionType)
                {
                    case InteractionType.none:
                        ExtraData = "";
                        break;

                    case InteractionType.musicdisc:
                        ExtraData = Item.songID.ToString();
                        break;

                    #region Pet handling
                    case InteractionType.pet0:
                    case InteractionType.pet1:
                    case InteractionType.pet2:
                    case InteractionType.pet3:
                    case InteractionType.pet4:
                    case InteractionType.pet5:
                    case InteractionType.pet6:
                    case InteractionType.pet7:
                    case InteractionType.pet8:
                    case InteractionType.pet9:
                    case InteractionType.pet10:
                    case InteractionType.pet11:
                    case InteractionType.pet12:
                    case InteractionType.pet13: //Caballo
                    case InteractionType.pet14:
                    case InteractionType.pet15:
                    case InteractionType.pet16: //Mascota agregada
                    case InteractionType.pet17: //Mascota agregada
                    case InteractionType.pet18: //Mascota agregada
                    case InteractionType.pet19: //Mascota agregada
                    case InteractionType.pet20: //Mascota agregada
                    case InteractionType.pet21: //Mascota agregada
                    case InteractionType.pet22: //Mascota agregada
                        try
                        {

                            //uint count = 0;
                            //using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            //{
                            //    dbClient.setQuery("SELECT COUNT(*) FROM user_pets WHERE user_id = " + Session.GetHabbo().Id);
                            //    count = uint.Parse(dbClient.getString());
                            //}

                            //if (count > 5)
                            //{
                            //    Session.SendNotif(LanguageLocale.GetValue("catalog.pets.maxpets"));
                            //    return;
                            //}

                            string[] Bits = ExtraData.Split('\n');
                            string PetName = Bits[0];
                            string Race = Bits[1];
                            string Color = Bits[2];

                            int.Parse(Race); // to trigger any possible errors

                            if (!CheckPetName(PetName))
                                return;

                            if (Race.Length != 1)
                                return;

                            if (Color.Length != 6)
                                return;

                            SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_PetLover", 1);
                        }
                        catch (Exception e)
                        {
                            Logging.WriteLine(e.ToString());
                            Logging.HandleException(e, "Catalog.HandlePurchase");
                            return;
                        }

                        break;

                    #endregion

                    case InteractionType.rentals:
                        ExtraData = Item.ExtraData;
                        break;

                    case InteractionType.roomeffect:

                        Double Number = 0;

                        try
                        {
                            if (string.IsNullOrEmpty(ExtraData))
                                Number = 0;
                            else
                                Number = Double.Parse(ExtraData, SilverwaveEnvironment.cultureInfo);
                        }
                        catch (Exception e) { Logging.HandleException(e, "Catalog.HandlePurchase: " + ExtraData); }

                        ExtraData = Number.ToString().Replace(',', '.');
                        break; // maintain extra data // todo: validate

                    case InteractionType.postit:
                        ExtraData = "FFFF33";
                        break;

                    case InteractionType.dimmer:
                        ExtraData = "1,1,1,#000000,255";
                        break;

                    case InteractionType.trophy:
                        ExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + ExtraData;
                        break;
                    case InteractionType.mannequin:
                        ExtraData = "m" + Convert.ToChar(5) + "ch-215-92.lg-3202-1322-73" + Convert.ToChar(5) + "Default Mannequin";
                        break;
                    case InteractionType.badge_display:
                        break;
                    case InteractionType.gld_item:
                    case InteractionType.gld_gate:

                        break;

                    default:
                        ExtraData = "";
                        break;
                }

                Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateInventary);
                Session.GetMessageHandler().SendResponse();

                Session.SendMessage(new PurchaseOKComposer(Item, Item.GetBaseItem(i)));

                if (IsGift)
                {
                    uint itemID;
                    Item Present = SilverwaveEnvironment.GetGame().GetItemManager().GetItem((uint)GiftSpriteId);

                    using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        dbClient.setQuery("INSERT INTO items (base_item,user_id,extra_data) VALUES (" + Present.ItemId + ", " + GiftUserId + ",@extra_data)");
                        dbClient.addParameter("extra_data", Session.GetHabbo().Id + ";!" + GiftMessage + Convert.ToChar(5) +
                            GiftColor + Convert.ToChar(5) + GiftLazo);
                        itemID = (uint)dbClient.insertQuery() + 1;
                        dbClient.runQuery();

                        dbClient.setQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES (" + itemID + "," + Item.GetBaseItem(i).ItemId + "," + Item.Amount + ",@extra_data)");
                        dbClient.addParameter("gift_message", "!" + GiftMessage);
                        dbClient.addParameter("extra_data", ExtraData);
                        dbClient.runQuery();
                        dbClient.runFastQuery("DELETE FROM items WHERE id= " + (itemID - 1) + " LIMIT 1;");
                        if (Session.GetHabbo().Id != GiftUserId)
                            dbClient.runFastQuery("UPDATE user_stats SET GiftsGiven = GiftsGiven + 1 WHERE id = " + Session.GetHabbo().Id + " LIMIT 1;" +
                            "UPDATE user_stats SET GiftsReceived = GiftsReceived + 1 WHERE id = " + GiftUserId + " LIMIT 1");
                    }
                    GameClient Receiver = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(GiftUserId);
                    if (Receiver != null)
                    {
                        UserItem u = Receiver.GetHabbo().GetInventoryComponent().AddNewItem(itemID, Present.ItemId, Session.GetHabbo().Id + ";" + GiftMessage + (char)5 + GiftLazo + (char)5 + GiftColor, 0, false, false, 0,0,0);
                        Receiver.GetHabbo().GetInventoryComponent().SendFloorInventoryUpdate();
                        Receiver.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert);
                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1); // items
                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1); // type (gift) == s
                        Receiver.GetMessageHandler().GetResponse().AppendInt32(1);
                        Receiver.GetMessageHandler().GetResponse().AppendInt32(u.Id);
                        Receiver.GetMessageHandler().SendResponse();

                        if (Item.Badge != "")
                        {
                            Receiver.GetHabbo().GetBadgeComponent().GiveBadge(Item.Badge, true, Session);
                        }

                        InventoryComponent targetInventory = Receiver.GetHabbo().GetInventoryComponent();
                        if (targetInventory != null)
                            targetInventory.RunDBUpdate();
                        if (Receiver.GetHabbo().Id != Session.GetHabbo().Id && !string.IsNullOrWhiteSpace(GiftMessage))
                        {
                            SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_GiftGiver", 1);
                            SilverwaveEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Receiver, "ACH_GiftReceiver", 1);
                            SilverwaveEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, Quests.QuestType.GIFT_OTHERS);
                        }

                    }

                }
                else
                {
                    Session.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert);
                    Session.GetMessageHandler().GetResponse().AppendInt32(1); // items
                    int Type = 1;
                    if (Item.GetBaseItem(i).Type.ToString().ToLower().Equals("s"))
                    {
                        if (Item.GetBaseItem(i).InteractionType == InteractionType.pet1 || Item.GetBaseItem(i).InteractionType == InteractionType.pet2 || Item.GetBaseItem(i).InteractionType == InteractionType.pet3
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet4 || Item.GetBaseItem(i).InteractionType == InteractionType.pet5 || Item.GetBaseItem(i).InteractionType == InteractionType.pet6
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet7 || Item.GetBaseItem(i).InteractionType == InteractionType.pet8 || Item.GetBaseItem(i).InteractionType == InteractionType.pet9
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet10 || Item.GetBaseItem(i).InteractionType == InteractionType.pet11 || Item.GetBaseItem(i).InteractionType == InteractionType.pet12
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet13 || Item.GetBaseItem(i).InteractionType == InteractionType.pet14 || Item.GetBaseItem(i).InteractionType == InteractionType.pet15
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet16 || Item.GetBaseItem(i).InteractionType == InteractionType.pet17 || Item.GetBaseItem(i).InteractionType == InteractionType.pet18)
                            Type = 3;
                        else
                            Type = 1;
                    }
                    Session.GetMessageHandler().GetResponse().AppendInt32(Type);
                    List<UserItem> items = DeliverItems(Session, Item.GetBaseItem(i), (priceAmount * Item.Amount), ExtraData, limno, limtot, Item.songID);
                    Session.GetMessageHandler().GetResponse().AppendInt32(items.Count);
                    foreach (UserItem u in items)
                        Session.GetMessageHandler().GetResponse().AppendInt32(u.Id);
                    Session.GetMessageHandler().SendResponse();
                    Session.GetHabbo().GetInventoryComponent().UpdateItems(false);

                    if (Item.GetBaseItem(i).InteractionType == InteractionType.pet1 || Item.GetBaseItem(i).InteractionType == InteractionType.pet2 || Item.GetBaseItem(i).InteractionType == InteractionType.pet3
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet4 || Item.GetBaseItem(i).InteractionType == InteractionType.pet5 || Item.GetBaseItem(i).InteractionType == InteractionType.pet6
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet7 || Item.GetBaseItem(i).InteractionType == InteractionType.pet8 || Item.GetBaseItem(i).InteractionType == InteractionType.pet9
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet10 || Item.GetBaseItem(i).InteractionType == InteractionType.pet11 || Item.GetBaseItem(i).InteractionType == InteractionType.pet12
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet13 || Item.GetBaseItem(i).InteractionType == InteractionType.pet14 || Item.GetBaseItem(i).InteractionType == InteractionType.pet15
                        || Item.GetBaseItem(i).InteractionType == InteractionType.pet16 || Item.GetBaseItem(i).InteractionType == InteractionType.pet17 || Item.GetBaseItem(i).InteractionType == InteractionType.pet18)
                    {
                        Session.SendMessage(Session.GetHabbo().GetInventoryComponent().SerializePetInventory());
                    }

                }

                if (Item.Badge != "")
                {
                    Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Badge, true, Session);
                }

                if (!Item.Name.Contains("rentable_bot") && !String.IsNullOrEmpty(Item.ExtraData))
                {
                    if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Item.ExtraData))
                    {
                        Session.SendNotif("You have just recieved a badge!");
                        Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.ExtraData, true, Session);
                    }
                }
            }
        }
Пример #6
0
        internal static void KickUser(GameClient ModSession, uint UserId, String Message, Boolean Soft)
        {
            GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId);

            if (Client == null || Client.GetHabbo().CurrentRoomId < 1 || Client.GetHabbo().Id == ModSession.GetHabbo().Id)
            {
                return;
            }

            if (Client.GetHabbo().Rank >= ModSession.GetHabbo().Rank)
            {
                ModSession.SendNotif(LanguageLocale.GetValue("moderation.kick.missingrank"));
                return;
            }

            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Client.GetHabbo().CurrentRoomId);

            if (Room == null)
            {
                return;
            }

            Room.GetRoomUserManager().RemoveUserFromRoom(Client, true, false);
            Client.CurrentRoomUserID = -1;

            if (!Soft)
            {
                Client.SendNotif(Message);

                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.runFastQuery("UPDATE user_info SET cautions = cautions + 1 WHERE user_id = " + UserId + "");
                }
            }
        }
Пример #7
0
        internal static void BanUser(GameClient ModSession, uint UserId, int Length, String Message)
        {
            GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId);

            if (Client == null || Client.GetHabbo().Id == ModSession.GetHabbo().Id)
            {
                return;
            }

            if (Client.GetHabbo().Rank >= ModSession.GetHabbo().Rank)
            {
                ModSession.SendNotif(LanguageLocale.GetValue("moderation.ban.missingrank"));
                return;
            }

            Double dLength = Length;

            SilverwaveEnvironment.GetGame().GetBanManager().BanUser(Client, ModSession.GetHabbo().Username, dLength, Message, false, false);
        }
Пример #8
0
        internal void Init(GameClient client, UserData data)
        {
            this.mClient = client;

            this.SubscriptionManager = new SubscriptionManager(Id, data);
            this.BadgeComponent = new BadgeComponent(Id, data);
            this.InventoryComponent = InventoryGlobal.GetInventory(Id, client, data);
            this.InventoryComponent.SetActiveState(client);
            this.AvatarEffectsInventoryComponent = new AvatarEffectsInventoryComponent(Id, client, data);
            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (client.GetHabbo() != null)
                {
                    dbClient.setQuery("SELECT COUNT(0) FROM items WHERE user_id=@id AND room_id=''");
                    dbClient.addParameter("id", client.GetHabbo().Id);
                    int lol = dbClient.getInteger();
                    if (lol >= 5000)
                        client.SendNotif("You are close to the limit for items in your inventory!\n"
                    + "The maximum is currently 8000 items, you have " + lol + " items loaded in your inventory. \nPlease note that we are not responsible for crashing because of too big inventories!");
                }
            }
            this.quests = data.quests;

            this.Messenger = new HabboMessenger(Id);
            this.Messenger.Init(data.friends, data.requests);
            this.FriendCount = Convert.ToUInt32(data.friends.Count);
            this.SpectatorMode = false;
            this.WasSpectator = false;
            this.Disconnected = false;
            this.UsersRooms = data.rooms;
            this.Relationships = data.Relations;
        }
Пример #9
0
        internal bool SetWallItem(GameClient Session, RoomItem Item)
        {
            if (!Item.IsWallItem || mWallItems.ContainsKey(Item.Id))
                return false;
            if (mFloorItems.ContainsKey(Item.Id))
            {
                Session.SendNotif(LanguageLocale.GetValue("room.itemplaced"));
                return true;
            }
            Item.Interactor.OnPlace(Session, Item);

            if (Item.GetBaseItem().InteractionType == InteractionType.dimmer)
            {
                if (room.MoodlightData == null)
                {
                    room.MoodlightData = new MoodlightData(Item.Id);
                    Item.ExtraData = room.MoodlightData.GenerateExtraData();
                }
            }

            mWallItems.Add(Item.Id, Item);
            AddItem(Item);

            ServerMessage Message = new ServerMessage(Outgoing.AddWallItemToRoom);
            Item.Serialize(Message);
            Message.AppendString(room.Owner);
            room.SendMessage(Message);

            return true;
        }
Пример #10
0
        internal bool SetFloorItem(GameClient Session, RoomItem Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses)
        {
            bool NeedsReAdd = false;
            if (!newItem)
                NeedsReAdd = room.GetGameMap().RemoveFromMap(Item);
            Dictionary<int, ThreeDCoord> AffectedTiles = Gamemap.GetAffectedTiles(Item.GetBaseItem().Length, Item.GetBaseItem().Width, newX, newY, newRot);

            if (!room.GetGameMap().ValidTile(newX, newY) || room.GetGameMap().SquareHasUsers(newX, newY) && !Item.GetBaseItem().IsSeat)
            {
                if (NeedsReAdd)
                {
                    AddItem(Item);
                    room.GetGameMap().AddToMap(Item);
                }
                return false;
            }

            foreach (ThreeDCoord Tile in AffectedTiles.Values)
            {
                if (!room.GetGameMap().ValidTile(Tile.X, Tile.Y) || (room.GetGameMap().SquareHasUsers(Tile.X, Tile.Y) && !Item.GetBaseItem().IsSeat))
                {
                    if (NeedsReAdd)
                    {
                        AddItem(Item);
                        room.GetGameMap().AddToMap(Item);
                    }
                    return false;
                }
                /*if (!newItem)
                {
                    List<RoomItem> Items = room.GetGameMap().GetRoomItemForSquare(Tile.X, Tile.Y);
                    foreach (RoomItem i in Items)
                    {
                        if (!i.GetBaseItem().Stackable)
                        {
                            room.GetRoomItemHandler().SetFloorItem(Session, Item, Item.GetX, Item.GetY, newRot, false, false, true);
                            return false;
                        }
                    }
                }*/

            }

            // Start calculating new Z coordinate
            Double newZ = room.GetGameMap().Model.SqFloorHeight[newX, newY];

            if (!OnRoller)
            {
                // Is the item trying to stack on itself!?
                //if (Item.Rot == newRot && Item.GetX == newX && Item.GetY == newY && Item.GetZ != newZ)
                //{
                //    if (NeedsReAdd)
                //        AddItem(Item);
                //    return false;
                //}

                // Make sure this tile is open and there are no users here
                if (room.GetGameMap().Model.SqState[newX, newY] != SquareState.OPEN && !Item.GetBaseItem().IsSeat)
                {
                    if (NeedsReAdd)
                    {
                        AddItem(Item);
                        if (newItem)
                        room.GetGameMap().AddToMap(Item);
                    }
                    return false;
                }

                foreach (ThreeDCoord Tile in AffectedTiles.Values)
                {
                    if (room.GetGameMap().Model.SqState[Tile.X, Tile.Y] != SquareState.OPEN && !Item.GetBaseItem().IsSeat)
                    {
                        if (NeedsReAdd)
                        {
                            AddItem(Item);
                            room.GetGameMap().AddToMap(Item);
                        }
                        return false;
                    }
                }

                // And that we have no users
                if (!Item.GetBaseItem().IsSeat && !Item.IsRoller)
                {
                    foreach (ThreeDCoord Tile in AffectedTiles.Values)
                    {
                        if (room.GetGameMap().GetRoomUsers(new Point(Tile.X, Tile.Y)).Count > 0)
                        {
                            if (NeedsReAdd)
                            {
                                AddItem(Item);
                                room.GetGameMap().AddToMap(Item);
                            }
                            return false;
                        }
                    }
                }
            }

            // Find affected objects
            List<RoomItem> ItemsOnTile = GetFurniObjects(newX, newY);
            List<RoomItem> ItemsAffected = new List<RoomItem>();
            List<RoomItem> ItemsComplete = new List<RoomItem>();

            foreach (ThreeDCoord Tile in AffectedTiles.Values)
            {
                List<RoomItem> Temp = GetFurniObjects(Tile.X, Tile.Y);

                if (Temp != null)
                {
                    ItemsAffected.AddRange(Temp);
                }
            }

            ItemsComplete.AddRange(ItemsOnTile);
            ItemsComplete.AddRange(ItemsAffected);

            if (!OnRoller)
            {
                // Check for items in the stack that do not allow stacking on top of them
                foreach (RoomItem I in ItemsComplete)
                {
                    if (I == null)
                        continue;

                    if (I.Id == Item.Id)
                    {
                        continue;
                    }

                    if (I.GetBaseItem() == null)
                        continue;

                    if (!I.GetBaseItem().Stackable)
                    {
                        if (NeedsReAdd)
                        {
                            AddItem(Item);
                            room.GetGameMap().AddToMap(Item);
                        }
                        return false;
                    }
                }
            }

            //if (!Item.IsRoller)
            {
                // If this is a rotating action, maintain item at current height
                if (Item.Rot != newRot && Item.GetX == newX && Item.GetY == newY)
                {
                    newZ = Item.GetZ;
                }

                // Are there any higher objects in the stack!?
                foreach (RoomItem I in ItemsComplete)
                {
                    if (I.Id == Item.Id)
                    {
                        continue; // cannot stack on self
                    }

                    if (I.TotalHeight > newZ)
                    {
                        newZ = I.TotalHeight;
                    }
                }
            }

            // Verify the rotation is correct
            if (newRot != 0 && newRot != 2 && newRot != 4 && newRot != 6 && newRot != 8 && Item.GetBaseItem().InteractionType != InteractionType.mannequin)
            {
                newRot = 0;
            }

            //Item.GetX = newX;
            //Item.GetY = newY;
            //Item.GetZ = newZ;

            Item.Rot = newRot;
            int oldX = Item.GetX;
            int oldY = Item.GetY;
            Item.SetState(newX, newY, newZ, AffectedTiles);

            if (!OnRoller && Session != null)
                Item.Interactor.OnPlace(Session, Item);

            if (newItem)
            {
                if (mFloorItems.ContainsKey(Item.Id))
                {
                    if (Session != null)
                        Session.SendNotif(LanguageLocale.GetValue("room.itemplaced"));

                    //Remove from map!!!
                    return true;
                }
                /*else if (mFloorItems.ContainsKey(Item.Id) && Item.MagicRemove)
                {
                    RemoveFurniture(Session, Item.Id);
                    if (mFloorItems.ContainsKey(Item.Id))
                    {
                        Console.WriteLine("lul?");
                        mFloorItems.Remove(Item.Id);
                    }
                }*/

                //using (DatabaseClient dbClient = SilverwaveEnvironment.GetDatabase().GetClient())
                //{
                //    dbClient.addParameter("extra_data", Item.ExtraData);
                //    dbClient.runFastQuery("INSERT INTO room_items (id,room_id,base_item,extra_data,x,y,z,rot,wall_pos) VALUES ('" + Item.Id + "','" + RoomId + "','" + Item.BaseItem + "',@extra_data,'" + Item.GetX + "','" + Item.GetY + "','" + Item.GetZ + "','" + Item.Rot + "','')");
                //}
                //if (mRemovedItems.ContainsKey(Item.Id))
                //    mRemovedItems.Remove(Item.Id);
                //if (mAddedItems.ContainsKey(Item.Id))
                //    return false;

                //mAddedItems.Add(Item.Id, Item);

                if (Item.IsFloorItem && !mFloorItems.ContainsKey(Item.Id))
                    mFloorItems.Add(Item.Id, Item);
                else if (Item.IsWallItem && !mWallItems.ContainsKey(Item.Id))
                    mWallItems.Add(Item.Id, Item);

                AddItem(Item);

                if (sendMessage)
                {
                    ServerMessage Message = new ServerMessage(Outgoing.AddFloorItemToRoom);
                    Item.Serialize(Message);
                    if (room.Group != null)
                        Message.AppendString(Session.GetHabbo().Username);
                    else
                        Message.AppendString(room.Owner);
                    room.SendMessage(Message);
                }
            }
            else
            {
                //using (DatabaseClient dbClient = SilverwaveEnvironment.GetDatabase().GetClient())
                //{
                //    dbClient.runFastQuery("UPDATE room_items SET x = '" + Item.GetX + "', y = '" + Item.GetY + "', z = '" + Item.GetZ + "', rot = '" + Item.Rot + "', wall_pos = '' WHERE id = '" + Item.Id + "' LIMIT 1");
                //}
                UpdateItem(Item);

                if (!OnRoller && sendMessage)
                {
                    ServerMessage Message = new ServerMessage(Outgoing.UpdateItemOnRoom);
                    Item.Serialize(Message);
                    //Message.AppendString(room.Owner);
                    room.SendMessage(Message);
                }

                if (Item.IsWired)
                {
                    room.GetWiredHandler().MoveWired(Item);
                }
            }
                room.GetGameMap().AddToMap(Item);

            if (Item.GetBaseItem().IsSeat)
                updateRoomUserStatuses = true;

            if (updateRoomUserStatuses)
                room.GetRoomUserManager().UpdateUserStatusses();

            return true;
        }
Пример #11
0
        internal RoomData CreateRoom(GameClient Session, string Name, string Model)
        {
            if (!roomModels.ContainsKey(Model))
            {
                Session.SendNotif(Model);
                Session.SendNotif(LanguageLocale.GetValue("room.modelmissing"));
                return null;
            }

            if (Name.Length < 3)
            {
                Session.SendNotif(LanguageLocale.GetValue("room.namelengthshort"));
                return null;
            }

            UInt32 RoomId = 0;

            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("INSERT INTO rooms (roomtype,caption,owner,model_name) VALUES ('private',@caption,@username,@model)");
                dbClient.addParameter("caption", Name);
                dbClient.addParameter("model", Model);
                dbClient.addParameter("username", Session.GetHabbo().Username);

                RoomId = (UInt32)dbClient.insertQuery();

            }

            RoomData newRoomData = GenerateRoomData(RoomId);
            Session.GetHabbo().UsersRooms.Add(newRoomData);

            return newRoomData;
        }
Пример #12
0
        public static Boolean Parse(GameClient Session, string Input)
        {
            if (!Input.StartsWith(":"))
            {
                return false;
            }

            Input = Input.Substring(1);
            string[] Params = Input.Split(' ');

            #region Commands
            switch (Params[0].ToLower())
            {
                #region User Commands
                #region ToDo (:todo)
                case "todo":
                    Session.SendNotifWithScroll("Lista de tareas:\r\n" +
                                                "- Nuevos Wired.\n" +
                                                "- Nueva Interfaz MT.\n" +
                                                "- Sistema de Guías\n" +
                                                "\n" +
                                                "¿Algún error encontrado? ¡Contacta con Custom!\r\n" +
                                                "");
                    return true;
                #endregion
                #region Commands (:commands)
                case "commands":
                case "cmds":
                    {
                        if (Session.GetHabbo().HasCmd("commands"))
                        {
                            DataTable data;
                            StringBuilder builder = new StringBuilder();

                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                dbClient.setQuery("SELECT command,params,description FROM fuse_cmds WHERE rank <= " + Session.GetHabbo().Rank + " ORDER BY command ASC");// LIMIT " + min + ",15");// + max+ "");
                                data = dbClient.getTable();
                            }

                            builder.Append("Estos son los comandos disponibles:\n");
                            foreach (DataRow row in data.Rows)
                            {
                                builder.Append(":" + Convert.ToString(row[0]) + " " + Convert.ToString(row[1]) + "\n - " + Convert.ToString(row[2]) + "\n");
                            }
                            Session.SendNotifWithScroll(builder.ToString());
                        }
                        return true;
                    }
                #endregion

                #region About (:about)
                case "about":
                case "info":
                    {
                        int UsersOnline = SilverwaveEnvironment.GetGame().GetClientManager().ClientCount;
                        int RoomsLoaded = SilverwaveEnvironment.GetGame().GetRoomManager().LoadedRoomsCount;
                        TimeSpan Uptime = DateTime.Now - SilverwaveEnvironment.ServerStarted;
                        Session.SendNotif("<b><font size='15'>PLUS EMULATOR R2</font></b>\n" +
                                          "\r\n" +
                                          "<b>Estadísticas</b>\r" +
                                          "- <b>Uptime: </b> " + Uptime.Minutes + " minutos, " + Uptime.Hours + (Uptime.Hours > 1 ? " horas" : " hora") + " y " + Uptime.Days + (Uptime.Days > 1 ? " días." : " día. \r") +
                                          "- <b>Conectados: </b> " + UsersOnline + "\r" +
                                          "- <b>Salas: </b> " + RoomsLoaded +
                                          "\r\n" +
                                          "<u>Greetings to:</u>\n\n" +
                                          "- <b>Custom</b> <i>(Dev)</i>\n" +
                                          "- <b>AKIIX</b> <i>(Dev)</i>\n" +
                                          "- <b>Skyblue</b> <i>(Dev)</i>\n" +
                                          "- <b>TDID</b> <i>(Wired)</i>\n" +
                                          "- <b>Meth0d</b> <i>(Base)</i>\n" +
                                          "\n\nThank you for using <b> Plus Emulator</b>." +
                                          "");
                        return true;
                    }
                #endregion

                #region Sit (:sit)
                case "sit":
                    {
                        if (Session.GetHabbo().HasCmd("sit"))
                        {
                            RoomUser user = null;
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (Params.Length == 2 && Session.GetHabbo().HasFuse("fuse_admin"))
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                if (Client != null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (user == null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            else
                            {
                                user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            //Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);

                            if (user.Statusses.ContainsKey("lie") || user.isLying || user.RidingHorse || user.IsWalking)
                            {
                                return true;
                            }

                            if (!user.Statusses.ContainsKey("sit"))
                            {
                                if ((user.RotBody % 2) == 0)
                                {
                                    if (user == null)
                                        return true;

                                    try
                                    {
                                        user.Statusses.Add("sit", "1.0");
                                        user.Z -= 0.35;
                                        user.isSitting = true;
                                        user.UpdateNeeded = true;
                                    }
                                    catch { }
                                }
                                else
                                {
                                    user.RotBody--;
                                    user.Statusses.Add("sit", "1.0");
                                    user.Z -= 0.35;
                                    user.isSitting = true;
                                    user.UpdateNeeded = true;
                                }
                            }
                            else if (user.isSitting == true)
                            {
                                user.Z += 0.35;
                                user.Statusses.Remove("sit");
                                user.Statusses.Remove("1.0");
                                user.isSitting = false;
                                user.UpdateNeeded = true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Lie (:lie)
                case "lie":
                case "lay":
                    {
                        if (Session.GetHabbo().HasCmd("lie"))
                        {
                            RoomUser user = null;
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (Params.Length == 2 && Session.GetHabbo().HasFuse("fuse_admin"))
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                if (Client != null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (user == null)
                                    user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            else
                            {
                                user = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            }
                            Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                            if (!room.GetGameMap().ValidTile(user.X + 2, user.Y + 2) && !room.GetGameMap().ValidTile(user.X + 1, user.Y + 1))
                            {
                                SendChatMessage(Session, "No estás en el lugar correcto para tumbarte.");
                                return true;
                            }

                            if (user.Statusses.ContainsKey("sit") || user.isSitting || user.RidingHorse || user.IsWalking)
                            {
                                return true;
                            }

                            if (!user.Statusses.ContainsKey("lay"))
                            {
                                if ((user.RotBody % 2) == 0)
                                {
                                    if (user == null)
                                        return true;

                                    try
                                    {
                                        user.Statusses.Add("lay", "1.0 null");
                                        user.Z -= 0.35;
                                        user.isLying = true;
                                        user.UpdateNeeded = true;
                                    }
                                    catch { }
                                }
                                else
                                {
                                    user.RotBody--;
                                    user.Statusses.Add("lay", "1.0 null");
                                    user.Z -= 0.35;
                                    user.isLying = true;
                                    user.UpdateNeeded = true;
                                }

                            }
                            else
                            {
                                user.Z += 0.35;
                                user.Statusses.Remove("lay");
                                user.Statusses.Remove("1.0");
                                user.isLying = false;
                                user.UpdateNeeded = true;
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Pickall (:pickall)
                case "pickall":
                    {
                        if (Session.GetHabbo().HasCmd("pickall"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                if (TargetRoom.Group != null)
                                {
                                    Session.SendNotif("No está permitido recoger todo en salas de grupo.");
                                    return true;
                                }

                                if (TargetRoom.ForSale)
                                {
                                    Session.SendNotif("No se permite recoger una sala que está en venta.");
                                    return true;
                                }

                                List<RoomItem> RemovedItems = TargetRoom.GetRoomItemHandler().RemoveAllFurniture(Session);

                                if (Session.GetHabbo().GetInventoryComponent() != null)
                                {
                                    Session.GetHabbo().GetInventoryComponent().AddItemArray(RemovedItems);
                                    Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
                                }
                            }
                            else
                            {
                                Session.SendNotif("Ha ocurrido un error.");
                            }
                        }
                        return true;
                    }
                #endregion

                #region ejectall (:ejectall)
                case "ejectall":
                    {
                        if (Session.GetHabbo().HasCmd("ejectall"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                if (TargetRoom.Group == null)
                                {
                                    Session.SendNotif("Esto es una sala de grupo.");
                                    return true;
                                }

                                if (TargetRoom.ForSale)
                                {
                                    Session.SendNotif("No se permite recoger una sala que está en venta.");
                                    return true;
                                }

                                List<RoomItem> RemovedItems = TargetRoom.GetRoomItemHandler().RemoveAllFurniture(Session);

                                if (Session.GetHabbo().GetInventoryComponent() != null)
                                {
                                    Session.GetHabbo().GetInventoryComponent().AddItemArray(RemovedItems);
                                    Session.GetHabbo().GetInventoryComponent().UpdateItems(false);
                                }
                            }
                            else
                            {
                                Session.SendNotif("Ha ocurrido un error.");
                            }
                        }
                        return true;
                    }
                #endregion

                #region Unload (:unload)
                case "unload":
                    {
                        if (Session.GetHabbo().HasCmd("unload"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(TargetRoom);
                                TargetRoom.RequestReload();
                            }
                        }
                        return true;
                    }
                #endregion

                #region Set Max (:setmax)
                case "setmax":
                    {
                        if (Session.GetHabbo().HasCmd("setmax"))
                        {
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "Debes poner un número válido.");
                                return true;
                            }

                            try
                            {
                                int Max = int.Parse(Params[1]);

                                if ((Max > 101 && Session.GetHabbo().Rank < 3))
                                {
                                    Session.SendNotif("El máximo de usuarios por sala son 100.");
                                    return true;
                                }
                                else if (Max < 10 && Session.GetHabbo().Rank < 3)
                                {
                                    Session.SendNotif("El mínimo de usuarios por sala son 10.");
                                    return true;
                                }

                                Room room = Session.GetHabbo().CurrentRoom;
                                room.UsersMax = Max;
                                room.SetMaxUsers(Max);
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region User Info (:userinfo)
                case "userinfo":
                case "ui":
                    {
                        if (Session.GetHabbo().HasCmd("userinfo"))
                        {
                            string username = Params[1];
                            bool UserOnline = true;
                            if (string.IsNullOrEmpty(username))
                            {
                                Session.SendNotif("Por favor, introduce un nombre de usuario.");
                                return true;
                            }

                            GameClient tTargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username);

                            if (tTargetClient == null || tTargetClient.GetHabbo() == null)
                            {
                                DataRow Row;
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("SELECT username, rank, online, id, motto, credits FROM users WHERE username=@user LIMIT 1");
                                    dbClient.addParameter("user", username);
                                    Row = dbClient.getRow();

                                    Session.SendNotif("Información de " + username + ":\r" +
                                "Rango: " + Row[1].ToString() + " \r" +
                                "ID: " + Row[3].ToString() + " \r" +
                                "Misión: " + Row[4].ToString() + " \r" +
                                "Créditos: " + Row[5].ToString() + " \r");
                                }
                                return true;
                            }
                            Habbo User = tTargetClient.GetHabbo();

                            //Habbo User = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(username).GetHabbo();
                            StringBuilder RoomInformation = new StringBuilder();

                            if (User.CurrentRoom != null)
                            {
                                RoomInformation.Append(" - SALA Nº [" + User.CurrentRoom.RoomId + "] - \r");
                                RoomInformation.Append("Dueño: " + User.CurrentRoom.Owner + "\r");
                                RoomInformation.Append("Nombre de la sala: " + User.CurrentRoom.Name + "\r");
                                RoomInformation.Append("Usuarios en la sala: " + User.CurrentRoom.UserCount + "/" + User.CurrentRoom.UsersMax);
                            }
                            Session.SendNotif("Información del usuario " + username + ":\r" +
                                "Rango: " + User.Rank + " \r" +
                                "Conectado: " + UserOnline.ToString() + " \r" +
                                "ID: " + User.Id + " \r" +
                                "Sala Actual: " + User.CurrentRoomId + " \r" +
                                "Misión: " + User.Motto + " \r" +
                                "Créditos: " + User.Credits + " \r" +
                                "Silenciado: " + User.Muted.ToString() + "\r" +
                                "\r\r" + RoomInformation.ToString());

                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Disable Diagonal (:disablediagonal)
                case "disablediagonal":
                case "disablediag":
                case "togglediagonal":
                    {
                        if (Session.GetHabbo().HasCmd("togglediagonal"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = Session.GetHabbo().CurrentRoom;

                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                if (TargetRoom.GetGameMap().DiagonalEnabled)
                                    TargetRoom.GetGameMap().DiagonalEnabled = false;
                                else
                                    TargetRoom.GetGameMap().DiagonalEnabled = true;

                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Freeze (:freeze)
                case "freeze":
                    {
                        if (Session.GetHabbo().HasCmd("freeze"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);
                            if (Target != null)
                                Target.Frozen = true;
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region unFreeze (:unfreeze)
                case "unfreeze":
                    {
                        if (Session.GetHabbo().HasCmd("unfreeze"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);
                            if (Target != null)
                                Target.Frozen = false;
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region SaveFurni (:savefurni)
                case "savefurni":
                case "save":
                    {
                        if (Session.GetHabbo().HasCmd("save"))
                        {
                            //using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            //Session.GetHabbo().CurrentRoom.GetRoomItemHandler().SaveFurniture(dbClient);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Set Speed (:setspeed)
                case "setspeed":
                    {
                        if (Session.GetHabbo().HasCmd("setspeed"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom != null && TargetRoom.CheckRights(Session, true))
                            {
                                try
                                {
                                    Session.GetHabbo().CurrentRoom.GetRoomItemHandler().SetSpeed(int.Parse(Params[1]));
                                }
                                catch { Session.SendNotif("¡Únicamente introduce valores numéricos!"); }
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Regenerate maps (:regenmaps)
                case "regenmaps":
                case "reloadmaps":
                case "fixroom":
                    {
                        if (Session.GetHabbo().HasCmd("regenmaps"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (TargetRoom == null)
                                return true;

                            if (!TargetRoom.CheckRights(Session, true))
                                return true;

                            TargetRoom.GetGameMap().GenerateMaps();
                            Session.SendNotif("Se ha recargado el mapa de la sala correctamente.");
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Empty Pets (:emptypets)
                case "emptypets":
                case "removepets":
                    {
                        if (Session.GetHabbo().HasCmd("emptypets"))
                        {
                            Session.SendNotif("Todas tus mascotas han sido borradas de tu inventario.");
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Redeem Credits (:convertcredits)
                case "convertcredits":
                    {
                        if (Session.GetHabbo().HasCmd("convertcredits"))
                        {
                            try
                            {
                                Session.GetHabbo().GetInventoryComponent().Redeemcredits(Session);
                                SendChatMessage(Session, "Todos los créditos de tu inventario han sido cangeados para volverse monedas.");
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e);
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Mute Bots (:mutebots)
                case "mutebots":
                case "mutepets":
                    {
                        if (Session.GetHabbo().HasCmd("mutebots"))
                        {
                            if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true))
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;
                                if (Room.MutedBots)
                                    Room.MutedBots = false;
                                else
                                    Room.MutedBots = true;

                                SendChatMessage(Session, "Los BOT de tu sala han sido silenciados.");
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Dance (:dance)
                case "dance":
                    {
                        int DanceId = 1;
                        if (Params.Length > 1)
                        {
                            if (int.TryParse(Params[1], out DanceId))
                            {
                                DanceId = 1;
                            }
                        }

                        if (DanceId > 4 || DanceId < 0)
                        {
                            Session.SendWhisper("El ID del baile debe de estar comprimido entre 0 y 4.");
                            DanceId = 0;
                        }

                        ServerMessage Response = new ServerMessage();
                        Response.Init(Outgoing.Dance);
                        Response.AppendInt32(Session.CurrentRoomUserID);
                        Response.AppendInt32(DanceId);
                        Session.GetHabbo().CurrentRoom.SendMessage(Response);
                        return true;
                    }
                #endregion

                #region DeleteGroup (:deletegroup)
                case "deletegroup":
                    {
                        if (Session.GetHabbo().HasCmd("deletegroup"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;

                            if (!Room.CheckRights(Session, true, false))
                            {
                                Session.SendNotif("¡Esta sala no es tuya!");
                                return true;
                            }

                            if (Params.Length == 1 || Params[1].ToLower() != "yes")
                            {
                                Session.SendNotif("¿Estás seguro de que quieres borrar este grupo?\n" +
                                    "Una vez lo hayas borrado no podrás recuperarlo más.\n\n" +
                                    "Si estás seguro, escribe ':deletegroup yes' (sin los '')");

                                return true;
                            }

                            if (Room.Group == null)
                            {
                                Session.SendNotif("Esta sala no contiene ningún grupo.");
                                return true;
                            }

                            Group Group = Room.Group;

                            foreach (GroupUser User in Group.Members.Values)
                            {
                                GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUserID(User.Id);

                                if (Client == null)
                                {
                                    continue;
                                }

                                Client.GetHabbo().UserGroups.Remove(User);
                                if (Client.GetHabbo().FavouriteGroup == Group.Id)
                                {
                                    Client.GetHabbo().FavouriteGroup = 0;
                                }
                            }

                            Room.RoomData.Group = null;
                            SilverwaveEnvironment.GetGame().GetGroupManager().DeleteGroup(Group.Id);
                            SilverwaveEnvironment.GetGame().GetRoomManager().UnloadRoom(Room);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region UI (:ui)

                case "changeui":
                    {
                        Session.GetHabbo().NewUISwitcher();
                        return true;
                    }

                #endregion
                #endregion

                #region VIP Commands
                #region Moonwalk (:moonwalk)
                case "moonwalk":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_moonwalk"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                                return true;

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            roomuser.moonwalkEnabled = !roomuser.moonwalkEnabled;

                            if (roomuser.moonwalkEnabled)
                                SendChatMessage(Session, "¡Moonwalk activado!");
                            else
                                SendChatMessage(Session, "¡Moonwalk desactivado!");
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        }
                        return true;
                    }
                #endregion

                #region Mimic (:mimic)
                case "mimic":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_mimic"))
                        {
                            string copyTarget = Params[1];

                            RoomUser Target = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(copyTarget);
                            string gender = null;
                            string figure = null;
                            if (Target != null)
                            {

                                gender = Target.GetClient().GetHabbo().Gender;
                                figure = Target.GetClient().GetHabbo().Look;

                                //if (!AntiMutant.ValidateLook(figure, gender))
                                {
                                    //SendChatMessage(Session, "This figure appears to be invalid!");
                                    //  return true;
                                }
                                Session.GetHabbo().Gender = gender;
                                Session.GetHabbo().Look = figure;
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("UPDATE users SET gender = @gender, look = @look WHERE username = @username LIMIT 1");
                                    dbClient.addParameter("gender", gender);
                                    dbClient.addParameter("look", figure);
                                    dbClient.addParameter("username", Session.GetHabbo().Username);
                                    dbClient.runQuery();
                                }
                                Room Room = Session.GetHabbo().CurrentRoom;

                                if (Room == null)
                                {
                                    return true;
                                }

                                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                                if (User == null)
                                {
                                    return true;
                                }

                                Session.GetMessageHandler().GetResponse().Init(Outgoing.UpdateUserInformation);
                                Session.GetMessageHandler().GetResponse().AppendInt32(-1);
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look);
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower());
                                Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Motto);
                                Session.GetMessageHandler().GetResponse().AppendInt32(Session.GetHabbo().AchievementPoints);
                                Session.GetMessageHandler().SendResponse();

                                ServerMessage RoomUpdate = new ServerMessage(Outgoing.UpdateUserInformation);
                                RoomUpdate.AppendInt32(User.VirtualId);
                                RoomUpdate.AppendString(Session.GetHabbo().Look);
                                RoomUpdate.AppendString(Session.GetHabbo().Gender.ToLower());
                                RoomUpdate.AppendString(Session.GetHabbo().Motto);
                                RoomUpdate.AppendInt32(Session.GetHabbo().AchievementPoints);
                                Room.SendMessage(RoomUpdate);
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        return true;
                    }
                #endregion

                #region Push (:push)
                case "push":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_push"))
                        {
                            Room TargetRoom;
                            RoomUser TargetRoomUser;
                            RoomUser TargetRoomUser1;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "Debes introducir un nombre de usuario.");
                                return true;
                            }

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Convert.ToString(Params[1]));

                            if (TargetRoomUser == null)
                            {
                                SendChatMessage(Session, "¡No se ha podido encontrar al usuario!");
                                return true;
                            }

                            if (TargetRoomUser.GetUsername() == Session.GetHabbo().Username)
                            {
                                SendChatMessage(Session, "¿En serio quieres empujarte a ti mismo? ¡Masoquista!");
                                return true;
                            }

                            TargetRoomUser1 = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (TargetRoomUser1 == null || TargetRoomUser.TeleportEnabled)
                            {
                                return true;
                            }

                            //if ((TargetRoomUser.X == TargetRoomUser1.X - 1) || (TargetRoomUser.X == TargetRoomUser1.X + 1) || (TargetRoomUser.Y == TargetRoomUser1.Y - 1) || (TargetRoomUser.Y == TargetRoomUser1.Y + 1))
                            if (!((Math.Abs((int)(TargetRoomUser.X - TargetRoomUser1.X)) >= 2) || (Math.Abs((int)(TargetRoomUser.Y - TargetRoomUser1.Y)) >= 2)))
                            {
                                if (TargetRoomUser1.RotBody == 4)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1); }

                                if (TargetRoomUser1.RotBody == 0)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1); }

                                if (TargetRoomUser1.RotBody == 6)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y); }

                                if (TargetRoomUser1.RotBody == 2)
                                { TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y); }

                                if (TargetRoomUser1.RotBody == 3)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1);
                                }

                                if (TargetRoomUser1.RotBody == 1)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1);
                                }

                                if (TargetRoomUser1.RotBody == 7)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1);
                                }

                                if (TargetRoomUser1.RotBody == 5)
                                {
                                    TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y);
                                    TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1);
                                }

                                TargetRoomUser.UpdateNeeded = true;
                                TargetRoomUser1.UpdateNeeded = true;
                                TargetRoomUser1.SetRot(Rotation.Calculate(TargetRoomUser1.X, TargetRoomUser1.Y, TargetRoomUser.GoalX, TargetRoomUser.GoalY));
                                TargetRoom.SendMessage(new ChatComposer(TargetRoomUser1.VirtualId, "*Empuja a " + Params[1] + "*", 0, TargetRoomUser1.LastBubble, -1));
                            }
                            else
                            {
                                SendChatMessage(Session, Params[1] + " no está lo suficientemente cerca.");
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);

                        return true;
                    }
                #endregion

                #region Pull (:pull)
                case "pull":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_pull"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                            {
                                return true;
                            }

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (roomuser == null)
                            {
                                return true;
                            }
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "No se ha podido encontrar el usuario.");
                                return true;
                            }

                            GameClient Target = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (Target == null)
                                return true;

                            if (Target.GetHabbo().Id == Session.GetHabbo().Id)
                            {
                                SendChatMessage(Session, "¡No te puedes atraer a ti mismo!");
                                return true;
                            }
                            RoomUser TargetUser = room.GetRoomUserManager().GetRoomUserByHabbo(Target.GetHabbo().Id);
                            if (TargetUser == null)
                                return true;

                            if (TargetUser.TeleportEnabled)
                                return true;
                            if (!((Math.Abs((int)(roomuser.X - TargetUser.X)) >= 3) || (Math.Abs((int)(roomuser.Y - TargetUser.Y)) >= 3)))
                            {
                                room.SendMessage(new ChatComposer(roomuser.VirtualId, "*Atrae a " + Params[1] + "*", 0, roomuser.LastBubble, -1));
                                if (roomuser.RotBody % 2 != 0)
                                    roomuser.RotBody--;

                                if (roomuser.RotBody == 0)
                                    TargetUser.MoveTo(roomuser.X, roomuser.Y - 1);
                                else if (roomuser.RotBody == 2)
                                    TargetUser.MoveTo(roomuser.X + 1, roomuser.Y);
                                else if (roomuser.RotBody == 4)
                                    TargetUser.MoveTo(roomuser.X, roomuser.Y + 1);
                                else if (roomuser.RotBody == 6)
                                    TargetUser.MoveTo(roomuser.X - 1, roomuser.Y);

                            }
                            else
                            {
                                SendChatMessage(Session, "El usuario al que intentas atraer está muy lejos.");
                                return true;
                            }
                        }
                        else
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        return true;
                    }
                #endregion

                #region Enable (:enable)
                case "enable":
                case "effect":
                    {
                        if (Session.GetHabbo().HasFuse("fuse_cmd_enable"))
                        {
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "Debes de introducir una ID para el efecto.");
                                return true;
                            }
                            RoomUser TargetRoomUser = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);
                            if (TargetRoomUser.RidingHorse)
                            {
                                SendChatMessage(Session, "¡No puedes activar un efecto mientras estás montando a caballo!");
                                return true;
                            }
                            else if (TargetRoomUser.team != Team.none)
                            {
                                return true;
                            }
                            else if (TargetRoomUser.isLying)
                                return true;

                            string Effect = Params[1];
                            double EffectID;
                            bool isNum = double.TryParse(Effect, out EffectID);
                            if (isNum)
                            {
                                //if(EffectID != 97)
                                Session.GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(int.Parse(EffectID.ToString()));
                            }
                            else
                            {
                                SendChatMessage(Session, "¡Escribe números para referirte a los efectos!");
                                return true;
                            }
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE);
                        }
                        return true;
                    }
                #endregion

                #region Change name (:flagme)
                case "flagme":
                    {
                        /*if (Session.GetHabbo().HasFuse("fuse_cmd_flagme"))
                        {
                            SendChatMessage(Session, "In order to change your name, click yourself and choose \"Change Name\"");
                            SendChatMessage(Session, "You can only change your name every 12 hours.");
                        }
                        else
                        {
                            SendChatMessage(Session, SilverwaveStaticSettings.VIP_MESSAGE_2);
                        }
                        return true;*/
                        return false;
                    }
                #endregion

                #region Empty (:empty)
                case "emptyitems":
                case "empty":
                    {
                        if (Session.GetHabbo().HasCmd("emptyitems"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¿Estás seguro de que quieres vaciar todo tu inventario?\n" +
                                 "Para realizar la acción escribe \":emptyitems yes\". \n\nUna vez hecho eso no habrá vuelta atrás.\nSi no quieres vaciarlo sólo cierra esta ventana.\n\n" +
                                 "¡ATENCIÓN! Si tienes más de 3000 objetos deberás tener en cuenta que TODOS serán borrados.");
                                return true;
                            }
                            else
                            {
                                if (Params.Length == 2)
                                {
                                    if (Params[1].ToString() == "yes")
                                    {
                                        //GameClient Client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                                        Session.GetHabbo().GetInventoryComponent().ClearItems();
                                        Session.SendNotif("Has vaciado satisfactoriamente tu inventario\n¡Qué ligero se siente! ¿No?");
                                        return true;
                                    }
                                }
                            }

                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #endregion

                #region Moderation Commands
                #region Kick (:kick)
                case "alert":
                    {
                        if (Session.GetHabbo().HasCmd("alert"))
                        {
                            if (Params[1] == null || Params[2] == null)
                            {
                                Session.SendNotif("Has escrito un mensaje demasiado corto.");
                                return true;
                            }
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
                            Room TargetRoom = TargetClient.GetHabbo().CurrentRoom;

                            if (TargetClient == null)
                            {
                                Session.SendNotif("El usuario no se ha podido encontrar.");
                                return true;
                            }

                            TargetClient.SendNotif(Params[2] + " -" + Session.GetHabbo().Username);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                case "kick":
                    {
                        if (Session.GetHabbo().HasCmd("kick"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
                            Room TargetRoom = TargetClient.GetHabbo().CurrentRoom;

                            if (TargetClient == null)
                            {
                                Session.SendNotif("El usuario no se ha podido encontrar.");
                                return true;
                            }

                            if (Session.GetHabbo().Rank <= TargetClient.GetHabbo().Rank)
                            {
                                Session.SendNotif("No se permite expulsar a este usuario, tal vez este tenga un rango superior al tuyo.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().CurrentRoomId < 1)
                            {
                                Session.SendNotif("Este usuario no se encuentra en la sala.");
                                return true;
                            }

                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(TargetClient.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            TargetRoom.GetRoomUserManager().RemoveUserFromRoom(TargetClient, true, false);
                            TargetClient.CurrentRoomUserID = -1;

                            if (Params.Length > 2)
                            {
                                TargetClient.SendNotif("Un moderador te ha expulsado de la sala por la siguiente razón: " + MergeParams(Params, 2));
                            }
                            else
                            {
                                TargetClient.SendNotif("Un moderador te ha expulsado de la sala sin razón.");
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Room Mute (:roommute) / Room unmute (:roomunmute)
                case "roommute":
                    {
                        if (Session.GetHabbo().HasCmd("roommute") || Session.GetHabbo().HasCmd("roomunmute"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (!Session.GetHabbo().CurrentRoom.RoomMuted)
                                Session.GetHabbo().CurrentRoom.RoomMuted = true;

                            string Msg = MergeParams(Params, 1);

                            ServerMessage Message = new ServerMessage();
                            Message.Init(Outgoing.SendNotif);
                            Message.AppendString("Esta sala ha sido silenciada por la siguiente razón:\n" + Msg);
                            Message.AppendString("");
                            TargetRoom.SendMessage(Message);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "La sala ha sido silenciada.", "La sala ha sido silenciada");
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                case "roomunmute":
                    {
                        if (Session.GetHabbo().HasCmd("roomunmute"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom.RoomMuted)
                                Session.GetHabbo().CurrentRoom.RoomMuted = false;
                            ServerMessage Message = new ServerMessage();
                            Message.Init(Outgoing.SendNotif);
                            Message.AppendString("¡Ya puedes hablar!");
                            Message.AppendString("");
                            TargetRoom.SendMessage(Message);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Mute (:mute)
                case "mute":
                    {
                        if (Session.GetHabbo().HasCmd("mute"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendNotif("El usuario no se puede encontrar.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= 4)
                            {
                                Session.SendNotif("No tienes suficientes permisos para (des)silenciar a este usuario..");
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Mute", "Muted user");
                            TargetClient.GetHabbo().Mute();
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Flood (:flood)
                case "flood":
                    {
                        if (Session.GetHabbo().HasCmd("flood"))
                        {
                            string TargetUser = null;
                            GameClient TargetClient = null;

                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (Params.Length != 3)
                            {
                                Session.SendNotif("Debes de incluir un nombre de usuario y una duración para silenciar a un usuario.");
                                return true;
                            }
                            TargetClient.GetHabbo().FloodTime = SilverwaveEnvironment.GetUnixTimestamp() + Convert.ToInt32(Params[2]);
                            ServerMessage Packet = new ServerMessage(Outgoing.FloodFilter);
                            Packet.AppendInt32(Convert.ToInt32(Params[2]));
                            TargetClient.SendMessage(Packet);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Unmute (:unmute)
                case "unmute":
                    {
                        if (Session.GetHabbo().HasCmd("unmute"))
                        {

                            string TargetUser = null;
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetUser = Params[1];
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendNotif("No se ha podido encontrar al usuario.");
                                return true;
                            }

                            if (!TargetClient.GetHabbo().Muted)
                            {
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "El usuario ha sido silenciado satisfactoriamente.", "El usuario ha sido desilenciado satisfactoriamente.");

                            TargetClient.GetHabbo().Unmute();
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Summon (:summon)
                case "summon":
                case "come":
                    {
                        if (Session.GetHabbo().HasCmd("summon"))
                        {
                            if (Params.Length < 1)
                            {
                                Session.SendNotif("No has especificado ningún nombre de usuario.");
                                return true;

                            }
                            string username = Params[1];
                            GameClient client = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(username);
                            if (client == null)
                            {
                                Session.SendNotif("No existe ningún nombre de usuario conectado bajo el nombre de \"" + username + "\"");
                                return true;
                            }
                            client.SendNotif("Has sido traído a la sala actual por " + Session.GetHabbo().Username);
                            RoomData Room = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Session.GetHabbo().CurrentRoomId);
                            Room.SerializeRoomData(new ServerMessage(), (client.GetHabbo().CurrentRoom == null), client);
                            //client.GetMessageHandler().PrepareRoomForUser(Session.GetHabbo().CurrentRoomId, "");
                            client.SendMessage(new RoomForwardComposer(false, Session.GetHabbo().CurrentRoomId));
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Follow (:follow)
                case "follow":
                case "stalk":
                    {
                        if (Session.GetHabbo().HasCmd("follow"))
                        {
                            GameClient TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null || TargetClient.GetHabbo() == null)
                            {
                                Session.SendWhisper("No has podido seguir al usuario solicitado porque no está conectado.");
                                return true;
                            }

                            if (TargetClient == null || TargetClient.GetHabbo().CurrentRoom == null || TargetClient.GetHabbo().CurrentRoom == Session.GetHabbo().CurrentRoom)
                            {
                                Session.SendWhisper("El usuario no se encuentra en ninguna sala.");
                                return true;
                            }

                            Session.SendMessage(new RoomForwardComposer(false, TargetClient.GetHabbo().CurrentRoom.RoomId));

                            //Session.GetMessageHandler().PrepareRoomForUser(TargetClient.GetHabbo().CurrentRoom.RoomId, "");
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Room kick (:roomkick)
                case "roomkick":
                    {
                        if (Session.GetHabbo().HasCmd("roomkick"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            string ModMsg = MergeParams(Params, 1);

                            RoomKick kick = new RoomKick(ModMsg, (int)Session.GetHabbo().Rank);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "EXPULSIÓN GENERAL DE LA SALA", "La sala entera ha sido vaciada sin razón.");
                            TargetRoom.QueueRoomKick(kick);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Super ban (:superban)
                case "superban":
                    {
                        if (Session.GetHabbo().HasCmd("superban"))
                        {
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null)
                            {
                                Session.SendNotif("El usuario solicitado no se ha podido banear ya que no existe.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= Session.GetHabbo().Rank)
                            {
                                Session.SendNotif("No tienes los suficientes permisos para banear a ese usuario.");
                                return true;
                            }

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Ban", "Long ban forever");

                            SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetClient, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), false, false);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Show Whispers (:togglewhisper)
                case "togglewhisper":
                    {
                        if (Session.GetHabbo().HasCmd("togglewhisper"))
                        {
                            /*if (Session.GetHabbo().ShowRoomWhispers)
                            {
                                Session.GetHabbo().ShowRoomWhispers = false;
                                SendChatMessage(Session, "Room Whispers viewing disabled.");
                            }
                            else
                            {
                                Session.GetHabbo().ShowRoomWhispers = true;
                                SendChatMessage(Session, "Room Whispers viewing enabled.");
                            }*/
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #endregion

                #region Administration Commands
                #region Fast walk
                case "fastwalk":
                    {
                        if (Session.GetHabbo().HasCmd("fastwalk"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (!User.FastWalking)
                            {
                                User.FastWalking = true;
                            }
                            else
                            {
                                User.FastWalking = false;
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region BelCredits (:BelCredits)
                case "BelCredits":
                    {
                        if (Session.GetHabbo().Username == "Custom" || Session.GetHabbo().Username == "Custom")
                        {

                            GameClient TargetClient = null;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().BelCredits = TargetClient.GetHabbo().BelCredits + creditsToAdd;
                                    TargetClient.GetHabbo().UpdateCreditsBalance();
                                    return true;
                                }
                                else
                                {
                                    Session.SendWhisper("Introduzca sólo numeros.");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendWhisper("No se ha podido encontrar el nombre de usuario solicitado.");
                                return true;
                            }

                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Promote room
                case "promoteroom":
                    {
                        if (Session.GetHabbo().HasCmd("promoteroom"))
                        {
                            if (Params[1] == null)
                            {
                                Session.SendNotif("Debes de introducir un nombre y una descripción para el evento.");
                                return true;
                            }

                            int Time;

                            if (!int.TryParse(Params[1], out Time))
                            {
                                Session.SendNotif("El comando debe de ser ejecutado así: :promoteroom duración (el tiempo de duración del evento)).");
                                return true;
                            }

                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                            SilverwaveEnvironment.GetGame().GetRoomEvents().AddNewEvent(Room.RoomId, "¡Evento!", "Esta sala está teniendo un evento, ¡pásalo en grande!", Session);
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Mass Dance (:massdance)
                case "massdance":
                    {
                        if (Session.GetHabbo().HasCmd("massdance") || Session.GetHabbo().Username == "Custom")
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();

                            int DanceId = Convert.ToInt32(Params[1]);
                            if (DanceId > 4)
                            {
                                Session.SendNotif("Esta ID no es correcta.");
                                return true;
                            }

                            if (DanceId > 0 && User.CarryItemID > 0)
                            {
                                User.CarryItem(0);
                            }

                            User.DanceId = DanceId;
                            foreach (RoomUser user in users)
                            {
                                ServerMessage DanceMessage = new ServerMessage(Outgoing.Dance);
                                DanceMessage.AppendInt32(user.VirtualId);
                                DanceMessage.AppendInt32(DanceId);
                                Room.SendMessage(DanceMessage);
                                user.DanceId = DanceId;
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Go Boom (:goboom)
                case "goboom":
                    {
                        if (Session.GetHabbo().HasCmd("goboom"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser user in users)
                            {
                                user.ApplyEffect(108);
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Mass Enable (:massenable)
                case "massenable":
                    {
                        if (Session.GetHabbo().HasCmd("massenable"))
                        {
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser user in users)
                            {
                                if (user.RidingHorse)
                                    continue;
                                user.ApplyEffect(Convert.ToInt32(Params[1]));
                            }
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Test
                case "test":
                    {
                        Session.SendWhisper("¡Este hotel está usando mi puto emulador :o!");

                        ServerMessage derp;
                        if (Session.GetHabbo().Username == "Custom")
                        {
                            switch (Params[0])
                            {
                                case "1":
                                    derp = new ServerMessage(Outgoing.WiredTrigger);
                                    derp.AppendBoolean(false);
                                    derp.AppendInt32(5);
                                    derp.AppendInt32(0);
                                    derp.AppendInt32(5050);
                                    derp.AppendInt32(1290);
                                    derp.AppendString("");
                                    derp.AppendInt32(0);
                                    derp.AppendInt32(11);
                                    derp.AppendInt32(0);
                                    Session.SendMessage(derp);
                                    break;
                                case "2":

                                    break;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Give Credits (:credits)
                case "givecredits":
                case "credits":
                case "coins":
                    {
                        if (Session.GetHabbo().HasCmd("coins"))
                        {

                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().Credits = TargetClient.GetHabbo().Credits + creditsToAdd;
                                    TargetClient.GetHabbo().UpdateCreditsBalance();
                                    TargetClient.SendNotif(Session.GetHabbo().Username + LanguageLocale.GetValue("coins.awardmessage1") + creditsToAdd.ToString() + LanguageLocale.GetValue("coins.awardmessage2"));
                                    Session.SendNotif(LanguageLocale.GetValue("coins.updateok"));
                                    return true;
                                }
                                else
                                {
                                    Session.SendNotif("¡Sólo puedes introducir valores numéricos! (Pueden ser negativos y positivos)");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendNotif("No se ha podido encontrar al usuario seleccionado.");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Give Pixels (:pixels)
                case "pixels":
                case "givepixels":
                    {
                        if (Session.GetHabbo().HasCmd("pixels"))
                        {

                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                int creditsToAdd;
                                if (int.TryParse(Params[2], out creditsToAdd))
                                {
                                    TargetClient.GetHabbo().ActivityPoints = TargetClient.GetHabbo().ActivityPoints + creditsToAdd;
                                    Session.GetHabbo().NotifyNewPixels(creditsToAdd);
                                    TargetClient.GetHabbo().UpdateActivityPointsBalance();
                                    TargetClient.SendNotif(Session.GetHabbo().Username + LanguageLocale.GetValue("pixels.awardmessage1") + creditsToAdd.ToString() + LanguageLocale.GetValue("pixels.awardmessage2"));
                                    Session.SendNotif(LanguageLocale.GetValue("pixels.updateok"));
                                    return true;
                                }
                                else
                                {
                                    Session.SendNotif("¡Sólo puedes introducir valores numéricos! (Pueden ser negativos y positivos)");
                                    return true;
                                }
                            }
                            else
                            {
                                Session.SendNotif("No se ha podido encontrar al usuario seleccionado.");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Hotel Alert (:ha)
                case "ha":
                    if (Session.GetHabbo().HasCmd("ha"))
                    {
                        string Notice = MergeParams(Params, 1);
                        ServerMessage HotelAlert = new ServerMessage(Outgoing.BroadcastMessage);
                        HotelAlert.AppendString(Notice + "\r\n" + "- " + Session.GetHabbo().Username);
                        SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert);
                        SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Notice + "]");
                    }
                    else
                    {
                        return false;
                    }
                    return true;
                #endregion

                #region Shutdown (:shutdown)
                case "shutdown":
                    {
                        if (Session.GetHabbo().HasCmd("shutdown"))
                        {
                            Task ShutdownTask = new Task(SilverwaveEnvironment.PerformShutDown);
                            ShutdownTask.Start();
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Shutdown", "Issued shutdown command");
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Disconnect (:kill)
                case "disconnect":
                case "kill":
                case "dc":
                    {
                        if (Session.GetHabbo().HasCmd("kill"))
                        {
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

                            if (TargetClient == null)
                            {
                                Session.SendNotif("El usuario no ha sido encontrado.");
                                return true;
                            }

                            if (TargetClient.GetHabbo().Rank >= 4 && !Session.GetHabbo().HasFuse("fuse_disconnect_anyone"))
                            {
                                Session.SendNotif("No tienes permisos para desconectar a ese usuario.");
                                return true;
                            }
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Disconnect", "User disconnected by user");

                            TargetClient.GetConnection().Dispose();

                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                #endregion

                #region Position (:coords)
                case "coord":
                case "coords":
                case "position":
                    {
                        if (Session.GetHabbo().HasCmd("coords"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser TargetRoomUser = null;
                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            if (TargetRoom == null)
                            {
                                return true;
                            }

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                            if (TargetRoomUser == null)
                            {
                                return true;
                            }

                            Session.SendNotif("X: " + TargetRoomUser.X + "\n - Y: " + TargetRoomUser.Y + "\n - Z: " + TargetRoomUser.Z + "\n - Rotación: " + TargetRoomUser.RotBody + ", sqState: " + TargetRoom.GetGameMap().GameMap[TargetRoomUser.X, TargetRoomUser.Y].ToString() + "\n\n - RoomID: " + Session.GetHabbo().CurrentRoomId);
                        }
                        return true;
                    }
                #endregion

                #region Teleport (:teleport)
                case "teleport":
                case "tele":
                    {
                        if (Session.GetHabbo().HasCmd("teleport"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            RoomUser TargetRoomUser = null;

                            TargetRoom = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            TargetRoomUser = TargetRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (TargetRoomUser.RidingHorse)
                            {
                                SendChatMessage(Session, "No te puedes teletransportar mientras montas a caballo.");
                                return true;
                            }
                            if (TargetRoomUser == null)
                                return true;

                            TargetRoomUser.TeleportEnabled = !TargetRoomUser.TeleportEnabled;

                            TargetRoom.GetGameMap().GenerateMaps();
                        }
                        return true;
                    }
                #endregion

                #region Update (:update_x)
                #region Update Catalog
                case "update_catalog":
                case "reload_catalog":
                case "recache_catalog":
                case "refresh_catalog":
                case "update_catalogue":
                case "reload_catalogue":
                case "recache_catalogue":
                case "refresh_catalogue":
                    {
                        if (Session.GetHabbo().HasCmd("update_catalog"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetCatalog().Initialize(dbClient);
                            }
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(new ServerMessage(Outgoing.UpdateShop));

                            Session.SendNotif("¡El catálogo del hotel ha sido actualizado satisfactoriamente!");
                            return true;
                        }
                        return true;
                    }
                #endregion

                #region Update Items
                case "update_items":
                case "reload_items":
                case "recache_items":
                case "refresh_items":
                    {
                        if (Session.GetHabbo().HasCmd("update_items"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetItemManager().LoadItems(dbClient);
                            }
                            Session.SendNotif("Las definiciones de los objetos han sido actualizadas satisfactoriamente!");
                        }

                        return true;
                    }
                #endregion

                #region Update Filter
                case "update_filter":
                case "reload_filter":
                case "recache_filter":
                case "refresh_filter":
                    {
                        if (Session.GetHabbo().HasCmd("update_filter"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                LanguageLocale.InitSwearWord(dbClient);
                            }
                        }
                        return true;
                    }
                #endregion

                #region Update Navigator
                case "update_navigator":
                case "reload_navigator":
                case "recache_navigator":
                case "refresh_navigator":
                    {
                        if (Session.GetHabbo().HasCmd("update_navigator"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetNavigator().Initialize(dbClient);
                            }
                            Session.SendNotif("¡Se ha actualizado satisfactoriamente el navegador del hotel!");
                        }
                        return true;
                    }
                #endregion

                #region Update Ranks
                case "update_ranks":
                case "reload_ranks":
                case "recache_ranks":
                case "refresh_ranks":
                    {
                        if (Session.GetHabbo().HasCmd("update_ranks"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                            {
                                SilverwaveEnvironment.GetGame().GetRoleManager().LoadRights(dbClient);
                            }
                            Session.SendNotif("Los rangos del hotel se han actualizado satisfactoriamente.");
                        }
                        return true;
                    }
                #endregion

                #region Update Settings
                case "update_settings":
                case "reload_settings":
                case "recache_settings":
                case "refresh_settings":
                    {
                        if (Session.GetHabbo().HasCmd("update_settings"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                SilverwaveEnvironment.ConfigData = new ConfigData(dbClient);
                        }
                        return true;
                    }
                #endregion

                #region Update Groups
                case "update_groups":
                case "reload_groups":
                case "recache_groups":
                case "refresh_groups":
                    {
                        if (Session.GetHabbo().HasCmd("update_groups"))
                        {
                            SilverwaveEnvironment.GetGame().GetGroupManager().InitGroups();
                            Session.SendNotif("¡Los grupos han sido cargados de nuevo satisfactoriamente!");
                        }

                        return true;
                    }
                #endregion

                #region Update Bans
                case "update_bans":
                    {
                        if (Session.GetHabbo().HasCmd("update_bans"))
                        {
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                SilverwaveEnvironment.GetGame().GetBanManager().LoadBans(dbClient);

                            Session.SendNotif("Los baneos se han actualizado satisfactoriamente.");
                        }
                        return true;
                    }
                #endregion

                #region Update Quests
                case "update_quests":
                    {
                        if (Session.GetHabbo().HasCmd("update_quests"))
                        {
                            SilverwaveEnvironment.GetGame().GetQuestManager().Initialize(SilverwaveEnvironment.GetDatabaseManager().getQueryreactor());
                            Session.SendNotif("¡Se han actualizado las misiones y los retos satisfactoriamente!");
                        }
                        return true;
                    }
                #endregion
                #endregion

                #region Super Pull (:spull)
                case "spull":
                    {
                        if (Session.GetHabbo().HasCmd("spull"))
                        {
                            Room room = Session.GetHabbo().CurrentRoom;
                            if (room == null)
                            {
                                SendChatMessage(Session, "'No se encuentra la sala!");
                                return true;
                            }

                            RoomUser roomuser = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            if (roomuser == null)
                            {
                                SendChatMessage(Session, "¡No se encuentra al usuario!");
                                return true;
                            }
                            if (Params.Length == 1)
                            {
                                SendChatMessage(Session, "¡No se encuentra al usuario!");
                                return true;
                            }

                            GameClient Target = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            RoomUser TargetUser = room.GetRoomUserManager().GetRoomUserByHabbo(Target.GetHabbo().Id);
                            if (Target.GetHabbo().Id == Session.GetHabbo().Id)
                            {
                                SendChatMessage(Session, "¡No te puedes atraer a ti mismo!");
                                return true;
                            }

                            if (TargetUser.TeleportEnabled)
                                return true;

                            if (roomuser.RotBody % 2 != 0)
                                roomuser.RotBody--;
                            room.SendMessage(new ChatComposer(roomuser.VirtualId, "*Atrae a " + Params[1] + "*", 0, roomuser.LastBubble, -1));
                            if (roomuser.RotBody == 0)
                                TargetUser.MoveTo(roomuser.X, roomuser.Y - 1);
                            else if (roomuser.RotBody == 2)
                                TargetUser.MoveTo(roomuser.X + 1, roomuser.Y);
                            else if (roomuser.RotBody == 4)
                                TargetUser.MoveTo(roomuser.X, roomuser.Y + 1);
                            else if (roomuser.RotBody == 6)
                                TargetUser.MoveTo(roomuser.X - 1, roomuser.Y);
                        }
                        return true;
                    }
                #endregion

                #region Global Credits (:globalcredits)
                case "globalcredits":
                    {
                        if (Session.GetHabbo().HasCmd("globalcredits"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("Debes de introducir una cantidad de créditos.");
                                return true;
                            }
                            try
                            {
                                int Amount = int.Parse(Params[1]);
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                    dbClient.runFastQuery("UPDATE users SET credits=credits+" + Amount);

                                SilverwaveEnvironment.GetGame().GetClientManager().QueueCreditsUpdate(Amount);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Mass Credits", "Send [" + Amount + "] credits to everyone in the database");

                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Mass Credits (:masscredits)
                case "masscredits":
                    {
                        if (Session.GetHabbo().HasCmd("masscredits"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("Debes de introducir una cantidad de créditos.");
                                return true;
                            }
                            try
                            {
                                int Amount = int.Parse(Params[1]);
                                SilverwaveEnvironment.GetGame().GetClientManager().QueueCreditsUpdate(Amount);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Mass Credits", "Send [" + Amount + "] credits to everyone online");
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Give Badge (:badge)
                case "badge":
                case "givebadge":
                    {
                        if (Session.GetHabbo().HasCmd("badge"))
                        {
                            if (Params.Length != 3)
                            {
                                Session.SendNotif("Debes de introducir un nombre de usuario junto a la placa que quieras dar.");
                                return true;
                            }
                            GameClient TargetClient = null;
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;

                            TargetClient = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
                            if (TargetClient != null)
                            {
                                TargetClient.GetHabbo().GetBadgeComponent().GiveBadge(Params[2], true, TargetClient);

                                SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, TargetClient.GetHabbo().Username, "Badge", "Acabas de darle una placa al usuario [" + Params[2] + "]");
                                TargetClient.SendNotif("¡Acabas de recibir una placa por parte de un miembro del equipo administrativo del hotel!");
                                return true;
                            }
                            else
                            {
                                Session.SendNotif("No se encuentra al usuario seleccionado.");
                                return true;
                            }
                        }
                        return true;
                    }
                #endregion

                #region Room Badge (:roombadge)
                case "roombadge":
                    {
                        if (Session.GetHabbo().HasCmd("roombadge"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¡Debes de introducir la ID de la placa!");
                                return true;
                            }

                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                                return true;

                            TargetRoom.QueueRoomBadge(Params[1]);
                            ServerMessage nMessage = new ServerMessage();
                            nMessage.Init(Outgoing.SendNotif);
                            nMessage.AppendString("¡Acabas de recibir una placa por parte de uno de los miembros del Equipo Administrativo del hotel!");
                            nMessage.AppendString("");
                            TargetRoom.SendMessage(nMessage);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Badge", "La sala [" + TargetRoom.RoomId + "] ha recibido la placa [" + Params[1] + "]");
                        }
                        return true;
                    }
                #endregion

                #region Mass Badge (:massbadge)
                case "massbadge":
                    {
                        if (Session.GetHabbo().HasCmd("massbadge"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¡Debes de introducir la ID de la placa!");
                                return true;
                            }
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBadgeUpdate(Params[1]);
                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Badge", "Placa masiva a todo el hotel, ID: [" + Params[1] + "]");
                            ServerMessage nMessage = new ServerMessage();
                            nMessage.Init(Outgoing.SendNotif);
                            nMessage.AppendString("¡Acabas de recibir una placa por parte de uno de los miembros del Equipo Administrativo del hotel!");
                            nMessage.AppendString("");
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);
                        }
                        return true;
                    }
                #endregion

                #region All eyes on me (:alleyesonme)
                case "alleyesonme":
                    {
                        if (Session.GetHabbo().HasCmd("alleyesonme"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                                return true;
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser Us in users)
                            {
                                if (Session.GetHabbo().Id == Us.userID)
                                    continue;
                                Us.SetRot(Rotation.Calculate(Us.X, Us.Y, User.X, User.Y));
                            }
                        }
                        return true;
                    }
                #endregion

                #region IP Ban (:ipban)
                case "ipban":
                case "banip":
                    {
                        if (Session.GetHabbo().HasCmd("ipban"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¡Debes de introducir un nombre de usuario y una razón!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("Ha ocurrido un error inesperado buscando al usuario seleccionado.");
                                return true;
                            }
                            try
                            {
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), true, false);
                            }
                            catch (Exception e) { Console.WriteLine(e); }

                        }
                        return true;
                    }
                #endregion

                #region Machine Ban (:machineban)
                case "machineban":
                case "banmachine":
                case "mban":
                    {
                        if (Session.GetHabbo().HasCmd("machineban"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¡Debes de introducir un nombre de usuario y una razón!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("Ha ocurrido un error inesperado buscando al usuario seleccionado.");
                                return true;
                            }

                            if (string.IsNullOrWhiteSpace(TargetUser.MachineId))
                            {
                                Session.SendNotif("No se ha podido banear a este usuario ya que no se encuentra una ID de su PC.");
                                return true;
                            }

                            try
                            {
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 2678400, "Has sido baneado bajo la siguiente razón:\n" + MergeParams(Params, 2), false, true);
                            }
                            catch (Exception e) { Console.WriteLine(e); }

                        }
                        return true;
                    }
                #endregion

                #region Machine and IP ban (:mip)
                case "mip":
                    {
                        if (Session.GetHabbo().HasCmd("mip"))
                        {
                            if (Params.Length == 1)
                            {
                                Session.SendNotif("¡Debes de introducir un nombre de usuario y una razón!");
                            }
                            GameClient TargetUser = SilverwaveEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1].ToString());
                            if (TargetUser == null)
                            {
                                Session.SendNotif("Ha ocurrido un error inesperado buscando al usuario seleccionado.");
                                return true;
                            }
                            try
                            {
                                if (string.IsNullOrWhiteSpace(TargetUser.MachineId))
                                {
                                    Session.SendNotif("No se ha podido banear a este usuario ya que no se encuentra una ID de su PC.");
                                    return true;
                                }
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 2678400, "Has sido baneado bajo la siguiente razón:\n" + MergeParams(Params, 2), false, true);
                                SilverwaveEnvironment.GetGame().GetBanManager().BanUser(TargetUser, Session.GetHabbo().Username, 788922000, MergeParams(Params, 2), true, false);
                            }
                            catch (Exception e) { Console.WriteLine(e); }
                        }
                        return true;
                    }
                #endregion

                #region All around me (:allaroundme)
                case "allaroundme":
                    {
                        if (Session.GetHabbo().HasCmd("allaroundme"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            if (Session.GetHabbo().CurrentRoom == null)
                            {
                                Session.SendNotif("Ha ocurrido un error inesperado.");
                                return true;
                            }
                            Room Room = SilverwaveEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                            List<RoomUser> users = Room.GetRoomUserManager().GetRoomUsers();
                            foreach (RoomUser Us in users)
                            {
                                if (Session.GetHabbo().Id == Us.userID)
                                    continue;
                                Us.MoveTo(User.X, User.Y, true);
                            }
                            if (Params.Length == 2)
                            {
                                if (Params[1] == "override")
                                {
                                    foreach (RoomUser Us in users)
                                    {
                                        if (Session.GetHabbo().Id == Us.userID)
                                            continue;
                                        Us.AllowOverride = true;
                                        Us.MoveTo(User.X, User.Y, true);
                                        Us.AllowOverride = false;
                                    }
                                }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Hotel alert w/link (:hal)
                case "hal":
                    {
                        if (Session.GetHabbo().HasCmd("hal"))
                        {
                            Room TargetRoom = Session.GetHabbo().CurrentRoom;
                            // Hotel Alert pluss link :hal <link> <message>
                            string Link = Params[1];

                            string Message = MergeParams(Params, 2);

                            ServerMessage nMessage = new ServerMessage(Outgoing.SendNotif);
                            nMessage.AppendString(LanguageLocale.GetValue("hotelallert.notice") + "\r\n" + Message + "\r\n-" + Session.GetHabbo().Username);
                            nMessage.AppendString(Link);
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "HotelAlert", "Hotel alert [" + Message + "]");
                        }
                        return true;
                    }
                #endregion

                #region Staff Alert (:sa)
                case "sa":
                    {
                        if (Session.GetHabbo().HasCmd("sa"))
                        {
                            string Message = "<b>Chat Administrativo</b>: \n" + Params[1] + "\n - " + Session.GetHabbo().Username;
                            ServerMessage message = new ServerMessage(Outgoing.BroadcastMessage);
                            message.AppendString(Message);
                            SilverwaveEnvironment.GetGame().GetClientManager().StaffAlert(message);

                            SilverwaveEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "StaffAlert", "Staff alert [" + Message + "]");
                        }
                        return true;
                    }
                #endregion

                #region Spectators Mode (:invisible)

                case "invisible":
                case "spec":
                case "spectatorsmode":
                    {
                        if (Session.GetHabbo().HasCmd("invisible"))
                        {
                            if (Session.GetHabbo().SpectatorMode == false)
                            {
                                Session.GetHabbo().SpectatorMode = true;

                                Session.SendNotif("Reinicia la sala para ser invisible.");

                            }
                            else
                            {
                                Session.GetHabbo().SpectatorMode = false;
                                Session.SendNotif("Reinicia la sala para ser visible.");
                            }
                        }
                        return true;
                    }

                #endregion

                #region Add Bannable Word (:banword)
                case "banword":
                    {
                        if (Session.GetHabbo().HasCmd("banword"))
                        {
                            string BannedWord = Params[1];
                            if (!string.IsNullOrWhiteSpace(BannedWord))
                            {
                                using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                {
                                    dbClient.setQuery("INSERT INTO wordfilter (`word`, `addedby`, `bannable`) VALUES " +
                                        "(@ban, '" + Session.GetHabbo().Username + "', '0');");
                                    dbClient.addParameter("ban", BannedWord.ToLower());
                                    dbClient.runQuery();
                                    LanguageLocale.InitSwearWord(dbClient);
                                    Session.SendNotif("La palabra '" + BannedWord + "' ha sido añaida a la lista prohibida.");
                                }
                            }
                        }
                        return true;
                    }
                #endregion

                #region Unidle (:unidle)
                case "unidle":
                    {
                        if (Session.GetHabbo().HasCmd("unidle"))
                        {
                            Habbo Habbo = SilverwaveEnvironment.getHabboForName(Params[1]);
                            if (Habbo == null)
                                return true;

                            RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Habbo.Id);

                            if (User == null)
                                return true;

                            User.UnIdle();
                        }
                        return true;
                    }
                #endregion

                #region Make Public (:public)
                case "public":
                    {
                        if (Session.GetHabbo().HasCmd("public"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;
                            if (Room == null)
                                return true;
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                dbClient.runFastQuery("UPDATE rooms SET roomtype='public' WHERE id=" + Room.RoomId + " LIMIT 1");
                            Room.Type = "public";
                            Room.RoomData.Type = "public";
                            Room.RoomData.SerializeRoomData(new ServerMessage(), false, Session, true);
                        }
                        return true;
                    }
                #endregion

                #region Make Private (:private)
                case "private":
                    {
                        if (Session.GetHabbo().HasCmd("private"))
                        {
                            Room Room = Session.GetHabbo().CurrentRoom;
                            if (Room == null)
                                return true;
                            using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
                                dbClient.runFastQuery("UPDATE rooms SET roomtype='private' WHERE id=" + Room.RoomId + " LIMIT 1");
                            Room.Type = "private";
                            Room.RoomData.Type = "private";
                            Room.RoomData.SerializeRoomData(new ServerMessage(), false, Session, true);
                        }
                        return true;
                    }
                #endregion

                #region Mass Action (:massact)
                case "massact":
                    {
                        if (Session.GetHabbo().HasCmd("massact"))
                        {
                            try
                            {
                                Room Room = Session.GetHabbo().CurrentRoom;

                                List<RoomUser> Users = Room.GetRoomUserManager().GetRoomUsers();
                                int Num = Int16.Parse(Params[1]);

                                ServerMessage Message = new ServerMessage();

                                foreach (RoomUser User in Users)
                                {
                                    if (User == null)
                                        continue;

                                    Room.SendMessage(new ActionComposer(User, Num));
                                }
                            }
                            catch { }
                        }
                        return true;
                    }
                #endregion

                #region Close Alert (:closealert)
                case "closealert":
                    {
                        if (Session.GetHabbo().HasCmd("closealert"))
                        {
                            int Time = int.Parse(Params[1]);

                            ServerMessage Message = new ServerMessage(Outgoing.ClosingAlert);
                            Message.AppendInt32(Time);
                            SilverwaveEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(Message);
                        }
                        return true;
                    }
                #endregion
                #endregion
            }
            return false;
            #endregion
        }