예제 #1
0
        internal static Boolean CanSellItem(UserItem Item)
        {
            if (!Item.GetBaseItem().AllowTrade || !Item.GetBaseItem().AllowMarketplaceSell)
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        public void SellItem(GameClient Session, uint ItemId, int SellingPrice)
        {
            UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);

            if (Item == null || SellingPrice > GlobalClass.MaxMarketPlacePrice || !this.CanSellItem(Item))
            {
                ServerMessage Message = new ServerMessage(610u);
                Message.AppendBoolean(false);
                Session.SendMessage(Message);
            }
            else
            {
                int num  = this.CalculateComissionPrice((float)SellingPrice);
                int num2 = SellingPrice + num;
                int num3 = 1;
                if (Item.GetBaseItem().Type == 'i')
                {
                    num3++;
                }
                using (DatabaseClient class2 = PhoenixEnvironment.GetDatabase().GetClient())
                {
                    class2.AddParamWithValue("public_name", Item.GetBaseItem().PublicName);
                    class2.AddParamWithValue("extra_data", Item.ExtraData);
                    class2.ExecuteQuery(string.Concat(new object[]
                    {
                        "INSERT INTO catalog_marketplace_offers (furni_id, item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data) VALUES ('",
                        ItemId,
                        "','",
                        Item.BaseItem,
                        "','",
                        Session.GetHabbo().Id,
                        "','",
                        SellingPrice,
                        "','",
                        num2,
                        "',@public_name,'",
                        Item.GetBaseItem().SpriteId,
                        "','",
                        num3,
                        "','",
                        PhoenixEnvironment.GetUnixTimestamp(),
                        "',@extra_data)"
                    }));
                }
                Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, 0u, true);
                ServerMessage Message2 = new ServerMessage(610u);
                Message2.AppendBoolean(true);
                Session.SendMessage(Message2);
            }
        }
예제 #3
0
 public void Handle(GameClient Session, ClientMessage Event)
 {
     if (((Session != null) && (Session.GetHabbo() != null)) && (Session.GetHabbo().CurrentRoom != null))
     {
         Room currentRoom = Session.GetHabbo().CurrentRoom;
         if (currentRoom.CheckRights(Session, true))
         {
             RoomMusicController roomMusicController = currentRoom.GetRoomMusicController();
             if (roomMusicController.PlaylistSize < roomMusicController.PlaylistCapacity)
             {
                 int      num  = Event.PopWiredInt32();
                 UserItem item = Session.GetHabbo().GetInventoryComponent().GetItemById((uint)num);
                 if ((item != null) && (item.GetBaseItem().InteractionType == "musicdisc"))
                 {
                     SongItem diskItem = new SongItem(item);
                     if (roomMusicController.AddDisk(diskItem) >= 0)
                     {
                         //diskItem.SaveToDatabase((int)currentRoom.Id); // <-- old
                         diskItem.SaveToDatabase((int)roomMusicController.LinkedItemId); // <-- new
                         Session.GetHabbo().GetInventoryComponent().method_12((uint)num, 0u, true);
                         Session.GetHabbo().GetInventoryComponent().method_9(true);
                         Session.SendMessage(JukeboxDiscksComposer.Compose(roomMusicController.PlaylistCapacity, roomMusicController.Playlist.Values.ToList <SongInstance>()));
                     }
                 }
             }
         }
     }
 }
예제 #4
0
        private static void AddToPlaylist(GameClient Session, ClientMessage Message)
        {
            Room Instance = Session.GetHabbo().CurrentRoom;

            if (Instance == null || !Instance.CheckRights(Session, true) || !Instance.GotMusicController() ||
                Instance.GetRoomMusicController().PlaylistSize >= Instance.GetRoomMusicController().PlaylistCapacity)
            {
                return;
            }

            UserItem DiskUserItem = Session.GetHabbo().GetInventoryComponent().GetItem(Message.PopWiredUInt());

            if (DiskUserItem == null || DiskUserItem.GetBaseItem().InteractionType != InteractionType.musicdisc)
            {
                return;
            }

            SongItem item = new SongItem(DiskUserItem);

            int NewOrder = Instance.GetRoomMusicController().AddDisk(item);

            if (NewOrder < 0)
            {
                return;
            }

            Session.GetHabbo().GetInventoryComponent().RemoveItem(item.itemID, true);

            Session.SendMessage(JukeboxComposer.Compose(Instance.GetRoomMusicController().PlaylistCapacity,
                                                        Instance.GetRoomMusicController().Playlist.Values.ToList()));
        }
