Skip to content

Commit 0d7221f

Browse files
committed
Add 5.5.0 CMSG handlers
CMSG_PETITION_SHOW_LIST CMSG_PETITION_BUY CMSG_PETITION_SHOW_SIGNATURES CMSG_AUCTION_HELLO_REQUEST CMSG_AUCTION_SELL_ITEM CMSG_AUCTION_REMOVE_ITEM CMSG_AUCTION_LIST_ITEMS CMSG_AUCTION_REPLICATE_ITEMS CMSG_AUCTION_LIST_OWNER_ITEMS CMSG_AUCTION_LIST_BIDDER_ITEMS CMSG_AUCTION_PLACE_BID CMSG_AUCTION_BROWSE_QUERY CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID CMSG_AUCTION_LIST_OWNED_ITEMS CMSG_AUCTION_LIST_BIDDED_ITEMS CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS CMSG_AUCTION_GET_COMMODITY_QUOTE CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE CMSG_AUCTION_SELL_COMMODITY CMSG_AUCTION_LIST_PENDING_SALES CMSG_QUERY_TIME CMSG_LOGOUT_REQUEST CMSG_LOGOUT_CANCEL CMSG_LOGOUT_INSTANT CMSG_RECLAIM_CORPSE CMSG_COMPLETE_MOVIE CMSG_SET_FACTION_AT_WAR CMSG_SET_FACTION_NOT_AT_WAR CMSG_SET_FACTION_INACTIVE CMSG_SET_WATCHED_FACTION CMSG_DUEL_RESPONSE CMSG_UNLEARN_SKILL CMSG_CANCEL_AUTO_REPEAT_SPELL CMSG_FAR_SIGHT CMSG_SOCKET_GEMS CMSG_REPAIR_ITEM CMSG_GAME_OBJ_USE CMSG_GAME_OBJ_REPORT_USE
1 parent b3707eb commit 0d7221f

File tree

11 files changed

+476
-0
lines changed

11 files changed

+476
-0
lines changed

