internal PlayerInventory(PlayerInventory value) { InternalItems = new GameItem[InventorySize]; for (byte i = 0; i < InventorySize; i++) InternalItems[i] = new GameItem(value.InternalItems[i]); }
internal void SetItem(byte index, GameItem additem) { if(index > InventorySize) throw new ArgumentException("Item index is out of range."); GameItem item = new GameItem(additem); item.SlotId = index; InternalItems[index] = item; }
internal GameItem(GameItem value) { PlayerId = value.PlayerId; SlotId = value.SlotId; Stack = value.Stack; Prefix = value.Prefix; Id = value.Id; }
public PlayerInventory(GameItem[] items = null) { InternalItems = items?.Length == InventorySize ? items : new GameItem[InventorySize]; // check if any of the objects in the array are null and replace them if they are. also assign corrent slot ids for (byte i = 0; i < InventorySize; i++) { if (InternalItems[i] == null) InternalItems[i] = new GameItem(); InternalItems[i].SlotId = i; } }
///<summary>Sets an item in the bot players inventory at the given slot id.</summary> public void SetItem(GameItem setItem, byte slotId) { // check for out of range slotid if (slotId >= PlayerInventory.InventorySize) throw new ArgumentOutOfRangeException(nameof(slotId)); GameItem item = new GameItem(setItem) { PlayerId = PlayerId, SlotId = slotId }; Inventory.InternalItems[slotId] = item; Client.Send(TerrPacket.Create(TerrPacketType.SetInventory, item.CreatePayload())); }
private void GiveItem(Player player, GameItem item) => _client.Send(TerrPacketType.UpdateItemDrop, new WorldItem(item, 400, player.Position, 0));
protected override void ReadPayload(PayloadReader reader, TerrPacketType type) { CheckForValidType(type, TerrPacketType.UpdateItemDrop, TerrPacketType.UpdateItemDrop2); Item = new GameItem(); UniqueId = reader.ReadInt16(); Position = new ValPair<float>(reader); Velocity = new ValPair<float>(reader); Item.Stack = reader.ReadInt16(); Item.Prefix = reader.ReadByte(); NoDelay = reader.ReadByte(); Item.Id = reader.ReadInt16(); }
public WorldItem(GameItem item, short itemId, ValPair<float> position, byte noDelay, ValPair<float> velocity = null) { UniqueId = itemId; Position = position; Velocity = velocity ?? new ValPair<float>(0, 0); NoDelay = noDelay; Item = item; }
protected override void ReadPayload(PayloadReader reader, TerrPacketType type) { CheckForValidType(type, TerrPacketType.TravellingMerchantInventory); for (byte i = 0; i < Size; i++) { byte slot = reader.ReadByte(); Items[i] = new GameItem(reader.ReadByte()) {SlotId = slot}; } }