예제 #5
0
 public void Handle(GameClient Session, ClientMessage Event)
 {
     if (Session.GetHabbo().InRoom)
     {
         int num = Event.PopWiredInt32();
         if (num >= 3)
         {
             for (int i = 0; i < num; i++)
             {
                 UserItem @class = Session.GetHabbo().GetInventoryComponent().GetItemById(Event.PopWiredUInt());
                 if (@class == null || [email protected]().AllowRecycle)
                 {
                     return;
                 }
                 Session.GetHabbo().GetInventoryComponent().method_12(@class.uint_0, 0u, false);
             }
             uint          num2   = Essential.GetGame().GetCatalog().GetNextId();
             EcotronReward class2 = Essential.GetGame().GetCatalog().GetEcotronReward();
             using (DatabaseClient class3 = Essential.GetDatabase().GetClient())
             {
                 class3.ExecuteQuery(string.Concat(new object[]
                 {
                     "INSERT INTO items (Id,user_id,base_item,wall_pos) VALUES ('",
                     num2,
                     "','",
                     Session.GetHabbo().Id,
                     "','1478','')"
                 }));
                 class3.ExecuteQuery(string.Concat(new object[]
                 {
                     "INSERT INTO items_extra_data (item_id,extra_data) VALUES ('",
                     num2,
                     "','",
                     DateTime.Now.ToLongDateString(),
                     "')"
                 }));
                 class3.ExecuteQuery(string.Concat(new object[]
                 {
                     "INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('",
                     num2,
                     "','",
                     class2.uint_2,
                     "','1','')"
                 }));
             }
             Session.GetHabbo().GetInventoryComponent().method_9(true);
             ServerMessage Response = new ServerMessage(Outgoing.SendPurchaseAlert);
             Response.AppendInt32(1);
             Response.AppendInt32(1);
             Response.AppendInt32(1);
             Response.AppendInt32(class2.GetBaseItem().Sprite);
             Session.SendMessage(Response);
             ServerMessage Response2 = new ServerMessage(Outgoing.RecycleState);
             Response2.AppendInt32(1);
             Response2.AppendInt32(class2.GetBaseItem().Sprite);
             Session.SendMessage(Response2);
         }
     }
 }
예제 #6
0
        internal static void SellItem(GameClient Session, uint ItemId, int SellingPrice)
        {
            UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId);

            if (Item == null || SellingPrice > 10000 || !CanSellItem(Item))
            {
                Session.GetMessageHandler().GetResponse().Init(610);
                Session.GetMessageHandler().GetResponse().AppendBoolean(false);
                Session.GetMessageHandler().GetResponse();
                Session.GetMessageHandler().SendResponse();
                return;
            }



            int Comission  = CalculateComissionPrice(SellingPrice);
            int TotalPrice = SellingPrice + Comission;
            int ItemType   = 1;

            if (Item.GetBaseItem().Type == 'i')
            {
                ItemType++;
            }

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == DatabaseType.MSSQL)
                {
                    dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data,state) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + PiciEnvironment.GetUnixTimestamp() + ",@extra_data, '1')");
                }
                else
                {
                    dbClient.setQuery("INSERT INTO catalog_marketplace_offers (item_id,user_id,asking_price,total_price,public_name,sprite_id,item_type,timestamp,extra_data) VALUES (" + Item.BaseItem + "," + Session.GetHabbo().Id + "," + SellingPrice + "," + TotalPrice + ",@public_name," + Item.GetBaseItem().SpriteId + "," + ItemType + "," + PiciEnvironment.GetUnixTimestamp() + ",@extra_data)");
                }
                dbClient.addParameter("public_name", Item.GetBaseItem().PublicName);
                dbClient.addParameter("extra_data", Item.ExtraData);
                dbClient.runQuery();
            }

            Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, false);
            Session.GetHabbo().GetInventoryComponent().RunDBUpdate();

            Session.GetMessageHandler().GetResponse().Init(610);
            Session.GetMessageHandler().GetResponse().AppendBoolean(true);
            Session.GetMessageHandler().SendResponse();
        }
