Exemplo n.º 1
0
        public void LoadNewbieRoomItems(DatabaseClient dbClient)
        {
            Logging.Write("Loading newbie room items... ");
            Dictionary <uint, List <RoomItem> > newItems = new Dictionary <uint, List <RoomItem> >();

            DataTable items = dbClient.ReadDataTable("SELECT * FROM items_newbie_room");

            if (items != null)
            {
                foreach (DataRow dataRow in items.Rows)
                {
                    string wallPos = (string)dataRow["wall_pos"];

                    RoomItem item = RoomItem.GetRoomItem((uint)dataRow["Id"], 0, 0, (uint)dataRow["base_item"], (string)dataRow["extra_data"], (int)dataRow["x"], (int)dataRow["y"], (double)dataRow["z"], (int)dataRow["rot"], (string.IsNullOrEmpty(wallPos) ? null : new WallCoordinate(wallPos)), null);
                    if (!newItems.ContainsKey((uint)dataRow["room_id"]))
                    {
                        newItems[(uint)dataRow["room_id"]] = new List <RoomItem>();
                    }

                    newItems[(uint)dataRow["room_id"]].Add(item);
                }
            }

            this.NewbieRoomItems = newItems;
            Logging.WriteLine("completed!", ConsoleColor.Green);
        }
Exemplo n.º 2
0
        public void Handle(GameClient session, ClientMessage message)
        {
            if (session != null && session.GetHabbo() != null && session.GetHabbo().GetRoomSession() != null)
            {
                Room room = session.GetHabbo().GetRoomSession().GetRoom();
                if (room != null && room.GaveRoomRights(session))
                {
                    string   data         = message.PopStringUntilBreak(null);
                    string[] splittedData = data.Split(' ');

                    uint itemId = uint.Parse(splittedData[0].Replace("-", ""));
                    if (splittedData[1].StartsWith(":"))
                    {
                        InventoryItem item = session.GetHabbo().GetInventoryManager().TryGetWallItem(itemId);
                        if (item != null && item.GetItem() != null)
                        {
                            RoomItem roomItem = RoomItem.GetRoomItem(itemId, room.ID, session.GetHabbo().ID, item.BaseItem, item.ExtraData, 0, 0, 0.0, 0, new WallCoordinate(":" + data.Split(':')[1]), room);
                            if (room.RoomItemManager.AddWallItemToRoom(session, roomItem))
                            {
                                session.GetHabbo().GetInventoryManager().RemoveItemFromHand(itemId, false);

                                using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                                {
                                    dbClient.AddParamWithValue("roomid", room.ID);
                                    dbClient.AddParamWithValue("itemid", itemId);
                                    dbClient.ExecuteQuery("UPDATE items SET room_id = @roomid WHERE id = @itemid LIMIT 1");
                                }
                            }
                        }
                    }
                    else
                    {
                        InventoryItem item = session.GetHabbo().GetInventoryManager().TryGetFloorItem(itemId);
                        if (item != null && item.GetItem() != null)
                        {
                            int x   = int.Parse(splittedData[1]);
                            int y   = int.Parse(splittedData[2]);
                            int rot = int.Parse(splittedData[3]);

                            RoomItem roomItem = RoomItem.GetRoomItem(itemId, room.ID, session.GetHabbo().ID, item.BaseItem, item.ExtraData, x, y, 0.0, rot, null, room);
                            if (room.RoomItemManager.AddFloorItemToRoom(session, roomItem, x, y, rot))
                            {
                                session.GetHabbo().GetInventoryManager().RemoveItemFromHand(itemId, false);

                                using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                                {
                                    dbClient.AddParamWithValue("roomid", room.ID);
                                    dbClient.AddParamWithValue("itemid", itemId);
                                    dbClient.ExecuteQuery("UPDATE items SET room_id = @roomid WHERE id = @itemid LIMIT 1");
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null && room.GaveRoomRights(session))
            {
                uint   itemId   = message.PopWiredUInt();
                string wallData = message.PopFixedString();

                InventoryItem item = session.GetHabbo().GetInventoryManager().TryGetWallItem(itemId);
                if (item != null)
                {
                    if (wallData.StartsWith(":"))
                    {
                        RoomItem roomItem = RoomItem.GetRoomItem(itemId, room.ID, session.GetHabbo().ID, item.BaseItem, item.ExtraData, 0, 0, 0.0, 0, new WallCoordinate(wallData), room);
                        if (room.RoomItemManager.AddWallItemToRoom(session, roomItem))
                        {
                            session.GetHabbo().GetInventoryManager().RemoveItemFromHand(itemId, false);
                        }

                        using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                        {
                            dbClient.AddParamWithValue("roomid", room.ID);
                            dbClient.AddParamWithValue("itemid", itemId);
                            dbClient.ExecuteQuery("UPDATE items SET room_id = @roomid WHERE id = @itemid LIMIT 1");
                        }

                        if (session.GetHabbo().ID != room.RoomData.OwnerID)
                        {
                            session.GetHabbo().GetUserStats().NotesLeft++;
                            session.GetHabbo().GetUserAchievements().CheckAchievement("NotesLeft");

                            GameClient roomOwner = Skylight.GetGame().GetGameClientManager().GetGameClientById(room.RoomData.OwnerID);
                            if (roomOwner != null)
                            {
                                roomOwner.GetHabbo().GetUserStats().NotesReceived++;
                                roomOwner.GetHabbo().GetUserAchievements().CheckAchievement("NotesReceived");
                            }
                            else
                            {
                                using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                                {
                                    dbClient.AddParamWithValue("ownerId", room.RoomData.OwnerID);
                                    dbClient.ExecuteQuery("UPDATE user_stats SET notes_received = notes_received + 1 WHERE user_id = @ownerId LIMIT 1");
                                }
                            }
                        }
                    }
                }
            }
        }