private static void TakeItem(Session Session, ClientMessage Message) { RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); if (Instance == null || !Instance.CheckUserRights(Session, true)) { return; } int Unknown1 = Message.PopWiredInt32(); Item Item = Instance.GetItem(Message.PopWiredUInt32()); if (Item == null || Item.Definition.Behavior == ItemBehavior.StickyNote) { return; } if (Instance.TakeItem(Item.Id)) { ItemEventDispatcher.InvokeItemEventHandler(Session, Item, Instance, ItemEventType.Removing); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Item.MoveToUserInventory(MySqlClient, Session.CharacterId); } Instance.RegenerateRelativeHeightmap(); Session.InventoryCache.Add(Item); Session.SendData(InventoryItemAddedComposer.Compose(Item)); QuestManager.ProgressUserQuest(Session, QuestType.FURNI_PICK); } }
private static void RemoveFromPlaylist(Session Session, ClientMessage Message) { RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); if (Instance == null || Instance.MusicController == null || !Instance.CheckUserRights(Session, true)) { return; } Item TakenItem = Instance.MusicController.RemoveDisk(Message.PopWiredInt32()); // playlist will skip to the next item automatically if it has to if (TakenItem == null) { return; } Session.InventoryCache.Add(TakenItem); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { TakenItem.MoveToUserInventory(MySqlClient, Session.CharacterId); } Session.SendData(InventoryItemAddedComposer.Compose(TakenItem)); Session.SendData(JukeboxDisksComposer.Compose(Session)); Session.SendData(JukeboxPlaylistComposer.Compose(Instance.MusicController.PlaylistCapacity, Instance.MusicController.Playlist.Values.ToList())); }
private static void RecycleItems(Session Session, ClientMessage Message) { if (!mEnabled) { Session.SendData(NotificationMessageComposer.Compose("The recycler is temporarily disabled. Please check back later.")); return; } int Amount = Message.PopWiredInt32(); RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); if (Instance == null || Amount != 5) { return; } ItemDefinition Reward = ItemDefinitionManager.GetDefinition(GetRandomReward()); if (Reward == null) { return; } List <Item> ItemsToRecycle = new List <Item>(); for (int i = 0; i < 5; i++) { Item Item = Session.InventoryCache.GetItem(Message.PopWiredUInt32()); if (Item == null || !Item.Definition.AllowRecycle || ItemsToRecycle.Contains(Item)) { return; } ItemsToRecycle.Add(Item); } Item NewItem = null; using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { foreach (Item Item in ItemsToRecycle) { Session.InventoryCache.RemoveItem(Item.Id); Item.RemovePermanently(MySqlClient); Session.SendData(InventoryItemRemovedComposer.Compose(Item.Id)); } NewItem = ItemFactory.CreateItem(MySqlClient, Reward.Id, Session.CharacterId, string.Empty, string.Empty, 0); } Session.InventoryCache.Add(NewItem); Session.SendData(RecyclerResultComposer.Compose(true, NewItem.Id)); Session.SendData(InventoryItemAddedComposer.Compose(NewItem)); }