public Item(DroppedItem item, ZoneCharacter pNewOwner, sbyte pSlot) { DatabaseItem dbi = new DatabaseItem(); dbi.Amount = item.Amount; dbi.Character = pNewOwner.character; dbi.ObjectID = item.ItemID; dbi.Slot = pSlot; Program.Entity.AddToDatabaseItems(dbi); Program.Entity.SaveChanges(); _item = dbi; ItemID = item.ItemID; pNewOwner.InventoryItems.Add(pSlot, this); }
/// <summary> /// Deprecated Method for adding a new object to the DatabaseItems EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToDatabaseItems(DatabaseItem databaseItem) { base.AddObject("DatabaseItems", databaseItem); }
/// <summary> /// Create a new DatabaseItem object. /// </summary> /// <param name="id">Initial value of the ID property.</param> /// <param name="owner">Initial value of the Owner property.</param> /// <param name="objectID">Initial value of the ObjectID property.</param> /// <param name="slot">Initial value of the Slot property.</param> /// <param name="amount">Initial value of the Amount property.</param> public static DatabaseItem CreateDatabaseItem(global::System.Int32 id, global::System.Int32 owner, global::System.Int32 objectID, global::System.Int16 slot, global::System.Int16 amount) { DatabaseItem databaseItem = new DatabaseItem(); databaseItem.ID = id; databaseItem.Owner = owner; databaseItem.ObjectID = objectID; databaseItem.Slot = slot; databaseItem.Amount = amount; return databaseItem; }
public Item(DatabaseItem item) { _item = item; ItemID = (ushort)item.ObjectID; }
public InventoryStatus GiveItem(ushort id, byte amount = 1) { ItemInfo info; if (DataProvider.Instance.ItemsByID.TryGetValue(id, out info)) { if (info.Slot == FiestaLib.ItemSlot.Normal) { foreach (var i in InventoryItems.Values) { if (i.ItemID == id && i.Amount < i.Info.MaxLot) { // We found the same item and it can stack more! byte left = (byte)(i.Info.MaxLot - i.Amount); if (left > amount) { i.Amount += left; amount -= left; } else { i.Amount += amount; amount = 0; } Handler12.ModifyInventorySlot(this, 0x24, (byte)i.Slot, (byte)i.Slot, i); if (amount == 0) { break; } } } // If we have still some stuff left, go ahead and create new stacks! if (amount > 0) { while (amount > 0) { sbyte invslot; if (GetFreeInventorySlot(out invslot)) { DatabaseItem item = new DatabaseItem(); item.Amount = amount; item.Character = character; item.ObjectID = info.ItemID; item.Slot = invslot; Program.Entity.AddToDatabaseItems(item); Item nitem = new Item(item); InventoryItems.Add(invslot, nitem); Handler12.ModifyInventorySlot(this, 0x24, (byte)invslot, (byte)invslot, nitem); amount -= info.MaxLot; } else return InventoryStatus.FULL; } } Save(); return InventoryStatus.ADDED; } else { sbyte invslot; if (GetFreeInventorySlot(out invslot)) { DatabaseEquip equip = new DatabaseEquip(); equip.Character = character; equip.EquipID = info.ItemID; equip.Slot = invslot; Program.Entity.AddToDatabaseEquips(equip); Equip nequip = new Equip(equip); InventoryItems.Add(invslot, nequip); Save(); Handler12.ModifyInventorySlot(this, 0x24, (byte)invslot, (byte)invslot, nequip); return InventoryStatus.ADDED; } else return InventoryStatus.FULL; } } else return InventoryStatus.NOT_FOUND; }