internal static Boolean CanSellItem(UserItem Item) { if (!Item.GetBaseItem().AllowTrade || !Item.GetBaseItem().AllowMarketplaceSell) { return false; } return true; }
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(); }
internal static Boolean CanSellItem(UserItem Item) { return (Item.GetBaseItem().AllowTrade && Item.GetBaseItem().AllowMarketplaceSell); }
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); } } }
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); }
private void RegisterItem(UserItem item) { uint baseID = item.BaseItemID; if (baseIDRegister.ContainsKey(baseID)) { Hashtable collection = (Hashtable)baseIDRegister[baseID]; if (!collection.ContainsKey(item.itemID)) collection.Add(item.itemID, item); //And add the item } else { Hashtable collection = new Hashtable(); if (!collection.ContainsKey(item.itemID)) collection.Add(item.itemID, item); //Put it in there baseIDRegister.Add(baseID, collection); } }
internal UserItem AddNewItem(UInt32 Id, uint BaseItem, string ExtraData, bool insert, bool fromRoom, UInt32 songID = 0) { isUpdated = false; if (insert) { if (fromRoom) { using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("REPLACE INTO items_users VALUES (" + Id + "," + UserId + ")"); if (!string.IsNullOrEmpty(ExtraData)) { dbClient.setQuery("REPLACE INTO items_extradata VALUES (" + Id + ",@extradata)"); dbClient.addParameter("extradata", ExtraData); dbClient.runQuery(); } } Item baseItem = ButterflyEnvironment.GetGame().GetItemManager().GetItem(BaseItem); } else { using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { 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 + ")"); } } } UserItem ItemToAdd = new UserItem(Id, BaseItem, ExtraData); if (UserHoldsItem(Id)) { RemoveItem(Id, false); } if (ItemToAdd.IsWallItem()) wallItems.Add(ItemToAdd.itemID, ItemToAdd); else floorItems.Add(ItemToAdd.itemID, ItemToAdd); if (mRemovedItems.Contains(Id)) mRemovedItems.Remove(Id); if (!mAddedItems.ContainsKey(Id)) mAddedItems.Add(Id, ItemToAdd); RegisterItem(ItemToAdd); return ItemToAdd; }
internal void LoadInventory() { floorItems.Clear(); wallItems.Clear(); DataTable Data; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("CALL getuseritems(@userid)"); dbClient.addParameter("userid", (int)UserId); Data = dbClient.getTable(); } uint id; uint baseitem; string extradata; foreach (DataRow Row in Data.Rows) { id = (uint)Row[0]; baseitem = (uint)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.IsWallItem()) wallItems.Add(id, item); else floorItems.Add(id, item); RegisterItem(item); } this.InventoryPets.Clear(); DataTable Data2; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { //dbClient.addParameter("userid", UserId); dbClient.setQuery("SELECT * 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); } } }
private void UnregisterItem(UserItem item) { uint baseID = item.BaseItemID; if (baseIDRegister.ContainsKey(baseID)) { Hashtable collection = (Hashtable)baseIDRegister[baseID]; collection.Remove(item.itemID); } }
internal void TakeBackItem(UInt32 UserId, UserItem Item) { TradeUser User = GetTradeUser(UserId); if (User == null || Item == null || User.HasAccepted || TradeStage != 1) { return; } ClearAccepted(); User.OfferedItems.Remove(Item); UpdateTradeWindow(); }
private void HandleFloorItemPlace(UserItem item, Room room, int X, int Y, int Rot) { if (Session.GetHabbo().forceRot > -1) Rot = Session.GetHabbo().forceRot; RoomItem roomItem = new RoomItem(item.itemID, room.RoomId, item.BaseItemID,room.OwnerId, item.extraData, X, Y, 0, Rot, room); if (room.GetRoomItemHandler().SetFloorItem(Session, roomItem, X, Y, Rot, true, false, true)) Session.GetHabboDataContainer().GetInventoryComponent().RemoveItem(item.itemID, true); if (WiredUtillity.TypeIsWired(item.GetBaseItem().InteractionType)) WiredSaver.HandleDefaultSave(item.itemID, room); ButterflyEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_PLACE); }
private void HandleWallItemPlace(UserItem item, string placementData, Room room) { string[] dataBits = placementData.Split(' '); if (!dataBits[1].StartsWith(":")) //Is wallitem return; switch (item.GetBaseItem().InteractionType) { case Butterfly.HabboHotel.Items.InteractionType.dimmer: { MoodlightData moodData = room.MoodlightData; if (moodData != null && room.GetRoomItemHandler().GetItem(moodData.ItemId) != null) { Session.SendChatMessage("Je kunt maar 1 sfeerverlichter per kamer plaatsen.", 0); return; } } break; } try { WallCoordinate coordinate = new WallCoordinate(":" + placementData.Split(':')[1]); RoomItem roomItem = new RoomItem(item.itemID, room.RoomId, item.BaseItemID, item.extraData, coordinate, room); if (room.GetRoomItemHandler().SetWallItem(Session, roomItem)) { Session.GetHabboDataContainer().GetInventoryComponent().RemoveItem(item.itemID, true); } } catch { return; } }
private UserItem GetNextItemInStack(UserItem Item, Hashtable registry) { if (registry.ContainsKey(Item.BaseItemID)) { Hashtable items = (Hashtable)registry[Item.BaseItemID]; if (items.Count > 0) { foreach (UserItem item in items.Values) { return item; } } } return null; }
public SongItem(UserItem item) { this.itemID = item.itemID; this.songID = TextHandling.Parse(item.extraData); this.baseItem = item.GetBaseItem(); }