/// <summary> /// Gets an item in a player's equipment slot. Returns null if unsuccessful. /// </summary> /// <param name="slot">The equipment slot to get the item from.</param> /// <returns></returns> public Objects.Item GetItemInSlot(Enums.EquipmentSlots slot) { Item item = null; switch (slot) { case Enums.EquipmentSlots.Ammo: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqAmmo, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqAmmo), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqAmmo + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Ammo); break; case Enums.EquipmentSlots.Torso: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqTorso, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqTorso), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqTorso + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Torso); break; case Enums.EquipmentSlots.Container: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqContainer, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqContainer), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqContainer + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Container); break; case Enums.EquipmentSlots.Feet: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqFeet, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqFeet), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqFeet + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Feet); break; case Enums.EquipmentSlots.Head: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqHead, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqHead), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqHead + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Head); break; case Enums.EquipmentSlots.LeftHand: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqLeftHand, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqLeftHand), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqLeftHand + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.LeftHand); break; case Enums.EquipmentSlots.Neck: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqNeck, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqNeck), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqNeck + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Neck); break; case Enums.EquipmentSlots.RightHand: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqRightHand, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqRightHand), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqRightHand + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.RightHand); break; case Enums.EquipmentSlots.Ring: item = new Objects.Item(this.Client, this.Client.Addresses.Containers.EqRing, this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqRing), this.Client.Memory.ReadUInt16(this.Client.Addresses.Containers.EqRing + this.Client.Addresses.Item.Distances.Count), Enums.EquipmentSlots.Ring); break; default: return(null); } if (item == null || item.ID == 0) { return(null); } return(item); }
public Item(Client c, int address, ushort id, ushort count, Enums.EquipmentSlots eqSlot) { this.Client = c; this.Address = address; this.ID = id; this.Count = count; this.Type = Types.Equipment; }
/// <summary> /// Constructor for a non-existant item in a equpiment slot. /// Use Item.ToItemLocation() for an existing item. /// </summary> /// <param name="slot">The equipment slot.</param> public ItemLocation(Enums.EquipmentSlots slot) { Objects.Item item = new Objects.Item(null) { ID = 0, Count = 0, Slot = 0, ContainerNumber = (byte)slot, }; this.WorldLocation = item.ToLocation(); this.ItemID = item.ID; this.ItemCount = item.Count; this.StackIndex = item.Slot; }