예제 #7
0
        internal void Redeemcredits(GameClient session)
        {
            Room currentRoom = session.GetHabbo().CurrentRoom;

            if (currentRoom == null)
            {
                return;
            }
            DataTable table;

            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.setQuery("SELECT id FROM items WHERE user_id=" + session.GetHabbo().Id + " AND room_id='0'");
                table = queryreactor.getTable();
            }
            checked
            {
                foreach (DataRow dataRow in table.Rows)
                {
                    UserItem item = this.GetItem(Convert.ToUInt32(dataRow[0]));
                    if (item != null && (item.GetBaseItem().Name.StartsWith("CF_") || item.GetBaseItem().Name.StartsWith("CFC_")))
                    {
                        string[] array = item.GetBaseItem().Name.Split(new char[]
                        {
                            '_'
                        });
                        int num = int.Parse(array[1]);
                        using (IQueryAdapter queryreactor2 = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                        {
                            queryreactor2.runFastQuery("DELETE FROM items WHERE id=" + item.Id + " LIMIT 1");
                        }
                        if (currentRoom.GetRoomItemHandler().GetItem(item.Id) != null)
                        {
                            RoomItem item2 = currentRoom.GetRoomItemHandler().GetItem(item.Id);
                            currentRoom.GetRoomItemHandler().RemoveItem(item2);
                        }
                        this.RemoveItem(item.Id, false);
                        if (num > 0)
                        {
                            session.GetHabbo().Credits += num;
                            session.GetHabbo().UpdateCreditsBalance();
                        }
                    }
                }
            }
        }
예제 #8
0
 public SongItem(UserItem item)
 {
     this.itemID    = item.Id;
     this.songID    = SongManager.GetSongId(item.SongCode);
     this.baseItem  = item.GetBaseItem();
     this.extraData = item.ExtraData;
     this.songCode  = item.SongCode;
 }
예제 #9
0
        public InventoryComponent(uint userId, GameClient client, UserDataFactory userdata)
        {
            this.Session = client;
            this.UserId  = userId;

            this.Items = new List <UserItem>();

            this.Pets        = new Hashtable();
            this.Bots        = new Hashtable();
            this.hashtable_1 = new Hashtable();

            this.Discs = new Hashtable();

            this.list_1 = new List <uint>();

            foreach (DataRow row in userdata.GetItems().Rows)
            {
                string str;

                uint   id       = Convert.ToUInt32(row["Id"]);
                uint   baseItem = Convert.ToUInt32(row["base_item"]);
                int    ltdi     = Convert.ToInt32(row["ltd_id"]);
                int    ltdc     = Convert.ToInt32(row["ltd_cnt"]);
                string glddata  = (string)row["guild_data"];
                if (!DBNull.Value.Equals(row["extra_data"]))
                {
                    str = (string)row["extra_data"];
                }
                else
                {
                    str = string.Empty;
                }

                UserItem item = new UserItem(id, baseItem, str, ltdi, ltdc, glddata);

                Items.Add(item);



                if (item.GetBaseItem().InteractionType == "musicdisc")
                {
                    this.Discs.Add(item.uint_0, item);
                }
            }

            foreach (DataRow row in userdata.GetPets().Rows)
            {
                Pet pet = Essential.GetGame().GetCatalog().GetPet(row);
                this.Pets.Add(pet.PetId, pet);
            }

            foreach (DataRow row in userdata.GetBots().Rows)
            {
                UserBot bot = Essential.GetGame().GetCatalog().RetrBot(row);
                this.Bots.Add(bot.BotId, bot);
            }
        }