WowPacketParserModule.V5_5_0_61735/Parsers/AddonHandler.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ namespace WowPacketParserModule.V5_5_0_61735.Parsers
66
{
77
public static class AddonHandler
88
{
9+
public static void ReadAddOnInfo(Packet packet, params object[] indexes)
10+
{
11+
packet.ResetBitReader();
12+
13+
var nameLength = (int)packet.ReadBits(10);
14+
var versionLength = (int)packet.ReadBits(10);
15+
packet.ReadBit("Loaded", indexes);
16+
packet.ReadBit("Disabled", indexes);
17+
if (nameLength > 1)
18+
packet.ReadWoWString("Name", nameLength - 1, indexes);
19+
20+
if (versionLength > 1)
21+
packet.ReadWoWString("Version", versionLength - 1, indexes);
22+
}
23+
924
[Parser(Opcode.CMSG_CHAT_REGISTER_ADDON_PREFIXES)]
1025
public static void HandleChatRegisterAddonPrefixes(Packet packet)
1126
{

WowPacketParserModule.V5_5_0_61735/Parsers/AuctionHandler.cs

Lines changed: 350 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,34 @@ public static void ReadAuctionFavoriteInfo(Packet packet, params object[] idx)
157157
packet.ReadUInt32("SuffixItemNameDescriptionID", idx);
158158
}
159159

160+
public static void ReadAuctionListFilterSubClass(Packet packet, params object[] idx)
161+
{
162+
packet.ReadUInt64("InvTypeMask", idx);
163+
packet.ReadInt32("ItemSubclass", idx);
164+
}
165+
166+
public static void ReadAuctionListFilterClass(Packet packet, params object[] idx)
167+
{
168+
packet.ReadInt32("FilterClass", idx);
169+
packet.ResetBitReader();
170+
var subClassFilterCount = packet.ReadBits("SubClassFilterCount", 5, idx);
171+
for (var i = 0; i < subClassFilterCount; i++)
172+
ReadAuctionListFilterSubClass(packet, i, "SubClassFilter", i, idx);
173+
}
174+
175+
public static void ReadAuctionSortDef(Packet packet, params object[] idx)
176+
{
177+
packet.ResetBitReader();
178+
packet.ReadByte("SortOrder", idx);
179+
packet.ReadBit("ReverseSort", idx);
180+
}
181+
182+
public static void ReadAuctionItemForSale(Packet packet, params object[] idx)
183+
{
184+
packet.ReadPackedGuid128("Guid", idx);
185+
packet.ReadUInt32("UseCount", idx);
186+
}
187+
160188
[Parser(Opcode.SMSG_AUCTION_HELLO_RESPONSE)]
161189
public static void HandleServerAuctionHello(Packet packet)
162190
{
@@ -315,5 +343,327 @@ public static void HandleAuctionFavoriteList(Packet packet)
315343
for (var i = 0; i < itemsCount; ++i)
316344
ReadAuctionFavoriteInfo(packet, "FavoriteInfo", i);
317345
}
346+
347+
[Parser(Opcode.CMSG_AUCTION_HELLO_REQUEST)]
348+
public static void HandleClientAuctionHello(Packet packet)
349+
{
350+
packet.ReadPackedGuid128("Guid");
351+
}
352+
353+
[Parser(Opcode.CMSG_AUCTION_SELL_ITEM)]
354+
public static void HandleAuctionSellItem(Packet packet)
355+
{
356+
packet.ReadPackedGuid128("Auctioneer");
357+
packet.ReadInt64("MinBit");
358+
packet.ReadInt64("BuyoutPrice");
359+
packet.ReadInt32("RunTime");
360+
361+
var taintedBy = packet.ReadBit();
362+
363+
var count = packet.ReadBits("ItemsCount", 6);
364+
packet.ResetBitReader();
365+
366+
if (taintedBy)
367+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
368+
369+
for (var i = 0; i < count; ++i)
370+
{
371+
packet.ReadPackedGuid128("Guid", i);
372+
packet.ReadInt32("UseCount");
373+
}
374+
}
375+
376+
[Parser(Opcode.CMSG_AUCTION_REMOVE_ITEM)]
377+
public static void HandleAuctionRemoveItem(Packet packet)
378+
{
379+
packet.ReadPackedGuid128("Auctioneer");
380+
packet.ReadInt32("AuctionID");
381+
packet.ReadInt32("ItemID");
382+
383+
var taintedBy = packet.ReadBit();
384+
385+
if (taintedBy)
386+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
387+
}
388+
389+
[Parser(Opcode.CMSG_AUCTION_LIST_ITEMS)]
390+
public static void HandleAuctionListItems(Packet packet)
391+
{
392+
packet.ReadPackedGuid128("Auctioneer");
393+
packet.ReadInt32("Offset");
394+
packet.ReadByte("MinLevel");
395+
packet.ReadByte("MaxLevel");
396+
packet.ReadInt32E<ItemQuality>("Quality");
397+
var sort = packet.ReadByte("SortCount");
398+
var knownPetsCount = packet.ReadUInt32("KnownPetsCount");
399+
packet.ReadSByte("MaxPetLevel");
400+
401+
for (int i = 0; i < knownPetsCount; ++i)
402+
packet.ReadByte("KnownPets", i);
403+
404+
var taintedBy = packet.ReadBit();
405+
var nameLength = packet.ReadBits(8);
406+
407+
packet.ResetBitReader();
408+
packet.ReadWoWString("Name", nameLength);
409+
410+
var classFiltersCount = packet.ReadBits("ClassFiltersCount", 3);
411+
412+
packet.ReadBit("OnlyUsable");
413+
packet.ReadBit("ExactMatch");
414+
415+
packet.ResetBitReader();
416+
417+
if (taintedBy)
418+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
419+
420+
for (int i = 0; i < classFiltersCount; ++i)
421+
{
422+
packet.ReadInt32E<ItemClass>("ItemClass", "ClassFilters", i);
423+
424+
var subClassFiltersCount = packet.ReadBits("SubClassFiltersCount", 5, "ClassFilters", i);
425+
for (int j = 0; j < subClassFiltersCount; ++j)
426+
{
427+
packet.ReadUInt64("ItemSubclass", "ClassFilters", i, "SubClassFilters", j);
428+
packet.ReadUInt32("InvTypeMask", "ClassFilters", i, "SubClassFilters", j);
429+
}
430+
}
431+
432+
var size = packet.ReadInt32("DataSize");
433+
var data = packet.ReadBytes(size);
434+
var sorts = new Packet(data, packet.Opcode, packet.Time, packet.Direction, packet.Number, packet.Writer, packet.FileName);
435+
for (var i = 0; i < sort; ++i)
436+
{
437+
sorts.ReadByte("Type", i);
438+
sorts.ReadByte("Direction", i);
439+
}
440+
}
441+
442+
[Parser(Opcode.CMSG_AUCTION_REPLICATE_ITEMS)]
443+
public static void HandleAuctionReplicateItems(Packet packet)
444+
{
445+
packet.ReadPackedGuid128("Auctioneer");
446+
packet.ReadInt32("ChangeNumberGlobal");
447+
packet.ReadInt32("ChangeNumberCursor");
448+
packet.ReadInt32("ChangeNumberTombstone");
449+
packet.ReadInt32("Count");
450+
451+
var taintedBy = packet.ReadBit();
452+
453+
if (taintedBy)
454+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
455+
}
456+
457+
[Parser(Opcode.CMSG_AUCTION_LIST_OWNER_ITEMS)]
458+
public static void HandleAuctionListOwnerItems(Packet packet)
459+
{
460+
packet.ReadPackedGuid128("Auctioneer");
461+
packet.ReadUInt32("Offset");
462+
463+
var taintedBy = packet.ReadBit();
464+
465+
if (taintedBy)
466+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
467+
}
468+
469+
[Parser(Opcode.CMSG_AUCTION_LIST_BIDDER_ITEMS)]
470+
public static void HandleAuctionListBidderItems(Packet packet)
471+
{
472+
packet.ReadPackedGuid128("Auctioneer");
473+
packet.ReadUInt32("Offset");
474+
475+
var auctionIdsCount = packet.ReadBits(7);
476+
var taintedBy = packet.ReadBit();
477+
478+
if (taintedBy)
479+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
480+
481+
for (var i = 0; i < auctionIdsCount; i++)
482+
packet.ReadUInt32("AuctionID", i);
483+
}
484+
485+
[Parser(Opcode.CMSG_AUCTION_PLACE_BID)]
486+
public static void HandleAuctionPlaceBid(Packet packet)
487+
{
488+
packet.ReadPackedGuid128("Auctioneer");
489+
packet.ReadInt32("AuctionID");
490+
packet.ReadInt64("BidAmount");
491+
492+
var taintedBy = packet.ReadBit();
493+
494+
if (taintedBy)
495+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
496+
}
497+
498+
[Parser(Opcode.CMSG_AUCTION_BROWSE_QUERY)]
499+
public static void HandleAuctionBrowseQuery(Packet packet)
500+
{
501+
packet.ReadPackedGuid128("Auctioneer");
502+
packet.ReadUInt32("Offset");
503+
packet.ReadByte("MinLevel");
504+
packet.ReadByte("MaxLevel");
505+
packet.ReadByte("Unused1007_1");
506+
packet.ReadByte("Unused1007_2");
507+
packet.ReadUInt32("Filters");
508+
509+
var knownPetsSize = packet.ReadUInt32();
510+
packet.ReadSByte("MaxPetLevel");
511+
packet.ReadUInt32("Unused1026");
512+
513+
for (var i = 0; i < knownPetsSize; i++)
514+
packet.ReadByte("KnownPetMask", i);
515+
516+
packet.ResetBitReader();
517+
var taintedBy = packet.ReadBit("TaintedBy");
518+
var nameLen = packet.ReadBits(8);
519+
var itemClassFilterSize = packet.ReadBits(3);
520+
var sortsSize = packet.ReadBits(2);
521+
522+
if (taintedBy)
523+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
524+
525+
packet.ReadWoWString("Name", nameLen);
526+
527+
for (var i = 0; i < itemClassFilterSize; i++)
528+
ReadAuctionListFilterClass(packet, i, "FilterClass");
529+
530+
for (var i = 0; i < sortsSize; i++)
531+
ReadAuctionSortDef(packet, i, "SortDef");
532+
}
533+
534+
[Parser(Opcode.CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY)]
535+
public static void HandleAuctionListItemsByBucketKey(Packet packet)
536+
{
537+
packet.ReadPackedGuid128("Auctioneer");
538+
packet.ReadUInt32("Offset");
539+
packet.ReadByte("Unknown830");
540+
541+
var taintedBy = packet.ReadBit();
542+
var sortCount = packet.ReadBits(2);
543+
544+
ReadAuctionBucketKey(packet, "BucketKey");
545+
546+
if (taintedBy)
547+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
548+
549+
for (var i = 0; i < sortCount; i++)
550+
ReadAuctionSortDef(packet, i);
551+
}
552+
553+
[Parser(Opcode.CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID)]
554+
public static void HandleAuctionListItemsByItemID(Packet packet)
555+
{
556+
packet.ReadPackedGuid128("Auctioneer");
557+
packet.ReadInt32("ItemID");
558+
packet.ReadInt32("SuffixItemNameDescriptionID");
559+
packet.ReadUInt32("Offset");
560+
561+
var taintedBy = packet.ReadBit();
562+
var sortCount = packet.ReadBits(2);
563+
564+
if (taintedBy)
565+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
566+
567+
for (var i = 0; i < sortCount; i++)
568+
ReadAuctionSortDef(packet, i);
569+
}
570+
571+
[Parser(Opcode.CMSG_AUCTION_LIST_OWNED_ITEMS)]
572+
public static void HandleAuctionListOwnedItems(Packet packet)
573+
{
574+
packet.ReadPackedGuid128("Auctioneer");
575+
packet.ReadUInt32("Offset");
576+
577+
var taintedBy = packet.ReadBit();
578+
var sortCount = packet.ReadBits(2);
579+
580+
if (taintedBy)
581+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
582+
583+
for (var i = 0; i < sortCount; i++)
584+
ReadAuctionSortDef(packet, i);
585+
}
586+
587+
[Parser(Opcode.CMSG_AUCTION_LIST_BIDDED_ITEMS)]
588+
public static void HandleAuctionListBiddedItems(Packet packet)
589+
{
590+
packet.ReadPackedGuid128("Auctioneer");
591+
packet.ReadUInt32("Offset");
592+
593+
var taintedBy = packet.ReadBit();
594+
595+
var auctionIdsCount = packet.ReadBits(7);
596+
var sortCount = packet.ReadBits(2);
597+
598+
if (taintedBy)
599+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
600+
601+
for (var i = 0; i < auctionIdsCount; i++)
602+
packet.ReadUInt32("AuctionID", i);
603+
604+
for (var i = 0; i < sortCount; i++)
605+
ReadAuctionSortDef(packet, i);
606+
}
607+
608+
[Parser(Opcode.CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS)]
609+
public static void HandleAuctionListBucketsByBucketKeys(Packet packet)
610+
{
611+
packet.ReadPackedGuid128("Auctioneer");
612+
613+
var taintedBy = packet.ReadBit();
614+
615+
var bucketKeysCount = packet.ReadBits(7);
616+
var sortCount = packet.ReadBits(2);
617+
618+
if (taintedBy)
619+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
620+
621+
for (var i = 0; i < bucketKeysCount; i++)
622+
ReadAuctionBucketKey(packet, i);
623+
624+
for (var i = 0; i < sortCount; i++)
625+
ReadAuctionSortDef(packet, i);
626+
}
627+
628+
[Parser(Opcode.CMSG_AUCTION_GET_COMMODITY_QUOTE)]
629+
[Parser(Opcode.CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE)]
630+
public static void HandleAuctionHouseGetCommodityQuote(Packet packet)
631+
{
632+
packet.ReadPackedGuid128("Auctioneer");
633+
packet.ReadInt32<ItemId>("ItemID");
634+
packet.ReadUInt32("Quantity");
635+
if (packet.ReadBit())
636+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
637+
}
638+
639+
[Parser(Opcode.CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE)]
640+
public static void HandleAuctionCancelCommoditiesPurchase(Packet packet)
641+
{
642+
packet.ReadPackedGuid128("Auctioneer");
643+
if (packet.ReadBit())
644+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
645+
}
646+
647+
[Parser(Opcode.CMSG_AUCTION_SELL_COMMODITY)]
648+
public static void HandleAuctionSellCommodity(Packet packet)
649+
{
650+
packet.ReadPackedGuid128("Auctioneer");
651+
packet.ReadUInt64("UnitPrice");
652+
packet.ReadUInt32("Runtime");
653+
654+
var taintedBy = packet.ReadBit();
655+
var itemsCount = packet.ReadBits(6);
656+
657+
if (taintedBy)
658+
AddonHandler.ReadAddOnInfo(packet, "TaintedBy");
659+
660+
for (var i = 0; i < itemsCount; i++)
661+
ReadAuctionItemForSale(packet, i);
662+
}
663+
664+
[Parser(Opcode.CMSG_AUCTION_LIST_PENDING_SALES)]
665+
public static void HandleAuctionZero(Packet packet)
666+
{
667+
}
318668
}
319669
}

WowPacketParserModule.V5_5_0_61735/Parsers/CombatHandler.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,14 @@ public static void HandleSetSheathed(Packet packet)
174174
packet.ReadBit("Animate");
175175
}
176176

177+
[Parser(Opcode.CMSG_DUEL_RESPONSE)]
178+
public static void HandleDuelResponse(Packet packet)
179+
{
180+
packet.ReadPackedGuid128("ArbiterGUID");
181+
packet.ReadBit("Accepted");
182+
packet.ReadBit("Forfeited");
183+
}
184+
177185
[Parser(Opcode.SMSG_DUEL_OUT_OF_BOUNDS)]
178186
[Parser(Opcode.SMSG_DUEL_IN_BOUNDS)]
179187
[Parser(Opcode.SMSG_CANCEL_COMBAT)]

0 commit comments

Comments
 (0)