public static void HandleCalendarEventInviteAlert(Packet packet) { // TODO: find unks packet.ReadUInt64("EventID"); packet.ReadPackedTime("Date"); packet.ReadInt32E<CalendarFlag>("Flags"); packet.ReadByteE<CalendarEventType>("EventType"); packet.ReadInt32("TextureID"); packet.ReadPackedGuid128("EventGuildID"); packet.ReadUInt64("InviteID"); packet.ReadByteE<CalendarEventStatus>("Status"); packet.ReadByteE<CalendarModerationRank>("ModeratorStatus"); packet.ReadPackedGuid128("OwnerGUID | InvitedByGUID"); packet.ReadPackedGuid128("OwnerGUID | InvitedByGUID"); var eventNameLength = packet.ReadBits("EventNameLength", 8); packet.ResetBitReader(); packet.ReadWoWString("EventName", eventNameLength); }
public static void HandleLootResponse(Packet packet) { packet.ReadPackedGuid128("Owner"); packet.ReadPackedGuid128("LootObj"); packet.ReadByteE<LootError>("FailureReason"); packet.ReadByteE<LootType>("AcquireReason"); packet.ReadByteE<LootMethod>("LootMethod"); packet.ReadByteE<ItemQuality>("Threshold"); packet.ReadUInt32("Coins"); var itemCount = packet.ReadUInt32("ItemCount"); var currencyCount = packet.ReadUInt32("CurrencyCount"); packet.ResetBitReader(); packet.ReadBit("Acquired"); packet.ReadBit("AELooting"); packet.ReadBit("PersonalLooting"); for (var i = 0; i < itemCount; ++i) ReadLootItem(packet, i, "LootItem"); for (var i = 0; i < currencyCount; ++i) V6_0_2_19033.Parsers.LootHandler.ReadCurrenciesData(packet, i, "Currencies"); }
public static void HandleAddCalendarEvent(Packet packet) { packet.ReadCString("Title"); packet.ReadCString("Description"); packet.ReadByteE<CalendarEventType>("Event Type"); packet.ReadByteE<CalendarRepeatType>("Repeat Type"); packet.ReadInt32("Max Invites"); packet.ReadInt32<LFGDungeonId>("Dungeon ID"); packet.ReadPackedTime("Event Time"); packet.ReadPackedTime("Unk PackedTime"); var flags = packet.ReadInt32E<CalendarFlag>("Event Flags"); if ((flags & CalendarFlag.GuildAnnouncement) != 0) return; var count = packet.ReadInt32("Invite Count"); for (var i = 0; i < count; i++) { packet.ReadPackedGuid("Creator GUID"); packet.ReadByteE<CalendarEventStatus>("Status"); packet.ReadByteE<CalendarModerationRank>("Moderation Rank"); } }
public static void HandleAddCalendarEventInvite(Packet packet) { packet.ReadInt64("Event ID"); packet.ReadInt64("Invite ID"); packet.ReadCString("Name"); packet.ReadByteE<CalendarEventStatus>("Status"); packet.ReadByteE<CalendarModerationRank>("Moderation Rank"); }
public static void HandleCalendarEventInvite(Packet packet) { packet.ReadPackedGuid128("InviteGUID"); packet.ReadUInt64("EventID"); packet.ReadUInt64("InviteID"); packet.ReadByte("Level"); packet.ReadByteE<CalendarEventStatus>("Status"); packet.ReadByteE<CalendarEventType>("Type"); packet.ReadPackedTime("ResponseTime"); packet.ReadBit("ClearPending"); }
public static void HandleGuildRoster(Packet packet) { packet.ReadUInt32("NumAccounts"); packet.ReadPackedTime("CreateDate"); packet.ReadUInt32("GuildFlags"); var int20 = packet.ReadUInt32("MemberDataCount"); packet.ResetBitReader(); var bits2037 = packet.ReadBits(10); var bits9 = packet.ReadBits(11); for (var i = 0; i < int20; ++i) { packet.ReadPackedGuid128("Guid", i); packet.ReadUInt32("RankID", i); packet.ReadUInt32<AreaId>("AreaID", i); packet.ReadUInt32("PersonalAchievementPoints", i); packet.ReadUInt32("GuildReputation", i); packet.ReadSingle("LastSave", i); for (var j = 0; j < 2; ++j) { packet.ReadUInt32("DbID", i, j); packet.ReadUInt32("Rank", i, j); packet.ReadUInt32("Step", i, j); } packet.ReadUInt32("VirtualRealmAddress", i); packet.ReadByteE<GuildMemberFlag>("Status", i); packet.ReadByte("Level", i); packet.ReadByteE<Class>("ClassID", i); packet.ReadByteE<Gender>("Gender", i); packet.ResetBitReader(); var bits36 = packet.ReadBits(6); var bits92 = packet.ReadBits(8); var bits221 = packet.ReadBits(8); packet.ReadBit("Authenticated", i); packet.ReadBit("SorEligible", i); packet.ReadWoWString("Name", bits36, i); packet.ReadWoWString("Note", bits92, i); packet.ReadWoWString("OfficerNote", bits221, i); } packet.ReadWoWString("WelcomeText", bits2037); packet.ReadWoWString("InfoText", bits9); }
public static void HandleChannelSendList(Packet packet) { packet.ReadByte("Type"); packet.ReadCString("Channel Name"); packet.ReadByteE<ChannelFlag>("Flags"); var count = packet.ReadInt32("Counter"); for (var i = 0; i < count; i++) { packet.ReadGuid("Player GUID " + i); packet.ReadUInt32("Realm ID"); packet.ReadByteE<ChannelMemberFlag>("Player Flags " + i); } }
public static void HandleFriendStatus(Packet packet) { var result = packet.ReadByteE<ContactResult>("Result"); packet.ReadGuid("GUID"); switch (result) { case ContactResult.FriendAddedOffline: packet.ReadCString("Note"); break; case ContactResult.FriendAddedOnline: { packet.ReadCString("Note"); ReadSingleContactBlock(packet, false); break; } case ContactResult.Online: ReadSingleContactBlock(packet, false); break; case ContactResult.Unknown2: packet.ReadByte("Unk byte 1"); break; case ContactResult.Unknown3: packet.ReadInt32("Unk int"); break; } }
public static void HandleAuthResponse(Packet packet) { var code = packet.ReadByteE<ResponseCode>("Auth Code"); switch (code) { case ResponseCode.AUTH_OK: { ReadAuthResponseInfo(packet); break; } case ResponseCode.AUTH_WAIT_QUEUE: { if (packet.Length <= 6) { ReadQueuePositionInfo(packet); break; } ReadAuthResponseInfo(packet); ReadQueuePositionInfo(packet); break; } } }
public static void HandleAttackerStateUpdate(Packet packet) { var hitInfo = packet.ReadInt32E<SpellHitInfo>("HitInfo"); packet.ReadPackedGuid("AttackerGUID"); packet.ReadPackedGuid("TargetGUID"); packet.ReadInt32("Damage"); if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_0_3_9183)) packet.ReadInt32("OverDamage"); var subDmgCount = packet.ReadByte(); for (var i = 0; i < subDmgCount; ++i) { packet.ReadInt32("SchoolMask", i); packet.ReadSingle("Float Damage", i); packet.ReadInt32("Int Damage", i); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) || hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_PARTIAL_ABSORB | SpellHitInfo.HITINFO_FULL_ABSORB)) packet.ReadInt32("Damage Absorbed", i); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) || hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_PARTIAL_RESIST | SpellHitInfo.HITINFO_FULL_RESIST)) packet.ReadInt32("Damage Resisted", i); } if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_0_3_9183)) packet.ReadByteE<VictimStates>("VictimState"); else packet.ReadInt32E<VictimStates>("VictimState"); packet.ReadInt32("Unk Attacker State 0"); packet.ReadInt32<SpellId>("Melee Spell ID "); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V3_0_3_9183) || hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_BLOCK)) packet.ReadInt32("Block Amount"); if (hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_RAGE_GAIN)) packet.ReadInt32("Rage Gained"); if (hitInfo.HasAnyFlag(SpellHitInfo.HITINFO_UNK0)) { packet.ReadInt32("Unk Attacker State 3 1"); packet.ReadSingle("Unk Attacker State 3 2"); packet.ReadSingle("Unk Attacker State 3 3"); packet.ReadSingle("Unk Attacker State 3 4"); packet.ReadSingle("Unk Attacker State 3 5"); packet.ReadSingle("Unk Attacker State 3 6"); packet.ReadSingle("Unk Attacker State 3 7"); packet.ReadSingle("Unk Attacker State 3 8"); packet.ReadSingle("Unk Attacker State 3 9"); packet.ReadSingle("Unk Attacker State 3 10"); packet.ReadSingle("Unk Attacker State 3 11"); packet.ReadInt32("Unk Attacker State 3 12"); packet.ReadInt32("Unk Attacker State 3 13"); packet.ReadInt32("Unk Attacker State 3 14"); } }
public static void HandleCalendarEventInviteModeratorStatus(Packet packet) { packet.ReadPackedGuid128("InviteGUID"); packet.ReadUInt64("EventID"); packet.ReadByteE<CalendarModerationRank>("Status"); // enum NC packet.ReadBit("ClearPending"); }
public static void HandlePetActionFeedback(Packet packet) { var hasData = !packet.ReadBit("!hasData"); // 16 var state = packet.ReadByteE<PetFeedback>("Pet state"); // 20 if (hasData) packet.ReadInt32<SpellId>("Spell ID"); // 16 }
public static void HandleContactList(Packet packet) { packet.ReadInt32E<ContactListFlag>("List Flags"); var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) { packet.ReadGuid("GUID"); packet.ReadInt32("Realm Id"); packet.ReadInt32("Realm Id"); var flag = packet.ReadInt32E<ContactEntryFlag>("Flags"); packet.ReadCString("Note"); if (!flag.HasAnyFlag(ContactEntryFlag.Friend)) continue; var status = packet.ReadByteE<ContactStatus>("Status"); if (status == 0) // required any flag continue; packet.ReadInt32<AreaId>("Area"); packet.ReadInt32("Level"); packet.ReadInt32E<Class>("Class"); } // still needed? if (packet.CanRead()) CoreParsers.WardenHandler.ReadCheatCheckDecryptionBlock(packet); }
public static void HandleContactList(Packet packet) { packet.ReadInt32E<ContactListFlag>("List Flags"); var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) { packet.ReadGuid("GUID"); packet.ReadInt32("Realm Id"); packet.ReadInt32("Realm Id"); var flag = packet.ReadInt32E<ContactEntryFlag>("Flags"); packet.ReadCString("Note"); if (!flag.HasAnyFlag(ContactEntryFlag.Friend)) continue; var status = packet.ReadByteE<ContactStatus>("Status"); if (status == 0) // required any flag continue; packet.ReadInt32<AreaId>("Area"); packet.ReadInt32("Level"); packet.ReadInt32E<Class>("Class"); } }
public static void HandleLootMethod(Packet packet) { packet.ReadByte("PartyIndex"); packet.ReadByteE<LootMethod>("Method"); packet.ReadPackedGuid128("Master"); packet.ReadInt32E<ItemQuality>("Threshold"); }
public static void HandleAuthResponse505(Packet packet) { var hasAccountData = packet.ReadBit("Has Account Data"); var count = 0u; var count1 = 0u; if (hasAccountData) { packet.ReadBit("Unk 2"); count = packet.ReadBits("Class Activation Count", 25); packet.ReadBits("Unk", 22); count1 = packet.ReadBits("Race Activation Count", 25); } var isQueued = packet.ReadBit("Is In Queue"); if (isQueued) { packet.ReadBit("Unk 3"); packet.ReadUInt32("Queue Position"); } if (hasAccountData) { packet.ReadByte("Unk 5"); packet.ReadByteE<ClientType>("Player Expansion"); for (var i = 0; i < count; ++i) { packet.ReadByteE<Class>("Class", i); packet.ReadByteE<ClientType>("Class Expansion", i); } packet.ReadUInt32("Unk 8"); packet.ReadUInt32("Unk 9"); packet.ReadUInt32("Unk 10"); for (var i = 0; i < count1; ++i) { packet.ReadByteE<Race>("Race", i); packet.ReadByteE<ClientType>("Race Expansion", i); } packet.ReadByteE<ClientType>("Account Expansion"); } packet.ReadByteE<ResponseCode>("Auth Code"); }
public static void HandleBuyFailed(Packet packet) { packet.ReadGuid("Vendor GUID"); packet.ReadUInt32<ItemId>("Entry"); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V4_2_2_14545)) packet.ReadInt32("Param"); packet.ReadByteE<BuyResult>("Result"); }
public static void HandleNpcGossip(Packet packet) { GossipMenu gossip = new GossipMenu(); WowGuid guid = packet.ReadGuid("GUID"); gossip.ObjectType = guid.GetObjectType(); gossip.ObjectEntry = guid.GetEntry(); uint menuId = packet.ReadUInt32("Menu Id"); gossip.Entry = menuId; if (ClientVersion.AddedInVersion(ClientType.MistsOfPandaria)) packet.ReadUInt32("Friendship Faction"); gossip.TextID = packet.ReadUInt32("Text Id"); uint count = packet.ReadUInt32("Amount of Options"); for (int i = 0; i < count; i++) { GossipMenuOption gossipOption = new GossipMenuOption { MenuID = menuId, ID = packet.ReadUInt32("Index", i), OptionIcon = packet.ReadByteE<GossipOptionIcon>("Icon", i), BoxCoded = packet.ReadBool("Box", i), BoxMoney = packet.ReadUInt32("Required money", i), OptionText = packet.ReadCString("Text", i), BoxText = packet.ReadCString("Box Text", i) }; Storage.GossipMenuOptions.Add(gossipOption, packet.TimeSpan); } uint questgossips = packet.ReadUInt32("Amount of Quest gossips"); for (int i = 0; i < questgossips; i++) { packet.ReadUInt32<QuestId>("Quest ID", i); packet.ReadUInt32("Icon", i); packet.ReadInt32("Level", i); packet.ReadUInt32E<QuestFlags>("Flags", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_1_0_16309)) packet.ReadUInt32E<QuestFlags2>("Flags 2", i); packet.ReadBool("Change Icon", i); packet.ReadCString("Title", i); } if (guid.GetObjectType() == ObjectType.Unit) if (Storage.Objects.ContainsKey(guid)) ((Unit)Storage.Objects[guid].Item1).GossipId = menuId; Storage.Gossips.Add(gossip, packet.TimeSpan); packet.AddSniffData(StoreNameType.Gossip, (int)menuId, guid.GetEntry().ToString(CultureInfo.InvariantCulture)); }
public static void HandleServerWardenData(Packet packet) { var opcode = packet.ReadByteE<WardenServerOpcode>("Warden Server Opcode"); packet.SetPosition(0); switch (opcode) { case WardenServerOpcode.ModuleInfo: { packet.ReadByte(); packet.ReadBytes("Module MD5", 16); packet.ReadBytes("Module RC4", 16); packet.ReadUInt32("Module Length"); break; } case WardenServerOpcode.ModuleChunk: { packet.ReadByte(); var length = packet.ReadUInt16("Chunk Length"); packet.ReadBytes("Module Chunk", length); break; } case WardenServerOpcode.CheatChecks: { packet.ReadByte(); byte length; while ((length = packet.ReadByte()) != 0) { packet.ReadBytes("String", length); } // var rest = (int)(packet.GetLength() - packet.GetPosition()); break; } case WardenServerOpcode.Data: { while (packet.CanRead()) { packet.ReadByte(); var length = packet.ReadUInt16("Data Length"); packet.ReadInt32("Data Checksum"); packet.ReadBytes("Data", length); } break; } case WardenServerOpcode.Seed: { packet.ReadByte(); packet.ReadBytes("Seed", 16); break; } } }
public static void HandleInitializeFactions(Packet packet) { var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) { packet.ReadByteE<FactionFlag>("Faction Flags", i); packet.ReadUInt32E<ReputationRank>("Faction Standing", i); } }
public static void HandleArenaTeamEvent(Packet packet) { packet.ReadByteE<ArenaEvent>("Event"); var count = packet.ReadByte("Count"); for (var i = 0; i < count; ++i) packet.ReadCString("Param", i); if (packet.CanRead()) packet.ReadGuid("GUID"); }
public static void HandlePetAction(Packet packet) { packet.ReadGuid("GUID"); var action = (uint)packet.ReadUInt16() + (packet.ReadByte() << 16); packet.AddValue("Action", action); packet.ReadByteE<ActionButtonType>("Type"); packet.ReadGuid("GUID"); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596)) packet.ReadVector3("Position"); }
public static void HandleInitializeFactions(Packet packet) { for (var i = 0; i < 0x100; i++) { packet.ReadByteE<FactionFlag>("FactionFlags", i); packet.ReadUInt32E<ReputationRank>("FactionStandings", i); } for (var i = 0; i < 0x100; i++) packet.ReadBit("FactionHasBonus", i); }
public static void HandleGMTicketGetTicket(Packet packet) { var hasData = packet.ReadBit("HasData"); if (hasData) { var len1 = packet.ReadBits(11); // len6 var len2 = packet.ReadBits(10); // len2042 packet.ReadInt32("Ticket ID"); // 5 packet.ReadByteE<GMTicketEscalationStatus>("Escalation Status"); // 2040 packet.ReadByteE<GMTicketOpenedByGMStatus>("Opened"); // 2041 packet.ReadByte("unk2025"); // 2025 packet.ReadInt32("MapID"); // 509 packet.ReadWoWString("Ticket", len1); // 6 packet.ReadInt32("unk767"); // 767 packet.ReadInt32("Ticket oldest"); // 507 packet.ReadInt32("Ticket age"); // 508 packet.ReadWoWString("str2042", len2); // 2042 } packet.ReadInt32E<GMTicketSystemStatus>("System Status"); }
public static void ReadSingleContactBlock(Packet packet, bool onlineCheck) { var status = packet.ReadByteE<ContactStatus>("Status"); if (onlineCheck && status == ContactStatus.Offline) return; packet.ReadInt32<AreaId>("Area"); packet.ReadInt32("Level"); packet.ReadInt32E<Class>("Class"); }
public static void HandleAddCalendarEvent(Packet packet) { packet.ReadInt32("Event Time"); packet.ReadInt32("Invite Count"); packet.ReadByteE<CalendarEventType>("Event Type"); packet.ReadInt32<LFGDungeonId>("Dungeon ID"); packet.ReadInt32("Max Invites"); var bits496 = packet.ReadBits(8); var bits4A4 = packet.ReadBits(22); var guid = new byte[bits4A4][]; for (var i = 0; i < bits4A4; ++i) { guid[i] = new byte[8]; packet.StartBitStream(guid[i], 3, 2, 5, 4, 6, 0, 1, 7); } var bits4A8 = (int)packet.ReadBits(11); packet.ReadWoWString("Description", bits4A8); packet.ReadWoWString("Title", bits496); for (var i = 0; i < bits4A4; ++i) { packet.ReadByteE<CalendarModerationRank>("Moderation Rank", i); packet.ReadXORByte(guid[i], 6); packet.ReadXORByte(guid[i], 1); packet.ReadXORByte(guid[i], 7); packet.ReadXORByte(guid[i], 5); packet.ReadXORByte(guid[i], 4); packet.ReadXORByte(guid[i], 2); packet.ReadByteE<CalendarEventStatus>("Status", i); packet.ReadXORByte(guid[i], 3); packet.ReadXORByte(guid[i], 0); packet.WriteGuid("Guid", guid[i], i); } }
public static void HandleInitializeFactions(Packet packet) { for (var i = 0; i < 256; i++) { packet.ReadUInt32E<ReputationRank>("Faction Standing", i); packet.ReadByteE<FactionFlag>("Faction Flags", i); } for (var i = 0; i < 256; i++) { var bit1296 = packet.ReadBit("Count"); } }
public static void HandleClientCharCreate(Packet packet) { var nameLen = packet.ReadBits(6); var hasTemplateSet = packet.ReadBit(); packet.ReadByteE<Race>("RaceID"); packet.ReadByteE<Class>("ClassID"); packet.ReadByteE<Gender>("SexID"); packet.ReadByte("SkinID"); packet.ReadByte("FaceID"); packet.ReadByte("HairStyleID"); packet.ReadByte("HairColorID"); packet.ReadByte("FacialHairStyleID"); packet.ReadByte("OutfitID"); for (uint i = 0; i < 3; ++i) packet.ReadByte("CustomDisplay", i); packet.ReadWoWString("Name", nameLen); if (hasTemplateSet) packet.ReadInt32("TemplateSetID"); }
public static void HandleEnvirenmentalDamageLog(Packet packet) { packet.ReadPackedGuid128("Victim"); packet.ReadByteE<EnvironmentDamage>("Type"); packet.ReadInt32("Amount"); packet.ReadInt32("Resisted"); packet.ReadInt32("Absorbed"); var bit76 = packet.ReadBit("HasLogData"); if (bit76) SpellHandler.ReadSpellCastLogData(packet); }
public static void HandleAuthResponse(Packet packet) { var isQueued = packet.ReadBit("Queued"); var hasAccountInfo = packet.ReadBit("Has account info"); if (isQueued) packet.ReadBit("UnkBit"); if (hasAccountInfo) { packet.ReadInt32("Billing Time Remaining"); packet.ReadByteE<ClientType>("Player Expansion"); packet.ReadInt32("Unknown UInt32"); packet.ReadByteE<ClientType>("Account Expansion"); packet.ReadInt32("Billing Time Rested"); packet.ReadByteE<BillingFlag>("Billing Flags"); } packet.ReadByteE<ResponseCode>("Auth Code"); if (isQueued) packet.ReadInt32("Queue Position"); }