public static void HandleClientEnterWorld(Packet packet) { var mapId = packet.ReadEntry<Int32>(StoreNameType.Map, "Map"); packet.ReadBit("Loading"); packet.AddSniffData(StoreNameType.Map, mapId, "LOAD_SCREEN"); }
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.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); pos.X = packet.ReadSingle(); packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 4); packet.ReadXORByte(guid, 5); packet.ReadEntry<Int32>(StoreNameType.Map, "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 HandleBindPointUpdate(Packet packet) { packet.ReadSingle("Position Z"); packet.ReadSingle("Position Y"); packet.ReadEntry<Int32>(StoreNameType.Map, "Map Id"); packet.ReadEntry<Int32>(StoreNameType.Zone, "Zone Id"); packet.ReadSingle("Position X"); }
public static void HandleInitWorldStates(Packet packet) { packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); packet.ReadEntry<Int32>(StoreNameType.Zone, "Zone Id"); CoreParsers.WorldStateHandler.CurrentAreaId = packet.ReadEntry<Int32>(StoreNameType.Area, "Area Id"); var numFields = packet.ReadBits("Field Count", 21); for (var i = 0; i < numFields; i++) CoreParsers.WorldStateHandler.ReadWorldStateBlock(ref packet); }
public static void HandleInitWorldStates(Packet packet) { packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); packet.ReadEntry<Int32>(StoreNameType.Zone, "Zone Id"); CurrentAreaId = packet.ReadEntry<Int32>(StoreNameType.Area, "Area Id"); var numFields = packet.ReadInt16("Field Count"); for (var i = 0; i < numFields; i++) ReadWorldStateBlock(ref packet, i); }
public static void HandleGameObjectQueryResponse(Packet packet) { GameObjectTemplate gameObject = new GameObjectTemplate(); int unk1 = packet.ReadInt32("Unk1 UInt32"); if (unk1 == 0) { packet.ReadEntry("Entry"); packet.ReadByte("Unk1 Byte"); return; } gameObject.Type = packet.ReadInt32E<GameObjectType>("Type"); gameObject.DisplayID = packet.ReadUInt32("Display ID"); var name = new string[4]; for (int i = 0; i < 4; i++) name[i] = packet.ReadCString("Name", i); gameObject.Name = name[0]; gameObject.IconName = packet.ReadCString("Icon Name"); gameObject.CastCaption = packet.ReadCString("Cast Caption"); gameObject.UnkString = packet.ReadCString("Unk String"); gameObject.Data = new int?[32]; for (int i = 0; i < gameObject.Data.Length; i++) gameObject.Data[i] = packet.ReadInt32("Data", i); gameObject.Size = packet.ReadSingle("Size"); gameObject.QuestItems = new uint?[packet.ReadByte("QuestItems Length")]; // correct? for (int i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadInt32<ItemId>("Quest Item", i); packet.ReadUInt32E<ClientType>("Expansion"); var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; gameObject.Entry = (uint)entry.Key; packet.ReadByte("Unk Byte"); Storage.GameObjectTemplates.Add(gameObject, packet.TimeSpan); ObjectName objectName = new ObjectName { ObjectType = ObjectType.GameObject, ID = entry.Key, Name = gameObject.Name }; Storage.ObjectNames.Add(objectName, packet.TimeSpan); }
public static void HandleBindPointUpdate(Packet packet) { var pos = new Vector3(); pos.Y = packet.ReadSingle(); pos.X = packet.ReadSingle(); pos.Z = packet.ReadSingle(); packet.ReadEntry<Int32>(StoreNameType.Area, "Area Id"); CoreParsers.MovementHandler.CurrentMapId = (uint)packet.ReadEntry<Int32>(StoreNameType.Map, "Map"); packet.AddValue("Position", pos); }
public static void HandleGameObjectQueryResponse(Packet packet) { var gameObject = new GameObjectTemplate(); packet.ReadByte("Unk1 Byte"); var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; var unk1 = packet.ReadInt32("Unk1 UInt32"); if (unk1 == 0) { //packet.ReadByte("Unk1 Byte"); return; } gameObject.Type = packet.ReadEnum<GameObjectType>("Type", TypeCode.Int32); gameObject.DisplayId = packet.ReadUInt32("Display ID"); var name = new string[4]; for (var i = 0; i < 4; i++) name[i] = packet.ReadCString("Name", i); gameObject.Name = name[0]; gameObject.IconName = packet.ReadCString("Icon Name"); gameObject.CastCaption = packet.ReadCString("Cast Caption"); gameObject.UnkString = packet.ReadCString("Unk String"); gameObject.Data = new int[32]; for (var i = 0; i < gameObject.Data.Length; i++) gameObject.Data[i] = packet.ReadInt32("Data", i); gameObject.Size = packet.ReadSingle("Size"); gameObject.QuestItems = new uint[packet.ReadByte("QuestItems Length")]; for (var i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadEntry<Int32>(StoreNameType.Item, "Quest Item", i); packet.ReadEnum<ClientType>("Expansion", TypeCode.UInt32); Storage.GameObjectTemplates.Add((uint)entry.Key, gameObject, packet.TimeSpan); var objectName = new ObjectName { ObjectType = ObjectType.GameObject, Name = gameObject.Name, }; Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan); }
public static void HandleInitWorldStates(Packet packet) { packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); CoreParsers.WorldStateHandler.CurrentAreaId = packet.ReadEntry<Int32>(StoreNameType.Area, "Area Id"); packet.ReadEntry<Int32>(StoreNameType.Zone, "Zone Id"); var numFields = packet.ReadBits("Field Count", 21); for (var i = 0; i < numFields; i++) { var val = packet.ReadInt32(); var field = packet.ReadInt32(); packet.AddValue("Field", field + " - Value: " + val, i); } }
public static void HandleInitWorldStates(Packet packet) { packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); packet.ReadEntry<Int32>(StoreNameType.Zone, "Zone Id"); CurrentAreaId = packet.ReadEntry<Int32>(StoreNameType.Area, "Area Id"); var numFields = packet.ReadInt16("Field Count"); //packet.ReadByte("UnkB"); /*for (var i = 0; i < numFields; i++) { var val = packet.ReadByte(); packet.WriteLine("Field: {0} - Value: {1}", i, val); }*/ packet.ReadToEnd(); }
public static void HandleCorpseQuery(Packet packet) { if (packet.Direction == Direction.ClientToServer) return; if (!packet.ReadBoolean("Corpse Found")) return; packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); packet.ReadVector3("Corpse Position"); packet.ReadEntry<Int32>(StoreNameType.Map, "Corpse Map ID"); if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_2_2_10482)) packet.ReadInt32("Corpse Low GUID"); }
public static void HandleQuestgiverAcceptQuest(Packet packet) { var guid = new byte[8]; packet.ReadEntry<UInt32>(StoreNameType.Quest, "Quest ID"); guid[3] = packet.ReadBit(); guid[2] = packet.ReadBit(); guid[7] = packet.ReadBit(); packet.ReadBit("bit18"); guid[5] = packet.ReadBit(); guid[0] = packet.ReadBit(); guid[6] = packet.ReadBit(); guid[1] = packet.ReadBit(); guid[4] = packet.ReadBit(); packet.ReadXORByte(guid, 3); packet.ReadXORByte(guid, 4); packet.ReadXORByte(guid, 7); packet.ReadXORByte(guid, 2); packet.ReadXORByte(guid, 5); packet.ReadXORByte(guid, 1); packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 0); packet.WriteGuid("Guid", guid); }
public static void HandlePetActionFeedback(Packet packet) { var state = packet.ReadEnum<PetFeedback>("Pet state", TypeCode.Byte); switch (state) { case PetFeedback.NothingToAttack: if (ClientVersion.AddedInVersion(ClientType.Cataclysm) || packet.CanRead()) packet.ReadEntry<Int32>(StoreNameType.Spell, "Spell ID"); break; case PetFeedback.CantAttackTarget: if (ClientVersion.AddedInVersion(ClientType.Cataclysm)) packet.ReadEntry<Int32>(StoreNameType.Spell, "Spell ID"); // sub_8ADA60 2nd parameter is SpellID, check sub_8B22C0 break; } }
public static void HandleAuctionListBidderResult(Packet packet) { var count = packet.ReadUInt32("Count"); for (var i = 0; i < count; ++i) { packet.ReadUInt32("Auction Id", i); packet.ReadEntry<UInt32>(StoreNameType.Item, "Item Entry", i); int enchantmentCount = ClientVersion.AddedInVersion(ClientVersionBuild.V4_3_0_15005) ? 10 : ClientVersion.AddedInVersion(ClientVersionBuild.V4_2_2_14545) ? 9 : 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<ItemProtoFlags>("Item Flags", TypeCode.UInt32, i); packet.ReadUInt32("Unk UInt32 1", i); packet.ReadGuid("Owner", i); packet.ReadValue("Start Bid", _auctionSize, i); packet.ReadValue("Out Bid", _auctionSize, i); packet.ReadValue("Buyout ", _auctionSize, i); packet.ReadUInt32("Time Left", i); packet.ReadGuid("Bidder", i); packet.ReadValue("Bid", _auctionSize, i); } packet.ReadUInt32("Total item count"); packet.ReadUInt32("Desired delay time"); }
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.ReadEntry<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 HandleQuestNpcQuery(Packet packet) { var count = packet.ReadBits("Count", 22); for (var i = 0; i < count; i++) packet.ReadEntry<Int32>(StoreNameType.Quest, "Quest ID", i); }
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("Realm Id"); packet.ReadInt32("Realm Id"); 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); } }
public static void HandleEnterWorld(Packet packet) { CurrentMapId = (uint) packet.ReadEntry<Int32>(StoreNameType.Map, "Map ID"); packet.ReadVector4("Position"); packet.AddSniffData(StoreNameType.Map, (int) CurrentMapId, "NEW_WORLD"); }
public static void HandleClientEnterWorld(Packet packet) { var mapId = packet.ReadEntry<UInt32>(StoreNameType.Map, "Map Id"); packet.ReadBit("Loading"); CoreParsers.MovementHandler.CurrentMapId = (uint)mapId; packet.AddSniffData(StoreNameType.Map, (int)mapId, "LOAD_SCREEN"); }
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 HandleQuestPoiQueryResponse(Packet packet) { packet.ReadInt32("Count?"); var count = packet.ReadBits("Count", 20); var POIcounter = new uint[count]; var pointsSize = new uint[count][]; for (var i = 0; i < count; ++i) { POIcounter[i] = packet.ReadBits("POI Counter", 18, i); pointsSize[i] = new uint[POIcounter[i]]; for (var j = 0; j < POIcounter[i]; ++j) pointsSize[i][j] = packet.ReadBits("Points Counter", 21, i, j); } for (var i = 0; i < count; ++i) { var questPOIs = new List<QuestPOI>(); for (var j = 0; j < POIcounter[i]; ++j) { var questPoi = new QuestPOI(); questPoi.Points = new List<QuestPOIPoint>((int)pointsSize[i][j]); for (var k = 0u; k < pointsSize[i][j]; ++k) { var questPoiPoint = new QuestPOIPoint { Index = k, X = packet.ReadInt32("Point X", i, j, (int)k), Y = packet.ReadInt32("Point Y", i, j, (int)k) }; questPoi.Points.Add(questPoiPoint); } packet.ReadInt32("Unk Int32 1", i, j); packet.ReadInt32("Unk Int32 2", i, j); packet.ReadInt32("Unk Int32 3", i, j); questPoi.Map = (uint)packet.ReadEntry<UInt32>(StoreNameType.Map, "Map Id", i, j); questPoi.ObjectiveIndex = packet.ReadInt32("Objective Index", i, j); questPoi.WorldMapAreaId = packet.ReadUInt32("World Map Area ID", i, j); packet.ReadInt32("Unk Int32 4", i, j); packet.ReadInt32("World Effect ID", i, j); questPoi.Idx = (uint)packet.ReadInt32("POI Index", i, j); packet.ReadInt32("Player Condition ID", i, j); questPoi.FloorId = packet.ReadUInt32("Floor Id", i, j); questPOIs.Add(questPoi); } var questId = packet.ReadEntry<Int32>(StoreNameType.Quest, "Quest ID", i); packet.ReadInt32("POI Counter?", i); foreach (var questpoi in questPOIs) Storage.QuestPOIs.Add(new Tuple<uint, uint>((uint)questId, questpoi.Idx), questpoi, packet.TimeSpan); } }
public static void HandleGameObjectQueryResponse(Packet packet) { var gameObject = new GameObjectTemplate(); var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; gameObject.Type = packet.ReadEnum<GameObjectType>("Type", TypeCode.Int32); gameObject.DisplayId = packet.ReadUInt32("Display ID"); var name = new string[4]; for (var i = 0; i < 4; i++) name[i] = packet.ReadCString("Name", i); gameObject.Name = name[0]; gameObject.IconName = packet.ReadCString("Icon Name"); gameObject.CastCaption = packet.ReadCString("Cast Caption"); gameObject.UnkString = packet.ReadCString("Unk String"); gameObject.Data = new int[ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596) ? 32 : 24]; for (var i = 0; i < gameObject.Data.Length; i++) gameObject.Data[i] = packet.ReadInt32("Data", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_0_2_9056)) // not sure when it was added exactly - did not exist in 2.4.1 sniff gameObject.Size = packet.ReadSingle("Size"); gameObject.QuestItems = new uint[ClientVersion.AddedInVersion(ClientVersionBuild.V3_2_0_10192) ? 6 : 4]; if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767)) for (var i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadEntry<Int32>(StoreNameType.Item, "Quest Item", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596)) gameObject.UnknownInt = packet.ReadInt32("Unknown UInt32"); packet.AddSniffData(StoreNameType.GameObject, entry.Key, "QUERY_RESPONSE"); Storage.GameObjectTemplates.Add((uint) entry.Key, gameObject, packet.TimeSpan); var objectName = new ObjectName { ObjectType = ObjectType.GameObject, Name = gameObject.Name, }; Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan); }
public static void HandleDestructibleBuildingDamage(Packet packet) { packet.ReadPackedGuid("GO GUID"); packet.ReadPackedGuid("Vehicle GUID"); packet.ReadPackedGuid("Player GUID"); packet.ReadInt32("Damage"); packet.ReadEntry<Int32>(StoreNameType.Spell, "Spell ID"); }
public static void HandleAuraCastLog(Packet packet) { packet.ReadGuid("Caster GUID"); packet.ReadGuid("Target GUID"); packet.ReadEntry<UInt32>(StoreNameType.Spell, "Spell ID"); packet.ReadSingle("Unk 1"); packet.ReadSingle("Unk 2"); }
public static void HandleLootAllPassed(Packet packet) { packet.ReadGuid("GUID"); packet.ReadUInt32("Slot"); packet.ReadEntry<UInt32>(StoreNameType.Item, "Entry"); packet.ReadInt32("Random Property Id"); packet.ReadInt32("Random Suffix"); }
public static void HandleBuyFailed(Packet packet) { packet.ReadGuid("Vendor GUID"); packet.ReadEntry<UInt32>(StoreNameType.Item, "Entry"); if (ClientVersion.RemovedInVersion(ClientVersionBuild.V4_2_2_14545)) packet.ReadInt32("Param"); packet.ReadEnum<BuyResult>("Result", TypeCode.Byte); }
public static void HandleClientAreaTrigger(Packet packet) { var entry = packet.ReadEntry("Area Trigger Id"); packet.ReadBit("Unk bit1"); packet.ReadBit("Unk bit2"); packet.AddSniffData(StoreNameType.AreaTrigger, entry.Key, "AREATRIGGER"); }
public static void HandleClientAreaTrigger(Packet packet) { var entry = packet.ReadEntry("Area Trigger Id"); if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_1_0_16309)) packet.ReadByte("Unk Byte"); packet.AddSniffData(StoreNameType.AreaTrigger, entry.Key, "AREATRIGGER"); }
public static void HandleGameObjectQueryResponse(Packet packet) { var gameObject = new GameObjectTemplate(); var entry = packet.ReadEntry("Entry"); var dataSize = packet.ReadUInt32("Unk 1"); // Maybe data size? if (dataSize > 0) { gameObject.Type = packet.ReadEnum<GameObjectType>("Type", TypeCode.Int32); gameObject.DisplayId = packet.ReadUInt32("Display Id"); var name = new string[4]; for (var i = 0; i < 4; i++) name[i] = packet.ReadCString("Name", i); gameObject.Name = name[0]; gameObject.IconName = packet.ReadCString("Icon Name"); gameObject.CastCaption = packet.ReadCString("Cast Caption"); gameObject.UnkString = packet.ReadCString("Unk String"); gameObject.Data = new int[32]; for (var i = 0; i < gameObject.Data.Length; i++) gameObject.Data[i] = packet.ReadInt32("Data", i); gameObject.Size = packet.ReadSingle("Size"); gameObject.QuestItems = new uint[packet.ReadByte("Quest Item Count")]; for (var i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadEntry<Int32>(StoreNameType.Item, "Quest Item", i); packet.ReadEnum<ClientType>("Expansion", TypeCode.UInt32); } packet.ReadByte("Unk Byte"); // Mostly seen 128. Storage.GameObjectTemplates.Add((uint)entry.Key, gameObject, packet.TimeSpan); var objectName = new ObjectName { ObjectType = ObjectType.GameObject, Name = gameObject.Name, }; Storage.ObjectNames.Add((uint)entry.Key, objectName, packet.TimeSpan); }
public static void HandleQuestPoiQuery(Packet packet) { var count = packet.ReadUInt32("Count"); for (var i = 0; i < count; i++) //for (var i = 0; i < 50; i++) packet.ReadEntry<Int32>(StoreNameType.Quest, "Quest ID", i); packet.ReadToEnd(); // Hack }