public static void HandleGameObjectQueryResponse(Packet packet) { var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; GameObjectTemplate gameObject = new GameObjectTemplate { Entry = (uint)entry.Key }; int unk1 = packet.ReadInt32("Unk1 UInt32"); if (unk1 == 0) { 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")]; for (int i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadInt32<ItemId>("Quest Item", i); packet.ReadUInt32E<ClientType>("Expansion"); packet.ReadByte("Unk1 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 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 HandleGameObjectQueryResponse(Packet packet) { var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; GameObjectTemplate gameObject = new GameObjectTemplate { Entry = (uint)entry.Key, Type = packet.ReadInt32E<GameObjectType>("Type"), 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?[ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596) ? 32 : 24]; for (int 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 (int i = 0; i < gameObject.QuestItems.Length; i++) gameObject.QuestItems[i] = (uint)packet.ReadInt32<ItemId>("Quest Item", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_0_6_13596)) gameObject.RequiredLevel = packet.ReadInt32("RequiredLevel"); packet.AddSniffData(StoreNameType.GameObject, entry.Key, "QUERY_RESPONSE"); 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 HandleGameObjectQueryResponse(Packet packet) { var gameObject = new GameObjectTemplate(); var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; packet.ReadBit("Allow"); var dataSize = packet.ReadInt32("DataSize"); if (dataSize == 0) return; gameObject.Type = packet.ReadInt32E<GameObjectType>("Type"); 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[33]; 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[6]; var length = packet.ReadByte("QuestItems Length"); for (var i = 0; i < length; i++) gameObject.QuestItems[i] = (uint)packet.ReadInt32<ItemId>("Quest Item", i); packet.ReadUInt32E<ClientType>("Expansion"); 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 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_2_0_14333) ? 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.ReadEntryWithName<Int32>(StoreNameType.Item, "Quest Item", i); if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_2_0_14333)) gameObject.UnknownUInt = packet.ReadUInt32("Unknown UInt32"); packet.AddSniffData(StoreNameType.GameObject, entry.Key, "QUERY_RESPONSE"); packet.SniffFileInfo.Storage.GameObjectTemplates.TryAdd((uint) entry.Key, gameObject); var objectName = new ObjectName { ObjectType = ObjectType.GameObject, Name = gameObject.Name, }; packet.SniffFileInfo.Storage.ObjectNames.TryAdd((uint)entry.Key, objectName); }
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 HandleGameObjectQueryResponse(Packet packet) { var entry = packet.ReadEntry("Entry"); if (entry.Value) // entry is masked return; GameObjectTemplate gameObject = new GameObjectTemplate { Entry = (uint)entry.Key }; packet.ReadBit("Allow"); int dataSize = packet.ReadInt32("DataSize"); if (dataSize == 0) 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?[33]; for (int i = 0; i < gameObject.Data.Length; i++) gameObject.Data[i] = packet.ReadInt32("Data", i); gameObject.Size = packet.ReadSingle("Size"); byte questItemsCount = packet.ReadByte("QuestItemsCount"); for (uint i = 0; i < questItemsCount; i++) { GameObjectTemplateQuestItem questItem = new GameObjectTemplateQuestItem { GameObjectEntry = (uint)entry.Key, Idx = i, ItemId = packet.ReadUInt32<ItemId>("QuestItem", i) }; Storage.GameObjectTemplateQuestItems.Add(questItem, packet.TimeSpan); } gameObject.RequiredLevel = packet.ReadInt32("RequiredLevel"); 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); }