public override void MoveItem(uint uid, int quantity) { if (quantity > 0) { CharacterItemRecord item = this.Character.Inventory.GetItem(uid); if (item != null && item.Quantity >= quantity && item.CanBeExchanged()) { BankItemRecord bankItem = item.ToBankItemRecord(this.Character.Client.Account.Id); bankItem.Quantity = (uint)quantity; this.Character.Inventory.RemoveItem(item.UId, (uint)quantity); this.m_items.AddItem(bankItem); } } else { BankItemRecord item = this.m_items.GetItem(uid); uint removedQuantity = (uint)Math.Abs(quantity); if (item != null && item.Quantity >= removedQuantity) { CharacterItemRecord characterItemRecord = item.ToCharacterItemRecord(this.Character.Id); characterItemRecord.Quantity = removedQuantity; this.m_items.RemoveItem(uid, removedQuantity); this.Character.Inventory.AddItem(characterItemRecord); } } }
public void RemoveItemFromPanel(BankItemRecord obj, int quantity) { if (obj.IsNull()) { return; } if (obj.Quantity == (uint)-quantity) { SaveTask.RemoveElement(obj); var existing = Client.Character.Inventory.Items.ExistingItem(obj); if (existing != null) { existing.Quantity += (uint)-quantity; SaveTask.UpdateElement(existing); Client.Character.Inventory.Refresh(); } else { Client.Character.Inventory.Add(obj); } Client.Send(new StorageObjectRemoveMessage(obj.UID)); } else { obj.Quantity = (uint)(obj.Quantity + quantity); SaveTask.UpdateElement(obj); Client.Character.Inventory.Add(obj, (uint)-quantity); Client.Send(new StorageObjectUpdateMessage(obj.GetObjectItem())); } }
public static uint PopNextUID() { Locker.EnterReadLock(); try { List <uint> uids = CharactersItems.ConvertAll <uint>(x => x.UID); uids.AddRange(BidShopItemRecord.GetAllItemsUIDs()); uids.AddRange(BankItemRecord.GetAllItemsUIDs()); uids.Sort(); if (uids.Count == 0) { return(1); } return(uids.Last() + 1); } finally { Locker.ExitReadLock(); } }
public BankItem CreateBankItem(Character character, BasePlayerItem item, int amount) { if (amount < 0) { throw new ArgumentException("amount < 0", "amount"); } var guid = BankItemRecord.PopNextId(); var record = new BankItemRecord // create the associated record { Id = guid, OwnerAccountId = character.Account.Id, Template = item.Template, Stack = (uint)amount, Effects = new List <EffectBase>(item.Effects), IsNew = true }; return(new BankItem(character, record)); }
public BankItem CreateBankItem(Character character, ItemTemplate template, int amount, bool maxStats = false) { if (amount < 0) { throw new ArgumentException("amount < 0", "amount"); } var guid = BankItemRecord.PopNextId(); var record = new BankItemRecord // create the associated record { Id = guid, OwnerAccountId = character.Account.Id, Template = template, Stack = (uint)amount, Effects = GenerateItemEffects(template, maxStats), IsNew = true }; return(new BankItem(character, record)); }
void m_items_OnItemAdded(BankItemRecord obj) { obj.AddElement(); this.Character.Client.Send(new StorageObjectUpdateMessage(obj.GetObjectItem())); }
void m_items_OnItemRemoved(BankItemRecord obj) { obj.RemoveElement(); this.Character.Client.Send(new StorageObjectRemoveMessage(obj.UId)); }
void m_items_OnItemStacked(BankItemRecord arg1, uint arg2) { arg1.UpdateElement(); this.Character.Client.Send(new StorageObjectUpdateMessage(arg1.GetObjectItem())); }
public void Add(BankItemRecord item, uint quantity) { var newItem = new CharacterItemRecord(item.UID, 63, item.GID, Character.Id, quantity, item.GetEffects()); Add(newItem); }
public static BankItemRecord ExistingItem(this List <BankItemRecord> itemlist, BankItemRecord item) { var existingItem = itemlist.Find(x => x.GID == item.GID && x.EffectsLinkedToList == item.EffectsLinkedToList); if (existingItem == null) { return(null); } else { return(existingItem); } }