예제 #10
0
        public void AddItem(uint uint_1, uint uint_2, string string_0, bool bool_0)
        {
            UserItem item = new UserItem(uint_1, uint_2, string_0);

            this.InventoryItems.Add(item);
            if (this.mRemovedItems.Contains(uint_1))
            {
                this.mRemovedItems.Remove(uint_1);
            }
            if (!this.mAddedItems.ContainsKey(uint_1))
            {
                if (bool_0)
                {
                    using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                    {
                        adapter.AddParamWithValue("extra_data", string_0);
                        adapter.ExecuteQuery(string.Concat(new object[]
                        {
                            "INSERT INTO items (Id,user_id,base_item,extra_data,wall_pos) VALUES ('",
                            uint_1,
                            "','",
                            this.UserId,
                            "','",
                            uint_2,
                            "',@extra_data, '')"
                        }));
                        return;
                    }
                }
                if (item.GetBaseItem().InteractionType == "musicdisc")
                {
                    if (this.discs.ContainsKey(item.Id))
                    {
                        this.discs.Add(item.Id, item);
                    }
                }
                using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                {
                    adapter.ExecuteQuery(string.Concat(new object[]
                    {
                        "UPDATE items SET room_id = 0, user_id = '",
                        this.UserId,
                        "' WHERE Id = '",
                        uint_1,
                        "'"
                    }));
                }
            }
        }
예제 #11
0
        internal void OfferItem(uint UserId, UserItem Item)
        {
            TradeUser tradeUser = this.GetTradeUser(UserId);

            if (tradeUser == null || Item == null || !Item.GetBaseItem().AllowTrade || tradeUser.HasAccepted || this.TradeStage != 1)
            {
                return;
            }
            this.ClearAccepted();
            if (!tradeUser.OfferedItems.Contains(Item))
            {
                tradeUser.OfferedItems.Add(Item);
            }
            this.UpdateTradeWindow();
        }
예제 #12
0
        internal void OfferItem(UInt32 UserId, UserItem Item)
        {
            TradeUser User = GetTradeUser(UserId);

            if (User == null || Item == null || !Item.GetBaseItem().AllowTrade || User.HasAccepted || TradeStage != 1)
            {
                return;
            }

            ClearAccepted();
            if (!User.OfferedItems.Contains(Item))
            {
                User.OfferedItems.Add(Item);
            }
            UpdateTradeWindow();
        }
예제 #13
0
 public void parse(GameClient Session, ClientMessage Event)
 {
     if (Session.GetHabbo().InRoom)
     {
         int num = Event.PopWiredInt32();
         if (num == 5)
         {
             for (int i = 0; i < num; i++)
             {
                 UserItem item = Session.GetHabbo().GetInventoryComponent().GetItem(Event.PopWiredUInt());
                 if (item == null || !item.GetBaseItem().AllowRecycle)
                 {
                     return;
                 }
                 Session.GetHabbo().GetInventoryComponent().RemoveItem(item.Id, 0, false);
             }
             uint          Id = PhoenixEnvironment.GetGame().GetCatalog().GenerateItemId();
             EcotronReward randomEcotronReward = PhoenixEnvironment.GetGame().GetCatalog().GetRandomEcotronReward();
             using (DatabaseClient client = PhoenixEnvironment.GetDatabase().GetClient())
             {
                 client.ExecuteQuery(string.Concat(new object[]
                 {
                     "INSERT INTO items (Id,user_id,base_item,extra_data,wall_pos) VALUES ('",
                     Id,
                     "','",
                     Session.GetHabbo().Id,
                     "','1478','",
                     DateTime.Now.ToLongDateString(),
                     "', '')"
                 }));
                 client.ExecuteQuery(string.Concat(new object[]
                 {
                     "INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('",
                     Id,
                     "','",
                     randomEcotronReward.BaseId,
                     "','1','')"
                 }));
             }
             Session.GetHabbo().GetInventoryComponent().UpdateItems(true);
             ServerMessage message = new ServerMessage(508);
             message.AppendBoolean(true);
             message.AppendUInt(Id);
             Session.SendMessage(message);
         }
     }
 }
