internal void LoadFurniture() { //this.Items.Clear(); this.mFloorItems.Clear(); this.mWallItems.Clear(); DataTable Data; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Pici.Storage.Database.DatabaseType.MySQL) { dbClient.setQuery("CALL getroomitems(@roomid)"); dbClient.addParameter("roomid", room.RoomId); } else { dbClient.setQuery("EXECUTE getroomitems " + room.RoomId); } Data = dbClient.getTable(); uint itemID; decimal x; decimal y; sbyte n; uint baseID; string extradata; WallCoordinate wallCoord; foreach (DataRow dRow in Data.Rows) { itemID = Convert.ToUInt32(dRow[0]); x = Convert.ToDecimal(dRow[1]); y = Convert.ToDecimal(dRow[2]); n = Convert.ToSByte(dRow[3]); baseID = Convert.ToUInt32(dRow[4]); if (DBNull.Value.Equals(dRow[5])) extradata = string.Empty; else extradata = (string)dRow[5]; if (n > 6) // Is wallitem { wallCoord = new WallCoordinate((double)x, (double)y, n); RoomItem item = new RoomItem(itemID, room.RoomId, baseID, extradata, wallCoord, room); if (!mWallItems.ContainsKey(itemID)) mWallItems.Inner.Add(itemID, item); } else //Is flooritem { int coordX, coordY; TextHandling.Split((double)x, out coordX, out coordY); RoomItem item = new RoomItem(itemID, room.RoomId, baseID, extradata, coordX, coordY, (double)y, n, room); if (!mFloorItems.ContainsKey(itemID)) mFloorItems.Inner.Add(itemID, item); } } foreach (RoomItem Item in mFloorItems.Values) { if (Item.IsRoller) mGotRollers = true; else if (Item.GetBaseItem().InteractionType == Pici.HabboHotel.Items.InteractionType.dimmer) { if (room.MoodlightData == null) room.MoodlightData = new MoodlightData(Item.Id); } else if (WiredUtillity.TypeIsWired(Item.GetBaseItem().InteractionType)) { WiredLoader.LoadWiredItem(Item, room, dbClient); } if (WiredHandler.TypeIsWire(Item.GetBaseItem().InteractionType)) { room.GetWiredHandler().AddWire(Item, Item.Coordinate, Item.Rot, Item.GetBaseItem().InteractionType); } } } }
internal void PlaceItem() { // AZ@J16 10 10 0 Room Room = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } string PlacementData = Request.PopFixedString(); string[] DataBits = PlacementData.Split(' '); uint ItemId = uint.Parse(DataBits[0].Replace("-","")); UserItem Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null) { return; } //bool UpdateNeeded = false; switch (Item.GetBaseItem().InteractionType) { case Pici.HabboHotel.Items.InteractionType.dimmer: { MoodlightData moodData = Room.MoodlightData; if (moodData != null && Room.GetRoomItemHandler().GetItem(moodData.ItemId) != null) Session.SendNotif(LanguageLocale.GetValue("user.maxmoodlightsreached")); break; } } // Wall Item if (DataBits[1].StartsWith(":")) { try { WallCoordinate coordinate = new WallCoordinate(":" + PlacementData.Split(':')[1]); RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, coordinate, Room); if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true); } } catch { Response.Init(516); Response.Append(11); SendResponse(); return; } } // Floor Item else { int X = int.Parse(DataBits[1]); int Y = int.Parse(DataBits[2]); int Rot = int.Parse(DataBits[3]); if (Session.GetHabbo().forceRot > -1) Rot = Session.GetHabbo().forceRot; RoomItem RoomItem = new RoomItem(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, X, Y, 0, Rot, Room); if (Room.GetRoomItemHandler().SetFloorItem(Session, RoomItem, X, Y, Rot, true, false, true)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId, true); } if (WiredUtillity.TypeIsWired(Item.GetBaseItem().InteractionType)) { WiredSaver.HandleDefaultSave(Item.Id, Room); } PiciEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.FURNI_PLACE); } //if (UpdateNeeded) // Room.SaveFurniture(); }
internal void PlacePostIt() { Room Room = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } uint itemId = Request.PopWiredUInt(); string locationData = Request.PopFixedString(); UserItem item = Session.GetHabbo().GetInventoryComponent().GetItem(itemId); if (item == null || Room == null) return; try { WallCoordinate coordinate = new WallCoordinate(":" + locationData.Split(':')[1]); RoomItem RoomItem = new RoomItem(item.Id, Room.RoomId, item.BaseItem, item.ExtraData, coordinate, Room); if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(itemId, true); } } catch { Response.Init(516); Response.Append(11); SendResponse(); return; } }
internal void MoveWallItem() { Room Room = PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { return; } uint itemID = Request.PopWiredUInt(); string wallPositionData = Request.PopFixedString(); RoomItem Item = Room.GetRoomItemHandler().GetItem(itemID); if (Item == null) return; try { WallCoordinate coordinate = new WallCoordinate(":" + wallPositionData.Split(':')[1]); Item.wallCoord = coordinate; } catch { Response.Init(516); Response.Append(11); SendResponse(); return; } Room.GetRoomItemHandler().UpdateItem(Item); ServerMessage LeaveMessage = new ServerMessage(84); LeaveMessage.AppendRawUInt(Item.Id); LeaveMessage.Append(string.Empty); LeaveMessage.AppendBoolean(false); Room.SendMessage(LeaveMessage); ServerMessage Message = new ServerMessage(83); Item.Serialize(Message); Room.SendMessage(Message); }