From 364a36da750f0e3d1e088c40de5c35cf3fd303f9 Mon Sep 17 00:00:00 2001 From: Asaelle <34313460+Asaelle@users.noreply.github.com> Date: Tue, 1 Jul 2025 12:15:15 +0200 Subject: [PATCH 1/2] Fix reading ReadCraftingOrderItem for >= 11.0.2 --- .../Parsers/CraftingHandler.cs | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs index eb7f5d9118..8d0cdef868 100644 --- a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs +++ b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs @@ -88,7 +88,12 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadInt32("field_0", indexes); packet.ReadUInt64("OrderID", indexes); packet.ReadInt32("SkillLineAbilityID", indexes); - packet.ReadByte("OrderState", indexes); + + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_1_5_60392)) + packet.ReadInt32("OrderState", indexes); + else + packet.ReadByte("OrderState", indexes); + packet.ReadByte("OrderType", indexes); packet.ReadByte("MinQuality", indexes); packet.ReadTime64("ExpirationTime", indexes); @@ -96,13 +101,33 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadUInt64("TipAmount", indexes); packet.ReadUInt64("ConsortiumCut", indexes); packet.ReadUInt32("Flags", indexes); - packet.ReadPackedGuid128("CustomerGUID", indexes); - packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_2_55959)) + { + packet.ReadPackedGuid128("CustomerGUID", indexes); + packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + } + packet.ReadPackedGuid128("CrafterGUID", indexes); packet.ReadPackedGuid128("PersonalCrafterGUID", indexes); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) + { + packet.ReadInt32("NpcCraftingOrderSetId", indexes); + packet.ReadInt32("NpcCraftingTreasureId", indexes); + } + var reagentsCount = packet.ReadUInt32(); var customerNotesLength = packet.ReadBits(10); + + var hasCustomerGuid = false; + var hasNpcCraftingData = false; + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) + { + hasCustomerGuid = packet.ReadBit("HasCustomerGuid", indexes); + hasNpcCraftingData = packet.ReadBit("HasNpcCraftingData", indexes); + } + var hasOutputItem = packet.ReadBit(); var hasOutputItemData = packet.ReadBit(); @@ -113,6 +138,18 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadWoWString("CustomerNotes", customerNotesLength, indexes); + if (hasCustomerGuid) + { + packet.ReadPackedGuid128("CustomerGUID", indexes); + packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + } + + if (hasNpcCraftingData) + { + packet.ReadUInt64("NpcCraftingCustomerId", indexes); + packet.ReadUInt32("NpcCraftingOrderSetFlags", indexes); + } + if (hasOutputItem) ReadCraftingOrderItem(packet, indexes, "OutputItem"); From faafe65e3ca9049b45bb18d8108367793807f97f Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 4 Jul 2025 10:39:14 +0200 Subject: [PATCH 2/2] Update CraftingHandler.cs --- .../Parsers/CraftingHandler.cs | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs index 8d0cdef868..07362cd018 100644 --- a/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs +++ b/WowPacketParserModule.V10_0_0_46181/Parsers/CraftingHandler.cs @@ -83,6 +83,18 @@ public static void ReadCraftingOrderItem(Packet packet, params object[] indexes) packet.ReadByte("DataSlotIndex", indexes); } + public static void ReadCraftingOrderCustomer(Packet packet, params object[] indexes) + { + packet.ReadPackedGuid128("CustomerGUID", indexes); + packet.ReadPackedGuid128("CustomerAccountGUID", indexes); + } + + public static void ReadCraftingOrderNpcCustomer(Packet packet, params object[] indexes) + { + packet.ReadInt64("NpcCraftingOrderCustomerID", indexes); + packet.ReadInt32("NpcCraftingOrderSetFlags", indexes); + } + public static void ReadCraftingOrderData(Packet packet, params object[] indexes) { packet.ReadInt32("field_0", indexes); @@ -103,29 +115,26 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadUInt32("Flags", indexes); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_2_55959)) - { - packet.ReadPackedGuid128("CustomerGUID", indexes); - packet.ReadPackedGuid128("CustomerAccountGUID", indexes); - } + ReadCraftingOrderCustomer(packet, indexes, "Customer"); packet.ReadPackedGuid128("CrafterGUID", indexes); packet.ReadPackedGuid128("PersonalCrafterGUID", indexes); if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) { - packet.ReadInt32("NpcCraftingOrderSetId", indexes); - packet.ReadInt32("NpcCraftingTreasureId", indexes); + packet.ReadInt32("NpcCraftingOrderSetID", indexes); + packet.ReadInt32("NpcTreasureID", indexes); } var reagentsCount = packet.ReadUInt32(); var customerNotesLength = packet.ReadBits(10); - var hasCustomerGuid = false; + var hasCustomer = false; var hasNpcCraftingData = false; if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_2_55959)) { - hasCustomerGuid = packet.ReadBit("HasCustomerGuid", indexes); - hasNpcCraftingData = packet.ReadBit("HasNpcCraftingData", indexes); + hasCustomer = packet.ReadBit(); + hasNpcCraftingData = packet.ReadBit(); } var hasOutputItem = packet.ReadBit(); @@ -138,17 +147,11 @@ public static void ReadCraftingOrderData(Packet packet, params object[] indexes) packet.ReadWoWString("CustomerNotes", customerNotesLength, indexes); - if (hasCustomerGuid) - { - packet.ReadPackedGuid128("CustomerGUID", indexes); - packet.ReadPackedGuid128("CustomerAccountGUID", indexes); - } + if (hasCustomer) + ReadCraftingOrderCustomer(packet, indexes, "Customer"); if (hasNpcCraftingData) - { - packet.ReadUInt64("NpcCraftingCustomerId", indexes); - packet.ReadUInt32("NpcCraftingOrderSetFlags", indexes); - } + ReadCraftingOrderNpcCustomer(packet, indexes, "NpcCustomer"); if (hasOutputItem) ReadCraftingOrderItem(packet, indexes, "OutputItem");