예제 #14
0
        public InventoryComponent(uint mUserId, GameClient Session, HabboData Data)
        {
            this.mClient        = Session;
            this.UserId         = mUserId;
            this.InventoryItems = new List <UserItem>();
            this.InventoryPets  = new Hashtable();
            this.mAddedItems    = new Hashtable();
            this.discs          = new Hashtable();
            this.mRemovedItems  = new List <uint>();
            this.InventoryItems.Clear();
            DataTable Table = Data.GetUserInventory;

            foreach (DataRow Row in Table.Rows)
            {
                this.InventoryItems.Add(new UserItem((uint)Row["Id"], (uint)Row["base_item"], (string)Row["extra_data"]));
            }
            this.InventoryPets.Clear();
            DataTable dataTable_2 = Data.GetUserPets;

            foreach (DataRow dataRow in Table.Rows)
            {
                string str;
                uint   id       = Convert.ToUInt32(dataRow["Id"]);
                uint   baseItem = Convert.ToUInt32(dataRow["base_item"]);
                if (!DBNull.Value.Equals(dataRow["extra_data"]))
                {
                    str = (string)dataRow["extra_data"];
                }
                else
                {
                    str = string.Empty;
                }

                InventoryItems.Add(new UserItem(id, baseItem, str));
                UserItem item = new UserItem(id, baseItem, str);

                if (item.GetBaseItem().InteractionType == "musicdisc")
                {
                    this.discs.Add(item.Id, item);
                }
            }
        }
예제 #15
0
 public SongItem(UserItem item)
 {
     this.itemID   = (int)item.uint_0;
     this.songID   = Convert.ToInt32(item.string_0);
     this.baseItem = item.GetBaseItem();
 }
예제 #16
0
        internal void LoadInventory()
        {
            floorItems.Clear();
            wallItems.Clear();

            DataTable Data;

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL)
                {
                    dbClient.setQuery("CALL getuseritems(@userid)");
                }
                else
                {
                    dbClient.setQuery("EXECUTE getuseritems @userid");
                }
                dbClient.addParameter("userid", (int)UserId);

                Data = dbClient.getTable();

                //dbClient.setQuery("SELECT item_id, song_id FROM user_items_songs WHERE user_id = " + UserId);
                //dSongs = dbClient.getTable();
            }

            uint   id;
            uint   baseitem;
            string extradata;

            foreach (DataRow Row in Data.Rows)
            {
                id       = Convert.ToUInt32(Row[0]);
                baseitem = Convert.ToUInt32(Row[1]);

                if (!DBNull.Value.Equals(Row[2]))
                {
                    extradata = (string)Row[2];
                }
                else
                {
                    extradata = string.Empty;
                }

                UserItem item = new UserItem(id, baseitem, extradata);

                if (item.GetBaseItem().InteractionType == InteractionType.musicdisc)
                {
                    discs.Add(id, item);
                }
                if (item.isWallItem)
                {
                    wallItems.Add(id, item);
                }
                else
                {
                    floorItems.Add(id, item);
                }
            }

            discs.Clear();

            //uint songItemID;
            //uint songID;
            //foreach (DataRow dRow in dSongs.Rows)
            //{
            //    songItemID = (uint)dRow[0];
            //    songID = (uint)dRow[1];

            //    SongItem song = new SongItem(songItemID, songID);
            //    songs.Add(songItemID, song);
            //}


            this.InventoryPets.Clear();
            DataTable Data2;

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                //dbClient.addParameter("userid", UserId);
                dbClient.setQuery("SELECT id, user_id, room_id, name, type, race, color, expirience, energy, nutrition, respect, createstamp, x, y, z FROM user_pets WHERE user_id = " + UserId + " AND room_id = 0");
                Data2 = dbClient.getTable();
            }

            if (Data2 != null)
            {
                foreach (DataRow Row in Data2.Rows)
                {
                    Pet newPet = Catalog.GeneratePetFromRow(Row);
                    InventoryPets.Add(newPet.PetId, newPet);
                }
            }
        }
