public void Parse(GameClient Session, ClientPacket Packet) { Room room = Session.GetHabbo().CurrentRoom; if (room == null) { return; } if (!room.CheckRights(Session) && !room.CheckRights(Session, true)) { return; } WiredSaver.HandleSave(Session, Packet.PopInt(), Session.GetHabbo().CurrentRoom, Packet); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null || !Room.CheckRights(Session)) { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_not_owner}")); return; } if (Room.RoomData.SellPrice > 0) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("roomsell.error.7", Session.Langue)); return; } string RawData = Packet.PopString(); string[] Data = RawData.Split(new char[1] { ' ' }); int ItemId = 0; if (!int.TryParse(Data[0], out ItemId)) { return; } if (ItemId <= 0) { return; } Item userItem = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (userItem == null) { return; } if (userItem.GetBaseItem().InteractionType == InteractionType.BADGE_TROC) { if (Session.GetHabbo().GetBadgeComponent().HasBadge(userItem.ExtraData)) { Session.SendNotification("Vous posséder déjà ce badge !"); return; } using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("DELETE FROM items WHERE id = " + ItemId); Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); Session.GetHabbo().GetBadgeComponent().GiveBadge(userItem.ExtraData, true); Session.SendPacket(new ReceiveBadgeComposer(userItem.ExtraData)); Session.SendNotification("Vous avez reçu le badge: " + userItem.ExtraData + " !"); return; } if (!userItem.IsWallItem) { if (Data.Length < 4) { return; } int X = 0; int Y = 0; int Rotation = 0; if (!int.TryParse(Data[1], out X)) { return; } if (!int.TryParse(Data[2], out Y)) { return; } if (!int.TryParse(Data[3], out Rotation)) { return; } if (Session.GetHabbo().forceRot > -1) { Rotation = Session.GetHabbo().forceRot; } Item roomItem = new Item(userItem.Id, Room.Id, userItem.BaseItem, userItem.ExtraData, userItem.LimitedNo, userItem.LimitedTot, X, Y, 0.0, Rotation, "", Room); if (Room.GetRoomItemHandler().SetFloorItem(Session, roomItem, X, Y, Rotation, true, false, true)) { using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE items SET room_id = " + Room.Id + ", user_id = " + Room.RoomData.OwnerId + " WHERE id = " + ItemId); Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); if (WiredUtillity.TypeIsWired(userItem.GetBaseItem().InteractionType)) { WiredSaver.HandleDefaultSave(userItem.Id, Room, roomItem); } ButterflyEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_PLACE, 0); } else { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_item}")); return; } } else if (userItem.IsWallItem) { string[] CorrectedData = new string[Data.Length - 1]; for (int i = 1; i < Data.Length; i++) { CorrectedData[i - 1] = Data[i]; } string WallPos = string.Empty; if (TrySetWallItem(CorrectedData, out WallPos)) { Item roomItem = new Item(userItem.Id, Room.Id, userItem.BaseItem, userItem.ExtraData, userItem.LimitedNo, userItem.LimitedTot, 0, 0, 0.0, 0, WallPos, Room); if (Room.GetRoomItemHandler().SetWallItem(Session, roomItem)) { using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE items SET room_id = " + Room.Id + ", user_id = " + Room.RoomData.OwnerId + " WHERE id = " + ItemId); Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); } } else { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_item}")); return; } } }