public static void HandleGameTimeUpdate(Packet packet) { packet.ReadPackedTime("ServerTime"); packet.ReadPackedTime("GameTime"); packet.ReadInt32("ServerTimeHolidayOffset"); packet.ReadInt32("GameTimeHolidayOffset"); }
public static void HandleAchievementEarned(Packet packet) { packet.ReadPackedGuid("Player GUID"); packet.ReadInt32("Achievement"); packet.ReadPackedTime("Time"); packet.ReadInt32("Unk Int32"); }
public static void Handle13516(Packet packet) { packet.ReadByte("Unk"); packet.ReadInt32("Unk"); packet.ReadSingle("Unk"); packet.ReadInt32("Unk"); }
public static void HandleAddCalendarEvent(Packet packet) { packet.ReadCString("Title"); packet.ReadCString("Description"); packet.ReadEnum<CalendarEventType>("Event Type", TypeCode.Byte); packet.ReadEnum<CalendarRepeatType>("Repeat Type", TypeCode.Byte); packet.ReadInt32("Max Invites"); packet.ReadEntryWithName<Int32>(StoreNameType.LFGDungeon, "Dungeon ID"); packet.ReadPackedTime("Event Time"); packet.ReadPackedTime("Unk PackedTime"); var flags = packet.ReadEnum<CalendarFlag>("Event Flags", TypeCode.Int32); if ((flags & CalendarFlag.GuildAnnouncement) != 0) return; var count = packet.ReadInt32("Invite Count"); for (var i = 0; i < count; i++) { packet.ReadPackedGuid("Creator GUID"); packet.ReadEnum<CalendarEventStatus>("Status", TypeCode.Byte); packet.ReadEnum<CalendarModerationRank>("Moderation Rank", TypeCode.Byte); } }
public static void HandleGuildAchievementData(Packet packet) { var count = packet.ReadBits("Criteria count", 20); var guid = new byte[count][]; for (var i = 0; i < count; ++i) { guid[i] = new byte[8]; packet.StartBitStream(guid[i], 3, 5, 4, 7, 2, 1, 0, 6); } for (var i = 0; i < count; ++i) { packet.ReadXORByte(guid[i], 2); packet.ReadXORByte(guid[i], 7); packet.ReadInt32("Unk 1", i); packet.ReadXORByte(guid[i], 5); packet.ReadXORByte(guid[i], 3); packet.ReadXORByte(guid[i], 1); packet.ReadInt32<AchievementId>("Achievement Id", i); packet.ReadXORByte(guid[i], 6); packet.ReadInt32("Unk 2", i); packet.ReadXORByte(guid[i], 4); packet.ReadXORByte(guid[i], 0); packet.ReadPackedTime("Time", i); packet.WriteGuid("Guid", guid[i], i); } }
public static void HandleBattlePayDistributionAssignToTarget(Packet packet) { packet.ReadInt32("ClientToken"); packet.ReadInt64("DistributionID"); packet.ReadPackedGuid128("TargetCharacter"); packet.ReadInt32("ProductChoice"); }
public static void HandleGuildPartyStateResponse(Packet packet) { packet.ReadSingle("Guild XP multiplier"); packet.ReadInt32("Int10"); packet.ReadInt32("Int14"); packet.ReadBit("Is guild group"); }
public static void HandleServerUpdateAccountData(Packet packet) { var guid = new byte[8]; packet.ReadBitsE<AccountDataType>("Data Type", 3); packet.StartBitStream(guid, 5, 1, 3, 7, 0, 4, 2, 6); packet.ReadXORBytes(guid, 3, 1, 5); var decompCount = packet.ReadInt32(); var compCount = packet.ReadInt32(); var pkt = packet.Inflate(compCount, decompCount, false); var data = pkt.ReadWoWString(decompCount); pkt.ClosePacket(false); packet.AddValue("Account Data", data); packet.ReadXORBytes(guid, 7, 4, 0, 6, 2); packet.ReadTime("Login Time"); packet.WriteGuid("GUID", guid); }
public static void HandleSpellHealLog(Packet packet) { packet.ReadPackedGuid128("TargetGUID"); packet.ReadPackedGuid128("CasterGUID"); packet.ReadInt32<SpellId>("SpellID"); packet.ReadInt32("Health"); packet.ReadInt32("OverHeal"); packet.ReadInt32("Absorbed"); packet.ResetBitReader(); packet.ReadBit("Crit"); var hasCritRollMade = packet.ReadBit("HasCritRollMade"); var hasCritRollNeeded = packet.ReadBit("HasCritRollNeeded"); var hasLogData = packet.ReadBit("HasLogData"); var hasSandboxScaling = packet.ReadBit("HasLogData"); if (hasCritRollMade) packet.ReadSingle("CritRollMade"); if (hasCritRollNeeded) packet.ReadSingle("CritRollNeeded"); if (hasLogData) SpellHandler.ReadSpellCastLogData(packet); if (hasSandboxScaling) ReadSandboxScalingData(packet, "SandboxScalingData"); }
public static void HandlePetSpells(Packet packet) { packet.ReadPackedGuid128("PetGUID"); packet.ReadInt16("CreatureFamily"); packet.ReadInt16("Specialization"); packet.ReadInt32("TimeLimit"); ReadPetFlags(packet, "PetModeAndOrders"); const int maxCreatureSpells = 10; for (var i = 0; i < maxCreatureSpells; i++) // Read pet / vehicle spell ids V6_0_2_19033.Parsers.PetHandler.ReadPetAction(packet, "ActionButtons", i); var actionsCount = packet.ReadInt32("ActionsCount"); var cooldownsCount = packet.ReadUInt32("CooldownsCount"); var spellHistoryCount = packet.ReadUInt32("SpellHistoryCount"); for (int i = 0; i < actionsCount; i++) V6_0_2_19033.Parsers.PetHandler.ReadPetAction(packet, i, "Actions"); for (int i = 0; i < cooldownsCount; i++) V6_0_2_19033.Parsers.PetHandler.ReadPetSpellCooldownData(packet, i, "PetSpellCooldown"); for (int i = 0; i < spellHistoryCount; i++) V6_0_2_19033.Parsers.PetHandler.ReadPetSpellHistoryData(packet, i, "PetSpellHistory"); }
public static void HandleContactList(Packet packet) { packet.ReadEnum<ContactListFlag>("List Flags", TypeCode.Int32); var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) { packet.ReadGuid("GUID"); packet.ReadInt32("Unk int1"); packet.ReadInt32("Unk int2"); var flag = packet.ReadEnum<ContactEntryFlag>("Flags", TypeCode.Int32); packet.ReadCString("Note"); if (!flag.HasAnyFlag(ContactEntryFlag.Friend)) continue; var status = packet.ReadEnum<ContactStatus>("Status", TypeCode.Byte); if (status == 0) // required any flag continue; packet.ReadEntry<Int32>(StoreNameType.Area, "Area"); packet.ReadInt32("Level"); packet.ReadEnum<Class>("Class", TypeCode.Int32); } // still needed? if (packet.CanRead()) CoreParsers.WardenHandler.ReadCheatCheckDecryptionBlock(ref 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"); } // still needed? if (packet.CanRead()) CoreParsers.WardenHandler.ReadCheatCheckDecryptionBlock(packet); }
public static void HandleGroupInvite(Packet packet) { var crossRealmGuid = new byte[8]; packet.ReadInt32("Int114"); packet.ReadByte("Byte118"); packet.ReadInt32("Int128"); crossRealmGuid[7] = packet.ReadBit(); var realmNameLen = packet.ReadBits(9); crossRealmGuid[3] = packet.ReadBit(); var nameLen = packet.ReadBits(9); crossRealmGuid[2] = packet.ReadBit(); crossRealmGuid[5] = packet.ReadBit(); crossRealmGuid[4] = packet.ReadBit(); crossRealmGuid[0] = packet.ReadBit(); crossRealmGuid[1] = packet.ReadBit(); crossRealmGuid[6] = packet.ReadBit(); packet.ReadXORByte(crossRealmGuid, 7); packet.ReadXORByte(crossRealmGuid, 6); packet.ReadXORByte(crossRealmGuid, 0); packet.ReadXORByte(crossRealmGuid, 4); packet.ReadWoWString("Name", nameLen); packet.ReadXORByte(crossRealmGuid, 1); packet.ReadXORByte(crossRealmGuid, 2); packet.ReadXORByte(crossRealmGuid, 3); packet.ReadWoWString("Realm Name", realmNameLen); packet.ReadXORByte(crossRealmGuid, 5); packet.WriteGuid("crossRealmGuid", crossRealmGuid); }
public static void HandleArchaeologySyrveryCast(Packet packet) { packet.ReadInt32("unk24"); // 24 packet.ReadInt32("unk20"); // 20 packet.ReadInt32("unk16"); // 16 packet.ReadBit("unk28"); // 28 }
public static void HandleAlterAppearance(Packet packet) { packet.ReadInt32("Hair Style"); packet.ReadInt32("Hair Color"); packet.ReadInt32("Facial Hair"); packet.ReadInt32("Skin Color"); }
public static void HandleDBReply(Packet packet) { var type = packet.ReadUInt32E<DB2Hash>("TableHash"); var entry = packet.ReadInt32("RecordID"); var timeStamp = packet.ReadUInt32(); packet.AddValue("Timestamp", Utilities.GetDateTimeFromUnixTime(timeStamp)); var allow = packet.ReadBit("Allow"); var size = packet.ReadInt32("Size"); var data = packet.ReadBytes(size); var db2File = new Packet(data, packet.Opcode, packet.Time, packet.Direction, packet.Number, packet.Writer, packet.FileName); if (entry < 0 || !allow) { packet.WriteLine("Row {0} has been removed.", -entry); HotfixStoreMgr.RemoveRecord(type, entry); Storage.AddHotfixData(entry, type, true, timeStamp); } else { packet.AddSniffData(StoreNameType.None, entry, type.ToString()); HotfixStoreMgr.AddRecord(type, entry, db2File); Storage.AddHotfixData(entry, type, false, timeStamp); db2File.ClosePacket(false); } }
public static void HandleCalendarSendEvent(Packet packet) { packet.ReadByte("EventType"); packet.ReadPackedGuid128("OwnerGUID"); packet.ReadInt64("EventID"); packet.ReadByte("GetEventType"); packet.ReadInt32("TextureID"); packet.ReadUInt32("Flags"); packet.ReadUInt32("Date"); packet.ReadUInt32("LockDate"); packet.ReadPackedGuid128("EventGuildID"); var inviteCount = packet.ReadInt32("InviteCount"); packet.ResetBitReader(); var lenEventName = packet.ReadBits(8); var lenDescription = packet.ReadBits(11); packet.ResetBitReader(); for (int i = 0; i < inviteCount; i++) V6_0_2_19033.Parsers.CalendarHandler.ReadCalendarEventInviteInfo(packet, "Invites", i); packet.ReadWoWString("EventName", lenEventName); packet.ReadWoWString("Description", lenDescription); }
public static void HandleCorpseQueryResponse(Packet packet) { var pos = new Vector3(); var guid = new byte[8]; guid[4] = packet.ReadBit(); guid[2] = packet.ReadBit(); guid[5] = packet.ReadBit(); guid[3] = packet.ReadBit(); guid[1] = packet.ReadBit(); guid[6] = packet.ReadBit(); guid[0] = packet.ReadBit(); packet.ReadBit("Corpse Found"); guid[7] = packet.ReadBit(); packet.ReadXORByte(guid, 3); packet.ReadXORByte(guid, 1); packet.ReadXORByte(guid, 2); packet.ReadInt32<MapId>("Map ID"); pos.X = packet.ReadSingle(); packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 4); packet.ReadXORByte(guid, 5); packet.ReadInt32<MapId>("Corpse Map ID"); packet.ReadXORByte(guid, 7); pos.Z = packet.ReadSingle(); packet.ReadXORByte(guid, 0); pos.Y = packet.ReadSingle(); packet.AddValue("Position", pos); packet.WriteGuid("Corpse Low GUID", guid); }
public static void HandleTradeStatus(Packet packet) { packet.ReadBit("FailureForYou"); var status = packet.ReadBits("Status", 5); if (status == 13) packet.ReadBit("PartnerIsSameBnetAccount"); if (status == 13) { packet.ReadInt32("CurrencyType"); packet.ReadInt32("CurrencyQuantity"); } if (status == 31) packet.ReadInt32("ID"); if (status == 4) { packet.ReadPackedGuid128("PartnerGuid"); packet.ReadPackedGuid128("PartnerWowAccount"); } if (status == 1 || status == 0) packet.ReadByte("TradeSlot"); if (status == 8 || status == 21) { packet.ReadInt32("BagResult"); packet.ReadInt32("ItemID"); } }
public static void HandleAuctionListBidderResult(Packet packet) { var count = packet.ReadUInt32("Count"); for (var i = 0; i < count; ++i) { packet.ReadUInt32("Auction Id", i); packet.ReadEntryWithName<UInt32>(StoreNameType.Item, "Item Entry", i); int enchantmentCount = ClientVersion.AddedInVersion(ClientType.WrathOfTheLichKing) ? 7 : 6; for (var j = 0; j < enchantmentCount; ++j) { packet.ReadUInt32("Item Enchantment ID", i, j); packet.ReadUInt32("Item Enchantment Duration", i, j); packet.ReadUInt32("Item Enchantment Charges", i, j); } packet.ReadInt32("Item Random Property ID", i); packet.ReadUInt32("Item Suffix", i); packet.ReadUInt32("Item Count", i); packet.ReadInt32("Item Spell Charges", i); //packet.ReadEnum<ItemFlag>("Item Flags", TypeCode.UInt32, i); packet.ReadUInt32("Unk UInt32 1", i); packet.ReadGuid("Owner", i); packet.ReadUInt32("Start Bid", i); packet.ReadUInt32("Out Bid", i); packet.ReadUInt32("Buyout ", i); packet.ReadUInt32("Time Left", i); packet.ReadGuid("Bidder", i); packet.ReadUInt32("Bid", i); } packet.ReadUInt32("Own Count"); packet.ReadUInt32("Unk UInt32 1"); }
public static void HandleChallengeModeAllMapStats(Packet packet) { var bits10 = 0; bits10 = (int)packet.ReadBits(19); var bits30 = new uint[bits10]; for (var i = 0; i < bits10; ++i) { bits30[i] = packet.ReadBits(23); } for (var i = 0; i < bits10; ++i) { packet.ReadInt32("Int14", i); packet.ReadInt32("Int15", i); for (var j = 0; j < bits30[i]; ++j) { packet.ReadInt16("Int16", i, j); } packet.ReadInt32("Int17", i); packet.ReadInt32("Int18", i); } }
public static void HandleUpdateWorldState(Packet packet) { packet.ReadBit("bit18"); var val = packet.ReadInt32(); var field = packet.ReadInt32(); packet.AddValue("Field", field + " - Value: " + val); }
public static void HandleNpcGossip(Packet packet) { GossipMenu gossip = new GossipMenu(); WowGuid guid = packet.ReadPackedGuid128("GossipGUID"); gossip.ObjectType = guid.GetObjectType(); gossip.ObjectEntry = guid.GetEntry(); int menuId = packet.ReadInt32("GossipID"); gossip.Entry = (uint)menuId; packet.ReadInt32("FriendshipFactionID"); gossip.TextID = (uint)packet.ReadInt32("TextID"); int int44 = packet.ReadInt32("GossipOptions"); int int60 = packet.ReadInt32("GossipText"); for (int i = 0; i < int44; ++i) ReadGossipOptionsData((uint)menuId, packet, i, "GossipOptions"); for (int i = 0; i < int60; ++i) ReadGossipQuestTextData(packet, i, "GossipQuestText"); if (guid.GetObjectType() == ObjectType.Unit) if (Storage.Objects.ContainsKey(guid)) ((Unit)Storage.Objects[guid].Item1).GossipId = (uint)menuId; Storage.Gossips.Add(gossip, packet.TimeSpan); packet.AddSniffData(StoreNameType.Gossip, menuId, guid.GetEntry().ToString(CultureInfo.InvariantCulture)); }
public static void HandleGroupInvite422(Packet packet) { // note: this handler is different in 4.3.0, it got a bit fancy. var guidBytes = new byte[8]; guidBytes[6] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[5] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[0] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[3] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[4] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[7] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[1] = (byte)(packet.ReadBit() ? 1 : 0); guidBytes[2] = (byte)(packet.ReadBit() ? 1 : 0); packet.ReadInt32("Unk0"); // Always 0 packet.ReadInt32("Unk1"); // Non-zero in cross realm parties (1383) packet.ReadCString("Name"); if (guidBytes[0] != 0) guidBytes[0] ^= packet.ReadByte(); if (guidBytes[7] != 0) guidBytes[7] ^= packet.ReadByte(); if (guidBytes[4] != 0) guidBytes[4] ^= packet.ReadByte(); if (guidBytes[1] != 0) guidBytes[1] ^= packet.ReadByte(); if (guidBytes[2] != 0) guidBytes[2] ^= packet.ReadByte(); if (guidBytes[6] != 0) guidBytes[6] ^= packet.ReadByte(); if (guidBytes[5] != 0) guidBytes[5] ^= packet.ReadByte(); packet.ReadCString("Realm Name"); // Non-empty in cross realm parties if (guidBytes[3] != 0) guidBytes[3] ^= packet.ReadByte(); // Non-zero in cross realm parties packet.WriteLine("GUID: {0}", new Guid(BitConverter.ToUInt64(guidBytes, 0))); }
public static void HandleGroupInvite(Packet packet) { var crossRealmGuid = new byte[8]; packet.ReadInt32("Int114"); packet.ReadInt32("Int128"); packet.ReadByte("Byte118"); crossRealmGuid[5] = packet.ReadBit(); var bits12C = packet.ReadBits(9); crossRealmGuid[2] = packet.ReadBit(); crossRealmGuid[1] = packet.ReadBit(); crossRealmGuid[7] = packet.ReadBit(); crossRealmGuid[4] = packet.ReadBit(); crossRealmGuid[3] = packet.ReadBit(); var bits10 = packet.ReadBits(9); crossRealmGuid[0] = packet.ReadBit(); crossRealmGuid[6] = packet.ReadBit(); packet.ReadXORByte(crossRealmGuid, 0); packet.ReadXORByte(crossRealmGuid, 4); packet.ReadWoWString("string12C", bits10); packet.ReadXORByte(crossRealmGuid, 5); packet.ReadXORByte(crossRealmGuid, 6); packet.ReadWoWString("string10", bits12C); packet.ReadXORByte(crossRealmGuid, 1); packet.ReadXORByte(crossRealmGuid, 7); packet.ReadXORByte(crossRealmGuid, 3); packet.ReadXORByte(crossRealmGuid, 2); packet.WriteGuid("crossRealmGuid", crossRealmGuid); }
public static void HandleVoidItemSwapResponse(Packet packet) { packet.ReadBit("Has Src Item id (Inv)"); byte[] itemId2 = packet.StartBitStream(4, 1, 6, 0, 3, 7, 2, 5); packet.ReadBit("Has Dest Item id (Inv)"); byte[] itemId1 = itemId1 = packet.StartBitStream(6, 0, 3, 2, 1, 5, 7, 4); var usedSrcSlot = !packet.ReadBit("Used Src Slot (Inv)"); // always set? var usedDestSlot = !packet.ReadBit("Used Dest Slot (Inv)"); packet.ParseBitStream(itemId1, 3, 7, 2, 5, 0, 1, 4, 6); packet.WriteGuid("Dest Item Id", itemId1); packet.ParseBitStream(itemId2, 0, 2, 7, 5, 6, 4, 3, 1); packet.WriteGuid("Src Item Id", itemId2); if (usedSrcSlot) packet.ReadInt32("New Slot for Src Item"); if (usedDestSlot) packet.ReadInt32("New Slot for Dest Item"); }
public static void HandleEquipmentSetList(Packet packet) { var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) { packet.ReadInt32("Type", i); packet.ReadUInt64("Guid", i); packet.ReadUInt32("SetID", i); uint ignoreMask = packet.ReadUInt32("IgnoreMask"); for (var j = 0; j < NumSlots; j++) { bool ignore = (ignoreMask & (1 << j)) != 0; packet.ReadPackedGuid128("Pieces" + (ignore ? " (Ignored)" : ""), i, j); packet.ReadInt32("Appearances", i); } for (var j = 0; j < 2; j++) packet.ReadInt32("Enchants", i); packet.ResetBitReader(); var setNameLen = packet.ReadBits(8); var setIconLen = packet.ReadBits(9); packet.ReadWoWString("SetName", setNameLen, i); packet.ReadWoWString("SetIcon", setIconLen, i); } }
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 ReadPetSpellHistoryData(Packet packet, params object[] idx) { packet.ReadInt32("CategoryID", idx); packet.ReadInt32("RecoveryTime", idx); packet.ReadSingle("ChargeModRate", idx); packet.ReadSByte("ConsumedCharges", idx); }
public static void Handle41694(Packet packet) { var count = packet.ReadInt32("Count"); for (var i = 0; i < count; i++) packet.ReadInt32("Unk"); for (var i = 0; i < count; i++) packet.ReadGuid("Unk"); for (var i = 0; i < count; i++) { var count2 = packet.ReadInt32("Unk"); for (var j = 0; j < count2; j++) packet.ReadInt64("Unk"); } for (var i = 0; i < count; i++) packet.ReadInt32("Unk"); for (var i = 0; i < count; i++) { packet.ReadInt32("Unk"); packet.ReadInt32("Unk"); } for (var i = 0; i < count; i++) packet.ReadInt32("Unk"); for (var i = 0; i < count; i++) packet.ReadPackedTime("Time"); }