public static void HandleVendorInventory(Packet packet) { uint entry = packet.ReadPackedGuid128("VendorGUID").GetEntry(); packet.ReadByte("Reason"); int count = packet.ReadInt32("VendorItems"); for (int i = 0; i < count; ++i) { NpcVendor vendor = new NpcVendor { Entry = entry, Slot = packet.ReadInt32("Muid", i), Type = (uint)packet.ReadInt32("Type", i) }; int maxCount = packet.ReadInt32("Quantity", i); packet.ReadInt64("Price", i); packet.ReadInt32("Durability", i); int buyCount = packet.ReadInt32("StackCount", i); vendor.ExtendedCost = packet.ReadUInt32("ExtendedCostID", i); vendor.PlayerConditionID = packet.ReadUInt32("PlayerConditionFailed", i); vendor.Item = V6_0_2_19033.Parsers.ItemHandler.ReadItemInstance(packet, i); vendor.IgnoreFiltering = packet.ReadBit("DoNotFilterOnVendor", i); vendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB if (vendor.Type == 2) vendor.MaxCount = (uint)buyCount; Storage.NpcVendors.Add(vendor, packet.TimeSpan); } }
public static void HandleVendorInventoryList(Packet packet) { var guid = new byte[8]; guid[5] = packet.ReadBit(); uint count = packet.ReadBits(18); guid[0] = packet.ReadBit(); guid[2] = packet.ReadBit(); var hasExtendedCost = new bool[count]; var hasCondition = new bool[count]; for (int i = 0; i < count; ++i) { packet.ReadBit("Unk bit", i); hasExtendedCost[i] = !packet.ReadBit(); hasCondition[i] = !packet.ReadBit(); } packet.StartBitStream(guid, 3, 7, 1, 6, 4); packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 1); var tempList = new List<NpcVendor>(); for (int i = 0; i < count; ++i) { NpcVendor vendor = new NpcVendor(); int maxCount = packet.ReadInt32("Max Count", i); vendor.Type = packet.ReadUInt32("Type", i); // 1 - item, 2 - currency if (hasCondition[i]) vendor.PlayerConditionID = packet.ReadUInt32("Condition ID", i); packet.ReadInt32("Max Durability", i); packet.ReadInt32("Item Upgrade ID", i); packet.ReadInt32("Price", i); packet.ReadInt32("Display ID", i); vendor.Item = packet.ReadInt32<ItemId>("Item ID", i); vendor.Slot = packet.ReadInt32("Item Position", i); if (hasExtendedCost[i]) vendor.ExtendedCost = packet.ReadUInt32("Extended Cost", i); uint buyCount = packet.ReadUInt32("Buy Count", i); vendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB if (vendor.Type == 2) vendor.MaxCount = buyCount; tempList.Add(vendor); } packet.ReadXORByte(guid, 2); packet.ReadXORByte(guid, 7); packet.ReadXORByte(guid, 4); packet.ReadByte("Byte10"); packet.ReadXORByte(guid, 0); packet.ReadXORByte(guid, 5); packet.ReadXORByte(guid, 3); uint entry = packet.WriteGuid("GUID", guid).GetEntry(); tempList.ForEach(v => { v.Entry = entry; Storage.NpcVendors.Add(v, packet.TimeSpan); }); }
public static void HandleVendorInventoryList422(Packet packet) { var npcVendor = new NpcVendor(); var guidBytes = new byte[8]; guidBytes[5] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[6] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[1] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[2] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[3] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[0] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[7] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[4] = (byte)(packet.ReadBit() ? 1 : 0); if (guidBytes[2] != 0) guidBytes[2] ^= packet.ReadByte(); if (guidBytes[3] != 0) guidBytes[3] ^= packet.ReadByte(); var itemCount = packet.ReadUInt32("Item Count"); if (guidBytes[5] != 0) guidBytes[5] ^= packet.ReadByte(); if (guidBytes[0] != 0) guidBytes[0] ^= packet.ReadByte(); if (guidBytes[1] != 0) guidBytes[1] ^= packet.ReadByte(); packet.ReadByte("Unk Byte"); if (guidBytes[4] != 0) guidBytes[4] ^= packet.ReadByte(); if (guidBytes[7] != 0) guidBytes[7] ^= packet.ReadByte(); if (guidBytes[6] != 0) guidBytes[6] ^= packet.ReadByte(); var guid = new Guid(BitConverter.ToUInt64(guidBytes, 0)); packet.WriteLine("GUID: {0}", guid); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); vendorItem.MaxCount = packet.ReadInt32("Max Count", i); packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); npcVendor.VendorItems.Add(vendorItem); } Storage.NpcVendors.TryAdd(guid.GetEntry(), npcVendor); }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guid = packet.ReadGuid("GUID"); var itemCount = packet.ReadByte("Item Count"); npcVendor.VendorItems = new List<VendorItem>(itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Display ID", i); vendorItem.MaxCount = packet.ReadInt32("Max Count", i); packet.ReadInt32("Price", i); packet.ReadInt32("Max Durability", i); packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); } Storage.NpcVendors.TryAdd(guid.GetEntry(), npcVendor); }
public static void HandleVendorInventoryList434(Packet packet) { var npcVendor = new NpcVendor(); var guidBytes = new byte[8]; guidBytes[1] = packet.ReadBit(); guidBytes[0] = packet.ReadBit(); var itemCount = packet.ReadBits("Item Count", 21); guidBytes[3] = packet.ReadBit(); guidBytes[6] = packet.ReadBit(); guidBytes[5] = packet.ReadBit(); guidBytes[2] = packet.ReadBit(); guidBytes[7] = packet.ReadBit(); var hasExtendedCost = new bool[itemCount]; var enabler2 = new bool[itemCount]; for (int i = 0; i < itemCount; ++i) { hasExtendedCost[i] = !packet.ReadBit(); enabler2[i] = !packet.ReadBit(); } guidBytes[4] = packet.ReadBit(); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (int i = 0; i < itemCount; ++i) { var vendorItem = new VendorItem(); vendorItem.Slot = packet.ReadUInt32("Item Position", i); packet.ReadInt32("Max Durability", i); if (hasExtendedCost[i]) vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); vendorItem.Type = packet.ReadUInt32("Type", i); // 1 - item, 2 - currency packet.ReadInt32("Price", i); packet.ReadInt32("Display ID", i); if (enabler2[i]) packet.ReadInt32("Unk Int32 8", i); var maxCount = packet.ReadInt32("Max Count", i); vendorItem.MaxCount = maxCount == -1 ? 0 : maxCount; // TDB var buyCount = packet.ReadUInt32("Buy Count", i); if (vendorItem.Type == 2) vendorItem.MaxCount = (int) buyCount; npcVendor.VendorItems.Add(vendorItem); } packet.ReadXORByte(guidBytes, 5); packet.ReadXORByte(guidBytes, 4); packet.ReadXORByte(guidBytes, 1); packet.ReadXORByte(guidBytes, 0); packet.ReadXORByte(guidBytes, 6); packet.ReadByte("Unk Byte"); packet.ReadXORByte(guidBytes, 2); packet.ReadXORByte(guidBytes, 3); packet.ReadXORByte(guidBytes, 7); var guid = new Guid(BitConverter.ToUInt64(guidBytes, 0)); packet.WriteLine("GUID: {0}", guid); Storage.NpcVendors.Add(guid.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList422(Packet packet) { var npcVendor = new NpcVendor(); var guidBytes = packet.StartBitStream(5, 6, 1, 2, 3, 0, 7, 4); packet.ReadXORByte(guidBytes, 2); packet.ReadXORByte(guidBytes, 3); var itemCount = packet.ReadUInt32("Item Count"); packet.ReadXORByte(guidBytes, 5); packet.ReadXORByte(guidBytes, 0); packet.ReadXORByte(guidBytes, 1); packet.ReadByte("Unk Byte"); packet.ReadXORByte(guidBytes, 4); packet.ReadXORByte(guidBytes, 7); packet.ReadXORByte(guidBytes, 6); var guid = new Guid(BitConverter.ToUInt64(guidBytes, 0)); packet.WriteLine("GUID: {0}", guid); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); var maxCount = packet.ReadInt32("Max Count", i); vendorItem.MaxCount = maxCount == -1 ? 0 : maxCount; // TDB packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); // where's the vendorItem.Type (1/2)? npcVendor.VendorItems.Add(vendorItem); } Storage.NpcVendors.Add(guid.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guid = packet.ReadGuid("GUID"); var itemCount = packet.ReadByte("Item Count"); npcVendor.VendorItems = new List<VendorItem>(itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); vendorItem.Slot = packet.ReadUInt32("Item Position", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_3_13329)) vendorItem.Type = packet.ReadUInt32("Item Type", i); // not confirmed vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Display ID", i); var maxCount = packet.ReadInt32("Max Count", i); vendorItem.MaxCount = maxCount == -1 ? 0 : maxCount; // TDB packet.ReadInt32("Price", i); packet.ReadInt32("Max Durability", i); var buyCount = packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_3_13329)) packet.ReadByte("Unk Byte", i); if (vendorItem.Type == 2) vendorItem.MaxCount = (int)buyCount; } Storage.NpcVendors.Add(guid.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList(Packet packet) { var guid = new byte[8]; guid[5] = packet.ReadBit(); guid[7] = packet.ReadBit(); guid[1] = packet.ReadBit(); guid[3] = packet.ReadBit(); guid[6] = packet.ReadBit(); var itemCount = packet.ReadBits(18); var unkBit = new uint[itemCount]; var hasExtendedCost = new bool[itemCount]; var hasCondition = new bool[itemCount]; for (var i = 0; i < itemCount; ++i) { unkBit[i] = packet.ReadBit(); hasExtendedCost[i] = !packet.ReadBit(); // +44 hasCondition[i] = !packet.ReadBit(); // +36 } guid[4] = packet.ReadBit(); guid[0] = packet.ReadBit(); guid[2] = packet.ReadBit(); packet.ReadByte("Byte10"); var tempList = new List<NpcVendor>(); for (var i = 0; i < itemCount; ++i) { NpcVendor vendor = new NpcVendor(); packet.AddValue("unkBit", unkBit[i], i); packet.ReadInt32("Max Durability", i); // +16 packet.ReadInt32("Price", i); // +20 vendor.Type = packet.ReadUInt32("Type", i); // +4 var maxCount = packet.ReadInt32("Max Count", i); // +24 vendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB packet.ReadInt32("Display ID", i); // +12 var buyCount = packet.ReadUInt32("Buy Count", i); // +28 if (vendor.Type == 2) vendor.MaxCount = buyCount; vendor.Item = (int)packet.ReadInt32<ItemId>("Item ID", i); // +8 if (hasExtendedCost[i]) vendor.ExtendedCost = packet.ReadUInt32("Extended Cost", i); // +36 packet.ReadInt32("Item Upgrade ID", i); // +32 if (hasCondition[i]) packet.ReadInt32("Condition ID", i); // +40 vendor.Slot = (int)packet.ReadUInt32("Item Position", i); // +0 tempList.Add(vendor); } packet.ParseBitStream(guid, 3, 7, 0, 6, 2, 1, 4, 5); uint entry = packet.WriteGuid("Guid", guid).GetEntry(); tempList.ForEach(v => { v.Entry = entry; Storage.NpcVendors.Add(v, packet.TimeSpan); }); }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guid = new byte[8]; guid[5] = packet.ReadBit(); guid[7] = packet.ReadBit(); guid[1] = packet.ReadBit(); guid[3] = packet.ReadBit(); guid[6] = packet.ReadBit(); var itemCount = packet.ReadBits(18); var unkBit = new uint[itemCount]; var hasExtendedCost = new bool[itemCount]; var hasCondition = new bool[itemCount]; for (var i = 0; i < itemCount; ++i) { unkBit[i] = packet.ReadBit(); hasExtendedCost[i] = !packet.ReadBit(); // +44 hasCondition[i] = !packet.ReadBit(); // +36 } guid[4] = packet.ReadBit(); guid[0] = packet.ReadBit(); guid[2] = packet.ReadBit(); packet.ReadByte("Byte10"); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; ++i) { var vendorItem = new VendorItem(); packet.WriteLine("[{0}] unkBit: {1}", i, unkBit[i]); packet.ReadInt32("Max Durability", i); // +16 packet.ReadInt32("Price", i); // +20 vendorItem.Type = packet.ReadUInt32("Type", i); // +4 var maxCount = packet.ReadInt32("Max Count", i); // +24 packet.ReadInt32("Display ID", i); // +12 var buyCount = packet.ReadUInt32("Buy Count", i); // +28 vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); // +8 if (hasExtendedCost[i]) vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); // +36 packet.ReadInt32("Item Upgrade ID", i); // +32 if (hasCondition[i]) packet.ReadInt32("Condition ID", i); // +40 vendorItem.Slot = packet.ReadUInt32("Item Position", i); // +0 npcVendor.VendorItems.Add(vendorItem); } packet.ParseBitStream(guid, 3, 7, 0, 6, 2, 1, 4, 5); packet.WriteGuid("Guid", guid); var vendorGUID = new Guid(BitConverter.ToUInt64(guid, 0)); Storage.NpcVendors.Add(vendorGUID.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList422(Packet packet) { var npcVendor = new NpcVendor(); var bits = new bool[8]; for (int c = 7; c >= 0; c--) bits[c] = packet.ReadBit(); var bytes = new byte[8]; // Data - real // E7| 30 64 26 |A0| EE F0 31 = F1 30 31 EF 00 00 27 65 // 7 6 5 4 3 2 1 0 // (E7 = 11100111) // If there is any error, change bytes[3] to 2 and bytes[2] to 3 var itemCount = packet.ReadUInt32("Item Count"); if (bits[7]) bytes[5] = (byte)(packet.ReadByte() ^ 1); if (bits[6]) bytes[0] = (byte)(packet.ReadByte() ^ 1); if (bits[5]) bytes[1] = (byte)(packet.ReadByte() ^ 1); if (bits[4]) bytes[3] = (byte)(packet.ReadByte() ^ 1); packet.ReadByte("Unk Byte"); if (bits[3]) bytes[2] = (byte)(packet.ReadByte() ^ 1); if (bits[2]) bytes[4] = (byte)(packet.ReadByte() ^ 1); if (bits[1]) bytes[7] = (byte)(packet.ReadByte() ^ 1); if (bits[0]) bytes[6] = (byte)(packet.ReadByte() ^ 1); var guid = new Guid(BitConverter.ToUInt64(bytes, 0)); packet.Writer.WriteLine("GUID: {0}", guid); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); vendorItem.MaxCount = packet.ReadInt32("Max Count", i); vendorItem.BuyCount = packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); npcVendor.VendorItems.Add(vendorItem); } Stuffing.NpcVendors.TryAdd(guid.GetEntry(), npcVendor); }
public static void HandleVendorInventoryList422(Packet packet) { var npcVendor = new NpcVendor(); var flags = packet.ReadEnum<BitMask>("GUID Byte Mask", TypeCode.Byte); if (flags.HasAnyFlag(BitMask.Byte2)) packet.ReadGuidByte(2); var itemCount = packet.ReadUInt32("Item Count"); if (flags.HasAnyFlag(BitMask.Byte5)) packet.ReadGuidByte(5); if (flags.HasAnyFlag(BitMask.Byte0)) // Flag? packet.ReadGuidByte(0); if (flags.HasAnyFlag(BitMask.Byte1)) // Flag? packet.ReadGuidByte(1); if (flags.HasAnyFlag(BitMask.Byte3)) // Flag? packet.ReadGuidByte(3); if (flags.HasAnyFlag(BitMask.Byte4)) packet.ReadGuidByte(4); if (flags.HasAnyFlag(BitMask.Byte7)) // Flag? packet.ReadGuidByte(7); if (!flags.HasAnyFlag(BitMask.Byte2)) // Flag? packet.ReadGuidByte(6); var guid = packet.ReadBitstreamedGuid(); packet.Writer.WriteLine("GUID: {0}", guid); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); vendorItem.MaxCount = packet.ReadInt32("Max Count", i); vendorItem.BuyCount = packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); npcVendor.VendorItems.Add(vendorItem); } Stuffing.NpcVendors.TryAdd(guid.GetEntry(), npcVendor); }
public static void HandleVendorInventoryList434(Packet packet) { var guidBytes = new byte[8]; guidBytes[1] = packet.ReadBit(); guidBytes[0] = packet.ReadBit(); uint count = packet.ReadBits("Item Count", 21); guidBytes[3] = packet.ReadBit(); guidBytes[6] = packet.ReadBit(); guidBytes[5] = packet.ReadBit(); guidBytes[2] = packet.ReadBit(); guidBytes[7] = packet.ReadBit(); var hasExtendedCost = new bool[count]; var hasCondition = new bool[count]; for (int i = 0; i < count; ++i) { hasExtendedCost[i] = !packet.ReadBit(); hasCondition[i] = !packet.ReadBit(); } guidBytes[4] = packet.ReadBit(); var tempList = new List<NpcVendor>(); for (int i = 0; i < count; ++i) { NpcVendor npcVendor = new NpcVendor { Slot = packet.ReadInt32("Item Position", i) }; packet.ReadInt32("Max Durability", i); if (hasExtendedCost[i]) npcVendor.ExtendedCost = packet.ReadUInt32("Extended Cost", i); npcVendor.Item = packet.ReadInt32<ItemId>("Item ID", i); npcVendor.Type = packet.ReadUInt32("Type", i); // 1 - item, 2 - currency packet.ReadInt32("Price", i); packet.ReadInt32("Display ID", i); if (hasCondition[i]) packet.ReadInt32("Row ID", i); int maxCount = packet.ReadInt32("Max Count", i); npcVendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB uint buyCount = packet.ReadUInt32("Buy Count", i); if (npcVendor.Type == 2) npcVendor.MaxCount = buyCount; tempList.Add(npcVendor); } packet.ReadXORByte(guidBytes, 5); packet.ReadXORByte(guidBytes, 4); packet.ReadXORByte(guidBytes, 1); packet.ReadXORByte(guidBytes, 0); packet.ReadXORByte(guidBytes, 6); packet.ReadByte("Unk Byte"); packet.ReadXORByte(guidBytes, 2); packet.ReadXORByte(guidBytes, 3); packet.ReadXORByte(guidBytes, 7); uint entry = packet.WriteGuid("GUID", guidBytes).GetEntry(); tempList.ForEach(v => { v.Entry = entry; Storage.NpcVendors.Add(v, packet.TimeSpan); }); }
public static void HandleVendorInventoryList422(Packet packet) { var guidBytes = packet.StartBitStream(5, 6, 1, 2, 3, 0, 7, 4); packet.ReadXORByte(guidBytes, 2); packet.ReadXORByte(guidBytes, 3); uint count = packet.ReadUInt32("Item Count"); packet.ReadXORByte(guidBytes, 5); packet.ReadXORByte(guidBytes, 0); packet.ReadXORByte(guidBytes, 1); packet.ReadByte("Unk Byte"); packet.ReadXORByte(guidBytes, 4); packet.ReadXORByte(guidBytes, 7); packet.ReadXORByte(guidBytes, 6); uint entry = packet.WriteGuid("GUID", guidBytes).GetEntry(); for (int i = 0; i < count; i++) { NpcVendor npcVendor = new NpcVendor { Entry = entry }; packet.ReadInt32("Max Durability", i); npcVendor.Slot = packet.ReadInt32("Item Position", i); npcVendor.Item = packet.ReadInt32<ItemId>("Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); int maxCount = packet.ReadInt32("Max Count", i); npcVendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB packet.ReadUInt32("Buy Count", i); npcVendor.ExtendedCost = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); // where's the vendorItem.Type (1/2)? Storage.NpcVendors.Add(npcVendor, packet.TimeSpan); } }
public static void HandleVendorInventoryList(Packet packet) { uint entry = packet.ReadGuid("GUID").GetEntry(); int count = packet.ReadByte("Item Count"); if (count == 0) { packet.ReadByte("Unk 1"); return; } for (int i = 0; i < count; i++) { NpcVendor vendor = new NpcVendor { Entry = entry, Slot = packet.ReadInt32("Item Position", i) }; if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_3_13329)) vendor.Type = packet.ReadUInt32("Item Type", i); // not confirmed vendor.Item = packet.ReadInt32<ItemId>("Item ID", i); packet.ReadInt32("Display ID", i); int maxCount = packet.ReadInt32("Max Count", i); packet.ReadInt32("Price", i); packet.ReadInt32("Max Durability", i); uint buyCount = packet.ReadUInt32("Buy Count", i); vendor.ExtendedCost = packet.ReadUInt32("Extended Cost", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_3_13329)) packet.ReadByte("Unk Byte", i); vendor.MaxCount = maxCount == -1 ? 0 : (uint)maxCount; // TDB if (vendor.Type == 2) vendor.MaxCount = buyCount; Storage.NpcVendors.Add(vendor, packet.TimeSpan); } }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guidByts = new byte[8]; packet.StartBitStream(guidByts, 5, 4, 7, 1, 2, 3); var itemCount = packet.ReadBits("Item Count", 18); var hasExtendedCost = new bool[itemCount]; var hasCondition = new bool[itemCount]; for (int i = 0; i < itemCount; ++i) { hasCondition[i] = !packet.ReadBit(); hasExtendedCost[i] = !packet.ReadBit(); packet.ReadBit("Unk bit", i); } packet.StartBitStream(guidByts, 6, 0); packet.ResetBitReader(); packet.ReadXORBytes(guidByts, 3, 4); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (int i = 0; i < itemCount; ++i) { var vendorItem = new VendorItem(); vendorItem.ItemId = (uint)packet.ReadInt32<ItemId>("Item ID", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); packet.ReadInt32("Item Upgrade ID", i); packet.ReadInt32("Display ID", i); var maxCount = packet.ReadInt32("Max Count", i); var buyCount = packet.ReadUInt32("Buy Count", i); packet.ReadInt32("Price", i); if (hasCondition[i]) packet.ReadInt32("Condition ID", i); vendorItem.Type = packet.ReadUInt32("Type", i); // 1 - item, 2 - currency packet.ReadInt32("Max Durability", i); if (hasExtendedCost[i]) vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); vendorItem.MaxCount = maxCount == -1 ? 0 : maxCount; // TDB if (vendorItem.Type == 2) vendorItem.MaxCount = (int)buyCount; npcVendor.VendorItems.Add(vendorItem); } packet.ReadXORBytes(guidByts, 1, 2, 7); packet.ReadByte("Unk Byte"); packet.ReadXORBytes(guidByts, 6, 0, 5); var guid = packet.WriteGuid("GUID", guidByts); Storage.NpcVendors.Add(guid.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList422(Packet packet) { var npcVendor = new NpcVendor(); var flags = packet.ReadEnum<UnknownFlags>("Unk Flags", TypeCode.Byte); ulong tmp = 0; if (flags.HasFlag(UnknownFlags.Unk5)) tmp += ReadByte(ref packet, 2); var itemCount = packet.ReadUInt32("Item Count"); if (flags.HasFlag(UnknownFlags.Unk8)) tmp += ReadByte(ref packet, 5); if (flags.HasFlag(UnknownFlags.Unk2)) // Flag? tmp += ReadByte(ref packet, 0); if (flags.HasFlag(UnknownFlags.Unk3)) // Flag? tmp += ReadByte(ref packet, 1); if (flags.HasFlag(UnknownFlags.Unk6)) // Flag? ReadByte(ref packet, 3); if (flags.HasFlag(UnknownFlags.Unk1)) tmp += ReadByte(ref packet, 4); if (flags.HasFlag(UnknownFlags.Unk7)) // Flag? tmp += ReadByte(ref packet, 7); if (!flags.HasFlag(UnknownFlags.Unk4)) // Flag? tmp += ReadByte(ref packet, 6); var guid = new Guid(tmp); packet.Writer.WriteLine("GUID: " + guid); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (var i = 0; i < itemCount; i++) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); vendorItem.ItemId = (uint)packet.ReadEntryWithName<Int32>(StoreNameType.Item, "Item ID", i); packet.ReadInt32("Unk Int32 1", i); packet.ReadInt32("Display ID", i); vendorItem.MaxCount = packet.ReadInt32("Max Count", i); vendorItem.BuyCount = packet.ReadUInt32("Buy Count", i); vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Unk Int32 2", i); packet.ReadInt32("Price", i); npcVendor.VendorItems.Add(vendorItem); } Stuffing.NpcVendors.TryAdd(guid.GetEntry(), npcVendor); }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guid = new byte[8]; guid[4] = packet.ReadBit(); var itemCount = packet.ReadBits(18); var hasCondition = new bool[itemCount]; var hasExtendedCost = new bool[itemCount]; for (int i = 0; i < itemCount; ++i) { packet.ReadBit("Unk bit", i); hasCondition[i]= !packet.ReadBit(); hasExtendedCost[i] = !packet.ReadBit(); } guid[1] = packet.ReadBit(); guid[6] = packet.ReadBit(); guid[2] = packet.ReadBit(); guid[5] = packet.ReadBit(); guid[7] = packet.ReadBit(); guid[0] = packet.ReadBit(); guid[3] = packet.ReadBit(); packet.ReadXORByte(guid, 3); npcVendor.VendorItems = new List<VendorItem>((int)itemCount); for (int i = 0; i < itemCount; ++i) { var vendorItem = new VendorItem(); packet.ReadInt32("Max Durability", i); vendorItem.Type = packet.ReadUInt32("Type", i); // 1 - item, 2 - currency var buyCount = packet.ReadUInt32("Buy Count", i); if (hasExtendedCost[i]) vendorItem.ExtendedCostId = packet.ReadUInt32("Extended Cost", i); packet.ReadInt32("Price", i); vendorItem.ItemId = (uint)packet.ReadInt32<ItemId>("Item ID", i); vendorItem.Slot = packet.ReadUInt32("Item Position", i); if (hasCondition[i]) packet.ReadInt32("Condition ID", i); var maxCount = packet.ReadInt32("Max Count", i); packet.ReadInt32("Item Upgrade ID", i); packet.ReadInt32("Display ID", i); npcVendor.VendorItems.Add(vendorItem); } packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 0); packet.ReadXORByte(guid, 2); packet.ReadXORByte(guid, 5); packet.ReadByte("Byte10"); packet.ReadXORByte(guid, 1); packet.ReadXORByte(guid, 4); packet.ReadXORByte(guid, 7); packet.WriteGuid("Guid", guid); var vendorGUID = new WowGuid64(BitConverter.ToUInt64(guid, 0)); Storage.NpcVendors.Add(vendorGUID.GetEntry(), npcVendor, packet.TimeSpan); }
public static void HandleVendorInventoryList(Packet packet) { var npcVendor = new NpcVendor(); var guid = packet.ReadPackedGuid128("VendorGUID"); packet.ReadByte("Reason"); var int9 = packet.ReadInt32("VendorItems"); npcVendor.VendorItems = new List<VendorItem>(int9); for (var i = 0; i < int9; ++i) { var vendorItem = new VendorItem(); vendorItem.Slot = (uint)packet.ReadInt32("Muid", i); vendorItem.Type = (uint)packet.ReadInt32("Type", i); // ItemInstance //if (ItemInstance) { vendorItem.ItemId = (uint)ItemHandler.ReadItemInstance(packet, i); } var maxCount = packet.ReadInt32("Quantity", i); packet.ReadInt32("Price", i); packet.ReadInt32("Durability", i); var buyCount = packet.ReadInt32("StackCount", i); vendorItem.ExtendedCostId = (uint)packet.ReadInt32("ExtendedCostID", i); vendorItem.PlayerConditionID = packet.ReadInt32("PlayerConditionFailed", i); packet.ResetBitReader(); vendorItem.IgnoreFiltering = packet.ReadBit("DoNotFilterOnVendor", i); vendorItem.MaxCount = maxCount == -1 ? 0 : maxCount; // TDB if (vendorItem.Type == 2) vendorItem.MaxCount = buyCount; npcVendor.VendorItems.Add(vendorItem); } Storage.NpcVendors.Add(guid.GetEntry(), npcVendor, packet.TimeSpan); }