private static void DeleteSticky(Session Session, ClientMessage Message) { RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.CurrentRoomId); if (Instance == null || !Instance.CheckUserRights(Session, true)) { return; } Item Item = Instance.GetItem(Message.PopWiredUInt32()); if (Item == null || Item.Definition.Behavior != ItemBehavior.StickyNote) { return; } if (Instance.TakeItem(Item.Id)) { Instance.RegenerateRelativeHeightmap(); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Item.RemovePermanently(MySqlClient); } } }
private static bool HandleExchangeRedemption(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData) { switch (Event) { case ItemEventType.Interact: int ItemValue = 0; int.TryParse(Item.Flags, out ItemValue); using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { if (ItemValue != 0) { Session.CharacterInfo.UpdateCreditsBalance(MySqlClient, ItemValue); Session.SendData(CreditsBalanceComposer.Compose(Session.CharacterInfo.CreditsBalance)); } Item.RemovePermanently(MySqlClient); } Instance.TakeItem(Item.Id); Instance.RegenerateRelativeHeightmap(); break; } return true; }
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 bool HandleRental(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData) { switch (Event) { case ItemEventType.Placed: case ItemEventType.InstanceLoaded: if (Item.PendingExpiration) { int DesiredTicks = (int)((double)(Math.Ceiling(Item.ExpireTimeLeft * 2))); if (DesiredTicks <= 0) { goto case ItemEventType.UpdateTick; } Item.RequestUpdate(DesiredTicks); return true; } break; case ItemEventType.UpdateTick: if (Item.PendingExpiration) { using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) { Item.RemovePermanently(MySqlClient); Instance.TakeItem(Item.Id); Instance.RegenerateRelativeHeightmap(); } return true; } break; } return HandleGenericSwitch(Session, Item, Instance, Event, RequestData); }