예제 #17
0
        internal UserItem AddNewItem(UInt32 Id, UInt32 BaseItem, string ExtraData, bool insert, bool fromRoom, UInt32 songID = 0)
        {
            isUpdated = false;
            if (insert)
            {
                if (fromRoom)
                {
                    using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        if (dbClient.dbType == Database_Manager.Database.DatabaseType.MSSQL)
                        {
                            dbClient.setQuery("DELETE FROM items_users WHERE item_id = " + Id);
                            dbClient.setQuery("INSERT INTO items_users VALUES (" + Id + "," + UserId + ")");
                        }
                        else
                        {
                            dbClient.runFastQuery("REPLACE INTO items_users VALUES (" + Id + "," + UserId + ")");
                        }

                        //dbClient.setQuery("REPLACE INTO user_items (id, user_id,base_item,extra_data) VALUES ('" + Id + "','" + UserId + "','" + BaseItem + "',@extra_data)");
                        //dbClient.addParameter("extra_data", ExtraData);
                        //dbClient.runQuery();
                    }

                    Item baseItem = ButterflyEnvironment.GetGame().GetItemManager().GetItem(BaseItem);

                    if (baseItem != null && baseItem.InteractionType == InteractionType.musicdisc)
                    {
                        using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                        {
                            dbClient.runFastQuery("DELETE FROM room_items_songs WHERE item_id = " + Id);
                            //dbClient.runFastQuery("REPLACE INTO user_items_songs (item_id,user_id,song_id) VALUES (" + Id + "," + UserId + "," + songID + ")");
                        }
                    }
                }
                else
                {
                    using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        if (dbClient.dbType == Database_Manager.Database.DatabaseType.MSSQL)
                        {
                            dbClient.setQuery("INSERT INTO items (base_id) OUTPUT INSERTED.* VALUES (" + BaseItem + ")");
                        }
                        else
                        {
                            dbClient.setQuery("INSERT INTO items (base_id) VALUES (" + BaseItem + ")");
                        }
                        Id = (uint)dbClient.insertQuery();

                        if (!string.IsNullOrEmpty(ExtraData))
                        {
                            dbClient.setQuery("INSERT INTO items_extradata VALUES (" + Id + ",@extradata)");
                            dbClient.addParameter("extradata", ExtraData);
                            dbClient.runQuery();
                        }

                        dbClient.runFastQuery("INSERT INTO items_users VALUES (" + Id + "," + UserId + ")");
                        //dbClient.setQuery("INSERT INTO user_items (user_id,base_item,extra_data) VALUES ('" + UserId + "','" + BaseItem + "',@extra_data)");
                        //dbClient.addParameter("extra_data", ExtraData);
                        //Id = (uint)dbClient.insertQuery();
                    }
                }
            }
            UserItem ItemToAdd = new UserItem(Id, BaseItem, ExtraData);

            if (UserHoldsItem(Id))
            {
                RemoveItem(Id, false);
            }

            if (ItemToAdd.GetBaseItem().InteractionType == InteractionType.musicdisc)
            {
                discs.Add(ItemToAdd.Id, ItemToAdd);
            }
            if (ItemToAdd.isWallItem)
            {
                wallItems.Add(ItemToAdd.Id, ItemToAdd);
            }
            else
            {
                floorItems.Add(ItemToAdd.Id, ItemToAdd);
            }

            if (mRemovedItems.Contains(Id))
            {
                mRemovedItems.Remove(Id);
            }

            if (!mAddedItems.ContainsKey(Id))
            {
                mAddedItems.Add(Id, ItemToAdd);
            }

            return(ItemToAdd);
            //Console.WriteLine("Item added: " + BaseItem);
        }
예제 #18
0
 public bool CanSellItem(UserItem Item)
 {
     return(Item.GetBaseItem().AllowTrade&& Item.GetBaseItem().AllowMarketplaceSell);
 }
