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); }
public InventoryStatus GiveItem(string InxName, byte amount = 1) { ItemInfo info; if (DataProvider.Instance.ItemsByName.TryGetValue(InxName, out info)) { ushort id = DataProvider.Instance.GetItemByInxNameInfo(InxName).ItemID; 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; }
/// <summary> /// Veraltete Methode zum Hinzufügen eines neuen Objekts zum EntitySet 'DatabaseItems'. Verwenden Sie stattdessen die Methode '.Add' der zugeordneten Eigenschaft 'ObjectSet<T>'. /// </summary> public void AddToDatabaseItems(DatabaseItem databaseItem) { base.AddObject("DatabaseItems", databaseItem); }
/// <summary> /// Erstellt ein neues DatabaseItem-Objekt. /// </summary> /// <param name="id">Anfangswert der Eigenschaft ID.</param> /// <param name="owner">Anfangswert der Eigenschaft Owner.</param> /// <param name="objectID">Anfangswert der Eigenschaft ObjectID.</param> /// <param name="slot">Anfangswert der Eigenschaft Slot.</param> /// <param name="amount">Anfangswert der Eigenschaft Amount.</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; }