public static ItemBase DecodeItemData(ClientConnection pConnection, MaplePacket pPacket) { byte type = pPacket.ReadByte(); ItemBase ret = null; switch (type) { case 1: ret = new ItemEquip(); ret.Amount = 1; break; case 2: ret = new ItemRechargable(); break; case 3: ret = new ItemPet(); ret.Amount = 1; break; default: { Logger.WriteLine("Unkown ItemType: {0}", type); return(null); } } ret.Decode(pConnection, pPacket); return(ret); }
public static ItemBase DecodeItemData(ClientConnection pConnection, MaplePacket pPacket) { byte type = pPacket.ReadByte(); ItemBase ret = null; switch (type) { case 1: ret = new ItemEquip(); ret.Amount = 1; break; case 2: ret = new ItemRechargable(); break; case 3: ret = new ItemPet(); ret.Amount = 1; break; default: { Logger.WriteLine("Unkown ItemType: {0}", type); return null; } } ret.Decode(pConnection, pPacket); return ret; }
public void Decode(MaplePacket pPacket) { InventorySlots = new byte[INVENTORIES]; for (int i = 0; i < INVENTORIES; i++) { InventorySlots[i] = pPacket.ReadByte(); } pPacket.ReadLong(); // 94354848000000000 | 1-1-1900 EquipmentItems = new Dictionary <short, ItemEquip> [EQUIP_INVENTORIES]; for (byte i = 0; i < EQUIP_INVENTORIES; i++) { EquipmentItems[i] = new Dictionary <short, ItemEquip>(); while (true) { short slot = pPacket.ReadShort(); if (slot == 0) { break; } ItemEquip equip = (ItemEquip)ItemBase.DecodeItemData(pPacket); EquipmentItems[i].Add(slot, equip); } } InventoryItems = new Dictionary <byte, ItemBase> [NORMAL_INVENTORIES]; for (byte i = 0; i < NORMAL_INVENTORIES; i++) { InventoryItems[i] = new Dictionary <byte, ItemBase>(); while (true) { byte slot = pPacket.ReadByte(); if (slot == 0) { break; } ItemBase item = ItemBase.DecodeItemData(pPacket); InventoryItems[i].Add(slot, item); } } }
public void Decode(ClientConnection pConnection, MaplePacket pPacket) { InventorySlots = new byte[INVENTORIES]; for (int i = 0; i < INVENTORIES; i++) { InventorySlots[i] = pPacket.ReadByte(); } pPacket.ReadLong(); // 94354848000000000 | 1-1-1900 EquipmentItems = new Dictionary <short, ItemEquip> [EQUIP_INVENTORIES]; #if LOCALE_EMS for (byte i = 0; i < 3; i++) { EquipmentItems[i] = new Dictionary <short, ItemEquip>(); while (true) { short slot = pPacket.ReadShort(); if (slot == 0) { break; } slot = CharacterInventory.CorrectEquipSlot(i, slot); ItemEquip equip = (ItemEquip)ItemBase.DecodeItemData(pConnection, pPacket); EquipmentItems[i].Add(slot, equip); } } pPacket.ReadBool(); // EMS only -.- for (byte i = 3; i < EQUIP_INVENTORIES; i++) { EquipmentItems[i] = new Dictionary <short, ItemEquip>(); while (true) { short slot = pPacket.ReadShort(); if (slot == 0) { break; } slot = CharacterInventory.CorrectEquipSlot(i, slot); ItemEquip equip = (ItemEquip)ItemBase.DecodeItemData(pConnection, pPacket); EquipmentItems[i].Add(slot, equip); } } #else for (byte i = 0; i < EQUIP_INVENTORIES; i++) { EquipmentItems[i] = new Dictionary <short, ItemEquip>(); while (true) { short slot = pPacket.ReadShort(); if (slot == 0) { break; } slot = CharacterInventory.CorrectEquipSlot(i, slot); ItemEquip equip = (ItemEquip)ItemBase.DecodeItemData(pConnection, pPacket); EquipmentItems[i].Add(slot, equip); } } #endif InventoryItems = new Dictionary <byte, ItemBase> [NORMAL_INVENTORIES]; BagItems = new Dictionary <int, BagItem>(); for (byte i = 0; i < NORMAL_INVENTORIES; i++) { InventoryItems[i] = new Dictionary <byte, ItemBase>(); while (true) { byte slot = pPacket.ReadByte(); if (slot == 0) { break; } ItemBase item = ItemBase.DecodeItemData(pConnection, pPacket); InventoryItems[i].Add(slot, item); if (item.BagID != -1) { // Update BagID... O.o item.BagID = GameHelper.GetBagID(item.BagID, i); BagItem bi = new BagItem(item); BagItems.Add(item.BagID, bi); } } } // Bagzzz for (int inv = 3; inv <= 4; inv++) { var bags = pPacket.ReadInt(); for (int i = 0; i < bags; i++) { int bagid = pPacket.ReadInt(); int bagitemid = pPacket.ReadInt(); BagItem bi = BagItems[GameHelper.GetBagID(bagid, inv - 2)]; // No addition to inv...! while (true) { int slotid = pPacket.ReadInt(); if (slotid == -1) { break; } ItemBase item = ItemBase.DecodeItemData(pConnection, pPacket); bi.Items.Add((byte)slotid, item); } } } }