예제 #19
0
 public SongItem(UserItem item)
 {
     this.itemID   = item.Id;
     this.songID   = TextHandling.Parse(item.Data.ToString());
     this.baseItem = item.GetBaseItem();
 }
        public void Handle(GameClient Session, ClientMessage Event)
        {
            if (Session != null && Session.GetHabbo() != null)
            {
                Room @class = Essential.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);
                if (@class != null && @class.method_26(Session) && (ServerConfiguration.AllowFurniDrops || !(@class.Owner != Session.GetHabbo().Username)))
                {
                    string   text  = Event.PopFixedString();
                    string[] array = text.Split(new char[]
                    {
                        ' '
                    });
                    if (array[0].Contains("-"))
                    {
                        array[0] = array[0].Replace("-", "");
                    }
                    uint uint_ = 0u;
                    try
                    {
                        uint_ = uint.Parse(array[0]);
                    }
                    catch
                    {
                        return;
                    }
                    UserItem class2 = Session.GetHabbo().GetInventoryComponent().GetItemById(uint_);
                    if (class2 != null)
                    {
                        string text2 = class2.GetBaseItem().InteractionType.ToLower();
                        if (text2 != null && text2 == "dimmer" && @class.method_72("dimmer") >= 1)
                        {
                            // Session.SendNotification("You can only have one moodlight in a room.");
                        }
                        else if (text2 != null && text2 == "jukebox" && @class.method_72("jukebox") >= 1)
                        {
                            /*ServerMessage Message = new ServerMessage(Outgoing.Item1); // Update
                             * Message.AppendInt32(23);
                             * Session.SendMessage(Message);*/
                        }
                        else
                        {
                            RoomItem RoomItem_;
                            if (array[1].StartsWith(":"))
                            {
                                string text3 = @class.method_98(":" + text.Split(new char[]
                                {
                                    ':'
                                })[1]);
                                if (text3 == null)
                                {
                                    /*ServerMessage Message = new ServerMessage(Outgoing.Item1); // Update
                                     * Message.AppendInt32(11);
                                     * Session.SendMessage(Message);
                                     */
                                    return;
                                }
                                RoomItem_ = new RoomItem(class2.uint_0, @class.Id, class2.uint_1, class2.string_0, 0, 0, 0.0, 0, text3, @class, class2.LtdId, class2.LtdCnt, class2.GuildData);
                                if ([email protected]_82(Session, RoomItem_, true, null))

                                {
                                    /*ServerMessage Message = new ServerMessage(Outgoing.Item1); // Update
                                     * Message.AppendInt32(11);
                                     * Session.SendMessage(Message);
                                     */
                                    goto IL_32C;
                                }
                                Session.GetHabbo().GetInventoryComponent().method_12(uint_, 1u, false);
                                using (DatabaseClient class3 = Essential.GetDatabase().GetClient())
                                {
                                    class3.ExecuteQuery(string.Concat(new object[]
                                    {
                                        "UPDATE items SET room_id = '",
                                        @class.Id,
                                        "' WHERE Id = '",
                                        class2.uint_0,
                                        "' LIMIT 1"
                                    }));
                                    goto IL_32C;
                                }
                            }
                            int int_  = int.Parse(array[1]);
                            int int_2 = int.Parse(array[2]);
                            int int_3 = int.Parse(array[3]);
                            RoomItem_ = new RoomItem(class2.uint_0, @class.Id, class2.uint_1, class2.string_0, 0, 0, 0.0, 0, "", @class, class2.LtdId, class2.LtdCnt, class2.GuildData);
                            if (@class.method_79(Session, RoomItem_, int_, int_2, int_3, true, false, false))
                            {
                                Session.GetHabbo().GetInventoryComponent().method_12(uint_, 1u, false);
                                using (DatabaseClient class3 = Essential.GetDatabase().GetClient())
                                {
                                    class3.ExecuteQuery(string.Concat(new object[]
                                    {
                                        "UPDATE items SET room_id = '",
                                        @class.Id,
                                        "' WHERE Id = '",
                                        class2.uint_0,
                                        "' LIMIT 1"
                                    }));
                                }
                            }
IL_32C:
                            if (Session.GetHabbo().CurrentQuestId > 0 && Essential.GetGame().GetQuestManager().GetQuestAction(Session.GetHabbo().CurrentQuestId) == "PLACEITEM")
                            {
                                Essential.GetGame().GetQuestManager().ProgressUserQuest(Session.GetHabbo().CurrentQuestId, Session);
                            }
                        }
                    }
                }
                else
                {
                    ServerMessage Message = new ServerMessage(Outgoing.GenericError); // New
                    Message.AppendInt32(-32000);
                    Session.SendMessage(Message);
                }
            }
        }
예제 #21
0
 public bool CanSell(UserItem class39_0)
 {
     return(class39_0.GetBaseItem().AllowTrade&& class39_0.GetBaseItem().AllowMarketplaceSell);
 }